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 - Naitsabes0

301
Cita de: NiuWeb en Septiembre 09, 2017, 07:11:41 AM
El código no hace nada distinto, era para que mirases los valores que imprimen en consola.
Además, la disminución de tiempo es de 1s por cada 60steps, mientras que en la colisión aumenta 30s en 1step, no deberían anularse, para eso son los debugs, para ver lo que realmente sucede.
Pues se anulan  :-\, y el código de DS impide que el juego se ejecute, la verdad pienso en que debería destruir el objeto tiempo y la colisión de la bola, pero el resultado es el mismo, probablemente porque no varié mucho del antes y después.

Si tuvieras que tener un objeto tiempo y un objeto que al colisionarlo sume mas tiempo ¿como lo montarías? claro que seria desde 0, ya que los anteriores mostrados están eliminados en este ejemplo.
302
Cita de: NiuWeb en Septiembre 09, 2017, 06:19:13 AM
Pero a ver, sé específico.
¿No corre? ¿Muestra un error o simplemente no se ejecuta nada? ¿Usas GM:S?

Y te puse ese código porque lo creo más intuitivo, más legible y más fácil de modificar.
http://docs.yoyogames.com/source/dadiospice/002_reference/data%20structures/ds%20maps/index.html
-Si, no corre mas lejos de la pantalla gris.

-Si tengo GM:S 1.4 (la ultima versión)

-Por lo que ley en su enlace de "Mapas de DS" se resume en una estructura de datos que almacena datos en pares enlazados consistentes en una clave y un valor correspondiente.

-No planeo guardar valores numéricos de ningún objeto, simplemente quiero crear un sprite en pantalla que le indique al usuario, usted esta aquí, es un simple bloque que dice nivel 1, y así hasta llegar a una cantidad indeterminada 1 x 1, lo cual se vería en las sub-imágenes, por eso esa función es mala para esta tarea, tal vez por eso no la he visto que nadie las use en sus proyectos.
303
Cita de: NiuWeb en Septiembre 09, 2017, 06:13:14 AM
Pues qué optimismo tienes, no va ni una página de hilo y ya rindiéndote,  :-\

Intenta hacer pruebas en el evento de colisión, agrega un show_debug_message() antes de que le sumes al tiempo para ver qué valor imprime. Empieza haciendo eso para ubicar el error.
[gml]
show_debug_message("Original: " + string(global.tiempo));
global.tiempo += 30;
show_debug_message("nuevo: " + string(global.tiempo));

effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();
[/gml]

Y por cierto, sería bueno que agrupes el objeto bola , el objeto bola triple y bola estrella bajo un parent, para que uses un sólo evento de colisión con éste.
Los 3 objetos ya tienen un padre que se encarga de las colisiones, no pueden haber 2 en un mismo objeto. respecto al código, el resultado final es que suma 30 segundos y resta 30 segundos mas los efectos correspondientes, es decir que se auto-anula al instante, quedando en 0, lo compare con los códigos del jugador del otro juego, y es el mismo, por lo que no se puede sumar tiempo a objetos que se crean en la habitación, al menos no del mismo modo, es por eso que este problema esta marcado como sin solución, por la razón anteriormente argumentada  :-\.

///Sumar tiempo
show_debug_message("Original: " + string(global.tiempo));
global.tiempo += 30;
show_debug_message("nuevo: " + string(global.tiempo));

effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();

hace lo mismo que

///Sumar tiempo
global.tiempo += 30;
effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();

Solo que esta ultima no resta ni suma.
304
Cita de: NiuWeb en Septiembre 09, 2017, 05:07:06 AM
Sería mejor y más organizado usar mapas.
[gml]
///Evento create
iconos = ds_map_create();

iconos[? room_Nivel1] = 0;
iconos[? room_Nivel2] = 1;
iconos[? room_Nivel3] = 2;
[/gml]
[gml]
///Evento draw
draw_sprite(spr_Icono_nivel, iconos[? room], 32, 32);
[/gml]
Y volvió a copiar y pega el mismo código de la otra vez  :-\, si no escribí

///CREATE
iconos = ds_map_create();

iconos [? room_Nivel1] = 0;
iconos [? room_Nivel2] = 1;
iconos [? room_Nivel3] = 2;

///DRAW
draw_sprite(spr_Icono_Nivel, iconos[? room]. 32, 32);

Es porque no funciona, al grado que de que el juego no corre, por eso busco un sistema que funcione a la larga, y el que muestra no lo entiendo, de hecho nunca he visto esas funciones en tutoriales, ya que parecen ser poco intuitivas.

///Nombre nivel
if room=room_Nivel1 (draw_sprite(spr_Icono_Nivel,0,32,32));
if room=room_Nivel2 (draw_sprite(spr_Icono_Nivel,1,32,32));
if room=room_Nivel3 (draw_sprite(spr_Icono_Nivel,2,32,32));

Todavía no encuentro que esta mal aquí  :-X.
305
He pensado en algo como lo de abajo para crear un sprite especifico para cada habitación.

///Nombre nivel
if room=room_Nivel1 (draw_sprite(spr_Icono nivel,0,32,32));
if room=room_Nivel2 (draw_sprite(spr_Icono nivel,1,32,32));
if room=room_Nivel3 (draw_sprite(spr_Icono nivel,2,32,32));

Pero como es de costumbre, hay algo que me falla al momento de realizar este código, ya que puedo llegar a armar 30 niveles y debo ordenarlo como si fuera una lista, de todas formas en un juego que va por versiones y se ara pesado de organizar a futuro.

NOTA: Resumí esto así, por que mi problema anterior se alargo y nos desvió del problema principal, ademas de descubrir que no le puedo sumar tiempo a un objeto que se crea.
306
Cita de: 3dgeminis en Septiembre 09, 2017, 12:02:23 AM
Pues ahi tampoco veo error (con un solo objeto te podrias haber ahorrado todas esas colisiones)
Ese es el problema, no hay error y aun si no funciona, el tiempo no se suma y todo lo demás se ejecuta bien, pero es el tiempo lo que mas me interesa en este caso, respecto a programar todo en un objeto, estoy seguro que podría hacer mas de 100.000 lineas de código para un solo objeto si supiera como administrarlo de forma funcional en los eventos correspondientes, pero ambos sabemos que me faltan pulir habilidades para hacer tal acción.
307
Cita de: ocarina en Septiembre 08, 2017, 08:11:13 PM
Si se puede SOLO si no contiene anuncios o publicidad o q sea de pago! En otras palabras se puede siempre y cuando tu no saques ganancia algúna del juego!
Saludos y pura vida
Como dice el penúltimo usuario, mientras no haya dinero de por medio, siempre puedes usar recursos de juegos creados, solo deberías ver los juegos de navegares, puedes encontrar miles de juegos de mario creados por fan que usan sus recursos, pero atento a las consecuencias negativas que estas puede acarrear si creas un proyecto ambicioso en base a ello, por ejemplo tengo estos videos en el canal donde he creado un plataformero, con un enfoque distinto. https://www.youtube.com/channel/UCw06HXsy1tPNcZIsNkb483w?view_as=subscriber
308
Cita de: bochaPastore en Septiembre 08, 2017, 01:31:08 PM
Cita de: MasterMaker en Septiembre 08, 2017, 09:02:59 AM
En el evento colisión coloca
global.tiempo + 30;
instance_destroy();

global.tiempop += 30;
Si leyó el problema inicial y no el ultimo mensaje del post, el código tiene ese diseño funcional, no coloque el error lógico que me mandaron, se agradece que repita el código que ya esta escrito, pero el problema no esta hay, razón por la que todavía sigue pendiente.
309
Cita de: MasterMaker en Septiembre 08, 2017, 09:02:59 AM
En el evento colisión coloca
global.tiempo + 30;
instance_destroy();
Tu ejemplo esta mal redactado, ya que no cumple con los valores lógicos de GM:S
310
Cita de: 3dgeminis en Septiembre 08, 2017, 08:21:01 AM
Ahi no hay fallo.
Vale si hay no hay falla daré todos los elementos involucrados del poder tiempo y el controlador de tiempo.

obj_Poder_Aumento_Tiempo
CREATE
image_speed = 0.05;

COLISION con bola
///Sumar tiempo
global.tiempo += 30;
effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();

COLISION con bola triple
///Sumar tiempo
global.tiempo += 30;
effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();

COLISION con bola estrella
///Sumar tiempo
global.tiempo += 30;
effect_create_above (ef_firework,x,y,1,c_red);
audio_play_sound (snd_Relog,50,false);
instance_destroy();

obj_Tiempo_Juego
CREATE
///Variables
global.tiempo = 130; //tiempo en segundos
alarm[0] = 30; // velocidad del tiempo 1 segundo

ALARMA 0
///Velocidad del tiempo
global.tiempo -= 1; //descuento del tiempo 1segundo
alarm[0] = 60;
image_speed = 0.05;

STEP
///Efecto del tiempo 0
if(global.tiempo < 0)
{
    global.tiempo = 0
    game_end();
}

DRAW
///Dibuja el tiempo actual
draw_set_halign(fa_middle);
draw_set_valign(fa_middle);
draw_set_color(c_red);
draw_text(400,32,string(global.tiempo));
draw_self()

Todo esta en su sitio, es extraño que no funcione  :-\.
311
el objeto que tiene el tiempo dispone de

obj_Tiempo_juego
CREATE
///Variables
global.tiempo = 130; //tiempo en segundos

Los demás elementos se encargan de que corra 30 step por segundo y de dibujarlo.

obj_Poder_Aumento_Tiempo
COLISION con bola
///Sumar tiempo
global.tiempo += 30;
instance_destroy();


El tiempo no se suma se conserva, por lo que se vuelve inútil el poder de aumentar tiempo, hay algo que falla en estos códigos.

312
Preguntas y respuestas / Re:Darle nombre a la habitación
Septiembre 07, 2017, 11:32:36 PM
Cita de: Clamud en Septiembre 07, 2017, 10:41:23 PM
Puedes crear un ds_map para relacionar cada room con un numero de subimagen.

Al inicio del juego crea el mapa
[gml]
global.subimg_rooms = ds_map_create();
global.subimg_rooms[? rm_nivel1] = 0;
global.subimg_rooms[? rm_nivel2] = 0;
// etc.
[/gml]

Al iniciar cada room revisa el mapa para ver qué sprite se debe dibujar
[gml]
subimagen = global.subimg_rooms[? room];
[/gml]
Así que asociar una global, la verdad es que el objeto es persistente, no estoy seguro de que su método sea muy intuitivo de entender, ademas esto ocurre en el evento room_start, por lo que siempre ara X acción cuando el cuarto sea el que corresponde, pero pensaba en armar algo no tan complicado con palabras en vez de números que a la semana siguiente no tenga idea de su función, de por si ya hay muchos valores con números, pienso en una estructura como la de abajo para entenderla facilmente.

///Nombre nivel
if room=room_Nivel1 (draw_sprite(spr_Icono nivel,0,32,32));
if room=room_Nivel2 (draw_sprite(spr_Icono nivel,1,32,32));
if room=room_Nivel3 (draw_sprite(spr_Icono nivel,2,32,32));

Pero como es de costumbre, hay algo que me falla al momento de realizar este código, ya que puedo llegar a armar 30 niveles y debo ordenarlo como si fuera una lista, de todas formas en un juego que va por versiones y se ara pesado de organizar a futuro, error que cometí de novato en "Red Heart", pero funciona bien  :-\.
313
Preguntas y respuestas / Re:Darle nombre a la habitación
Septiembre 07, 2017, 10:24:26 PM
Cita de: Arcadian en Septiembre 07, 2017, 01:25:30 PM
Y no te sale mejor dibujar el valor de room_get_name(room)?

Es un código que te vale para todas las pantallas.
Y como debería montar el código para que algo como eso se ejecute sin problemas, en la practica es mas difícil hacerlo que decirlo  :-\?
314
Preguntas y respuestas / Re:Darle nombre a la habitación
Septiembre 07, 2017, 10:22:42 PM
Cita de: bochaPastore en Septiembre 07, 2017, 01:42:48 PM
Yo cambiaria esto:

if room=room_Nivel1 {audio_sound_gain(snd_Delightful_D,0.7,1);
                   audio_play_sound(snd_Delightful_D,0,1);}else
if room=room_Nivel2 {audio_sound_gain(snd_Robobozo,0.7,1);
                   audio_play_sound(snd_Robobozo,0,1);}else
if room=room_Nivel3 {audio_play_sound(snd_Laser_Groove,0,1);}



Por esto, q es mas optimo:

switch(room)
{
    case room_Nivel1:
        audio_sound_gain(snd_Delightful_D,0.7,1);
        audio_play_sound(snd_Delightful_D,0,1);
        break;
    case room_Nivel2:
        audio_sound_gain(snd_Robobozo,0.7,1);
        audio_play_sound(snd_Robobozo,0,1);
        break;
    case room_Nivel3:
        audio_play_sound(snd_Laser_Groove,0,1);
}


Y lo mismo para lo otro que queres armar :)

Saludos.
Se agradece el ejemplo, pero como he dicho, no me interesa programar la música de los niveles, y es que la ya la tengo, la razón por la que escribí ese código fue para mostrar lo que quiero lograr con la creación de un sprite, por lo que preguntare de nuevo ¿como ago para que el sprite de una sub-imagen "X" se cree cuando la habitación tiene el nombre "X"?

NOTA: Es redundante decirlo, pero mi problema no tiene ninguna relación con la música actualmente.
315
Preguntas y respuestas / Darle nombre a la habitación
Septiembre 07, 2017, 08:51:49 AM
Pues no es un nombre como tal, sino que es una forma de llamar a la habitación, para que el jugador tenga una orientación de donde se encuentra, en mi caso es simplemente llamar a cada cuarto con un numero creado por un sprite, lo que trato de hacer es crear un objeto controlador que me diga en que nivel se encuentra el jugador, lo mas parecido que tengo a esto es el objeto controlador de música fondo, el cual tiene un código que permite tocar la música correspondiente a cada nivel, para hacerse una idea esta seria su estructura

///////////////////////////////ROOM_START
///Musica de fondo
if room=room_Nivel1 {audio_sound_gain(snd_Delightful_D,0.7,1);
                   audio_play_sound(snd_Delightful_D,0,1);}else
if room=room_Nivel2 {audio_sound_gain(snd_Robobozo,0.7,1);
                   audio_play_sound(snd_Robobozo,0,1);}else
if room=room_Nivel3 {audio_play_sound(snd_Laser_Groove,0,1);}

////////////////////////////ROOM_END
audio_stop_all();

Por lo que deduzco que tendría que armar una estructura semejante, es decir, si cuarto es X , entonces crea/dibuja el sprite X en las coordenadas x,y, pero como no logro armar de forma correcta este elemento, he preguntado  :-\.