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

16
Yo uso lo siguiente:

if(!audio_is_playing(cancion[actual]))
    {
        if(actual<maximo_de_canciones)
         actual += 1;
        else
         actual = 1;
        audio_play_sound(cancion[actual], 100, false);
    }


En donde guardo al iniciar el juego (Game start) las canciones en un arreglo o vector como lo quieras llamar (cancion=sound0;) y guardo el valor de actual para saber que numero de canción se esta reproduciendo, y al acabar que reproduzca la siguiente.
17
Baja a 15 o 10 el room_speed en los dispositivos de gama baja (los cuadros por segundo). :)

Solo cuidado si tienes alarmas con una cantidad de cuadros fija ya que se vera alterada.
18
Preguntas y respuestas / Re:cambiar de room
Diciembre 29, 2014, 06:35:23 PM
En algún objeto que esté en el room menu ponle en el evento room_end que te reinicie los valores del draw_set_halign() y draw_set_valign()  a como los quieras :)

Si lo pones en un objeto persistente sólo ponle una condición de if(room = room_menu) {}
19
Preguntas y respuestas / Re:comando global.
Diciembre 24, 2014, 06:02:40 PM
Haz la instancia persistente. (Solo marca la casilla) y que el codigo este en create o game start y NO en room start o step o cualquier otro.
20
Preguntas y respuestas / Re:Autosave o algo asi
Diciembre 16, 2014, 08:38:01 PM
Yo recomiendo scripts para eso, al momento de hacer un cambio llamar al script y no tener que poner el código cada vez.

Por ejemplo, al comprar el arma:

if(/*Presiona botón comprar*/)
{
//suponiendo que se usa un arreglo para guardar las armas desbloqueadas
ARMA[5] = true;
guardar_arma();
}


Y en el script guarda_arma

ini_open("SAVE");
for(i=0;i<global.max_armas;i++)
{
   ini_write_real("ARMAS",string("arma")+string(i),ARMA[i]);
}
ini_close();


Algo así se me ocurre que podría ser.
21
Preguntas y respuestas / Re:Desactivar instance
Diciembre 16, 2014, 08:23:11 PM
Lo que podrías usar es un objeto controlador que te guarde las posiciones de los 2 objetos que quieres desactivar.

Algo así como:
En el objeto controlador
//En Step
if(v_obj1 = false)
{
if(obj_1.x < view_xview[0]+0 or obj_1.x > view_xview[0]+view_wview[0] or obj_1.y < view_yview[0]+0 or obj_1.y > view_yview[0]+view_hview[0])
{
   v_obj1 = true;
   xx1 = obj_1.x;
   yy1 = obj_1.y;
   instance_deactivate_object(obj_1);
}
}
else
{
if((xx1> view_xview[0]+0 and xx1 < view_xview[0]+view_wview[0]) and (yy1 >view_yview[0]+0 and yy1 < view_yview[0]+view_hview[0]))
{
instance_activate_object(obj_1);
v_obj1 = false;
}
}


y en create
//Declaramos las variables
v_obj1 = false; //Esta es una bandera para saber si esta desactivado el objeto
xx1 = 0; //variable x cuando lo guardemos
yy1 = 0;//variable y


Y haces lo mismo para el otro objeto pero cambias las variables "1" por un "2" o como gustes

Si sólo son pocos objetos podría ser así. Si son más no sé si afecte al juego después de muchos. (O que te complique mucho la programación).

Espero te sirva :)
22
Podrías ponerle algo así como:

//En el jugador
x = obj_casa.x;
y = obj_casa.y;


No sé en que momento del juego quieres que se mueva a esa posición, si es al inicio del room puedes ponerlo en el create del objeto jugador, pero si es en otro revisa dónde ponerlo.

Espero esto sea lo que pidas, sino lo es, por favor explica mejor tu problema. :)
23
Usar un archivo .ini es realmente sencillo, aunque se puede tornar un poco tedioso si lo llamas muchas veces.

Primero necesitas abrirlo para guardar
ini_open("archivo");

Después ya puedes tanto guardar como leer los datos
ini_save_real("SECCION","CLAVE",valor);
/*
donde la sección es como para agrupar los tipos de valores, en caso de que quieras guardar muchas cosas en el mismo archivo
clave es por un decir el nombre de la variable como lo vas a reconocer en el archivo
y valor es el nombre de la variable que tiene en tu código, por ejemplo
*/
ini_save_real("puntajes","mejor",highscore);
//nótese que es para guardar un valor numérico, para cadenas es ini_save_string();


Esto se puede hacer tedioso porque cada variable que quieres guardar la debes poner en una linea como lo mostré arriba, si quieres guardar el dinero que lleva conseguido, el nivel en el que se quedó y así, debes hacerlo uno por uno

Al final debes cerrar el archivo para que se guarden los cambios correctamente
ini_close();

Todo este código lo debes poner en donde quieras guardar, por ejemplo un botón de guardar progreso o con una alarma cada determinado tiempo

Para leer la información guardada es muy similar
ini_open("archivo");
highscore = ini_read_real("puntajes","mejor",0);
/*puntajes es la sección y mejor la clave y el 0 es un valor para que en caso de que no se encuentre esa clave
o esa sección y no pueda recuperar un valor, te asigne ese.
En este caso si no lo encuentra highscore quedaría con un valor de 0*/
ini_close();


Como en el guardar, para leer debes hacerlo uno por uno y al final cerrar el archivo

Espero que te ayude y sinceramente nunca he manejado ds_lists, por lo que no sé si es más sencillo o más complicado hacerlo

Si no entiendes alguna parte te lo puedo explicar de nuevo :)
24
Preguntas y respuestas / Re:Cajas en caida
Octubre 31, 2014, 06:06:43 AM
¿Qué código usas para que se detengan cuando se empiezan a apilar?

Probablemente tengas una bandera para que deje de caer cuando ya no se cumple el place_free() y no la vuelves a activar.
25
La función collision_line(x1,y1,x2,y2,obj,prec,notme) es lo que te podría ayudar en este caso.

Va así:


collision_line( x1, y1, x2, y2, obj, prec, notme );


donde le pones el punto de origen en x1, y1;
el punto final en x2, y2;
el objeto que quieres que cheque la colisión en obj;
si quieres colisión perfecta basada en pixeles pones true en prec o falso si es colisión normal;
y si quieres que omita al objeto que llama esta función le pones true en notme o false para que te tome en cuenta.

La puedes poner en una condición para que cuando pase la colisión se ejecute el código necesario.


if(collision_line( obj_laser.x,obj_laser.y,obj_laser.x+20,obj_laser.y, obj_jug1, 1, 0))
{
  room_restart();
}


PD: Bienvenido :)
26
Preguntas y respuestas / Re:Fallo de room_goto();
Septiembre 28, 2014, 07:54:13 PM
Muchas gracias a ambos por sus rápidas respuestas :D :D

probando...

edit:
Funciona!!

Muchas gracias de nuevo, tema cerrado
27
Preguntas y respuestas / Fallo de room_goto(); (Solucionado)
Septiembre 28, 2014, 07:39:01 PM
Hola a todos.

Estoy tratando de hacer una pausa para mi juego, que al presionar con el mouse un objeto me lleve a otro cuarto y haga el actual persistente, y lo hace :) pero para volver al mismo cuarto, del que venia, le puse que almacene el nombre del room desde el cual puso pausa en una variable global así:

Para ir al cuarto de pausa:

global.v_roomPause = room_get_name(room); //variable predefinida en un objeto persistente
room_set_persistent(global.v_roomPause,1);
room_goto(ro_pause);// mi cuarto de pausa


Para volver del cuarto de pausa:

room_goto(global.v_roomPause);


y la primera vez que lo uso me manda al primer room del resource tree y a partir de la segunda si me manda al cuarto que le pedí.

Alguien tiene idea de por que pasa esto? Si debo limpiar una cache o algo parecido para que lo haga desde la primera, o si es porque la variable la predefiní en un objeto persistente como global.v_roomPause = "";

Espero se entienda mi duda, pero si no díganme y veo como lo explico.

Gracias :)
28
Supongo te queda diferente por la resolución de la pantalla de tu cel y del sprite.

En lugar de usar un sprite que tiene tamaño predeterminado, podrias usar draws, te explico:

puedes usar

//Dibujas rectangulo negro de fondo
draw_set_alpha(0.4);//Semitransparente
draw_rectangle(view_xview[0]+0,view_yview[0]+0,view_xview[0]+view_wview[0],view_yview[0]+view_hview[0],0);
draw_set_alpha(1);//El resto sin transparencia
//Dibujas los textos
draw_text(view_xview[0]+view_wview[0]/2,view_yview[0]+30,"Continue");
draw_text(view_xview[0]+view_wview[0]/2,view_yview[0]+130,"Options");
draw_text(view_xview[0]+view_wview[0]/2,view_yview[0]+230,"Exit");
//Los valores en y los cambias para que aparezcan donde quieres (30,130, 230)


En teoría eso debería ajustarse a la resolución de ambos dispositivos si tienes bien definida la view

Y no sé como tengas el sistema para seleccionar las opciones de ese menú, si lo tienes en un switch no debería ser problema para adaptarlo, pero si no sabes cómo hacerlo te puedo hacer un pequeño ejemplo
29
Preguntas y respuestas / Re:Error apk
Septiembre 03, 2014, 03:30:20 AM
Probablemente no tengas instalado el API 7, revisa desde el SDK manager
30
Hola.

Tengo un objeto que va caminando hacia la derecha cuando esta libre o cuando hay un objeto con su mismo nivel de habilidad en la misma dirección, el problema es: ¿Cómo puedo comparar el nivel del objeto que esta a la derecha?

No se cómo encontrar ese objeto específicamente para comparar el nivel de habilidad con el de mi personaje.

Cualquier idea es aceptada :) y creo sirve con cualquier GM, no sólo con el Studio