Oficial Resolución de DUDAS en Game Maker

Mensajes
286
Reacciones
11
Puntos
0
Ubicación
Santiago De Chile
bueno hola ise un tema sobre mi duda por que no conocia este tema bueno mi duda es que ¿como puedo añadir velocidad a las armas de un juego?osea,la pistola se demora 15 steps mientras que la escopeta 30 steps o algo asi ¿hay algun modo?yo ya intente con alarms y time lines pero la primera arma se me bugea y es como si no existiera :(
 
Mensajes
5.059
Reacciones
745
Puntos
0
Ubicación
Hyrule
Gracias por la ayuda, funciono de maravilla (Lo de las views)

tengo otra duda:
Hay un enemigo que te sigue usando el siguiente codigo:
{move_towards_point(jugador.x,jugador.y,1) }
Funciona de maravilla, pero al momento de cambiar el objeto "jugador", por otro objeto (digamos que el objeto se cambia presionando una tecla) me da un error:

___________________________________________
ERROR in
action number 1
of Step Event
for object obj_enemy_ghost:

Error in code at line 2:
{move_towards_point(jugador.x,jugador.y,1) }
^
at position 30: Unknown variable x

entiendo que se da porque al cambiar el objeto desaparece la variable "jugador.x" y "jugador.y"
he intentado solucionarlo de la siguiente manera:
if object_exists(jugador)
{move_towards_point(jugador.x,jugador.y,1) }

else
{
if object_exists(jugador_ex)
{move_towards_point(jugador_ex.x,jugador_ex.y,1)}
}

pero el error persiste, ¿alguna sugerencia?
 
Última edición:
OP

YoshiFanGM

雲寶
Moderador
Mensajes
1.141
Reacciones
618
Puntos
816
Ubicación
Mitras
@Zetho, ¿Has probado con la función instance_exists en vez de object_exists?

Si te sigue saliendo el mismo error, entonces puedes usar una variable que almacene cuál es el objeto que debe seguir el enemigo, por ejemplo, en el evento Create del enemigo pones:

PHP:
objeto_a_seguir = jugador;

Y el código "move_towards_point(jugador.x,jugador.y,1)" solamente lo cambias por:

PHP:
move_towards_point(objeto_a_seguir.x, objeto_a_seguir.y, 1);

Y adentro del evento que hace que el jugador se cambie de objeto, solo debes cambiar la variable "objeto_a_seguir" del enemigo, por el nuevo objeto del jugador:

PHP:
with (obj_enemy_ghost) objeto_a_seguir = jugador_ex;

Espero que así te funcione, saludos :)
 
Mensajes
60
Reacciones
27
Puntos
0
bueno hola ise un tema sobre mi duda por que no conocia este tema bueno mi duda es que ¿como puedo añadir velocidad a las armas de un juego?osea,la pistola se demora 15 steps mientras que la escopeta 30 steps o algo asi ¿hay algun modo?yo ya intente con alarms y time lines pero la primera arma se me bugea y es como si no existiera :(

Hola, creo que puedo ayudarte vagamente, aun asi te voy a dar un par de soluciones y si alguna te sirve tomala.

1- En el objeto bala ( si tu intención es que la bala vaya mas lento ) podes modificar:
1- la speed horizontal y la speed vertical (velocidad horizontal y vertical) y usar la friccion ( si sos detallista).
2- usar en la pestaña de movimiento la opción "move fixed" y señalar dirección y velocidad.

2- En el objeto arma ( si tu intención es que la escopeta tarde mas en recargar que una pistola automática y menos que un lanza-misiles ) entonces podes hacer lo siguiente ( ojo que es la primer solución que se me viene a la mente ):
1- en el objeto arma insertas un listado en step para modificarla segun tu deseo. Esto seria algo así:
step event--
if (arma= 0) [ sprite_index= cuchillo ; velocidad= 0 (a menos que se lance) ; damage= x ; recarga= 1 ]
if (arma= 1) [ sprite_index= revolver ; velocidad= 10 (velocidad que va a tomar la bala) ; damage= x ; recarga= 2 ( tarda un poco mas que el cuchillo)]
if (arma= 2) [ sprite_index= escopeta; velocidad= 10(las balas viajan iguales) ; damage= x ; recarga= 6 (tarda mucho mas) ]
Despues de esto tendrias que declarar en el evento create la alarma0 y asignarle como valor la variable recarga, tambien tendrias que tildar la pestaña de relative ya que sino va a tomar el valor de la primer arma como unico y por mas que sea cambiada luego contara desde aqui siempre. En el evento alarma pones una variable que permita el disparo nuevamente y listo.

Espero que la respuesta no te haya mareado mas que tu propio problema, nunca hice un juego shooter o de plataforma, por tanto no se del tema jajaja.
Sl2 y lluvia de corazones para todos xD
 
Mensajes
60
Reacciones
27
Puntos
0
Hola a todos, (esto es una duda y no una respuesta asi que separe los msjs)
tengo un problema bastante simple
tengo un objeto, en la instancia create voy a poner un code con las siguientes variables:

A= 0
B= 0
C= A + B
D= A - B
E= 0
ahora bien, en el evento step voy a poner lo siguiente
if ( A= E or C= E or D= E )
entonces soy feliz.

Mi problema surge cuando tengo que escribirlo. De hecho asle esta accion y me propuse sumar variables en un juego nuevo donde solo habia creado un objeto con variables A, B y C declaradas en un codigo. Luego arme un visualizador con la opcion draw y pude observar como al presionar los botones mis variables A y B aumentaban pero la C seguia exactamente igual. No es un error por declarar solo en create ya que puse un code en step declarando C= A + B y no resulto.
Las opciones que use para escribir la suma de dos variables fueron:
C= A + B
C= (A+B)
C= [A+B] no me dejaba escribirlo asi
C= {A+B} no me dejaba escribirlo asi
C= ( A + B )
C= object0.A + object0.B

Si alguien me dice como se suman variables voy a estar agradecido, se que es un error de sintaxis ya que puedo ver como se modifican las variables A y B pero no puedo ver la suma en C aun cuando corro el juego en debug mode y veo las instancias locales del objeto.

Sl2 y lluvia de corazones para todos xD
 
Mensajes
286
Reacciones
11
Puntos
0
Ubicación
Santiago De Chile
Hola, creo que puedo ayudarte vagamente, aun asi te voy a dar un par de soluciones y si alguna te sirve tomala.

1- En el objeto bala ( si tu intención es que la bala vaya mas lento ) podes modificar:
1- la speed horizontal y la speed vertical (velocidad horizontal y vertical) y usar la friccion ( si sos detallista).
2- usar en la pestaña de movimiento la opción "move fixed" y señalar dirección y velocidad.

2- En el objeto arma ( si tu intención es que la escopeta tarde mas en recargar que una pistola automática y menos que un lanza-misiles ) entonces podes hacer lo siguiente ( ojo que es la primer solución que se me viene a la mente ):
1- en el objeto arma insertas un listado en step para modificarla segun tu deseo. Esto seria algo así:
step event--
if (arma= 0) [ sprite_index= cuchillo ; velocidad= 0 (a menos que se lance) ; damage= x ; recarga= 1 ]
if (arma= 1) [ sprite_index= revolver ; velocidad= 10 (velocidad que va a tomar la bala) ; damage= x ; recarga= 2 ( tarda un poco mas que el cuchillo)]
if (arma= 2) [ sprite_index= escopeta; velocidad= 10(las balas viajan iguales) ; damage= x ; recarga= 6 (tarda mucho mas) ]
Despues de esto tendrias que declarar en el evento create la alarma0 y asignarle como valor la variable recarga, tambien tendrias que tildar la pestaña de relative ya que sino va a tomar el valor de la primer arma como unico y por mas que sea cambiada luego contara desde aqui siempre. En el evento alarma pones una variable que permita el disparo nuevamente y listo.

Espero que la respuesta no te haya mareado mas que tu propio problema, nunca hice un juego shooter o de plataforma, por tanto no se del tema jajaja.
Sl2 y lluvia de corazones para todos xD
Disculpa por mi respuesta demorada pero de todos modos te doy las gracias por ayudarme :)
 
Mensajes
284
Reacciones
131
Puntos
0
Ubicación
Desde Navolato vengo dicen que nací en el roble ♥
hola em
alguien puede decirme como hacer para que si mi jugador(TDS) al colicionar con un bloque no se quede pegado si no que se deslice

no se si me explico pero quiero que sea mas o menos asi
10351381273_7a85208a8b_o.png

que se mueva mas o menos a donde esta el cursor sin traspasar el bloque y no se quede pegado ^^

Hola a todos, (esto es una duda y no una respuesta asi que separe los msjs)
tengo un problema bastante simple
tengo un objeto, en la instancia create voy a poner un code con las siguientes variables:

A= 0
B= 0
C= A + B
D= A - B
E= 0
ahora bien, en el evento step voy a poner lo siguiente
if ( A= E or C= E or D= E )
entonces soy feliz.

Mi problema surge cuando tengo que escribirlo. De hecho asle esta accion y me propuse sumar variables en un juego nuevo donde solo habia creado un objeto con variables A, B y C declaradas en un codigo. Luego arme un visualizador con la opcion draw y pude observar como al presionar los botones mis variables A y B aumentaban pero la C seguia exactamente igual. No es un error por declarar solo en create ya que puse un code en step declarando C= A + B y no resulto.
Las opciones que use para escribir la suma de dos variables fueron:
C= A + B
C= (A+B)
C= [A+B] no me dejaba escribirlo asi
C= {A+B} no me dejaba escribirlo asi
C= ( A + B )
C= object0.A + object0.B

Si alguien me dice como se suman variables voy a estar agradecido, se que es un error de sintaxis ya que puedo ver como se modifican las variables A y B pero no puedo ver la suma en C aun cuando corro el juego en debug mode y veo las instancias locales del objeto.

Sl2 y lluvia de corazones para todos xD

ya probaste colocar C=A+B en el evento step?
el create como su nombre en ingles lo indica "crear" se da para formar las variables al momento en que un objeto se crea
C=0 en create y en step C=A+B eso deberia funcionar :D

Salu2, un abraso y un corazon gay para ti xD
 
Última edición:

Khyze

Game Maker User
¡Feliz Cumpleaños!
Mensajes
4.693
Reacciones
1.815
Puntos
0
Ubicación
Venezuela
hola em
alguien puede decirme como hacer para que si mi jugador(TDS) al colicionar con un bloque no se quede pegado si no que se deslice

que se mueva mas o menos a donde esta el cursor sin traspasar el bloque y no se quede pegado ^^

Tengo el mismo problema Y_Y..... Es como esto:
mp_potential_step(x,y,speed,false)

Solo que al colisionar con algo solido se paraliza Y_Y Alguna solucion?
 
Mensajes
60
Reacciones
27
Puntos
0
Holas de mar a toda la Republica de Emudesc....

Tengo el mismo problema Y_Y..... Es como esto:
mp_potential_step(x,y,speed,false)

Solo que al colisionar con algo solido se paraliza Y_Y Alguna solucion?

quisiera saber exactamente que tipo de desplazamiento queres. Si tu desplazamiento tiene que responder a la gravedad entonces queda limitado a desplazarse hacia abajo. En cambio si se desliza no respondiendo a la gravedad entonces tiene que tomar el camino mas corto.
Dependiendo de el tipo de movimiento que quieras voy a darte una diferente respuesta.

Sl2 y lluvia de corazones para todos :p
 

Khyze

Game Maker User
¡Feliz Cumpleaños!
Mensajes
4.693
Reacciones
1.815
Puntos
0
Ubicación
Venezuela
Holas de mar a toda la Republica de Emudesc....

quisiera saber exactamente que tipo de desplazamiento queres. Si tu desplazamiento tiene que responder a la gravedad entonces queda limitado a desplazarse hacia abajo. En cambio si se desliza no respondiendo a la gravedad entonces tiene que tomar el camino mas corto.
Dependiendo de el tipo de movimiento que quieras voy a darte una diferente respuesta.

Gracias, pero ya localize el problema, el codigo era: action_potential_step(x,y,speed,false)

Gracias igualmente ;D P_Luizon, espero que te sirva ;D
 
Mensajes
409
Reacciones
21
Puntos
0
Hola a todos
estoy haciendo un TDS con luigi003 me esta enseñando gml
y quisiera saber como hago para que mi personaje no traspase el bloque, me ha dicho que ponga el bloque en solido pero igual lo traspasa
y tambien quisiera saber como hacer que al presionar 1 se pongala pistola 2 se ponga la uzi y asi como los controles de un fps
y como se podría hacer para guardar la partida
como hacer para hacer un inventario estilo terraria solo que seria mas pequeño
muchas gracias de antemano Salu2 y corazones para todos :*
 

Khyze

Game Maker User
¡Feliz Cumpleaños!
Mensajes
4.693
Reacciones
1.815
Puntos
0
Ubicación
Venezuela
Hola a todos
estoy haciendo un TDS con luigi003 me esta enseñando gml
1-y quisiera saber como hago para que mi personaje no traspase el bloque, me ha dicho que ponga el bloque en solido pero igual lo traspasa
2-y tambien quisiera saber como hacer que al presionar 1 se pongala pistola 2 se ponga la uzi y asi como los controles de un fps
3-y como se podría hacer para guardar la partida
4-como hacer para hacer un inventario estilo terraria solo que seria mas pequeño
muchas gracias de antemano Salu2 y corazones para todos :*

Ya es la segunda vez que te digo, hace falta los codigos que utilizes, ejemplo:
1-Si utilizas simplemente x+=5, esto servira

if place_free(x,y-32) y-=32
El bloque necesita ser Solid

if keyboard_check_pressed(vk_numpad0)

2-if keyboard_check_pressed(vk_numpad1)
global.weapon=1

if keyboard_check_pressed(vk_numpad2)
global.weapon=2

if global.weapon=1
sprite_index=PlayerPistol

if global.weapon=2
sprite_index=PlayerUzi

Eso depende, de como utilizes los sprites y eso, por eso esta clase de cosas se dan en un engine :3

3-Existen varias maneras de guardar las partidas (Mediante el Codigo de el game maker de Guardar y Cargar partida, tambien se consigue en D and D Main2/Game) o mediante ini, txt, archivos escritos (Mayormente solo para variables)

var file;
file = file_text_open_write("Carpeta/NombredeArchivo.Extension");
file_text_write_real(file, global.Nivel);
file_text_writeln(file);
file_text_write_real(file, global.Personaje);
file_text_writeln(file);
file_text_close(file);

4-A lo terraria...... yo tengo un juego con eso, pero sin el drag and drop, tiene flechitas que los mueven a cualquier casilla

Bueno, vine es para que me aclaren una duda que tengo desde hace tiempo pero no he querido preguntar.....

Digamos que tengo un object con esto
sprite_index=Loquesea

y quiero que al morir, cree un objeto con su propio sprite.....

a=instance_create(x,y,Muerte)
with a sprite_index=sprite_index

No tengo idea de como colocarlo, tiene que ser similar a eso... Alguna idea? (Solo tienen que ser esos 2 objects)

EDIT: Despues de Postear es que me vienen las ideas Y_Y

Era asi xDD:

a=instance_create(x,y,Muerte)
a.sprite_index=sprite_index
 
Última edición:

Khyze

Game Maker User
¡Feliz Cumpleaños!
Mensajes
4.693
Reacciones
1.815
Puntos
0
Ubicación
Venezuela
y digamos eso en que evento va?
puedo poner esos códigos enel mismo donde escribí x+=5?
Luigi003 mañana continuamos?

Va exactamente antes de el movimiento osea:
if place_free(x+5,y)
x+=5

El valor que tenga lo de place free debe ir en el movimiento, en este caso es 5 ;D

(Rara vez entro a este tema..... Veo que aqui estan los ultimos makers que sobrevivieron al virus I.N.A.C.T.I.V.I.T.Y., Quien sabe que significa?)

I=Incienso
N=Natural
A=Astromedicinal
C=Cardiopulmonistico
T=Tratando
I=Investigaciones
V=Vectoriales
I=Industriales
T=Transversionalmente
Y=Youtube..... (No tengo diccionario en la mano para una palabra con Y o_O)

Eso va para no dejar solo la respuesta xDD
 
Mensajes
409
Reacciones
21
Puntos
0
Muchas gracias @TLT96 Ya logre resolver lo que traspasa el codigo estoy probando lo de las cosas de las armas
digamos eso iria en el evento keyboard 1 y keyboard 2 cierto
tambien quisiera saber como hiciste lo de arriba saliera una imagen del arma que tenes como en tu juego de all star shooter colloseum me encantaria hacer algo como eso salu2
 
Última edición:

Khyze

Game Maker User
¡Feliz Cumpleaños!
Mensajes
4.693
Reacciones
1.815
Puntos
0
Ubicación
Venezuela
Muchas gracias @TLT96 Ya logre resolver lo que traspasa el codigo estoy probando lo de las cosas de las armas

1-digamos eso iria en el evento keyboard 1 y keyboard 2 cierto

2-tambien quisiera saber como hiciste lo de arriba saliera una imagen del arma que tenes como en tu juego de all star shooter colloseum me encantaria hacer algo como eso salu2

1-Ummmm, no, para eso es el codigo if keyboard_check_pressed(vk_numpad1), colocalo en step event y funcionara como el evento keyboard, hay mas como
-vk_left
-vk_Alt
-vk_varias teclas especiales de el teclado

si deseas letras seria asi

if keyboard_check_pressed(ord("S"))


2-Crea un sprite con 3 frames (de momento):
el frame 0 tiene que estar en blanco
el frame 1 tiene que tener la foto de la pistola
el frame 2 tiene que tener la foto de la uzi

si seguiste los codigos que te di antes esto hara que funcione (Mas o menos)
draw_sprite(sArmas,global.weapon,view_xview+12,view_yview+12)

Supongo que utilizaras views?, eso siempre funciona, pero para los que usen mas de una view seria algo asi
draw_sprite(sArmas,global.weapon,view_xview[0]+12,view_yview[0]+12) nose, siempre uso 1 ;D

Espero que logres adaptarlo a tu juego :3

Si estoy aqui respondere las dudas que sepa resolver xDD (Al igual que los demas ;D)
 
Mensajes
284
Reacciones
131
Puntos
0
Ubicación
Desde Navolato vengo dicen que nací en el roble ♥
Gracias, pero ya localize el problema, el codigo era: action_potential_step(x,y,speed,false)

Gracias igualmente ;D P_Luizon, espero que te sirva ;D

hey pero pongo el código y no me lo detecta, me sale como error :|
tengo el GameMaker 8.0
¿el código es de otra versión?
 
Arriba Pie