Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - dixon

Páginas: 1 2
1
Preguntas y respuestas / Re:Hola me podrian testear esto?
« en: Enero 09, 2020, 12:53:54 am »
Hola, buenas noches



Puedes descargar un ejecutable y un editable para gm4 que tiene la solución Aquí



La solución que propóngo cambia todo el código que estás usando por uno parecido al siguiente código:

Código: [Seleccionar]
///simulando el evento create con la variable score
if(score=0)
{
score=1
//botones
b2=0
d=1 //direccion
s=0// el salto
estado="parado"
v=0 //velocidad
time_eye=0//parpadeo
font_size=12
}

///botones
if(keyboard_check(vk_f2))game_restart()
b1=keyboard_check(vk_left)
b2p=(b2=0)*keyboard_check(ord("Z"))
b2=keyboard_check(ord("Z"))
b3=keyboard_check(vk_right)

//movimiento vertical
if((estado="parado" || estado="caminando")*b2p*(s=0))s=20
if(s)s-=1
while(!place_empty(x,y-s))s-=1
if(s<0)s=0
y+=5-s
while(!place_empty(x,y+2))y-=1

//movimiento horizontal
control=(b1+b3=1)
if(control)
{
 d=1-2*(b1)
 v+=d
}
else
{
 if(abs(v))v-=sign(v)*2
 if(abs(v)<2)v=0
}
if(abs(v)>5)v=5*sign(v)
while(!place_empty(x+v,y-5))v-=sign(v)
x+=v

//control de imagen
if(place_empty(x,y+10)){estado="aire"}else{estado="suelo"}
if(estado="aire"){if(s>5){estado="subiendo"}else{estado="bajando"}}
if(estado="suelo"){if(x=xprevious){estado="parado"}else{estado="caminando"}}
if(estado="subiendo"){if(sprite_index!=2+(d<0)*3){sprite_index=2+(d<0)*3;image_speed=0.2;image_index=0};if(image_index>2){image_index=2}}
if(estado="bajando"){if(sprite_index!=2+(d<0)*3){sprite_index=2+(d<0)*3;image_speed=0.1};if(image_index<3){image_index=3};if(image_index>4){image_index=4}}
if(estado="parado"){if(sprite_index!=0+(d<0)*3){sprite_index=0+(d<0)*3};if(time_eye=0){image_speed=0.2};if(floor(image_index)=2){image_speed=0;image_index=0};if(time_eye>100){time_eye=0}else{time_eye+=1}}
if(estado="caminando"){if(sprite_index!=1+(d<0)*3){sprite_index=1+(d<0)*3;image_speed=0.5}}
draw_sprite(sprite_index,image_index,x,y)

Los siguientes usuarios dieron las gracias a este tema: XxBL100xX

2
Preguntas y respuestas / Re:inersia y movimiento encima de movimiento
« en: Enero 07, 2020, 03:46:51 am »
Hola, buenas noches.


Claro que va a funcionar porque ese move_toward_pint también está trabajando con la hspeed.  El código ofrecido es para el objeto player, puede que presente algunas fallas, recuerda que tienes que cambiar los nombres de los objetos  y puede presentar algunas fallas porque quizas interfiera con otro código de tu personaje.

En la versión para la Game maker 8, le incluí un código de empuje el cual es necesario. La plataforma empuja al jugador cuando este está parado, para que no lo traspase.
Los siguientes usuarios dieron las gracias a este tema: thepromaper

3
Preguntas y respuestas / Re:inersia y movimiento encima de movimiento
« en: Enero 06, 2020, 08:16:39 pm »
Hola,

 :-[ Siento mucho contradecirlo amigo, eso produce una tele transportación como la de Gokú.




Puedes descargar el ejecutable y el editable para Game maker 4 Aquí

El resultado es este, quedó fino...


Esta es la version para game maker 8, puedes descargarla aquí

Los siguientes usuarios dieron las gracias a este tema: xStarLordx, thepromaper

4
Preguntas y respuestas / Re:time line + rutas
« en: Enero 06, 2020, 07:36:37 pm »
Hi, buenas tardes y buen provecho.

Ahora bien, voy a trabajar con suposiciones:

1. supongo que tienes varias rutas
2. supongo que quieres que el enemigo decida cual ruta elegir por si solo
3. supongo que el nemigo decide a donde ir
4. supongo que el enemigo se debe mover por si solo
5. supongo que las rutas son para el enemigo
6. supongo que cada enemigo debe elegir su ruta por si solo

Ya, dejaré de suponer. Ahora bien la pregunta que debistes formular es la siguiente:

¿como hago que el enemigo decida escoger una ruta?
¿como hago para que el enemigo camine por si solo y decida escoger una ruta de tres rutas distintas?
¿como hago para que el enemigo al ser creado decida una ruta cualquiera?

Bien...

Bajo esos datos construí esto:


Ahora tengo una babosa que camina para donde ella quiere y yo no tengo que decirle nada, ella solo toma su camino y toma otro camino y vuelve y toma otro , toma el que ella quiera. Yo nunca termino de saber cual será su próximo paso.

¿Cómo lo conseguí? pues...

con este único codigo en una alarma 0

Código: [Seleccionar]
ruta=1+floor(random(3))
alarm[0]=20

switch (ruta) {
   
        case 1:path_start(ruta_babosa_arriba, 15, path_action_stop, false);
       
        break;
       
        case 2:path_start(ruta_babosa_mitad, 15, path_action_stop, false);
       
        break;
       
       
        case 3:path_start(ruta_babosa_abajo, 15, path_action_stop, false);
       
        break;
       
    default:
       rutas=false
break;
}


Pero supongo que algo faltó, porque el objetivo no es que el objeto se mueva por si solo , al parecer lo que se quiere es usar el time line.... Yavá, un momento yavá.  dejame pensar....
Ya sé..... jejejejejjeje

Glosario:
  Yavá,  en Venezuela esta expresión significa "Dame unos instantes", "Espera un momento", "Dejame respirar", "Dejame hablar", "Dame unos minutos", etc...

SI, LO QUE Quieres es usar un time line para darle distintos movimientos en distintas situaciones entonces olvidamos el alarm[0] bueno no del todo porque vas a colocar un código en el alarm 0... Ya verás.

La solución sería:

1. Colocar tu código en la alarm[0] del enemigo
2. Constuir un time line de la siguiente forma
   En el tiempo 30 colocar una pieza de código con lo siguiente:
Código: [Seleccionar]
   ruta=1
  alarm[0]=1
  En el tiempo 120 colocar una pieza de código con lo siguiente:
Código: [Seleccionar]
  ruta=2
  alarm[0]=1
  En el tiempo 200 colocar una pieza de código con lo siguiente
Código: [Seleccionar]
ruta= 3
 alarm[0]=1


La función de alarm 0 será la de ejecutar el código que en ella se encuentra y eso es todo....... ave a aver avaer..... pues, ami me funcionó , ahora yo le digo a la babosa para donde tiene que ir y cuando se tiene que mover.
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

5
Preguntas y respuestas / Re:inersia y movimiento encima de movimiento
« en: Enero 06, 2020, 06:46:17 pm »
Hola,

Con el permiso del camarada xStarLordx, le ofrezco esta otra solución.

Código: [Seleccionar]
if(distance_to_object(objeto_plataforma)<5)
{
objeto_especifico=instance_nearest(x,y+5,objeto_plataforma)
if(y<objeto_especifico.y)
{
x+=objeto_especifico.hspeed
}
}

Pero bueno, si no le explico como funciona entonces no podrá hacer nada. Lo primero es traducir lo que dice el código en palabras humanas, esto es lo que dice:

si la distancia a cualquier objeto_plataforma es menor que 5 pixeles entonces procede a hacer lo siguiente
{
A) Hallar el nombre del objeto específico, para trabajar solo con ese y no con otros objetos del mismo tipo
B) Si el objeto player se encuentra sobre el objeto plataforma especificado entonces:
C) Mover la posición X del player en el sentido y a la velocidad del objeto plataforma especificado
}


Este código tiene sus desventajas:
1. Funciona solo si el objeto plataforma móvil, se mueve por causa de su hspeed. Osea va a funcionar si estas moviendo la plataforma movil con la variable hspeed de esta.
2.
Los siguientes usuarios dieron las gracias a este tema: thepromaper

6
Preguntas y respuestas / Re:ayuda con saltosxdd
« en: Enero 05, 2020, 08:28:19 pm »
???



Se me olvidaba que adjunte el editable.....

Descarguelo aqui
Los siguientes usuarios dieron las gracias a este tema: xStarLordx

7
Hola,

Los botones 9 y 10 están colocados en el centro del joystick. No dicen por ningùn lado "STAR Y SELECT" pero como el 9 está a la izquierda y el 10 a la derecha podemos decir que 9 corresponde muy bien con select y 10 con start al igual que los controles de la snes.



Los siguientes usuarios dieron las gracias a este tema: kostra

8
Hola, buenas tardes.

Tengo este mando Genérico echo en china, que muestra solo números en sus botones excepto los 4 del Gatillo L y R. Las palancas tambien pueden ser presionadas y producen los valores 11 y 12.

Los siguientes usuarios dieron las gracias a este tema: kostra

9
Preguntas y respuestas / Re:¿como puedo poner texto en una room?
« en: Diciembre 30, 2019, 07:06:10 pm »
Hola, Fabrilyin. Gusto en saludarlo, mi nombre es Dixon.


No existe algo llamado texto, pero si existe el draw_text(x,y,string). Con esta función puedes agregar texto en cualquier parte de la room. El siguiente código que te voy a dar lo debes colocar en un evento dibujo también llamado draw, dentro de una pieza de código.

Código: [Seleccionar]
///texto
dx=0
dy=0

texto="Veces eliminado: "+string(score)
draw_text(dx,dy,texto)

Las variables dx y dx indicarán la posición donde quieras que aparezca el texto. Pero va a depender de la variable score en este caso, por lo tanto cada vez que una bala del jugador toque al enemigo tienes que sumarle un punto a la variable score así.

Código: [Seleccionar]
score+=1
Los siguientes usuarios dieron las gracias a este tema: Fabriyin

10
Hola, mucho gusto.  ;) mi nombre es Dixon.

Tu código está bien escrito, pero por alguna causa desconocida no funciona de ese modo porque no reconoce el string final. Bueno si lo reconoce como un cero ( 0 ). La siguiente modificación si funciona pero solo para las versiones 5, 6, 7, 8 y Html5 de game maker.

Código: [Seleccionar]
num1 = room_get_name(room) //obtiene el nombre de la habitación
num2 = string_digits(num1) //remueve lo que no son numeros
num3 = real(num2) + 1 // lo convierte a integros y le suma 1
num4 = "rm_level" + string(num3) // lo convierte a string y le suma la parte de rm_level
execute_string("room_goto("+string(num4)+")") // lleva al personaje a la siguiente habitación

room_goto(numb)

Esta función te permite ir a cualquier habitación en tu proyecto de juego, ya sea creado usando código o en el árbol de recursos. Proporcione el valor de ID de sala único (almacenado en la variable para el nombre de la sala, o como una variable devuelta por la función room_add . Tenga en cuenta que la sala no cambiará hasta el final del evento donde se llamó a la función, por lo que cualquier código después esto se ha llamado todavía se ejecutará si en el mismo evento. La advertencia a esto es que cualquier código que cree instancias que se llama después de esto, no creará la instancia y, por lo tanto, debería llamarse antes de cambiar de habitación. Esta función también activará el Evento de fin de sala .
Los siguientes usuarios dieron las gracias a este tema: Leandrotitere2332

11
Preguntas y respuestas / Re:actualizando
« en: Diciembre 21, 2019, 05:44:32 am »
Hola  :-[

Actualizar puede definirse como agregar nuevo código al juego. Para game maker  y anteriores esto es fácil pero para la studio es más complicado. Aquí te dejo un ejemplo básico que actualización.

En adjunto hay un ejecutable y dos archivos.

El archivo draw.txt, es el archivo que contiene el código del programa
El archivo actualización es el que contiene los nuevos códigos que formarán parte del programa. Este puedes modificando para ir actualizando a gusto, hasta lograr mover la manzana.

actualizable.zip
Los siguientes usuarios dieron las gracias a este tema: JheyRost

12
Preguntas y respuestas / Re:Duda sobre scripts,argumentos y with()
« en: Diciembre 21, 2019, 05:32:58 am »
 :-[  Disculpa las molestias

Si el argumento está definido,  solo tienes que utilizarlo. No va el other. Quedaría así.

Código: [Seleccionar]
with(argument0){
    if other.argument1 != undefined{
        with(instance_create(x,y,sprite_effect)){
            sprite_index =argument1
           
        }
    }
    instance_destroy()
}

Lo que intentaba explicar es que no necesitas usar dos with porque el ultimo puede ser reemplazado por "nnn=" así

nnn=instance_create(x,y,sprite_effects)
nnn.sprite_index=argument1
Los siguientes usuarios dieron las gracias a este tema: VietnamNeko

13
Preguntas y respuestas / Re:Rutas
« en: Diciembre 01, 2019, 03:51:44 pm »
Hola, buenos días.

Si te refieres a movimientos de un enemigo  que se controla por una time line pues este es mi consejo entendible.

1. En create creas una variable llamada tiempo de tipo numerico (tiempo=0)
2. En create creas otra variable llamada ruta de tipo string (ruta="")
3. En step haces que tiempo se sume 1 por cada stem (tiempo+=1)
4. En step el tiempo debe volver a ser cero cuando llegue a un limite (if(tiempo>500){tiempo=0})
5. En step dices lo que sucederá en cada cierto tiempo (if(tiempo=50)ruta="arriba")
6. En step defines los movimientos por movimientos X y Y pero tambien puedes usar las variables vspeed y hspeed.

Ejemplo 1. Ejemplo más simple de un movimiento controlado
//[EVENTO CREATE¡
tiempo=0
ruta=""

//[EVENTO STEP]
//control del tiempo
tiempo+=1
if(tiempo>500){tiempo=0}
if(tiempo>50)ruta="arriba"
if(tiempo>150)ruta="derecha"
if(tiempo>250)ruta="abajo"
if(tiempo>350)ruta="izquierda"
if(tiempo>450)ruta="parar"

///movimiento
if(ruta="arriba"){y-=1}
if(ruta="derecha"){x+=1}
if(ruta="abajo"){y+=1}
if(ruta="izquierda"){x-=1}

EJEMPLO 2. Movimiento controlado con velocidad predefinida. EL OBJETO SALE DE LA ROOM SI LA VELOCIDAD ES MUY GRANDE

///EVENTO CREATE
tiempo=0
ruta=""
velocidad=5

///EVENTO STEP

tiempo+=1
if(tiempo>500){tiempo=0}
if(tiempo>50)ruta="arriba"
if(tiempo>150)ruta="derecha"
if(tiempo>250)ruta="abajo"
if(tiempo>350)ruta="izquierda"
if(tiempo>450)ruta="parar"

///movimiento
if(ruta="arriba"){y-=velocidad}
if(ruta="derecha"){x+=velocidad}
if(ruta="abajo"){y+=velocidad}
if(ruta="izquierda"){x-=velocidad}

EJEMPLO 3. Movimiento aleatorio. Este es el movimiento donde el objeto decide para donde ir.
///EVENTO CREATE
tiempo=0
ruta=""
velocidad=1
aleatorio=0

///EVENTO STEP
tiempo+=1
if(tiempo=10){aleatorio=floor(1+random(4))}
if(tiempo=50){aleatorio=0} ///AQUI DETENEMOS UNOS SEGUNDOS AL OBJETO
if(tiempo>75){tiempo=0}


if(aleatorio=1)ruta="arriba"
if(aleatorio=2)ruta="derecha"
if(aleatorio=3)ruta="abajo"
if(aleatorio=4)ruta="izquierda"
if(aleatorio=0)ruta="parar"

///movimiento
if(ruta="arriba"){y-=velocidad}
if(ruta="derecha"){x+=velocidad}
if(ruta="abajo"){y+=velocidad}
if(ruta="izquierda"){x-=velocidad}
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

14
Preguntas y respuestas / Re:detectar room
« en: Noviembre 19, 2019, 07:00:51 pm »
Hola, buenas tardes.

Aquí va otra respuesta parecida.

//COLOCAR ESTO EN UN EVENTO STEP O PASO
Código: [Seleccionar]
if(room=room0)
{
sprite_index=cursor
}
if(room=room1)
{
sprite_index=cursor2
}

Los siguientes usuarios dieron las gracias a este tema: JheyRost

15
Hola, gusto en saludarlo de nuevo.

Hola aquí está solo el Pseudocodigo, debes traducirlo al lenguaje Gmk.

Si x > 480
 Hacer
  X= x-480
Fin_si

Si x < 0
 Hacer
 X=x+480
 Fin_si

Si y < 0
 Hacer
  Y= y+ 480
 Fin_si

Si y> 480
 Hacer
 Y= y-480
 Fin_si

Ok está bien este es el codigo  :-[, se coloca en un evento step.

Código: [Seleccionar]
if(x>480)
{
x=x-480
}

if(x<0)
{
x=x+480
}

if (y>480)
{
y=y-480
}

if(y<0)
{
y=y+480
}


Los siguientes usuarios dieron las gracias a este tema: T789

Páginas: 1 2