Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

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

Páginas: 1 2 3 ... 30
1
Puedes usar un switch-case
switch (room)
{
  case room_level_1: guia = path_Aliado_Blue_Heart1; break;
  case room_level_2: guia = path_Aliado_Blue_Heart2; break;
  // ...
}

Si el número de la room y de la path son iguales, puedes obtener el nombre de la room y copiar los últimos caracteres
nom = room_get_name(room_level_1); //nombre de la room
lon = string_length(name); //longitud del nombre
num = string_copy(nom, lon, 1); //copiar ultimo caracter (un numero)
Entonces buscar el index de la path que tiene los mismos caracteres al final
nom = "path_Aliado_Blue_Heart" + num; //nombre de la path
p = asset_get_index(nom); //index de la path
Parece que lo he descubierto, creo que era algo tan simple como

CREATE
patron = path_start (path_Aliado_Blue_Heart1,3, path_action_stop,true)

ROOM STAR
if (room == rom_Zona_Espectador)
{ patron = path_start (path_Caminante_Jefe,3, path_action_stop,true); }
if (room == rom_jefe_El_Amo1)
{ patron = path_start (path_Aliado_Blue_Heart1,3, path_action_stop,true); }

2
Puedes usar un switch-case
switch (room)
{
  case room_level_1: guia = path_Aliado_Blue_Heart1; break;
  case room_level_2: guia = path_Aliado_Blue_Heart2; break;
  // ...
}

Si el número de la room y de la path son iguales, puedes obtener el nombre de la room y copiar los últimos caracteres
nom = room_get_name(room_level_1); //nombre de la room
lon = string_length(name); //longitud del nombre
num = string_copy(nom, lon, 1); //copiar ultimo caracter (un numero)
Entonces buscar el index de la path que tiene los mismos caracteres al final
nom = "path_Aliado_Blue_Heart" + num; //nombre de la path
p = asset_get_index(nom); //index de la path
Tomando en cuenta que tengo zonas de nivel especial 1,2...3 y niveles normales 1,2...3, esto no es practico, incluso parece que ese código es complicado para esta función, lo que me hace deducir esto es que

if (room == rom_Final_Neutral)
{ visible = false; }
if (room == rom_Final_Intermedio)
{ visible = false; }
if (room == rom_Final_Verdadero)
{ visible = false; }
if (room == rom_Final_Secreto)
{ visible = false; }

En este código se comprueba que si la room es igual a esta room, el objeto se hace invisible, de este mismo modo debe haber algo similar a esto.

if (room == rom_Final_Neutral)
{ path_Aliado_Blue_Heart1; }
if (room == rom_Final_Intermedio)
{ path_Aliado_Blue_Heart2; }
if (room == rom_Final_Verdadero)
{ path_Aliado_Blue_Heart3; }
if (room == rom_Final_Secreto)
{ path_Aliado_Blue_Heart4; }

Probablemente este malo, pero es una idea de lo que busco hacer en un evento "ROOM STAR", que si la room tiene este nombre el objeto ejecute este patrón, pero todavía sigo con la duda  :-\.

3
Tengo un paths llamado "path_Aliado_Blue_Heart1", pueden notar que lleva un 1 al final, ya que son varios, este esta colocado en un evento "CREATE", lo que busco de esto es que dependiendo de la room, elija a un path, es decir si la room se llama jefe1, elija el path1, si la room se llama jefe2, elige al path2, deduzco que en el evento "ROOM STAR" seria un mejor lugar para hacer algo como esto, pero ¿como debería programar esto?

NOTA: el objeto que tiene o debe tener esto, es uno que actúa a modo de guía, para tener una idea mas clara, imaginen que es una luz que el jugador debe seguir para tomar el camino correcto, cada habitación tiene un camino diferente que pide que el jugador siga un patrón de movimiento guiado por la luz.

4
4 días y un sigo con la duda  :-\.

5
Si tengo que contar mi experiencia personal con la que empece a usar  :GMS:, diría que debes seguir los consejos que te dio somnus, ya que cuando era novato, también quería aspirar a cosas de ese tipo, sin embargo, llevo 2 años con  :GMS:, y me he dado cuenta que hay que estudiar mucho para entender la lógica, por esta razón comenzare a estudiar una carrera sobre esto, en cuanto a la ayuda que te puedo ofrecer, puedes ver a estas personas.

Guinxu
https://www.youtube.com/user/GuinxuVideos

Monty_Drake
monty drake

Escuela_de_Video_Juegos
https://www.youtube.com/user/Servorius

Game_Maker_Facilito
https://www.youtube.com/channel/UC3MaE3qH7R32fi0XbgsQuqQ

No soy un experto, pero tengo vídeos sobre este tema, aunque mas que todo lo mio es el diseño de niveles.
https://www.youtube.com/channel/UCw06HXsy1tPNcZIsNkb483w?view_as=subscriber

6
Preguntas y respuestas / Re:¿Como adapto este fondo?
« en: Marzo 04, 2018, 11:00:14 pm »
Debes obtener los id's de cada tile y guardarlos en un arreglo o en una lista
// lista para guardar ids de tiles
tile_list = ds_list_create();

// contador de tiles
tile_count = 0;

for (j=0; j<room_height; j+=TILE_HEIGHT) //escaneo vertical
for (i=0; i<room_width; i+=TILE_WIDTH) //escaneo horizontal
{
  tile_id = tile_layer_find(LAYER_DEPTH, i,j); //buscar tile
  if (tile_id <> -1) //si hay tile en esta posicion
  {
    ds_list_add(tile_list, tile_id); //agregar a la lista
    tile_count ++; //incrementar contador
  }
}
(debes cambiar TILE_WIDTH, TILE_HEIGHT y LAYER_DEPTH por los valores correctos)

Después asigna el color a cada tile
// color aleatorio
tile_color = make_colour_hsv(irandom(254), 255, 255);

// asignar color a todas las tiles
for (i=0; i<tile_count; i++)
{
  tile_id = tile_list[|i];
  tile_set_blend(tile_id, tile_color);
}
Creo que el tema se ha desviado un poco, aunque que reconozco que funciona en mapas pequeños, este código solo ara mas difícil algo que no debe requerir tanto tiempo, mis mapas tienen tamaños tan enormes que en vez de colocar tile de 1 en 1, los pongo de 4 en 4, ya que literalmente me caben mas de 1000 de ellos, seria una odisea hacerlo manualmente 1 por 1, por lo que me tome el tiempo de explicarlo de mejor manera en http://www.comunidadgm.org/preguntas-y-respuestas/cambiar-el-color-de-los-tiles-por-codigo/

7
Creo que no me explique bien en http://www.comunidadgm.org/preguntas-y-respuestas/como-adapto-este-fondo/, ya que solo busco que este tile.



Tenta un color al azar, no me importa si todos se vuelven de un mismo color o parece un arcoiris, el caso es que no siempre tenga su mismo color de origen, en este caso el violeta.

Para este background



Le aplique este código a un objeto de control
ROOM STAR
Código: [Seleccionar]
///Color
background_blend[0] = make_colour_hsv( irandom(254), 255, 255 ); //color background

Por lo tanto me pregunto si saben como hacer una linea de código que funcione así.

Ya que el ultimo código que me han mencionado, en este caso el usuario "Clamud"

Código: [Seleccionar]
// lista para guardar ids de tiles
tile_list = ds_list_create();

// contador de tiles
tile_count = 0;

for (j=0; j<room_height; j+=TILE_HEIGHT) //escaneo vertical
for (i=0; i<room_width; i+=TILE_WIDTH) //escaneo horizontal
{
  tile_id = tile_layer_find(LAYER_DEPTH, i,j); //buscar tile
  if (tile_id <> -1) //si hay tile en esta posicion
  {
    ds_list_add(tile_list, tile_id); //agregar a la lista
    tile_count ++; //incrementar contador
  }
}


Código: [Seleccionar]
// color aleatorio
tile_color = make_colour_hsv(irandom(254), 255, 255);

// asignar color a todas las tiles
for (i=0; i<tile_count; i++)
{
  tile_id = tile_list[|i];
  tile_set_blend(tile_id, tile_color);
}

Parece tener mas elementos de los que son necesarios para afectar el color de los tiles, por lo que al igual que el background, debe haber una forma de decirle al objeto controlador que cambie el color de los tiles de un background de forma absoluta, sin tener que armar una lista engorrosa y innecesaria.

Nota: pueden ver que mis tile son de patrones en 4x en vez de 1x, mis mapas son muy grandes, por ende tiene miles de tile y que a su vez demanda mucho tiempo, por eso busco armar un linea de código como "background_blend[0] = make_colour_hsv( irandom(254), 255, 255 ); //color background", ya que no me importa que color tengan los tile, solo me interesa que todos sean afectados al iniciar la "room", así cada vez que el jugador entre, sera distinto a la ultima vez.

8
Hola buen dia muchachos ;), mi duda es la siguiente :
estoy haciendo un juego en el cual quisiera que mi enemigo
cuando yo este cerca haga una animacion de atacar y obio
que lanze una bala(en mi caso), pero en el momento que mi enemigo hace
la animacion de ataque quiero que ejecute un sonido del ataque ovio
y que si la bala coliciona conmigo que haga el sonido de destruirse;
solo eso amigos es que lo que es sonido me cuesta un monton... gracias de antemano
para GM8 porfas :-[
yo uso el  :GMS: , pero debe ser algo similar, en mi caso armo lo siguiente.

obj_Bala (tu enemigo)

evento: collision_obj_jugador
///Destruir la bola
effect_create_above (ef_firework,x,y,0,c_orange); //el efecto
audio_play_sound (snd_Disparo_De_Fuego,50,false); //el sonido
instance_destroy(); //desaser la bala

En cuanto al grito, no he programado algo como eso, pero tengo un código para detectar la distancia

with(obj_Esto) {if distance_to_point(objJugador.x,objJugador.y)>32 {visible=true} else {visible=false}}

Bueno aquí tendría que reemplazar el obj_esto por tu enemigo y el tema de visible por el sonido, ya que este código hace que un bloque se aga invisible cuando el jugador se encuentra a 32 pixeles del enemigo.

No es la respuesta mas satisfactoria, pero hasta yo tengo problemas para entenderlo.

9
Preguntas y respuestas / Re:Velocidad de un objeto
« en: Marzo 04, 2018, 02:08:19 am »
Pues como te dicen arriba, bájale los valores

con esto caerá diagonalmente hacia tu derecha
x += 4;
y += 2;

con esto caerá diagonalmente hacia tu derecha, pero el doble de lento
x += 2;
y += 1;

si quieres que vayan en la dirección contraria, pues cambia los "+=" por "-="

espero que te sirva.

10
Preguntas y respuestas / Re:¿Como adapto este fondo?
« en: Marzo 03, 2018, 12:45:19 am »
cuando cargues el background tienes que indicar si lo quieres como tiles, entonces cuando estes en el room escoges la opcion de tiles y seleccionas el background de tiles, simplemente tepones a dibujar los tiles por encima del fondo, asi lo hago yo, sin codigo. no te compliques la vida, para eso esta la herramienta.
Esta indicado como tile, solo que ambos entran en la categoria de background, el problema es que no sufre coloración al azar cada vez que inicia la room, no es que que trate de complicarme la vida, es solo que quiero que estos tile adquieran un color al azar cada vez que inicie la room por esta razón he usado el evento "ROOM STAR", pero al parecer la función

background_blend[2] = make_colour_hsv( irandom(254), 255, 255 );

No le afecta a los tiles, es por eso que provee en colocarlo como background, pero termino peor, por el momento esta como tile, pero sigue sin sufrir coloracion.

Puedes ver que es un tile.

11
Preguntas y respuestas / ¿Como adapto este fondo?
« en: Marzo 02, 2018, 11:14:15 pm »
Pues tengo 2 tipos de background, el que es un fondo absoluto, es decir una pieza, y el otro que usa tiles, es decir que se usa para crear el escenario, por lo que tiene muchas piezas.

el que usa tiles


el que es absoluto


El obj_Fondo_Menu controla el movimiento y color del fondo con código

STEP
Código: [Seleccionar]
///Movimiento de fondo
background_hspeed[0] = 2; //menú fondo
background_hspeed[2] = 2; //escenario fondo
ROOM STAR
Código: [Seleccionar]
///Color
background_blend[0] = make_colour_hsv( irandom(254), 255, 255 ); //menú fondo
background_blend[2] = make_colour_hsv( irandom(254), 255, 255 ); //escenario fondo
background_blend[3] = make_colour_hsv( irandom(254), 255, 255 ); //escenario tile

El problema es que cuando pongo el background 3 este llena de tiles el escenario, asiendo que sea imposible de ver el fondo y que ademas sea imposible distinguir el suelo de paredes, ya que repite su patrón de forma infinita en la room.

El problema.

¿que debo hacer para que solamente el background 3 cambie de color con los tiles que ya están puestos en el escenario? es decir los que puse manualmente 1 a 1 en la room.

12
Preguntas y respuestas / Re:No me resulta este ataque aéreo
« en: Marzo 02, 2018, 10:35:25 pm »
No se porque no me di cuenta, las balas se crean fuera del room (room_height+32), las estas creando en la parte de abajo del room. Solo pone 32 y arreglado.
Vaya las balas si aparecían, pero estaban por debajo.

solucionado.

¿Quieres el código como agradecimiento?

13
Preguntas y respuestas / Re:No me resulta este ataque aéreo
« en: Marzo 01, 2018, 09:39:29 pm »
Deberia ser objJugador.x
Lo he dejado como esto:

instance_create(objJugador.x-192,room_height+32,obj_Bala_Grande_Caida);
    instance_create(objJugador.x-128,room_height+32,obj_Bala_Grande_Caida);
    instance_create(objJugador.x-64,room_height+32,obj_Bala_Grande_Caida);
    instance_create(objJugador.x+0,room_height+32,obj_Bala_Grande_Caida);
    instance_create(objJugador.x+64,room_height+32,obj_Bala_Grande_Caida);
    instance_create(objJugador.x+128,room_height+32,obj_Bala_Grande_Caida);
    instance_create(objJugador.x+192,room_height+32,obj_Bala_Grande_Caida);

No ha pasado nada en el STEP obj_Lanzador_Bala

14

Pues he programado esto.

obj_Bala_Grande_Caida
CREATE
Código: [Seleccionar]
image_speed = 0.1;
vspeed = 4;

COLLISION_objJugador
Código: [Seleccionar]
/// Set Damage

global.vida -= 5;
effect_create_above (ef_firework,x,y,1,c_purple);
audio_play_sound (snd_Disparo_De_Fuego,50,false);

OUTSIDER_ROOM
Código: [Seleccionar]
destroy the instance (objeto de drak and drop)

obj_Lanzador_Bala

CREATE
Código: [Seleccionar]
///Variables
tiempo = 30*5;
STEP
Código: [Seleccionar]
///Lanzar ataque
tiempo -= 1;
if(tiempo < 0)
{
    instance_create(objJugador-192,room_height+32,obj_Bala_Grande_Caida);
    instance_create(objJugador-128,room_height+32,obj_Bala_Grande_Caida);
    instance_create(objJugador-64,room_height+32,obj_Bala_Grande_Caida);
    instance_create(objJugador+0,room_height+32,obj_Bala_Grande_Caida);
    instance_create(objJugador+64,room_height+32,obj_Bala_Grande_Caida);
    instance_create(objJugador+128,room_height+32,obj_Bala_Grande_Caida);
    instance_create(objJugador+192,room_height+32,obj_Bala_Grande_Caida);
    tiempo = 30*5
}

Se supone que deben caer verticalmente 7 balas en forma lineal donde esta el jugador, cada vez que pasan 5 segundos, pero estas no aparecen cuando el tiempo ha trascurrido, el efecto es básicamente imitar lo que hay arriba en el GIF.

15
Preguntas y respuestas / Re:¿Como debería programar este ataque?
« en: Febrero 27, 2018, 09:28:36 pm »
pues el objeto que arrojas tiene que tener in move_towards( target ) en el evento create,
este objeto que arrojas lo tienes que crear cada cierto tiempo, para eso puedes utilizer alarmas, mas o menos como la logica que tienes implementada, lleva un contador para ver cuantas instancias quieres manejar ,si 10, o 100 ,etc, y checa tambien el intervalo de tiempo al que vas a crear esas instancias en la posicon X e Y del personaje que las arroja
Pues a la vista infiero lo siguiente:

El "CREATE" tendría el tiempo en 0 como variable.

El "STEP" aria correr el tiempo en 1 hasta llegar a 150 (5 segundos), y cuando esto pasa activa la "ALARM 0" que crea los proyectiles y la munición, ademas de volver a 0 para repetir el siclo.

La "ALARM 0" bien puede tener la función instance_create para crear los proyectiles en la fila correspondiente, eso facilitaría mucho sus coordenadas, pero el problema es que serán muy predecibles, incluso el lugar donde caerá la munición, es por eso que tendría que poner esa función dentro de otra función que se encargue de crear a ambos objetos en unas ubicaciones al azar cada vez que el siclo se complete, pero el problema de eso seria que al aparecer en cualquier lado, no aran una fila y que ademas pueden incluso aparecer encima del jugador, siendo imposible de evadir.

El GIF es para explicar como se debe ver en el juego

pero aquí todos son proyectiles creados con coordenadas que no son al azar, ademas ninguna deja caer un objeto distinto.

Páginas: 1 2 3 ... 30