Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - Killer

136
En Game Global Settings, en la pestaña de Windows, en la pestaña Graphics esta la opción Use Synchronization To Avoid Tearing.

En código se usa la función display_reset(aa, vsync), donde aa es el nivel de filtrado anti-alias y vsync es si se desea la sincronización o no.
137
Si no estás usando la tabla de highscores puedes evitarte problemas utilizándola para guardar el score entre sesiones.

Cuando cargas el juego (evento game start) y/o quieras cargar el score anterior usa:

[gml]score = highscore_value(1)[/gml]

Cuando quieres guardar el score y/o cierres el juego (evento game end) usa:

[gml]highscore_clear()
highscore_add("",score)[/gml]

Si no estás usando la variable interna score simplemente cámbiala en el código por cualquiera que estés usando.
138
sprite_get_number(ind) Devuelve el número de subimágenes del sprite con el índice dado.
139
Me extra?a que no te sirva, como mencione a?n tu primer c?digo hacia lo que querias, es posible que la imagen que estes tratando de usar no sea compatible con el GM. Te dejo un ejemplo funcional.
140
La funci?n keyboard_wait paraliza el juego hasta que se presione alguna tecla, al ponerla en el bucle do until y poniendo como condici?n que la ?ltima tecla presionada sea enter garantizas que el juego se mantendra paralizado hasta que presiones enter, cualquier otra tecla har? que el bucle inicie de nuevo y vuelva a paralizar el juego en espera de otra tecla.
141
El c?digo que has puesto funciona bien, aunque creo que quer?as usar get_open_filename, no get_save_filename. Ademas yo har?a que la tercera opci?n remplace un fondo predefinido para evitar problemas, ya que si el usuario se pone a cambiar el background muy seguido y tu no borras los obsoletos se podr?a saturar la memoria.

Para que se puedan elegir mas formatos solo debes agregar m?s filtros a la funci?n

[gml]get_open_filename("JPG|*.jpg|Mapa de Bits|*.bmp|Portable Network Graphics|*.png|Todos los archivos de imagen|*.jpg;*.bmp;*.png","")[/gml]
142
El c?digo que te ha puesto Wadk deberia funcionarte bien, si bien es cierto que le haria falta el screen_refresh si lo vas a usar en cualquier otro evento aparte del draw.

Le pusiste alguna condici?n? ponerlo como esta en un evento repetitivo, como el draw, causaria que entrara en pausa constantemente, si ese es el problema prueba a ponerle un if keyboard_check_pressed(vk_enter) al principio.
143
Asumiendo que comprendo lo que quieres, y no digo que lo hago, la funci?n window_set_region_scale(scale,adaptwindow) puede usarse para modificar la escala del area de dibujo en pantalla.
144
Preguntas y respuestas / Re: Sistema de trucos
Octubre 03, 2011, 10:16:44 PM
Si los trucos son con una sequencia de letras lo mas sencillo seria utilizar la variable keyboard_string, que guarda los ultimos 1024 caracteres que hayas tecleado, con una variable para controlar el tiempo entre teclas solo seria cuestion de ver si la palabra que activa el truco esta dentro del string.

[gml]
if !variable_local_exists("Tempo") Tempo = room_speed;
if !variable_local_exists("m_string") m_string = "";

if (Tempo > 0) Tempo -= 1;

if (keyboard_check(vk_anykey))
  if (keyboard_lastkey >= ord('0')) && (keyboard_lastkey <= ord('z')) Tempo = room_speed;
  else Tempo = 0;

if (Tempo == 0){
  keyboard_string = "";
  Tempo = room_speed;
  }

m_string = string_lower(keyboard_string);

if string_count("aspirine",m_string){
  keyboard_string="";
  //C?digo de truco
  }[/gml]

Por ejemplo, el c?digo anterior busca la palabra aspirine en las ultimas teclas presionadas, y vacia el string cada segundo o si se preciona una tecla que no sea una letra o n?mero (mas algunos caracteres simbolicos que estan dentro del rango dado). De encontrarse la palabra vacia el string para evitar que active el truco multiples veces y ejecuta el c?digo del truco, que debe ser agregado.
145
Prueba esto, usa este c?digo cuando quieras que el jugador ponga un mp3 propio:

[gml]var MP3;
MP3 = get_open_filename("MP3 file|*.mp3","");
if MCI_command("status FileAlias mode") != "" MCI_command('close FileAlias');
MCI_command('open "' + MP3 + '" type MPEGVideo alias FileAlias');
if MCI_command("status FileAlias mode") != "playing" MCI_command('play FileAlias from 0');[/gml]

Y este otro c?digo debe usarse en el evento step:

[gml]if MCI_command("status FileAlias length") == MCI_command("status FileAlias position")
    MCI_command("close FileAlias");[/gml]
146
Para esta ultima duda te recomiendo que abras el GM y te pongas a experimentar con move_contact_solid, un objeto m?vil y algunos s?lidos. O que abras el manual y leas la parte correspondiente a move_contact_solid.

Deber?a ser suficiente para que aprendas como funciona dicha funci?n, y es, a mi parecer, la mejor manera de aprender con el GM.
147
Pues si no existe ning?n error humano entonces esta opci?n no es para nada necesaria en este caso, tu mismo estas recomendando la opci?n para evitar el error de variable desconocida, que es causado por un error humano.

Mencionas que tienes experiencia con lenguajes m?s estrictos, entonces sabes que esta opci?n ense?a p?simos h?bitos de programaci?n, no solo por que evita al usuario el trabajo de declarar las variale, sino por que si hay un error en el c?digo necesitas conocerlo, entenderlo y saber (o aprender) como arreglarlo, si tomas la salida f?cil no hay aprendizaje y por lo tanto no hay ganancia en tu experiencia con el GM.

Ahora bien, si tu haces un copy-paste cuando escribes nombres de variables, y luego de todos modos revisas CADA variable letra por letra, pues bien por ti, pero no debes asumir que todos los dem?s lo hacen, especialmente si consideras que son personas que podr?an apenas estar empezando con el GM, no tienen conocimientos previos de programaci?n, y son, por lo tanto, m?s propensas a un error humano, despues de todo los humanos son falibles.
148
Cuando el GM detecta que un par de objetos van a entrar en colisi?n detiene el movimiento del objeto con el evento colisi?n y ejecuta el evento correspondiente , esto lo hace para evitar que siga causando la colisi?n en los steps posteriores sin motivo alguno.

El resultado es un espacio entre los objetos que forman parte de la colisi?n. Ah? es donde entra move_contact_solid, se encarga de eliminar ese espacio entre los objetos moviendo al causante de la colisi?n la m?xima distancia posible.

No existe un motivo para usar 12, el n?mero debe simplemente ser mayor que la velocidad a la que se mueve el objeto, si todos los tutoriales que has visto usan ese numero podr?a ser simplemente una coincidencia, o todos han aprendido de la misma fuente, o algo por el estilo.
149
Imagina un c?digo que acabas de programar, un c?digo muy extenso y muy importante, con varias variables.

Ahora imagina que cuando estabas programandolo diste un teclazo accidental y escribiste mal alguna variable.

Gracias a ese teclazo y a la opcion de declarar variables automaticamente ahora tienes una variable extra en alguna parte, cuyo valor esta siendo cambiado o comprobado en lugar de la variable correcta.

Ese solo error te puede arruinar por completo el c?digo al alterar su comportamiento. Y un c?digo que se comporta inesperadamente tiende a ser m?s dificil de solucionar que un c?digo que simplemente te da error.

Por ejemplo, ya que la variable se declara a si misma y no te dar? un mensaje de error, existe la probabilidad de que no tengas la menor idea de donde esta el problema o como empezar a buscarlo, y es posible que a?n cuando leas y releas el c?digo no te des cuenta del problema.
150
He tratado de reproducir el error, cree un objeto y le puse un evento create donde declare dos variables y otro evento donde debe utilizarlas.

Luego cree otro objeto y le asigne el primero como parent.

Ambos funcionaron sin ningun problema, tanto por separados como al ponerlos juntos.

Si pudieras especificar m?s como reproducir el problema, o pasar un editable donde se presente seria mejor, ya que yo nunca he tenido problemas usando parents.

P.D. Cuando dice que el parent da sus eventos a sus hijos no quiere decir que el parent se quede sin sus respectivos eventos, la herencia lo que hace es que los eventos que tiene el parent los tengan los hijos, en tanto ese evento no sea sobreescrito.