Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Dbatten en Enero 10, 2019, 10:13:41 PM

Título: Cambio de arma
Publicado por: Dbatten en Enero 10, 2019, 10:13:41 PM
Queria saber si alguien me podria ayudar a realizar un cambio de arma.
Agradesco cualquier ayuda y consejo
Título: Re:Cambio de arma
Publicado por: 3dgeminis en Enero 11, 2019, 07:08:37 AM
Podrias detallar un poco mas como es el sistema que qiueres hacer ?
Título: Re:Cambio de arma
Publicado por: Dbatten en Enero 11, 2019, 03:37:47 PM
Pude realizar un cambio de arma guardando las variables de cada arma en un vector 2d.

Este es el codigo de create del objeto weapon

p_dis = true;

//arma principal
weapons[0,0] = s_gun_laser;//sprite
weapons[0,1] = 300;//municion_max
weapons[0,2] = 300;//municion_disponible
weapons[0,3] = 30;//cant_municion
weapons[0,4] = 30;//municion_actual
weapons[0,5] = 1;//daño
weapons[0,6] = 15;//delay

//arma principal
weapons[1,0] = s_gun_2;//sprite
weapons[1,1] = 30;//municion_max
weapons[1,2] = 30;//municion_disponible
weapons[1,3] = 10;//cant_municion
weapons[1,4] = 10;//municion_actual
weapons[1,5] = 6;//daño
weapons[1,6] = 15;//delay

armas_max = 1;
arma_actual=0;


Asi es como cambio de arma en el objeto player

if (keyboard_check(ord("Q"))){
if (p_cambiar){
if ((o_weapon.arma_actual+1)<=o_weapon.armas_max){
o_weapon.arma_actual+=1;
}
p_cambiar = false;
alarm[0] = 15;
}
}

if (keyboard_check(ord("E"))){
if (p_cambiar){
if((o_weapon.arma_actual-1)>=0){
o_weapon.arma_actual-=1;
}
p_cambiar = false;
alarm[0] = 15;
}
}


Despues solo se utiliza "arma_actual" en el vector 2d
weapons[arma_actual,n]

Mi problema ahora es que no se como agregar un arma que el personaje no tenga, una que recoja de una tienda o de donde sea
Título: Re:Cambio de arma
Publicado por: 3dgeminis en Enero 13, 2019, 07:01:48 PM
Es un array no un vector.
Modifica el array para que el primer indice del arma sea el nombre, por ejemplo:
[gml]
weapons[0,0] = "revolver"
weapons[1,0] = "escopeta"
weapons[2,0] = "metralleta"
weapons[3,0] = "rifle"
[/gml]
Asi la metralleta corresponde en el array a weapons[2,0]
Cuando compres o agarres un arma utiliza un loop para ver si la nueva arma se encuentra en el array de las armas que tienes
[gml]
for(i=0; i<armas_max; i+=1)
  {
   if weapons[i,0]!= nueva_arma.nombre  //si la nueva arma no se encuentra en el array
       {
        /// aumentar el valor de la variable armas_max y agregar al array
       }
  }
[/gml]