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

1
Hola, buenas noches.
He creado un sistema de partículas en una sala. Dicha sala contiene un menú con botones, uno de ellos es "jugar". Si haces click en el botón desactiva el sistema de partículas (part_system_destroy(global.loquesea();) y te lleva a otra sala, todo lo mencionado estando el juego en pantalla completa. Hasta aquí el código se ejecuta correctamente, el problema surge cuando pasados 10-15 seg. la pantalla se pone en negro. Después de hacer varias pruebas he sacado la conclusión de que en modo ventana no ocurre dicho inconveniente.
¿Alguna idea de por qué se da este fenómeno y cómo solucionarlo?

¡Gracias de antemano!
2
[spoiler]
Cita de: ocarina en Enero 11, 2015, 04:45:28 PM
amigo tu estas poniendo esto global.Totalpuntos=global.Totalpuntos*global.Redpun;
Y creo q el error es porque pones global.Redpun
Y creo q lo correcto es global. Redpuntos
Saludos
[/spoiler]
No me lo puedo creer... Llevaba horas obcecado, buscando el problema y mirando foros. ¡Qué error más tonto!
Muchas gracias compañero, la perspectiva de otra persona siempre es de gran utilidad.

Debo añadir que GML también hace distinción entre minúsculas y mayúsculas. No me había fijado hasta la fecha.
¡Un saludo!
3
Hola, buenas tardes.
No comprendo que debo hacer para operar variables globales. Me explico:

En un objeto de la sala 'A' defino la creación de dos variables
[Create]
ini_open("Save.ini");
global.Totalpuntos=ini_read_real("general","puntos",0);
global.Redpuntos=ini_read_real("general","redpun",0.95);
ini_close();

En otro objeto de la misma sala que le he dado propiedades de botón hago lo siguiente:
[Step]
if (lo que sea){
     global.Totalpuntos=global.Totalpuntos*global.Redpun;
     room_goto(room_1);
}

El error surge en "global.Totalpuntos=global.Totalpuntos*global.Redpun;". ¿Cómo puedo operar y modificar el valor de las variables globales?
Muchas gracias por vuestro tiempo y comprensión, debe ser una tontería pero no lo estoy viendo...
4
YA LO HE SOLUCIONADO
Muchas gracias a todos los que habéis comentado en el post, dejo la solución por si a alguien le ocurre lo mismo.
En un evento Step:

        if sprite_index = spr_ofi_atk2_der && image_index = 2
        {
        image_speed = 0
        sprite_index = spr_oficinista_stop_der
        }
       
if cooldown = 1 && keyboard_check_pressed(ord('O'))
{
    if sprite_index = spr_oficinista_der || sprite_index = spr_oficinista_stop_der
    {
        sprite_index = spr_ofi_atk2_der;
        image_speed = 0.2
        alarm[0] = 180
        cooldown = 0
    }
}

Sólo había que sacar fuera del 'If' del Keyboard la parte de comprobar el 'image_index' para cambiar el 'sprite_index'.
Y con esto me he tirado más de dos días estancado señores  :-[ jajaja
5
Perdón, ya está solucionado[spoiler]
Cita de: Johann en Mayo 26, 2014, 04:22:19 AM
Cita de: penumbraMmm... estás usando muchos sprites, el doble de los necesarios.

Mmm... Retsal, no nos dijiste en el icono del primer mensaje que versión de GM usas.
Mira esto:
Preguntas y respuestas: qué es y cómo funciona - Leer antes de postear
Por favor arréglalo y listo.
[/spoiler]

Realmente el problema que tengo es de base porque no sé como adquiere valores 'image_index' y no consigo que el 'if' me funcione.
Me podríais explicar detalladamente como funciona el 'image_index' y cómo lo modifica el 'image_speed'? También influye la velocidad de las habitaciones?

Gracias de antemano
6
No se me ocurre que usar para corregir el if...
¿Qué podría poner para corregirlo sin hacer el animation end? no sé realmente lo que es, me siento más cómodo con el if
7
[spoiler]
Cita de: penumbra en Mayo 25, 2014, 11:37:31 PM
Mmm... estás usando muchos sprites, el doble de los necesarios.

Suponiendo que nada mas hay un sprite que originalmente mira hacia la derecha, el mismo se puede usar cuando se avanza a la izquierda, sólo inviertes su orientación usando image_xscale = -1. Esto mismo ayuda a que un sólo sprite de "quieto" sea suficiente, en lugar de un quieto_der y un quieto_izq

if image_speed > 0
{
     if image_index > image_number - 1 {sprite_index = spr_oficinista_stop_der};
}

Esto se supone que al final sirve para lo mismo que lo que puse para el evento [ANIMATION END]. Tu estás revisando qué sprite hay para condicionar qué sprite se muestra en seguida, yo voy más por el método de usar variables que me indiquen el estado del personaje, y en base a eso asignar sprites, pero de nuevo, es cuestión de gustos. ¿Para qué usas la alarma?
[/spoiler]
Lo de los sprites era la forma más intuitiva para mí, llevo menos de una semana usando gml jaja ^^'
La alarma es para el cooldown, dura 3 seg y no me da problemas... el problema es que la animación de lanzar la maleta no para a no ser que mueva al personaje (cambia el sprite a correr).
El código:
if image_speed > 0
{
     if image_index > image_number - 1 {sprite_index = spr_oficinista_stop_der};
}

no me funciona, sabéis qué tengo mal?  ???
8
Perdón, me falta por añadir el código que he usado:

if cooldown = 1 && keyboard_check_pressed(ord('O'))
{
    if sprite_index = spr_oficinista_der || sprite_index = spr_oficinista_stop_der
    {
        sprite_index = spr_ofi_atk2_der;
        image_speed = 0.1;
        if image_speed > 0
            {
            if image_index > image_number - 1 {sprite_index = spr_oficinista_stop_der};
            }
        alarm[0] = 180
        cooldown = 0
    }

Eso es lo que tengo para la derecha, para la izquierda tengo lo mismo con los respectivos cambios en los sprites.
9
Tengo un proyecto 2D de un juego competitivo entre 2 jugadores.
Un objeto es el personaje 'oficinista' y quiero que cuando le de a la tecla 'o' (es el ataque) lance una maleta. Para lanzar la maleta he creado un sprite de 3 imágenes, el problema es que no sé que hacer para que reproduzca únicamente esas 3 imágenes y luego vuelva al sprite donde está parado.
Tampoco comprendo como funciona la variable image_index, sé usarla para cambiar sprites, pero no comprendo de donde vienen los valores (me da 0 y 0.5 de forma aleatoria).

Gracias de antemano. :)