La imagen sobre la cual quieres que se toque para ir a otro room debe estar asociada a una instancia. Esa instancia, en su evento mouse left pressed debe tener la acción para ir al room que quieres.
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.
107
Preguntas y respuestas / Re:¿Revertir movimiento en base a otro objeto?
Octubre 19, 2015, 05:32:41 AM
Suponiendo que existe un eje vertical que representa la coordenada x donde ambos se encontrarían si se acercaran, puedes poner en el evento step del objeto B lo siguiente:
donde eje es la coordenada x donde ambos se encontrarían si se acercaran.
Código [Seleccionar]
x=-objetoA.x+2*eje;
donde eje es la coordenada x donde ambos se encontrarían si se acercaran.
108
Preguntas y respuestas / Re:instancia al chocar con otra de su mismo objeto se mezcle con la otra?[Resuelto]
Octubre 16, 2015, 10:55:33 PMCita de: kostra en Octubre 16, 2015, 04:09:27 PM
osttii, impresionante, así de simple es esa locura??? jaja, gracias penumbra, también de mi parte jaaja.
Ynfiniti:
http://gmc.yoyogames.com/index.php?showtopic=490897
http://gmc.yoyogames.com/index.php?showtopic=617996
http://gmc.yoyogames.com/index.php?showtopic=551889
http://gmc.yoyogames.com/index.php?showtopic=487245
Para lo que tú quieres, CUALQUIER ejemplo de autotile como te dije, te sirve de sobras... buscaste lo que te dije??
Es una forma de hacerlo pero es más compleja; requeriría definir una imagen para el bloque para cada uno de los 16 casos de empalme y un script que calculara cuál de esos 16 aplica según las condiciones de borde, para ambos bloques en contacto.
109
Preguntas y respuestas / Re:Problema con las colisiones
Octubre 16, 2015, 10:42:55 PM
Si sólo importa la colisión de la moto con el peatón, modifica el bounding box del sprite de la moto de modo que sólo abarque las ruedas de la moto.
110
Preguntas y respuestas / Re:Guardar sprites creados con sprite_add... permanentemente?
Octubre 16, 2015, 10:36:40 PM
Puede ser que la variable global.icon aún no está actualizada cuando intentas leerla desde el otro objeto. Para poder dilucidarlo, se necesita como mínimo que indiques en qué eventos estás poniendo los códigos. Puede ser que la definición de global.icon esté en el evento create de un objeto, y en el evento create de otro objeto intentas leer esa variable, siendo que el evento create del segundo objeto ocurre antes que el del primero.
111
Preguntas y respuestas / Re:Guardar sprites creados con sprite_add... permanentemente?
Octubre 16, 2015, 03:12:09 PMCita de: NiuWeb en Octubre 16, 2015, 06:39:29 AM
Hola a todos, estaba trabajando en mi juego (sí,sí...el mismo de hace 2 meses...xD) y tuve un problema:
En una room, yo creé un sprite de esta manera:
[gml]screen_save("imagen.png");
sprite_add("imagen.png",0,true,false,0,0);[/gml]
y lo almacené en una variable global, que después iría a guardarse en un .ini . pero el problema es que cuando voy a otra room, la cual es donde se lee el .ini y se dibuja en la pantalla, no me lee el sprite creado. Además, este sprite que creo necesita tener dos subimages, lo cual no sé hacer tampoco. Es decir que el sprite que quiero crear debe tener 2 subimágenes de dos capturas de pantalla diferentes en el mmismo sprite
A mí aún no me queda claro por qué guardas un sprite de la pantalla en disco y luego lo cargas inmediatamente. Estoy suponiendo, entonces, que tu intención es usarlo durante la misma ejecución del juego y no durante otra; si ese es el caso, no veo la necesidad de guardar el índice en un ini.
Yo usaría sprite_create_from_surface en vez de screen_save para crear el sprite y poder agregarle subimágenes después con sprite_add_from_surface:
Copiar la pantalla en un sprite:
Código [Seleccionar]
global.sprite=sprite_create_from_surface(application_surface,0,0,surface_get_width(application_surface),surface_get_height(application_surface),true,false,0,0);
Agregarle como subimagen la pantalla actual (en el otro room):
Código [Seleccionar]
sprite_add_from_surface(global.sprite,application_surface,0,0,surface_get_width(application_surface),surface_get_height(application_surface),true,false);
112
Preguntas y respuestas / Re:¿instancia al chocar con otra de su mismo objeto se mezcle con la otra?
Octubre 16, 2015, 05:31:01 AM
Buen pensamiento lateral, excelente forma de hacerlo, penumbra, tremendamente sencillo de implementar y aún así no se me ocurrió... XD
113
Preguntas y respuestas / Re:¿instancia al chocar con otra de su mismo objeto se mezcle con la otra?
Octubre 15, 2015, 04:26:40 AMCita de: Clamud en Octubre 15, 2015, 04:14:20 AM
No puedo acceder a sandbox.yoyogames, ¿tu sí?
El juego es gratuito así que no debería haber problema si lo adjunto (yo sí pude acceder). Por cierto, no se me ocurre cómo lograr el efecto que aparece en el juego.
114
Preguntas y respuestas / Re:verificar extensión al guardar archivo?
Octubre 11, 2015, 10:53:21 PM
Luego de que el usuario haya ingresado el nombre del archivo, esto lo modificará agregándole la extensión .pacp en caso de que no termine con ella:
Quizá también quieras revisar que el usuario no ingresó una cadena vacía.
Código [Seleccionar]
var extension,largo;
largo=string_length(global.name);
if largo<6
global.name+=".pacp";//se ingresó un nombre muy corto que no puede terminar en .pacp y hay que agregárselo
else
{
extension=string_copy(global.name,largo-4,5);//últimos 5 caracteres del nombre
if extension!=".pacp"
global.name+=".pacp";
}
Quizá también quieras revisar que el usuario no ingresó una cadena vacía.
115
Preguntas y respuestas / Re:Necesito mantener una SURFACE en un cuarto permanente
Octubre 11, 2015, 05:53:36 PMCita de: Killer en Octubre 11, 2015, 10:08:31 AM
El tema al que enlazas usa como prueba de que la función no está implementada otro enlace a un post del 17 de Marzo, en dicho post usar la función tira un mensaje de error que específicamente dice que la función aún no está implementada, si tu GM no está dando dicho error entonces la función esta implementada pero estaba siendo usada incorrectamente.
En el mismo tema el usuario que dice que la función no está implementada luego se corrige a si mismo y pone un enlace a las notas de versión de GMS, donde señala que buffer_set_surface fue agregada en la versión 1.4.1598, el 10 de julio de este año, para windows y PS4.
EL hecho de que los reportes no han sido marcados como solucionados podría ser señal de intenciones para habilitar dicha funcionalidad para otras plataformas, o más probablemente mala administración de parte de Yoyo, que lamentablemente se ha vuelto cosa de esperar, algunos reportes que yo hice desde hasta hace año y medio fueron "asignados" y nunca más fueron actualizados.
No tengo malas intenciones al decirlo, pero varias veces he visto a gente diciendo que el GM no funciona como debería y la gran mayoría de las veces termina siendo error humano.
Normalmente hago muchas pruebas antes de concluir que hay un bug, pero en este caso tienes razón, nunca me salió el mensaje de error donde se indica que la función no está implementada; debo haber cometido un error en alguna parte y por eso no me funcionaba, aunque no logré identificar cuál :-X
Sé que no tienes malas intenciones al decir que hay gente que lo primero que hace al ver que su código no funciona es culpar a GM. Sin embargo, no sé si sea la gran mayoría. En cada versión nueva existe un no despreciable listado de bugs corregidos en las release notes y a mi me pasó que usando la última versión encontré un bug que, luego de un poco de investigación, resultó estar en proceso de solución por parte de yoyo (me pasó con la función surface_copy en android que funcionaba incorrectamente); otras veces me he topado con funciones que no trabajan como corresponde al compilar con el yoyo compiler, por ejemplo los haptics effects que no funcionan, y luego de investigar descubrí que Yoyo lo justifica por "no tener la licencia" (cosa rara que tenga la licencia para la versión sin su compilador y no la tenga para el yoyo compiler), además de no mencionarlo en ninguna parte del manual (http://bugs.yoyogames.com/view.php?id=12723). De hecho, parece que este último caso es otro de los que quedarán archivados eternamente como te pasó a ti ya que hace 2 años no tiene cambios.
116
Preguntas y respuestas / Re:Necesito mantener una SURFACE en un cuarto permanente
Octubre 11, 2015, 08:52:19 AMCita de: Killer en Octubre 11, 2015, 08:09:30 AMCita de: Guacusio en Octubre 10, 2015, 10:21:30 PM
Por cierto, intenté utilizar la función bufer_set_surface y al parecer no está operativa. encontré esto:
http://bugs.yoyogames.com/view.php?id=16812
http://bugs.yoyogames.com/view.php?id=17733
Raro, acabo de probarlas y funcionan correctamente, tambien a notar que los reportes que enlazas son de los primeros meses del año, asi que es probable que ya hayan sido solucionados.
Recuerda usar un buffer de almenos el tamaño minimo para que quepa la superficie, si se usan buffers del tipo Grow no van a aumentar su tamaño para que entre la superficie, debe ser del tamaño adecuado desde el principio.
Ah, y otra cosa a notar es que las funciones buffer_get_surface y buffer_set_surface solo funcionan para Windows y PlayStation 4.
Uso un buffer tipo buffer_fast y de tamaño ancho*alto*4 (x4 porque cada pixel utiliza 4 bytes de memoria en formato RGBA) . El primer link que puse se derivó al caso del segundo ya que es el mismo tema. Si te fijas en el bug Nº17733 (el segundo link que envié), en el Issue History aparece que el último acontecimiento es del 17 de julio y no aparece el tema cerrado. En varias otras partes he encontrado que hay problemas con esa función, por ejemplo en este post del 6 de agosto se señala que la función buffer_set_surface aún no está implementada:
http://gmc.yoyogames.com/index.php?showtopic=672356
Es extraño pero ahora que vuelvo a probar el mismo código sí funciona y no hice ningún cambio. El código que podría aplicarse es este:
Código [Seleccionar]
//guardado de la surface en un buffer
b=buffer_create(b*h*4,buffer_fast,1);//(b,h) = (ancho,alto) de la surface
buffer_get_surface(b,s,0,0,0);//s=id de la surface
surface_free(s);
Código [Seleccionar]
//recuperación de la surface desde el buffer:
s=surface_create(w,h);
buffer_set_surface(b,s,0,0,0);
buffer_delete(b);
117
Preguntas y respuestas / Re:Necesito mantener una SURFACE en un cuarto permanente
Octubre 10, 2015, 10:21:30 PM
Por cierto, intenté utilizar la función bufer_set_surface y al parecer no está operativa. encontré esto:
http://bugs.yoyogames.com/view.php?id=16812
http://bugs.yoyogames.com/view.php?id=17733
http://bugs.yoyogames.com/view.php?id=16812
http://bugs.yoyogames.com/view.php?id=17733
119
Preguntas y respuestas / Re:Problema con texto de RPG
Octubre 10, 2015, 09:26:37 PM
Hay una variable que no está claro para qué se usa (timer), pero para solucionar el problema te puedes servir de ella. Por cierto, tienes códigos en el evento draw que no están dibujando nada y debieras pasarlos al evento step.
Donde reproduces el sonido, en vez de reproducirlo cada step, debieras hacerlo sólo cuando el texto a mostrar es distinto al texto del step anterior. Para eso, la forma más sencilla es agregar un if antes de reproducir el sonido:
Otra cosa: el segundo argumento de la función string_copy debe ser mayor o igual a 1.
Donde reproduces el sonido, en vez de reproducirlo cada step, debieras hacerlo sólo cuando el texto a mostrar es distinto al texto del step anterior. Para eso, la forma más sencilla es agregar un if antes de reproducir el sonido:
Código [Seleccionar]
if print!=string_copy(text,1,timer)
audio_play_sound(sound,1,false);
Otra cosa: el segundo argumento de la función string_copy debe ser mayor o igual a 1.
120
Preguntas y respuestas / Re:Necesito mantener una SURFACE en un cuarto permanente
Octubre 10, 2015, 02:59:51 AM
Si se borra al cambiar de room, intenta copiar la surface a un sprite y luego, al volver al room, redibujar el sprite en una nueva surface. También puedes guardarla en un buffer con buffer_get_surface y luego recuperarla con buffer_set_surface