Skocz do zawartości

Zablokowane Problem z systemem walki


Rekomendowane odpowiedzi

Opublikowano

Zamieszczam kod:

 

GRACZ:

var atak, dmg;
        
dmg=round(random(oWojownik.atak));
dmg2=dmg
if distance_to_object(atak_npc) <= 32
{
    atak = round(random(oWojownik.celnosc));
    if atak = 1 and dmg>0 and atak_npc.obrona<dmg{atak_npc.hlt-=dmg;sound_play(krew);sound_play(choose(uderzenie1,uderzenie2));with atak_npc{instance_create(x,y,oKrewMala);instance_create(x,y,oHit);instance_create(x,y,enemy_dmg);}
}   
    
    else{with atak_npc{instance_create(x,y,oMiss);instance_create(x,y,text_miss);}   
    sound_play(choose(pudlo1,pudlo2,pudlo3)); 
        }
}

alarm[0] = room_speed*1; //atak co 1 sekunde

 

PRZECIWNIK:

var atak, dmg, obj, atak, celnosc;

atak=9
celnosc=1

obj=oWojownik
dmg=round(random(atak));
dmg2=dmg
if distance_to_object(obj) <= 32
{
    atak = round(random(celnosc));
    if atak = 1 and dmg>0 and obj.obrona<dmg{
    obj.hlt-=dmg;
    sound_play(krew);
    sound_play(choose(uderzenie1,uderzenie2));
    with obj{instance_create(x,y,oKrewMala);instance_create(x,y,oHit);instance_create(x,y,player_dmg);}
}
    else{
    with obj{instance_create(x,y,oMiss);instance_create(x,y,text_miss);}   
    sound_play(choose(pudlo1,pudlo2,pudlo3));
        }
}
alarm[0] = room_speed*1; //atak co 1 sekunde

 

 

enemy dmg:

if atak_npc.max_hlt-atak_npc.hlt > oWojownik.dmg2 {damaged=oWojownik.dmg2;} else {damaged=atak_npc.max_hlt-atak_npc.hlt;}

 

 

Problem jest w tym, że nie pokazuje mi konkretnej, prawidłowej liczby nad wrogiem/graczem, ale jakieś dziwne cyfry np. 0, 240 itp. ?? Co się dzieje? :crying:

 

Chciałbym żeby po uderzenie potwora pokazywało dmg jaki mu zadaje. Jeśli ma mniej hp to nie pokazywało np. 9 jeśli ma 6 hp - tylko 6 hp. Rozumiecie? :mellow:

Opublikowano

Ale pogubiłem się w kodzie. Daje ten enemy_dmg:

if atak_npc.max_hlt-atak_npc.hlt > oWojownik.dmg2 {damaged=oWojownik.dmg2;} else {damaged=atak_npc.max_hlt-atak_npc.hlt;}

 

A później zmienna jest oczywiście wysyłana jako tekst i idzie w górę :)

A później znika..

Opublikowano

chyba wiem o co ci chodzi,

 

przykładowy kod

if obrazenia>hp_gracza
then obrazenia=hp_gracza

teraz nie powinno udezac wiecej niz gracz ma hp

nie jestem pewien ale chyba o to ci chodziło?

Opublikowano
Tak o to chodziło. Ale jak to wbudować w kod? Dodatkowo źle oblicza obrażenia.. W tym tkwi cały problem!

 

walnij to w step gracza, czekając na odpowiedź już byś dawno do tego doszedł

Opublikowano

Hmm.. Rzeczywiście nie pomyślałem nad takim banalnym rozwiązaniem.. Dzięki!

 

A co z tymi błędami obliczania obrażeń? Wyskakują kosmiczne liczby!

Opublikowano

Ale bazgrolisz... XD Rób odstępy między wyrazami (za wyjątkiem nazw stałych, funkcji, sprite'ów itp.). Nowe linie też są bardziej czytelne (masz tam dwa razy instance create w jednej linii, to też jest nieczytelne).

 

Przeanalizowałem kod. Wydaje się, że wina leży w drawie, w obiekcie wyświetlającym obrażenia lub w obronie gracza/przeciwnika. Pokaż któreś z tych.

Opublikowano

To jest właśnie enemy dmg! Później jest wyświetlanie wyniku damaged jako tekst(liczba).

 

Player_dmg wyświetla kod z POTWORA. Jest to alarm na walkę.

 

System działa ok - zamykam.

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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