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

46
Cita de: DavidTheAnswerer en Enero 07, 2018, 04:00:35 PM
Yo digo... No hubiera sido mas facil hacer un sprite que sea todo negro y en el centro un circulo transparente que de impresion de linterna? y lo programas como un objeto para que siga al personaje y ya :v
Parece que no ha leído la descripción del problema, aquí nadie esta tratando de hacer una linterna clásica, aquí se esta tratando de hacer un efecto de creación, claramente el titulo se llama "¿Como logro ese efecto de creación?" no de como hacer el efecto linterna, ya que ese problema fue solucionado en el año pasado.
47
Cita de: TheJaj en Enero 07, 2018, 04:05:39 AM
Tienes razón, los 3 primeros trozos de código corresponden a uno, y el ultimo al objeto que crea la luz.

El problema es que el primer "Step end" es un simple "Step" disculpa que soy retrasado. :_ xD

Ya que mi deducción fue acertada ¿como sugiere que debería ordenar y llamar a ambos objetos? pues de llamarle obj_Luz_Oscuridad entraría en conflicto con el objeto del mismo nombre, para ello creo que seria optimo tenerlos como linterna visible y linterna invisible, pues la visible vendría siendo lo que permite ver mientras que la otra nos pondría invisible el entorno, de aplicar esto ya tendría mi pregunta auto respondida, pero base a como nombro los eventos ¿como deberían llamarse y para quien deberían estar destinados?

Pues tenemos 2 objetos y 4 eventos del cual uno debe tener 3 eventos dejando en solitario al 2°, pero como no esta claro el orden de quien es el 1°, quedaría mas simplificado si me dice la estructura con los nombres correctos de los eventos, de lo contrario volveríamos a donde espesamos por una mala coordinación y nombres de los eventos.

Espero que mi respuesta no haya sonado muy criptica.  ;)
48
Cita de: Jucarave en Enero 06, 2018, 11:03:42 PM
Puedes crear una variable tipo "global.ultimo_guardado" y asignarle el id del guardado en el evento de colisión y ya con eso verificas si fue el ultimo en el que estaba o no, algo así:

[GML]
// Si la ultima vez que guardamos fue aca, entonces nos salimos
if (global.ultimo_guardado == id) { exit; }

game_save("guardar.sav")
global.vida = global.limite_vida
global. vida_npc = global.limite_vida

// Decimos que este es el ultimo guardado
global.ultimo_guardado = id;
[/GML]

Saludos
Creo que esta complicando las cosas agregando cosas de "ID", se supone que al darle game_load todo vuelve a como estaba antes, al menos en el ultimo lugar que se activo el game_save, no me queda claro en que evento o objeto deberia estar esto, creo que agregar una simple alarma 0 que evite que colisione 30 veces por segundos, la cual es la velocidad de step por defecto que tiene el juego, seria lo mas optimo en este caso.

Imagina que es un palo con bandera abajo, el jugador la toca y la bandera esta arriba, la bandera permanece arriba porque el jugador ya toco el chekpoint o punto de guardado, y esta solo vuelve a estar abajo cuando el jugador toca el mismo objeto en otro lugar, por algo se llamaría ultimo punto de guardado.
49
Cita de: TheJaj en Enero 07, 2018, 03:00:58 AM
Ahhh espera. xD

He visto tu codigo y no te voy a mentir no entiendo un huevo, pero yo he logrado lo que buscas con tan solo 12-20 lineas de codigo.

En el objeto que crea la luz/oscuridad

Create

globalvar Oscuridad;
Oscuridad = surface_create(view_wview,view_hview)


Step end

surface_set_target(Oscuridad)
draw_set_color(c_white)
draw_rectangle(0,0,view_wview,view_hview,false)
surface_reset_target()


Draw

draw_set_blend_mode(bm_subtract);
draw_surface(Oscuridad,view_xview,view_yview)
draw_set_blend_mode(bm_normal);



Y en el objeto que crea la luz

Step end

size = 128;
draw_set_blend_mode(bm_subtract);
surface_set_target(Oscuridad);
draw_ellipse_color((x-size)-view_xview,(y-size)-view_yview,(x+size)-view_xview,(y+size)-view_yview,c_white,c_black,false)//,c_orange,c_white,false);
surface_reset_target();
draw_set_blend_mode(bm_normal);


El obj_Luz_Oscuridad es solo 1 objeto no 2 no me queda muy claro lo ultimo, ya que dices y el que crea la luz coloca esto, por lo que ¿me dices que son 2 objetos distintos? pues el resultado es visualmente esto.



el objeto contiene esto.
CREATE

///Variable
globalvar Oscuridad;
Oscuridad = surface_create(view_wview,view_hview)


END STEP

surface_set_target(Oscuridad)
draw_set_color(c_white)
draw_rectangle(0,0,view_wview,view_hview,false)
surface_reset_target()

size = 128;
draw_set_blend_mode(bm_subtract);
surface_set_target(Oscuridad);
draw_ellipse_color((x-size)-view_xview,(y-size)-view_yview,(x+size)-view_xview,(y+size)-view_yview,c_white,c_black,false)//,c_orange,c_white,false);
surface_reset_target();
draw_set_blend_mode(bm_normal);


DRAW

draw_set_blend_mode(bm_subtract);
draw_surface(Oscuridad,view_xview,view_yview)
draw_set_blend_mode(bm_normal);


Puede que parte del problema se deba a que aquí están los 2 eventos END STEP en 1, ya que en su ejemplo hay 2 de ellos, asumo que me esta diciendo que deben haber 2 objetos, del cual el 2° tiene un único evento al que se llama END STEP, mientras que el 1° tiene los 3 eventos de CREATE, END STEP y DRAW, otro detalle del que me puedo percatar es que los objetos siguen siendo visibles en todo momento, no presentan ninguna opacidad, en cambio el suelo y fondo al ser un background, ha sido engullido por la oscuridad, pero sigue actuando como colisión apesar de no ser visible.
50
Cita de: brunoxzx en Enero 06, 2018, 03:30:15 AM
Cita de: Naitsabes0 en Enero 06, 2018, 01:19:22 AM
Cita de: Clamud en Enero 05, 2018, 05:12:15 AM
Si siempre se guarda en el mismo archivo no se consumirá más memoria.
Pues lo tengo como "guardar.sav" ¿no estaré creando infinitamente ese archivo? ya que no tengo ningún comprobante que elimine el ultimo "guardar.sav", por eso creo que este código esta incompleto, por el bucle.
Sí hombre, eso solo reemplaza el archivo no habrá ningún problema... como ya dijo @Clamud.

¿Pero porque no pones mejor una alarma que guarde tu juego cada cierto tiempo? no creo que sea optimo guardar el juego en cada colisión, o tal vez que si colisionas sí guarde pero no pueda guardar más de una vez cada 5 segundos, algo por allí...

porque si el juego me guarda la partida 1s antes que el jugador muera por una caída inminente, volveré a aparecer en el segundo de la caída una y otra vez, así el jugador perderá infinitamente obligando a iniciar una nueva partida por una mala decisión de desarrollo, al final seria culpa mía por hacer ese pésimo sistema de guardado, en cambio con el checkpoint, permito que el jugador cargue la partida en una zona segura donde no morirá hasta que salga de hay, de esta forma cualquier muerte sera solamente culpa de el por su falta de habilidad.

por otro lado ¿como debería hacer el código del obj_Guardar para que se active el guardado por colisión en "X" tiempo?

Tengo un solo evento que hace...

COLLISION_ObjJugador

game_save("guardar.sav")
global.vida = global.limite_vida
global. vida_npc = global.limite_vida
51
Cita de: TheJaj en Enero 06, 2018, 04:56:47 AM
Emm...
Esteh, estoy desde el celular pero si no recuerdo mal es código es algo como:

If distancia_to_point(objeto_jugador) < 50
{image_alpha = 1}
else
{image_alpha = 0}


Este código va en las paredes.
Te recomiendo que verifiques la función, la de distancia, ya que hace literalmente 6-7 meses no la uso.

Supongo que tendría que creear muchos objetos con este código para que se comporten de esa forma, es decir tendría que hacer enemigos,  paredes, pinchos, trampas, etc, en vez de hacer una linterna que haga invisible todo lo que esta lejos del jugador, pues eso seria lo que se trata de lograr, un objeto que haga invisible todo lo que esta fuera de su área de visión, no que los objetos se agan invisibles cuando detecten al jugador, pues resultaría engorroso programarle eso objeto por objeto, a largo plazo no tendría la misma eficiencia que la linterna que solo necesita ser un solo objeto.
52
Pues esto es parecido a una linterna, al menos desde mi punto de vista.



Pues tengo un objeto que hace oscuridad, o como muchos le llamarían la linterna clásica en 2D de toda la vida.



Para ello empleo un objeto sin sprite al que llamo obj_Luz_Oscuridad.

CREATE

///Crear la superficie

superficie = surface_create(room_width, room_height);

surface_set_target(superficie);
draw_clear_alpha(c_black, 0);

//Reinicia la superficie
surface_reset_target();


STEP

///Control de la oscuridad
if (surface_exists(superficie)){
    surface_set_target(superficie);
   
    //conjunto oscuridad
    draw_set_colour(c_black);
    draw_set_alpha(1); //intencidad de la oscuridad 0 nada 1 absoluta
    draw_rectangle(0, 0, room_width, room_height, false);
   
    //conjunto circulos
    draw_set_blend_mode(bm_subtract);
   
   
    draw_set_colour(c_black);
    draw_set_alpha(0.2);
   
   
    // dibuja circulos
    with (objJugador) {
        draw_circle(x + random_range(-1,1), y + random_range(-1,1), 80 + random_range(-1, 1), false);
       
        }
       
        draw_set_colour(c_white);
        draw_set_alpha(1);
       
        with (objJugador) {
        draw_circle(x + random_range(-1,1), y + random_range(-1,1), 45 + random_range(-1, 1), false);
       
        }
       
       
       
    //Reinicia todo el conjunto dibujo
    draw_set_blend_mode(bm_normal);
    draw_set_alpha(1);
    surface_reset_target();
} else {
    superficie = surface_create(room_width, room_height);
    surface_set_target(superficie);
    draw_clear_alpha(c_black, 0);
    surface_reset_target();
}


ROOM END

/// destruir la superficie
if (surface_exists(superficie)) {
    surface_free(superficie);
}


DRAW

///Dibuja la superficie

if (!surface_exists(superficie)) {
    superficie = surface_create(room_width, room_height);
} else {
    if (view_current == 0) {
        draw_surface(superficie, 0, 0);
    }
}


Bueno si analizamos esto detenidamente, es lo mismo, ya que no se ve mas haya del circulo, pero por alguna razón se siente como nuevo y llamativo a la vista, al menos desde mi punto de vista, no parece que sea algo muy difícil de programar, aunque parece que todo lo que esta fuera del radio los convierte en opacidad 0 o invisible, y los vuelve a su estado normal que es 1 o visible, solo cuando esta dentro del radio de visión, por lo tanto ¿Como logro ese efecto de creación?
53
Cita de: Clamud en Enero 05, 2018, 05:12:15 AM
Si siempre se guarda en el mismo archivo no se consumirá más memoria.
Pues lo tengo como "guardar.sav" ¿no estaré creando infinitamente ese archivo? ya que no tengo ningún comprobante que elimine el ultimo "guardar.sav", por eso creo que este código esta incompleto, por el bucle.
54
Pues tengo 2 objetos, uno es un checkpoint, por haci decirlo un objeto que guarda automáticamente al colisionar y el otro un controlador que me permite volver al ultimo punto, pero ¿Esto no esta creando un bucle infinito de memoria que se va consumiendo? es decir si me quedo en la misma posición que el obj_Guardar ¿ estaré saturando la memoria y que ademas no tengo un mecanismo que elimine los viejos guardados?

obj_Guardar

COLLISION_objJugador

game_save("guardar.sav")
global.vida = global.limite_vida
global. vida_npc = global.limite_vida


obj_Control

PRESS O-KEY

///Reiniciar juego
game_restart()


PRESS P-KEY

/// Reiniciar
//game_restart();
audio_stop_all()
audio_play_sound(snd_Why_Did_You_Do_It,0,1);
game_load("guardar.sav");


¿Esta mal optimizada esta forma de guardar?
55
cita de Johann

Pregunta eso en un foro de Unity

Si un tema os resulta de interes y veis que hay poca información, la mejor solucion no es quejarse o pedir sin pensar, sino sugerir algo bien planteado o aportarlo vosotros mismos.
Cita de: Calio
Somos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.

Para empezar no tengo idea porque me cerro el post, estoy buscando gente que tenga información sobre unity, porque no he encontrado un lugar seguro donde empezar a comentar, si ya tuviera los problemas a mis preguntas ya solucionadas, no las habría preguntado nada, soy consciente de que aquí solo se habla de los distintos  :GMS:, por eso quiero ir al lugar correspondiente para empezar a hablar de ello en el lugar correcto, si alguien no tiene una respuesta a mis preguntas del post que me cerro http://www.comunidadgm.org/preguntas-y-respuestas/mejor-lugar-para-buscar-informacion-sobre-unity/ , estaré buscando por mis propios medios, para evitar ir al enlace volveré a poner mis preguntas aquí.

¿Hay una comunidad hispano hablante dedicada solamente a ella? algo similar a esta comunidad que se dedica generalmente a  :GMS:

¿Cuales son los mejores you tubers que se dedican a programar en "Unity"? bueno sin mencionar a "escuela de video juegos", "guinxu" y "Hagamos Videojuegos".

¿Cual es la pagina oficial que debería visitar en caso que quiera saber todo hacerca de sus pros y contras?

¿Alguno de ustedes ha programado en "Unity" o esta programando en el?

Estas dudas son unas inquietudes serias, ya que me tomare todo el año de 2018 aprendiendo ese lenguaje, haci que pido que no me cierren el post de manera injustificada, ya que provoca una mala experiencia, ademas de que he leído las reglas en http://www.comunidadgm.org/preguntas-y-respuestas/preguntas-y-respuestas-que-es-y-como-funciona-leer-antes-de-postear/ ,por lo que no veo una razón clara de su acción, salvo que aquí esta resubido, ya que no me permitió hablar.
56
Cita de: MasterMaker en Enero 01, 2018, 10:32:12 PM
Traidor!!! XD
Bueno hay que adaptarse a los cambios, yoyogames puede que deje de funcionar bien como compañía por sus decisiones, ademas  :GMS: ya no le dan soporte y  :GMS: 2 es actualmente mediocre, por lo que me gustaría saber información sobre las preguntas que formule.
57
Pues en mi caso al apretar el botón P guardo y al apretar Z cargo, pero me provoca un bucle infinito.



obj_Control //Persistente
prees P-key


/// Reiniciar
//game_restart();
audio_stop_all()
audio_play_sound(snd_Why_Did_You_Do_It,0,1);
game_load("guardar.sav");


obj_Guardar
CREATE

/// Inicializacion 3 líneas máximo
event_inherited(); // heredar del padre
image_speed = 0.1;

paginas[0] = "¿Guardar partida?#Pulsa Z para guardar -->";
paginas[1] = "Juego guardado# pulsa P para cargar -->.";

mostrar = false; // mostrar cartel por defecto
pagina = -1;     // páigna actual, -1 = inactivo
guardar="guardar.sav"
eliminar=false


STEP

/// Detectar si jugador abre el cartel
if (keyboard_check_pressed(ord('Z')) and distance_to_object(objJugador)<3) {
    mostrar = true;
}
// Si se aleja cerramos el cartel y reiniciamos pagina
if (distance_to_object(objJugador)>3) { mostrar = false; pagina = -1; }

/// Detectar si jugador pasa página y guardar
if (keyboard_check_pressed(ord('Z')) and mostrar)
    // Pasar página y guardar (solo al pasar la primera)
    if (pagina+1 < array_length_1d(paginas)) {
        pagina++;
        if (pagina == 1){
       
        game_save("guardar.sav")
        instance_deactivate_object(obj_Bloque_Guardado);
        }
    } else {
        // Si nos pasamos del máximo reiniciamos el cartel
        mostrar = false;
        pagina = -1;
    }
   
    if keyboard_check_pressed(ord("P")){
game_load("guardar.sav")
}


DRAW GUI

//para poder ver el objeto
draw_self()
/// Comprobar si el jugador está cerca
if(mostrar){
    draw_sprite(spr_HUD_Texto,11,0,31);
    draw_set_font(f_Texto);
    draw_set_halign(fa_left);
    draw_set_color(c_black);
    draw_text(124,64,paginas[pagina]);
    draw_set_color(c_white);
    draw_text(123,63,paginas[pagina]);
}


Creo que debería eliminar todo este código del obj_Guardar, y colocar que si colisiona una vez con el, se aplique auto-guardado, digamos que se convertiría en un chekpoint que pasa de estar inactivo a activo, de esta forma el jugador volverá a su ultimo chekpoint cuando apreté el botón "P" del obj_Controlador, con esto estoy creando un dialogo inútil en el obj_Guardar, ademas que se hace molesto hablar para solo guardar el ultimo punto de control, pero la programación me salio con este fallo.
58
Pues hay varios videos de you tube sobre "Unity" mas todavía con las malas decisiones empresariales de yoyogames, incluso muchos usuarios de  :GMS: se han cambiado a ese motor por ser mas rentable a largo plazo, pero mi pregunta es...

¿Hay una comunidad hispano hablante dedicada solamente a ella? algo similar a esta comunidad que se dedica generalmente a  :GMS:

¿Cuales son los mejores you tubers que se dedican a programar en "Unity"? bueno sin mencionar a "escuela de video juegos", "guinxu" y "Hagamos Videojuegos".

¿Cual es la pagina oficial que debería visitar en caso que quiera saber todo hacerca de sus pros y contras?

¿Alguno de ustedes ha programado en "Unity" o esta programando en el?
59
Si mostraras algunas imágenes del escenario que estas haciendo, se podría saber que tipo de colisión estas usando, o al menos cual seria la mas optima, por lo general la gente la suele hacer con cuadrados perfectos.
60
Te puedo dejar mis investigaciones personales.

Copia todo esto y pegalo en un world, después lo estudias y haces experimentos, espero que te sirva.

Área código:

// es un comentario (no afecta la programación) le da un título o descripción a los códigos, muy útil para resumir en que sirve el código empleado.
/// es un comentario para game maker (no afecta la programación) le da un nombre a la acción del evento, muy útil para buscar códigos de forma rápida.

///Verde (información para el programador)
Rojo (variable preconcebida, no hace falta declarar, no cambia)
Amarillo (es función)
Gris (variable de instancia, se le debe dar un nombre)

If          (condición inicial) si se cumple has esto
Else if  (condición alternativa) si ocurre esto otro has esto
Else    (condición final) si no ocurre ninguna de las condiciones anteriores has esto ultimo

image_speed = 1 (velocidad del cambio de imagen ej 1 =100%)
image_alpha = 1 (trasparencia de la imagen ej 1 = 100%)
image_angle = (rotación anti horaria ej 0 , 360  180)
image_blend = (cambia el color de la imagen ej Image_blend=c_red)
image_index = ( selecciona la imagen que se quiere mostrar ej 1)
image_xscale = 1 ( tamaño del personaje ej 1 =100% -1 efecto espejo) nota: recuerda centrar
image_yscale = 1 ( tamaño del personaje ej 1 =100% -1 efecto espejo) nota: recuerda centrar
image_number = (cuantas veces está el mismo objeto en la room)
hspeed = (velocidad horizontal de objeto, -izquierda +derecha) ej: hspeed = 5
vspeed = (velocidad vertical de objeto, -arriva +abajo) ej: vspeed = 5
view_xview[0] = (coordenadas x de la vista del cuerto) ej:
view_yview[0] = (coordenadas y de la vista del cuerto) ej:
view_hview[0] = (altura del cuarto) ej:
view_wview[0] = (largo del cuarto) ej:
view_object[0] = (ve el objeto) ej;  view_object[0] = obj_puerta
view_hspeed[0] = (velocidad horizontal de la vista) ej; view_hspeed[0] = 3
view_wspeed[0] = (velocidad vertical de la vista) ej; view_wspeed[0] = 3
view_angle[0] = (rota la vista) ej;
room_height = (altura del cuarto) ej; if y<0 { y = room_height; }
                                                          if y> room_height { y = 0; }
room_width = (ancho del cuarto) ej;
cursor_sprite = (le da un sprite al cursor del raton) ej; cursor_sprite = spr_corazon
os_type = (que sistema operativo estas usando) ej; os_type = os_android { show_message ("estas usando Android!") }

direction = (dirección del objeto) ej; direction = 45 diagonal derecha
0º(360º), 90ºarriva 180º, 270ºabajo)
keyboard_string= (es una variable que va acumulando todo lo que se escribe en el teclado)


device_get_tilt_x() = (le el sensor de movimiento x (para móviles)
device_get_tilt_y() = (le el sensor de movimiento y (para móviles)
device_get_tilt_z() = (le el sensor de movimiento z (para móviles)

file_text_open_write() = (crea el archivo de texto) ej; file = file_text_open_write("archivo.txt")
file_text__write_string() = (el texto escrito en letras) ej; file_text__write_string (file, "Texto que quedara escrito.")
file_text__write_real() = (el texto escrito en numeros) ej; file_text__write_real (file, 12)
file_text__writeln () = (salta la línea de texto escrito) ej; file_text__writeln (file)
file_text__close() = (cierra el texto escrito) ej; file_text__close (file)
file_text_open_read() = (lee el archivo de texto) ej; file = file_text_open_read("archivo.txt")
file_text _read_string() = (lee un archivo de texto especifico en letras) ej; resultado = file_text _read_string(file)
file_text _read_real() = (lee un archivo de texto especifico en numeros) ej; numero = file_text _read_real(file)
file_text _readln () = (salta la línea de un archivo de texto especifico) ej; file_text _readln (file)






url_open = (abre la dirección de internet) ej; url_open (http://www.guinxu.com)
string_width = (el largo de las letras)
string_height = (el alto de las letras)

window_get_fullscreen =(consulta si la pantalla esta completa) ej; if keyboard_check_pressed(vk_enter)
{ if window_ get_fullscreen() = false { window_set_fullscreen(true); } else { window_set_fullscreen(false);
} }



instance_exists() = (existe una instancia (objeto) ej: If instance_exists (obj_jugador)

instance_create() = (crea el objeto) ej: Instance_create (100,100,obj_jugador)
coordenada x, coordenada y, nombre del objeto ,3 valores

instance_nearest() = (ve al objeto más cercano) ej: Instance_nearest (x,y,obj_jugador)
coordenada x, coordenada y, nombre del objeto ,3 valores

instance_destroy() = (destruye el objeto)

instance_number() = (cuantas veces se repite el mismo objeto) ej; instance_number(obj_jugador)

place_empty () = (comprueba si las coordenadas están vacías) ej;; If place_empty (x+4, y) {x=x+4;}
coordenada x, velocidad , coordenada y,3 valores NOTA: avanza hasta que algo bloque camino

place_free () = (comprueba si las coordenadas están libres) ej;; If place_free (x+4, y) {x=x+4;}
coordenada x, velocidad , coordenada y,3 valores NOTA: avanza traspasando

mouse_check_button(mb_left) = (detecta si estas manteniendo el botón)

mouse_check_button_pressed(mb_left) = (detecta solo cuando hundes el boton)

mouse_check_button_released(mb_left) = (detecta solo cuando sueltas el boton)

move_towards_point = (mueve al punto) ej: move_towards_point (500,16 ,4)
coordenada x, coordenada y, velocidad ,3 valores

action_potential_step() = (sigue al objeto) ej: action_potential_step(ob_player.x,ob_player.y,4,true)
el objeto. x, el objeto. y, velocidad, true (no traspasa objeto) false (traspasa objeto) 6 valores

show_message() = (crea un mensaje) ej: show_message("Hola jugador.#Bienvenido!");
# siguiente línea de texto 1 valor

show_guestion() = (respuesta si o no) ej: if show_guestion ("¿Quires comprar?") = true
{ room_goto (rom_tienda) } else { room_goto (rom_casa) }

get_integer (obtener valor entero) ej: nvidas = get_integer ("¿Cuántas vidas quieres?" , "21")
                                                           nvidas = nvidas*2 – 7 + 24)*3
                                                           show_message ("Tienes" + string (nvidas) + " vidas.");

effect_create_above(ef_) = (crea efectos encima de los objetos) ej:       effect_create_above (ef_explosion,x,y,2,c_gray); (tipo de efecto, coordenada x, coordenada y, tamaño (0-2), color)

effect_create_below(ef_) = (crea efectos debajo de los objetos) nota: 0.1.2

game_save() = (guarda la partida) ej: game_save("partida.sav")

game_load() = (carga la partida) ej: game_load("partida.sav")

game_restart() = (reiniciar la partida, borra todo el progreso) ej: game_restart("partida.sav")

game_end() = (cerrar la partida)

room_goto_previus() =  (cuarto anterior)

room_goto_next() = (siguente cuarto)

room_goto() = (lleva a un cuarto especifico) ej room_goto(rm_casa)
elige cuarto, 1 valor
room_restart() = (reinicia el cuarto)

get_string() = ("Escribe tu nombre",")
current_hour = (la hora es)
current_minute = (el minute es)
current_second = (el Segundo es)
current_day = (el dia es)
current_month = (el mes es)
current_year = (el año es)
if current_hour>8 and current_hour<20
{
    background_index[0]=bg_dia
}
else
{
    background_index[0]=bg_noche
}
background_hspeed[0] = (velocidad horizontal de la room) ej:  background_hspeed[0] = 10
velocidad 1 valor

background_vspeed[0] = (velocidad vertical de la room) ej:  background_vspeed[0] = 10
velocidad 1 valor

background_alpha[0] = (transparencias) ej: background_alpha[0] = 0 invisible 255 visible
opacidad (0-255) 1 valor

background_blend[0] = (da un color al fondo) ej: make_color_rgb(0,0,0)
rojo,verde,azul 3 valores

audio_play_sound() = (reproduce el sonido) ej: audio_play_sound(snd_melodia,100,false)
la melodia, la prioridad(0-100), true (se reproduce siempre) false (solo una vez) 3 valores

audio_pause_sound() = (pausa el sonido) ej; audio_pause_sound(snd_melodia)
la melodia,1 valor

audio_stop_sound() = ( detiene el sonido) ej; audio_stop_sound(snd_melodia)

la melodia,1 valor
audio_resume_sound() = (continua la pausa del sonido) ej; audio_resume_sound(snd_melodia);

la melodia,1 valor
audio_stop_all() = ( detiene todos los sonidos) ej; audio_stop_sound()

draw_set_color() = (dibujo el color) ej: draw_set_color (c_black)

draw_set_alpha() = (dibuja la transparencia) ej: draw_set_alpha(0.5)

draw_circle() = (dibuja un circulo) ej:  draw_circle (100,100,50,0)
coordenada x ,coordenada y, radio, 0 completo 1 contorno, 4 valores

draw_line() = (dibuja una línea) ej:  draw_line(400,10,500,300)
coordenada x ,coordenada y, (1° punto) coordenada x ,coordenada y (2° punto) 4 valores

draw_line_width() = (dibuja una línea gruesa) ej;  draw_line_width(400,10,500,300,10)
coordenada x ,coordenada y, (1° punto) coordenada x ,coordenada y (2° punto), grosor, 5 valores

draw_rectangle() = (dibuja un rectangulo) ej:  draw_line_width(400,10,500,300,1)
coordenada x ,coordenada y, (1° punto) superior izquierda coordenada x ,coordenada y (2° punto) inferior derecha, 0 completo 1 contorno, 5 valores

draw_line_roundrect() = (dibuja un rectangulo punta redonda) ej:  draw_line_width(210,35,500,300,0)
coordenada x ,coordenada y, (1° punto) superior izquierda coordenada x ,coordenada y (2° punto) inferior derecha, 0 completo 1 contorno, 5 valores
draw_ellipse () = (dibuja una elipse) ej:  draw_ellipse (210,35,500,300,0)
coordenada x ,coordenada y, (1° punto) superior izquierda coordenada x ,coordenada y (2° punto) inferior derecha, 0 completo 1 contorno, 5 valores

draw_triangle () = (dibuja un triángulo) ej:  draw_triangle (210,35,500,300,750,100,0)
coordenada x ,coordenada y, (1° punto) coordenada x ,coordenada y (2° punto), coordenada x ,coordenada y (3° punto) 0 completo 1 contorno, 7 valores

draw_text () = (dibuja un texto) ej  draw_text (210,35, "Viva yo")
coordenada x , coordenada y ,texto , 3 valores

draw_set_font () = (dibuja una fuente de letra) ej  draw_text (210,35, "Viva yo")
coordenada x , coordenada y ,texto , 3 valores

draw_set_halign () = (dibuja la alineación horizontal de texto) ej  draw_set_halign (fa_center)

draw_set_valign () = (dibuja la alineación vertical de texto) ej  draw_set_valign (fa_center)

draw_background () = (dibuja el fondo seleccionado) ej  draw_background (background1,210,35)
el fondo, coordenada x , coordenada y , 3 valores

draw_sprite () = (dibuja el sprite seleccionado) ej:  draw_sprite (sprite1, 3, 210, 35)
el sprite, la sub-imagen, coordenada x , coordenada y , 4 valores

draw_sprite_ext() =(dibuja el fondo seleccionado) ej: draw_sprite_ext (sprite1,3,210,35,2,4,45, c_red,1)
el sprite, la sub-imagen, coordenada x, coordenada y , escala x, escala y, rotación, color, transparencia,  9 valores
draw_background_ext() =(dibuja el fondo seleccionado) ej: draw_background_ext (background1, 700,210,35,4,45, c_red,1)
el background, coordenada x , coordenada y , escala x, escala y, rotación, color, transparencia,  8 valores

draw_self() = (se dibuja así mismo (yo) ej: draw_self()

path_start() = (hace un patron de movimiento) ej; path_start(path0,4,path_action_stop,true)
nombre del patrón, velocidad ,que ocurre si llega al final, si es absoluto o relativo true = aparece de golpe en el inicio false = se traslada al inicio, 4 valores.

randomize() = (se coloca al inicio para asegurar la aleatoridad)
random() = (valor al azar (0-x numero indicado) ej; numero = random(6)
floor() = (redondea el valor hacia abajo) ej; numero = floor(3.7) // 3
ceil() = (redondea el valor hacia arriba) ej; numero = ceil(4.1) // 5
round() = (redondea a la unidad más cercana) ej; numero = round(4.2) // 4
numero = round(random(100))
choose() = (elige un valor aleatorio (16 parámetros max) ej; numero =  choose(1,2,3,4,5)

clamp() = (Con esta función puede mantener un valor de entrada entre un rango especificado)                        ej: speed = clamp(speed, 1, 10); variable, valor mínimo, valor máximo.
repeat () = la sentencia se repite el numero de veces que se indique en la expresión  ej: { repeat  (5) instance_create(random(400), random(400),  obj_ball); }


















El alcance de una variable de instancia está limitado a donde se crea. ¿Cómo se crea una variable de instancia? Sólamente hay que asignarle un valor, ej:

pociones = 12;
vida = 100;
nombre = "Billy";
fuerza = 5.5;
armadura = -2;

Sólo es necesario proporcionar un nombre y un valor (numérico o alfabético) para iniciar una variable y dejarla lista, se pueden usar y modificar dentro de la instancia de distintas maneras, ej

Vida -= 5 + armadura;

Si la "vida" está en 100, su valor cambiará a 97 (100 - (5 + -2) = 97). se podría reemplazar "armadura" por el valor -2, si se usa ese valor en distintos lugares y decides cambiarlo. Se tendría que ir por todo el código y cambiar cada -2 por el nuevo valor, consume tiempo y errores! pero al usar una variable, es reasignarle un nuevo valor, aumentando la flexibilidad y facilitando la corrección de errores.

Una variable local se declara, se usa y después se descarta. Solamente se crean para eventos específicos, cuando dicho evento finalice, la variable se descarta (La única excepción a esto son los scripts, donde una variable declarada como local se mantiene local al scri0pt, y luego se descarta). ¿Por qué necesitarla? Las variables ocupan espacio en memoria, sólamente las usaremos para una operación o función, es necesario tenerlas en memoria sólo el tiempo que sean usadas. Esto mantiene el código base limpio y ordenado. Para declarar una variable local usamos la función var.

var i, numero, texto;
i = 0;
numero = 24.5;
texto = "Hi there!";


Todas las variables del ejemplo anterior se "olvidarán" (desaparecerán de la memoria) al final del evento (o el script). cuidado de dar a una variable local el nombre de una variable de instancia ya creada dentro del objeto ejecutando el código, y además, no tener la intención de usar el valor de la variable local fuera del evento donde ha sido declarada. Estas variables son usadas de manera frecuente, sobre todo en ciclos, o cuando un valor se usa recurrentemente en una operación que no volverá a repetirse. ej:

var i = 0;
repeat (10)
   {
   inventario = 0;
   i+=1;
   }

El código anterior crea una variable local de nombre "i" y la inicia en cero, and sets it to 0, todo en la misma línea. En el ejemplo, el valor de la variable se usa para iniciar un arreglo. Como la variable "i" no va a ser usada en otras operaciones posteriores, puede tener un alcance local. Aquí hay otro ejemplo:

var xx,yy;
xx = x - 32 +irandom(64);
yy = y - 32 +irandom(64);
instance_create(xx, yy, obj_blood);

Aquí se ha usado la variable local para almacenar coordenadas aleatorias para crear una instancia. Es mucho más claro y obvio lo que se está haciendo, que usar código como este:

instance_create(x - 32 + irandom(64), y - 32 + irandom(64), obj_guts);

Al ser únicas al evento que las ejecuta, ¡también es posible usarlas en otras instancias mediante código! Es decir, podemos usar variables locales para ajustar y cambiar cosas en otras instancias mediante la sentencia "with()" (hay una sección sobre esto en sección Generalidades del lenguaje en el manual). El código es así:

var num = instance_number(obj_Enemy);
with (obj_Enemy)
   {
   if num>10 instance_destroy();
   }

Este código funciona porque la variable "num" es local al evento (o script) en el que está contenida, lo que permite usarla en cualquier función en cualquier objeto siempre y cuando esté en el mismo bloque de código.

Variables globales es un tipo de variable que una vez declarada no pertenece a ninguna instancia, pero puede ser leída por todas ellas. Las variables globales deben ser declaradas, tal como sucede con las variables locales, pero a diferencia de éstas, una variable global permanece en memoria hasta el final del juego. ej, se puede crear una variable global para llevar un registro del número de balas del jugador y actualizar en distintos puntos del juego. Una variable global no pertenece a una instancia en particular y puede ser leída, cambiada y usada por todas las instancias en cualquier momento, pero cualquier cambio hecho a la variable es también "global", es decir, el cambio afecta a todas las instancias que usen dicha variable. Veamos un ejemplo de esto:

globalvar food;
food = 5;

hemos creado una nuava variable llamada "food" la cual ha sido declarada como global. "food" esta disponible para cualquier instancia, por ejemplo, podría haber un objeto "food" contra el que el jugador colisione, y en ese evento de colisión tendríamos:

food +=1;

Podríamos tener otro objeto que dibuje el valor de "food", de esta manera:

draw_text(32, 32, "food = " + string(food));

Mediante variables globales podemos cambiar valores y ver reflejados esos cambios en todas las instancias que hagan referencia a esas variables. De la misma manera que con las variables locales, hay que tener cuidado de no nombrar de igual manera que alguna variable de instancia, ya que esto causaría problemas y se facilitaría la aparición de errores en el juego. Como recurso para evitar estos inconvenientes, podemos llamar a las variables globales usando la palabra reservada "global" seguida de un punto "." antes de la variable. Esto se ilustra a continuación:

global.food = 5;

Con este método, debemos usar la palabra "global" cada vez que deseemos usar la variable, por ejemplo:

global.food += 1;
draw_text(32, 32, "food = " + string(global.food));

La mayoría de las variables globales predefinidas son muy específicas y rara vez se les utiliza, pero hay tres variables en particular que son muy útiles y comunes, por lo que se describen a continuación listed below:


score
health
lives

score
Variable global para almacenar el marcador del juego.
Sintaxis:
score;

Devuelve: Real

Descripción
Esta variable tiene un alcance global y se usa para almacenar un valor numérico que generalmente se trata del marcador del juego, sin embargo no necesariamente debe ser así - que el nombre sea "score" (marcador) no significa que tenga que ser usada para el marcador... puede almacenar el valor que se desee.

Ejemplo:
if place_meeting(x, y, obj_Bullet)
   {
   score += 10;
   instance_destroy();
   }
Este código revisa la instancia actual para determinar si hay una colisión con alguna instancia del objeto "obj_Bullet", y si la hay, suma 10 al marcador global y a continuación se destruye.



health
Variable global para almacenar los puntos de salud.
Sintaxis:
health;

Devuelve: Real.

Descripción
Esta variable tiene un alcance global y se usa para almacenar un valor numérico que generalmente representa la salud del jugador health, pero hay que tener en cuenta que esto no necesariamente tiene por que ser así. A pesar de que el nombre es "health", se puede usar para almacenar cualquier valor numérico útil para el juego.




Ejemplo:
if place_meeting(x, y, obj_Enemy)
   {
   health -= 10;
   if health <= 0 instance_destroy();
   }
El código anterior revisa si hay una colisión con el objeto indexado en la variable "obj_Enemy", y de haberla, resta 10 puntos de la variable global health y luego determina si el valor de dicha variable es menor o igual a ceroSi se cumple esta condición, la instancia que ejecuta el código se destruye.