Buen script, no lo he probado pero parece funcional. Solo un pequeño comentario, no es muy importante, pero creo que la función debería llamarse move_precise, para que se parezca a las funciones predefinidas de GM. :D
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.
1517
Preguntas y respuestas / Re:Sleep en gms
Diciembre 26, 2014, 05:42:08 PM
Usa una alarm que cuente 5 segundos (5*room_speed), si no quieres que los demás objetos sigan en movimiento programa un estado en el que permanezcan inmóviles o toma una captura de pantalla que se muestre durante ese tiempo (usando surfaces).
1518
Preguntas y respuestas / Re:Tocar un objeto con el mouse
Diciembre 26, 2014, 05:30:31 PM
En vez de usar if(mouse_check_button_pressed(mb_left)) pon el código dentro del evento Mouse Left Pressed. Además creo que lo correcto para hacer un salto es poner vspeed = 9, sin el signo +. Otra cosa, usa el buscador, esto se ha respondido muchas veces, hace unas horas otro usuario preguntó lo mismo.
1519
Preguntas y respuestas / Re:Hacer que el score sea continuo room tras room
Diciembre 25, 2014, 09:21:29 PM
No se vuelve a crear porque es persistente.
En primer lugar no se debe poner "global.score", sino simplemente "score". El problema de que la variable score se reinicia tal vez sea que nunca cambia, ya que en tu código, en dos eventos se hace cero, pero al leer en el archivo ini usas la variable global.points, no se si esa variable es equivalente a score, si es así yo la descartaría y usaría simplemente score. También usaría sólo uno de los eventos, ya sea Create o Game Start.
[gml]
if file_exists("comandos.ini")
{
ini_open("comandos.ini");
score = ini_read_real( "points", "score", 0 );
global.highscore = ini_read_real( "points", "highscore", 0 );
ini_close();
}
else
{
score = 0
global.highscore = 0
}
[/gml]
En primer lugar no se debe poner "global.score", sino simplemente "score". El problema de que la variable score se reinicia tal vez sea que nunca cambia, ya que en tu código, en dos eventos se hace cero, pero al leer en el archivo ini usas la variable global.points, no se si esa variable es equivalente a score, si es así yo la descartaría y usaría simplemente score. También usaría sólo uno de los eventos, ya sea Create o Game Start.
[gml]
if file_exists("comandos.ini")
{
ini_open("comandos.ini");
score = ini_read_real( "points", "score", 0 );
global.highscore = ini_read_real( "points", "highscore", 0 );
ini_close();
}
else
{
score = 0
global.highscore = 0
}
[/gml]
1520
Preguntas y respuestas / Re:Copiar código con colores [Solucionado]
Diciembre 24, 2014, 06:01:23 PM
Debe ser xml, ¿ya elegiste el lenguaje en el menú "language"?
1521
Preguntas y respuestas / Re:Cambiar el sprite de un objeto a corta distancia y presionando tecla
Diciembre 24, 2014, 05:43:12 PM
Por supuesto que ese es el problema, el código debe estar en un evento que se ejecute constantemente, como el evento Step. El evento Create sólo se ejecuta una vez por room.
1522
Preguntas y respuestas / Re:comando global.
Diciembre 24, 2014, 05:38:35 PM
Si, la explicación resulta difícil de entender porque lo que manejas son variables y no comandos. Para que las variables no se reinicien al volver al menú principal escribe el código en el evento "Game start", así se ejecutará una sola vez en todo el juego.
1523
Preguntas y respuestas / Re:timer
Diciembre 24, 2014, 05:29:36 PM
Para no mostrar los decimales tienes varias opciones: puedes usar el operador div o alguna de las siguientes funciones; round, floor y ceil. Lee el manual y experimenta para que determines qué función te conviene. Sobre el parpadeo, no se qué pueda ocasionarlo, tal vez hay otro código por ahí que está afectando.
1524
Preguntas y respuestas / Re:timer
Diciembre 23, 2014, 09:06:31 PMCita de: Mataca en Diciembre 23, 2014, 04:43:55 PMEse código no va a funcionar porque en la primera línea la alarma se reduce muy rápido en cada paso y no se resta de uno en uno, y en la segunda línea no debe ir el signo + si no hay otra variable antes.Código [Seleccionar]alarm[0] = alarm[0]/room_speed
draw_text(80,80, +string(alarm[0]));
Para dibujar el tiempo usa un código como éste:
[gml]
ts = alarm[0] / room_speed; //total de segundos
m = ts div 60; //minutos
s = ts mod 60; //segundos
draw_text( x,y, string(m)+" : "+string(s) );
[/gml]
1525
Preguntas y respuestas / Re:QUE SON ARRAYS Y ARRAYS 2D como es utiliza?
Diciembre 23, 2014, 08:39:37 PM1526
Preguntas y respuestas / Re:Giro mediante Image_angle
Diciembre 23, 2014, 08:37:24 PM
Dime si entendí bien, quieres que al hacer click en un punto de la pantalla el personaje gire gradualmente hasta quedar mirando hacia ese punto y que al mismo tiempo se vaya desplazando a ese punto, ¿es correcto?
1527
Preguntas y respuestas / Re:Objeto inmovil al chocar con pared
Diciembre 23, 2014, 04:40:05 PM
Hola elemenda3.
Eso sucede porque el bloque que detiene el movimiento del personaje es sólido y se hace vspeed=0 en el evento de colisión con el bloque, y además el icono "Step towards point" no modifica la variable vspeed. Muchos de los programadores experimentados en GM recomiendan no usar bloques para rodear las rooms, porque eso baja el rendimiento. Mejor usa una condición para la coordenada "y" en el evento step (en vez del evento colisión):
[gml]
if( y < 8 ) y = 8;
[/gml]
Cambia el 8 por valor que necesites, y no olvides borrar los bloques que están como barrera.
Eso sucede porque el bloque que detiene el movimiento del personaje es sólido y se hace vspeed=0 en el evento de colisión con el bloque, y además el icono "Step towards point" no modifica la variable vspeed. Muchos de los programadores experimentados en GM recomiendan no usar bloques para rodear las rooms, porque eso baja el rendimiento. Mejor usa una condición para la coordenada "y" en el evento step (en vez del evento colisión):
[gml]
if( y < 8 ) y = 8;
[/gml]
Cambia el 8 por valor que necesites, y no olvides borrar los bloques que están como barrera.
1528
Preguntas y respuestas / Re:Copiar código con colores [Solucionado]
Diciembre 23, 2014, 04:33:16 PM
Estos son los pasos: en el menú "Language" selecciona "Define your language...", en la ventana que aparece oprime el botón "Import...", busca el archivo xml y ábrelo, cierra el programa y ábrelo de nuevo, en el menú "Language" selecciona "Game Maker Lang" que debe aparecer en la parte de abajo, y listo.
1529
Preguntas y respuestas / Re:Copiar código con colores
Diciembre 23, 2014, 01:32:57 AM
Gracias penumbra, encontré la solución gracias a tu respuesta. Revisé el plugin para Sublime Text, pero al ver que está un poco limitado decidí buscar uno equivalente para Notepad++, y resulta que ya lo tiene incluido (NppExport), con ese plugin se puede copiar o exportar en RTF. Entonces usé esta definición de colores http://yal.cc/notepad-syntax-highlighting-for-gamemaker-studio/, que edité un poco, porque en algunos casos no muestra el color por defecto de GM8. Ya funciona a la perfección.
1530
Preguntas y respuestas / Re:Copiar código con colores
Diciembre 22, 2014, 09:50:03 PM
Gracias por responder Xizotono.
Siempre intento documentar todo lo que hago en GM, pero lo escribo en papel en forma de pseudocódigo o diagramas, pero nunca escribo el código GML a lápiz y menos si es mucho código, los códigos quedan almacenados dentro de los juegos o en archivos de texto.
Ahora quiero documentar mis programas de un modo elegante, también tenía ganas de escribir algunos tutoriales y recopilar la información del último proyecto en el que he estado trabajando para mostrarla a los interesados.
Se pueden hacer capturas de pantalla y pegar el código como imagen dentro del documento, pero hay cosas que no me gustan: el documento queda de un tamaño mayor, con una imagen no se puede seleccionar, copiar y pegar automáticamente, y por lo general el texto se imprime mejor que las imágenes.
Esta idea surgió al trabajar en Matlab; en éste programa el código se puede copiar y pegar con el mismo formato, queda muy bien al pasarlo a Word.
Ya probé con notepad++ y Sublime Text, pero los colores no se pueden copiar.
Se me acaba de ocurrir una solución: copiar los códigos al editor de mensajes del foro entre las etiquetas [gml][/gml], el resultado se puede copiar con formato. Para código de GM8 va a funcionar bien, pero no está actualizado para GMS.
Aún espero que exista otra solución.
Siempre intento documentar todo lo que hago en GM, pero lo escribo en papel en forma de pseudocódigo o diagramas, pero nunca escribo el código GML a lápiz y menos si es mucho código, los códigos quedan almacenados dentro de los juegos o en archivos de texto.
Ahora quiero documentar mis programas de un modo elegante, también tenía ganas de escribir algunos tutoriales y recopilar la información del último proyecto en el que he estado trabajando para mostrarla a los interesados.
Se pueden hacer capturas de pantalla y pegar el código como imagen dentro del documento, pero hay cosas que no me gustan: el documento queda de un tamaño mayor, con una imagen no se puede seleccionar, copiar y pegar automáticamente, y por lo general el texto se imprime mejor que las imágenes.
Esta idea surgió al trabajar en Matlab; en éste programa el código se puede copiar y pegar con el mismo formato, queda muy bien al pasarlo a Word.
Ya probé con notepad++ y Sublime Text, pero los colores no se pueden copiar.
Se me acaba de ocurrir una solución: copiar los códigos al editor de mensajes del foro entre las etiquetas [gml][/gml], el resultado se puede copiar con formato. Para código de GM8 va a funcionar bien, pero no está actualizado para GMS.
Aún espero que exista otra solución.