Skocz do zawartości

Switch i case - problem


Rekomendowane odpowiedzi

Nie mogę! Coś nie działa! Kod jest chyba dobry... Sprawdzcie...

 

Objekt: obj_1

event: Press CTRL

Kod:

switch (bron)
{
case 'baz': wybron('moz'); break;
case 'moz': wybron('samo'); break;
case 'samo': wybron('gran'); break;
case 'gran': wybron('granod'); break;
case 'granod': wybron('dyn'); break;
case 'dyn': wybron('baz'); break;
default: break;   
}

 

Skrypt: wybron()

Kod:

switch argument0
{
case 'baz': {with(obj_a)instance_destroy(); bron='moz'; instance_create(x,y,obj_b);} break;
case 'moz': {with(obj_b)instance_destroy(); bron='samo'; instance_create(x,y,obj_c);} break;
case 'samo': {with(obj_c)instance_destroy(); bron='gran'; instance_create(x,y,obj_d);} break;
case 'gran': {with (obj_d)instance_destroy(); bron='granod'; instance_create(x,y,obj_e);} break;
case 'granod': {with(obj_e)instance_destroy(); bron='dyn'; instance_create(x,y,obj_f);} break;
case 'dyn': {with(obj_f)instance_destroy(); bron='baz'; instance_create(x,y,obj_a);} break;
default:break;   
}
sound_play(wybbronm);

 

Problem: To jest przełączanie broni. Ale po wciśnięciu CTRL broń przeskakuje o 2 pozycje (czyli np. z obj_a na obj_c) i ta pierwsza nie znika! Argh! Co jest?

Odnośnik do komentarza
Udostępnij na innych stronach

Oczywiście, tylko nie wiem dokładnie co chcesz osiągnąć. Tak na przykład jak ja bym zrobił z zmianą broni:

 

Create

bron_nr=0;
bron_max=1;
bron_rozrzut=0;
bron_przeladowanie=0;

bron[0,0]='Granat'; //Nazwa
bron[0,1]=50; //Przeladowanie
bron[0,2]=999; //Zasieg
bron[0,3]=1; //Rozrzut
bron[0,4]=5; //Wyjsciowa predkosc
bron[0,5]=spr_granat; //Sprit pocisku

bron[1,0]='AK-47'; //Nazwa
bron[1,1]=4; //Przeladowanie
bron[1,2]=200; //Zasieg
bron[1,3]=5; //Rozrzut
bron[1,4]=10; //Wyjsciowa predkosc
bron[1,5]=spr_ak47; //Sprit pocisku

 

Step

if keyboard_check_pressed(vk_control)
{
    bron_nr+=1;
    
    if bron_nr>bron_max
    {
        bron_nr=0;
    }
    
    bron_przeladowanie=bron[bron_nr,1]; //Aby nie mogl odrazu strzelic po zmianie
    bron_rozrzut=0;
    exit;
}

if keyboard_check(vk_space)
{
    if bron_przeladowanie<=0
    {
        var i;
        i=instance_create(x,y,obj_kula);
        
        bron_przeladowanie=bron[bron_nr,1];
        i.zasieg=bron[bron_nr,2];
        bron_rozrzut+=bron[bron_nr,3];
        i.speed=bron[bron_nr,4];
        i.sprite_index=bron[bron_nr,5];

        i.direction=direction+(bron_rozrzut/2)-(bron_rozrzut/2));
    }
    else
    {
        bron_przeladowanie-=1;
    }
}

if bron_rozrzut>0
{
      bron_rozrzut-=1;
}

Chyba się nie pomyliłem, musisz tylko dodać obiekt kuli, można też zrobić sprawdzanie id obiektu itd. :P

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...