Hola a todos, mi problema es este:

Mi personaje posee3 armas, normal, ice y fire, y este es el codigo que utilizo para cambiar de arma (con la tecla "C"):

if normal = true and ice = false and fire = false
{
    normal = false ice = true fire = false
}


Funciona perfectamente, cambiando de normal a ice, el problema es que cuando agrego el codigo para pasar a fire y de regreso a normal (que es el mismo codigo cambiando los true y false como corresponden), no funciona, o talvez este funcionando y cambia de arma tan rapido que no aparece.

Gracias de antemano por su ayuda
La vida es como un videojuego...excepto que sin continues...

Lo más probable es que haya un error de lógica.
Yo te recomiendo que administres las armas con cadenas. Por ejemplo:
arma = "normal", arma = "ice", arma = "fire"

entonces las verificaciones se harían más sencillas, por ejemplo:

[gml]if (arma = "normal")
    arma = "ice"

if (arma = "ice")
    arma = "fire"

if (arma = "fire")
    arma = "normal" [/gml]



lo intente de esa forma, pero al presionar "C" no cambia de arma
La vida es como un videojuego...excepto que sin continues...

Hmm... podrías entonces colocar el código completo, porque no sabría donde está el fallo :-[



Aqui esta, lo intente con numeros en lugar de palabras, con palabras no me funciono:

if arma = 1
{
    arma = 2
}

if arma = 2
{
    arma = 3
}

if arma = 3
{
    arma = 1
}


El juego inicia, pero al presionar C no cambia, lo q creo q pasa es que al presionar C, pasa de 1 a 2, de 2 a 3 y de 3 a 1 demasiado rapido, haciendo que al final no haya cambio (con el codigo que coloque en el post inicial, funcionaba, pero si intentaba agregar para volver al arma original, no iba a la d hielo)
La vida es como un videojuego...excepto que sin continues...

 8) hola gamemastertom
tengo un ejemplo espero te sirva

1.    evento create del personaje
crear una variable global o normal te recomiendo global

global.cambioarma=0

2.   Step del personaje
Crear un switch asi

switch (global.cambioarma)

{
case 0:
global.cambioarma=0 //arma normal
break

case 1:
global.cambioarma=1 //arma ice
break

case 2:
global.cambioarma=2 //arma fire
break
} // este switch es para los tres casos

Lo siguiente es crear el pressed con "C" para los cambios, seguimos en el step

if  keyboard_check_pressed(ord('C')) // para cambiar el arma
{ global.cambioarma+=1 }

if global.cambioarma=3 {global.cambioarma=0} //para repetir el ciclo de global.cambioarma

listo ahora utiliza tu lógica para estudiar el script y adáptalo a tu juego
sigue makeando 8)

Cuando haces las verificaciones (if) haces que la variable arma se modifique cambiando su valor por la verificacion siguiente a lo que arma va a ser 1 con que una de las condiciones se cumpla.

if arma = 1
{
    arma = 2
}

if arma = 2
{
    arma = 3
}

if arma = 3
{
    arma = 1
}

para arreglar este problema podes optar por alguna de las siguiente opciones:

Opcion 1
switch( arma )
{
case 1:   arma = 2; break;
case 2:   arma = 3; break;
case 3:   arma = 1; break;
}


Opcion 2

if arma = 1
{
    arma = 2
}
else
{
if arma = 2
{
     arma = 3
}
else //if arma = 3
{
     arma = 1
}
}


Opcion 3

arma += 1
if arma>3{arma=1}