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.

Temas - Samigabacho

1
Hola a todos,
tengo un problema que la verdad no lo entiendo ni a la de 3.
He creado un sprite de un pequeño marcador, y un objeto con dicho sprite.
Cuando lo coloco en la room sin nada más, mi instancia se muestra en el juego. Pero en el momento en el que le añado un evento draw para pintar la puntuación desaparece el objeto y sólo aparece la puntuación.

[gml]if(score<-40){draw_set_color(make_color_rgb(255,100, 100))}
if(score<0){draw_set_color(make_color_rgb(255,150, 150))}
if(score>=50){draw_set_color(make_color_rgb(255,255, 255))}
if(score>=100){ draw_set_color(make_color_rgb(200,255, 255))}
if(score>=200){ draw_set_color(make_color_rgb(150,255, 255))}
if(score>=300){ draw_set_color(make_color_rgb(100,255, 255))}
if(score>=400){ draw_set_color(make_color_rgb(50,255, 255))}
if(score>=500){ draw_set_color(make_color_rgb(0,255, 255))}
draw_set_font(font0)
draw_text(x,y,"Puntos: "+string(score))[/gml]

Alguien sabe porqué puede estar pasando esto?
2
Hola a todos,
intento que como el asunto de mi pregunta indica, la puntuación se escriba en diferentes colores dependiendo de la cantidad de puntos que se estén haciendo.
En principio pensaba que sería fácil y que no tendría mucho problema e hice algo así:

[gml]if (variable_global_get("score")<50){
    draw_set_font(font0);
    draw_set_color(c_white);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
}
if (variable_global_get("score")>50 and variable_global_get("score")<100){
    draw_set_font(font0);
    draw_set_color(c_gray);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
}
if (variable_global_get("score")>100 and variable_global_get("score")<150){
    draw_set_font(font0);
    draw_set_color(c_blue);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
}[/gml]

Pero siempre me aparece la puntuación en blanco.

Después intenté hacerlo con un switch, aunque no se si esta estructura te permite evaluar expresiones lógicas en los casos

[gml]
switch (variable_global_get("score")){
    //
    case (variable_global_get("score")<50):
     draw_set_font(font0);
    draw_set_color(c_white);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
    break;
case (variable_global_get("score")>50 and variable_global_get("score")<100):
    draw_set_font(font0);
    draw_set_color(c_gray);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
    break;
case (variable_global_get("score")>100 and variable_global_get("score")<150):
    draw_set_font(font0);
    draw_set_color(c_blue);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
    break;[/gml]

Pero también se queda en blanco. Seguro que debe de ser una tontería pero no soy capaz de dar con ellos.

Aunque esto es una segunda pregunta, creo que al estar presente en el código de la primera pregunta podría entrar en el lote, si infrinjo la norma, por favor decirlo y borro esta parte :D ahí voy...

Si draw_rectangle lo hago para que esté pintado por dentro, es decir, que no sea solo el borde, qué debo hacer para sobre pintar la puntuación encima de manera superpuesta al fondo del rectángulo
Gracias.
3
Hola a todos,
me preguntaba si en la función:
[gml]get_string(str,def)[/gml]
o en

[gml]show_message(str)
show_message_ext(str,but1,but2,but3)[/gml]

En los String que se le pasan se pueden hacer "intro", es decir presentar un texto en la linea 1º y otro texto en una línea debajo. Y si las fuentes de estas líneas pueden ser diferentes.

Además me gustaría saber si se puede establecer alguna letra del teclado (normalmente tanto en Intro como el Space accionan el botón de aceptar) o restringir al uso de ratón para aceptar los show_message(str).

Gracias
4
Propuestas y soporte / Temas solucionado
Octubre 24, 2012, 02:19:24 PM
Hola a todos,

mi pregunta nuevamente vuelve a ser un poco pusilánime, pero la duda me corroe.
He visto algunos temas que en su Titulo pone: lo que sea (SOLUCIONADO). Indicando que el tema está solucionado.
Ese (SOLUCIONADO) lo pone el usuario que abre el tema cuando ya está o lo pone el moderador?

De ser lo primero, tengo que darme una vuelta por el apartado de Preguntas Y Respuestas  ;D

Gracias!
5
Después de darme una vuelta por el foro y hacer un par de búsquedas (esperaba que esta pregunta ya habrá sido hecha) ahí va mi duda...

Tengo que recoger un montón de datos a lo largo del juego para luego guardarlos en un fichero *.txt. Para hacerlo introduzco en un array bidireccional todos los datos que voy necesitando a lo largo del juego. El problema viene porque no se cuál será el número final de filas o columnas que deberá tener, ya que dependerá de factores del juego (duración, número de disparos, etc...). Por lo que a la hora de declararlo lo hago copiando el número de filas y columnas del array que usé para cargar el juego (que posee una estructura semejante pero de dimensiones diferentes)... y claro eso finaliza en error cuando el bucle de guardado se sale fura del array

Muchas gracias.
6
Hola a todos,
me pregunto si hay alguna función en GM para comprobar si una alarma se está ejecutando.
Mi primera corazonada me llevó a intentar algo así como:

if (alarm[1]) {
<sentencia1>
}
if (alarm[2]) {
<sentencia2>
}
i


Pero por he hecho una pequeña prueba y no funciona.
¿Alguien sabe alguna manera de evaluar si una alarma se está ejecutado?
Gracias
7
Hola a todos,
creo que mi pregunta es un poco simple, pero no encuentro función alguna que me sirva.

Necesito saber el tiempo que una instancia está presente,es decir durante el juego creo una instancia (una bomba que cae por gravedad y que impacta en el suelo y desaparece).
Me interesaría saber cuanto tiempo esa instancia está presenta (cayendo).
Como no se si existe una función para eso intento hacerlo así pero no funciona:
En un steep:
if ((instance_exists(obj_us)){
inicioUS =relojInterno; //saco de mi reloj el momento en el que empieza
     if(!(instance_exists(obj_us))){
         finUS =relojInterno
        duracionUS = finUS - inicioUS;
        }
}




y luego paso duracionUS a una alarma, pero no va.
Alguien se le ocurre porqué? Imagino que es por mi segundo if...
8
Hola de nuevo,

finalmente (y gracias a el buen compañero Mgbu) el reloj interno de mi juego mide los segundos que trascurren desde que el juego comienza a andar.

Ahora necesito ir comparando el tiempo trascurrido (relojInterno) con el contenido de una de las filas de un array que cargo con un fichero .txt.

Para hacerlo, en el evento Create de mi objeto_control hago lo siguiente:
comparadorITI =0;
comparadorCS =0;
tiempoAcumulado = 0;

show_debug_message ("global.var_tablas[1,3] =" + string (global.var_tablas[1,3]))
//Bucle principal timing
for (i=1; i < real(global.var_tablas[1,3])+1; i+=1){
comparadorITI = real(global.tb_ds[2,i]) //toma el valor de ITIms de la columna i
show_debug_message ("comparadorITI de i:" +string(i)+" ="+string(comparadorITI))
comparadorCS = real(global.tb_ds[3,i]) //toma el valor de CSms de la columna i
show_debug_message ("comparadorCS de i:" +string(i)+" ="+string(comparadorCS))
//comparadorUS = global.tb_ds[i,4] //toma el valor de USms de la columna i
    //hasta que el reloj interno indique que ya ha pasado el ITIwhile ((tiempoAcumulado+comparadorITI) == relojInterno){
    //mando guardar un trigger  a el array que posteriormente mandaré a mi fichero de datos .txt(e.g.ITI_i, CS_i)
    //mando datos de (obj_personaje.contadorRespuestas)disparos asociados a los trigger anteriores ITI_i = Xdisparos
    show_debug_message ("Respuestas ITI:" +string(obj_personaje.contadorRespuestas))
    obj_personaje.contadorRespuestas = 0; //pongo a 0 el contador de respuestas
    }
    //hasta que el reloj interno indique que ya ha pasado el ITI+CS
    while ((tiempoAcumulado+(comparadorITI + comparadorCS)) == relojInterno){
    //mando guardar un trigger  a el array que posteriormente mandaré a mi fichero de datos .txt(e.g.ITI_i, CS_i)
    //mando datos de (obj_personaje.contadorRespuestas)disparos asociados a los trigger anteriores CS_i = Xdisparos
    show_debug_message ("Respuestas CS:" +string(obj_personaje.contadorRespuestas))
    obj_personaje.contadorRespuestas = 0; //pongo a 0 el contador de respuestas
    tiempoAcumulado = comparadorITI + comparadorCS; //suma el tiempo de ITI_i+CS_i
    }
   
}


La cosa es que mirando los debug_message no parece que haga nada de lo que pongo en las comparaciones while. Imagino que lo estaré haciendo mal.

Mi intención es la siguiente:

Extraer valores de la 1º columna (las columnas indican los momentos donde pretendo cambiar cosas del juego) esos valores en principio serán segundos o fracciones de segundo. Cuando mi variable relojInterno sea igual a esos valores, pretendo hacer diferentes cosas (guardar el número de disparos emitidos por el jugador en una variable que luego mandaré a un txt, cambiar el color de uno de mis enemigos, hacer que aparezcan nuevas instancias,etc...).
Una vez que el reloj ha coincidido con el valor de la 1º columna, pasar a la segunda columna y dejar al jugador jugar el juego tranquilamente hasta que el valor de la 2º columna coincida con el relojInterno (que nuevamente volveré realizar cambios en el juego) así hasta que recorra todas las columnas de mi array, que será el momento de terminar el juego y mandar guardar todos los datos almacenados a un fichero .txt

Muchas gracias por su atención y paciencia.
9
Preguntas y respuestas / Reloj interno (SOLUCIONADO)
Octubre 17, 2012, 09:19:20 PM
Hola a todos,
necesito iniciar en una room (la de juego) una variable que haga las funciones de reloj.
Con este variable pretendo ver cuantos segundos han pasado desde que comenzó el juego y dependiendo de el momento en el que esté, compararlo con diferentes valores de variables para que sucedan diferentes cosas.

He buscado en el foro y he visto algo así como un cronómetro que depende de los frames de la room, pero no soy capaz de adaptarlo a mi código.
10
Hola a todos,
mi pregunta es la siguiente:

Tengo un script donde cargo una serie de información en un array, y este array es creado dentro del código del script.
Este script lo llamo desde un objeto en un room que no es el juego (la típica pantalla de inicio). ¿El array creado está disponible durante el juego? es decir, ¿puedo durante el juego acceder a ese array para sacar información de él aunque se haya llamado en una room diferente?
Ejemplo:
Room_inicio:
      Objeto_inicio: script_crear (fichero.txt); (este script carga toda la información en mi_array [i,j])
Room_pantalla1:
      Objeto_enemigo: color = mi_array [0,3];
11
Hola a todos y todas,
soy nuevo en la comunidad y llevo muy poco usando GM.

Tras la presentación ahí va mi consulta:

Estoy desarrollando un juego muy sencillo. Se podría decir que es algo muy parecido a un Space Invader aunque con algunas variaciones.
En el juego hay una serie de variables que afectan a lo que sucede en el desarrollo del mismo, como por ejemplo, la aparición de un enemigo, el cambio de color de algunos otros enemigos. Por el momento la gran mayoría de las cosas en el juego suceden de manera aleatoria (v.gr., dando valores con random (); al comienzo de cada alarma), pero mi intención es que estas variables cambien de valor dependiendo de cierto orden preestablecido.
Este orden estará escrito en un archivo (v.gr., un archivo .txt), y desearía saber si hay alguna manera de que al principio del juego pueda "cargar" dicho .txt que dará valores a lo largo del desarrollo del juego a las variables.

Mmmm creo que ha quedado un poco oscura la pregunta, voy a intentar ilustrarlo con un ejemplo:

Variables:
Gran_disparo: 1 o 0 (indica si aparece el evento)
Sprite_enemigo: 1(rojo), 2(verde), 3 (amarillo)

en el archivo .txt:

Milisegundos desde comienzo(linea de tiempo):             1000  2200.............
Gran_disparo:                                                            1        0   ..............
Srite_enemigo:                                                          2         1   .............

Espero haberme hecho entender, en caso contrario decirlo y lo intento de nuevo.
Tengo más dudas pero por el momento, necesito saber si esto es factible antes de seguir.
Muchas gracias.