Mientras estaba desarollando un prototipo de los ataques en el juego de lucha que THE LAST PLAYERS estamos planeando,me ha salido un duda :-[...
Como puedo hacer que un objeto,después de crearlo,desaparezca a los X segundos?
Y otra,los steps son segundos?

Como puedo hacer que, despúes de hacer un ataque,necesite,por ejemplo, 10 segundos antes de hacer otro?

JURO QUE ES MI ÚLTIMA PREGUNTA

Gracias de antemano :)!
Jugador de muchos juegos y creador de algunos ;)
¿Buscas un guionista? Haz click aquí

30 Steps son un segundo, aproximadamente.
Entonces si quieres que se destruya en 5 segundos, puedes colocar una alarma en el evento create:
alarm[0] = 30*5;
luego en la alarma, colocas las acciones. En este caso que se destruya...

#2 Mayo 10, 2012, 05:06:59 PM Ultima modificación: Mayo 10, 2012, 05:51:56 PM por Marron121
Muchisismasgracias Sliver_Light,pero ahora me ha surgido otra...
Como puedo hacer que, despúes de hacer un ataque,necesite,por ejemplo, 10 segundos antes de hacer otro?

JURO QUE ES MI ÚLTIMA PREGUNTA :-[

"quiero decir en el post ¬¬"
Jugador de muchos juegos y creador de algunos ;)
¿Buscas un guionista? Haz click aquí

Primero que nada, no tienes que jurar ni prometer nada, el foro esta para resolver dudas xD

1) Yo te recomiendo que siempre que quieras referirte a segundos hagas:
[gml]
variable = room_speed * segundos
//"variable" es la variable a la que necesites darle ese valor de segundos, ya sea una variable normal o un alarm.
//room_speed es una constante que tiene los steps de tu juego, que por defecto son 30 (Pero para no estar poniendo 30, o por si no te gusta tener numeros).
//"segundos" ahi pon la cantidad de segundos que quieres.
[/gml]

2) Para que un objeto se destruya despues de 10 segundos (Por ejemplo), deberias hacer lo siguiente.
[gml]
//Evento create:
alarm[0] = room_speed * 10
//Poner la alarma 0 en room_speed * 10 (Que es lo mismo que decir 10 segundos, como te explique antes).

//Evento alarm0: (Se activa despues de los 10 segundos, como le pusiste en el evento "Create").
instance_destroy()
//Destruir la instancia.
[/gml]

3) Lo que yo haria para hacer un limite de ataque ahora algo como:
[gml]
//Evento Create:
Puedoatacar = 1

//Evento KeyPress Space (Por poner un boton cualquiera, elije el que tu quieras)
if Puedoatacar = 1
{
//Funciones que uses para el ataque.
Puedoatacar = 0
alarm[0] = room_speed * 3
}

//Evento alarm[0]
Puedoatacar = 1
[/gml]
Lo que esto hara es:
En el evento create, crear la variable que verifica si el jugador puede atacar y la pone en "1", para dejarlo atacar.
En el evento de la tecla, o en el evento que hayas elegido para el ataque, verifica si la variable "Puedoatacar" esta en "1", si es asi, el personaje ataca, la variable se pone en "0" (Para prohibir que se ataque nuevamente) y activa la alarma y la pone en 3 segundos.
En el evento de la alarma, cuando pasan los 3 segundos que le asignamos antes, la variable "Puedoatacar" se vuelve a poner en 1, para que el jugador pueda atacar nuevamente.

Espero que te haya servido!

Saludos!

#4 Mayo 10, 2012, 05:50:33 PM Ultima modificación: Mayo 10, 2012, 06:07:18 PM por Marron121
Lo voy a probar,y edito  :)

DIOS MIO,SIGUE SIN FUNCIONARME,LA VERDAD :( ... no se podría hacer solo con variables y alarms?
Porque la verdad,a mi tambien me cuesta entenderlo :-[.
Jugador de muchos juegos y creador de algunos ;)
¿Buscas un guionista? Haz click aquí

Mira, te hice un ejemplo.

Vas a ver que copie y pegue todo. Solamente agregue un objeto que seria del ataque para que sea mas didactico.

Saludos!

PD: Y es solo una variable, una condicion y un alarm.

Cita de: MaanuRP en Mayo 10, 2012, 06:14:34 PM
Mira, te hice un ejemplo.

Vas a ver que copie y pegue todo. Solamente agregue un objeto que seria del ataque para que sea mas didactico.

Saludos!

PD: Y es solo una variable, una condicion y un alarm.

Siii,ya me va!!!!!! Feel like HACKER 8)

Una cosa,(con esa cosa me quedará todo perfecto) como puedo hacer para que este comando
instance_create(room_width/2,room_height/2,Ataque sea relativo al personaje?[/size]

POR CIERTO,MUCHAS GRACIAS POR AYUDARME :'( :'( :'( :'( :'( SOY TAAAAAAAAAAAAAN FELIZ
Jugador de muchos juegos y creador de algunos ;)
¿Buscas un guionista? Haz click aquí

[gml]
instance_create(Jugador.x,Jugador.y,Ataque)
//Cambia "Jugador" por el nombre del objeto del jugador.
//Es cuestion de ir probando con los argumentos de la funcion [instance_create(x,y,obj].
[/gml]

Saludos!

Siento tener que estar dando la lata tanto :-[,pero ahora me sale esto:
FATAL ERROR in
action number 1
of Key Press Event for A-key Key
for object Joan:

COMPILATION ERROR in code action
Error in code at line 3:
    instance_create(Joan,50,Joan,20,Ataque)
                                          ^
at position 41: Wrong number of arguments to function or script.


QUE HAGO?
Jugador de muchos juegos y creador de algunos ;)
¿Buscas un guionista? Haz click aquí

Hace poco tiempo que estas con GML, cierto? jaja, felicitaciones por el cambio de D&D a GML ^^

Una funcion tiene distintos argumentos.
Por ejemplo la funcion instance_create tiene 3 argumentos: x,y,obj
Donde x es la "x" donde va a ser creada, y es la "y" donde va a ser creada y "obj" es el objeto a crear.

Cada uno de estos argumentos van entre parentesis despues de la funcion y separados por una coma:
instance_create(x,y,obj)

Por lo que para que se cree en el objeto del jugador (Dependiendo de donde hayas puesto la "x" y la "y" del sprite (Cuando lo creas) seria asi: Crear la instancia en la x del jugador, en la y del jugador, la instancia va a ser "Ataque".
Entonces: instance_create(Jugador.x,Jugador.y,Ataque)
Jugador.x se refiere a la variable "x" del objeto "Jugador".

Si queres que esto se cree a 50 pixeles a la derecha del jugador, deberias poner:
instance_create(Jugador.x+50,y,Ataque)
Entonces esto toma la "x" del "Jugador", le suma 50 pixeles y ahi lo va a crear.

Para hacer que se cree 50 pixeles mas arriba seria:
instance_create(Jugador.x,Jugador.y-50,Ataque)
(Recuerda que los 0 y 0 de la "x" e "y" se encuentran en la parte superior izquierda de la pantalla.)




Tu error estuvo en que hiciste:

instance_create(Joan,50,Joan,20,Ataque)

Por lo que a la funcion le diste 5 argumentos, cuando solo tiene que tener 3. Esos 50 y 20 no se como los quieres usar para afectar al "x" y al "y" del jugador. Pero si los quieres sumar, tendrias que usarlo asi:

instance_create(Joan.x+50,Joan.y+20,Ataque)




Espero haberte explicado bien, cualquier cosa me dices ^^

Siiiiiiiiiiiii!!!! Al fin, he conseguido que funcione XD XD XD XD XD XD XD XD!!!!! MUCHAS GRACIAS POR AYUDARME

Añado una cosa:
Los "puntos" x e y indican,en ese orden, derecha/izquierda, arriba/abajo
Para que me saliera donde quería,tuve que poner el punto y negativo (lo que indica ARRIBA).No varía mucho del original que me diste MaanuRP, ha quedado así:
instance_create(Joan.x+50,Joan.y-50,Ataquecurativo1)
No se porque,me siento mas... PRO despúes de decir eso...XD
Jugador de muchos juegos y creador de algunos ;)
¿Buscas un guionista? Haz click aquí

Por eso te aclare que los ceros estan en la esquina superior izquierda. X aumenta para la derecha, Y aumenta para abajo.