Skocz do zawartości

Problem z przeładowanie broni


Madness

Rekomendowane odpowiedzi

Ech nie sądziłem ,że jeszcze to zrobie ^^ ,ale jednak. :rolleyes:

Stworzyłem system broni.Jednak problem ,leży w przeładowaniu (problem jest poniżej kodu)

 

GML
przeladuj=true

 

 

 

if naboje_w_magazynku[bron] > zapasowe_naboje[bron]

 

{

 

odejmij=naboje_w_magazynku[bron] - zapasowe_naboje[bron]

 

}

 

else

 

 

 

if naboje_w_magazynku[bron] < zapasowe_naboje[bron]

 

 

 

{

 

odejmij=zapasowe_naboje[bron] - naboje_w_magazynku[bron]

 

 

 

}

 

 

 

naboje_w_magazynku[bron]+=roznica

 

zapasowe_naboje[bron]-=roznica

 

 

 

if zapasowe_naboje[bron] < 0

 

 

 

{

 

zapasowe_naboje[bron]=0

 

 

 

}

 

exit;

 

Problem leży w tym ,że przykładowo mamy 13/10 i po wciśnięciu klawisza ,,R" (w klawiszu R jest taki kod jak w przykładzie) to zamiast 23/0 jest 16/7 ,wiem dlaczego tak się dzieje ,sami też to widzicie.

Tylko jak zrobić żeby właśnie było 23/0 ,może ktoś poprawić ten kod ?

Nie pogardze też wytłumaczeniem.

 

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if(ammo_w_plecaku[bron] > 0) //jeśli masz ammo w plecaku

{

ammo_w_plecaku[bron] -= ammo_max_magazynek[bron]-ammo_magazynek[bron] //usuwamy z plecaka tyle pocisków, ile brakuje w magazynku

ammo_magazynek[bron] += ammo_max_magazynek[bron]-ammo_magazynek[bron] //ładujemy magazynek na full

if(ammo_w_plecaku[bron] < 0) //jeśli w plecaku powstała antymateria

{

ammo_magazynek[bron] += ammo_w_plecaku[bron] //dodajemy do magazynka tyle antymaterii, ile jest w plecaku

ammo_w_plecaku[bron] = 0 //anihilujemy ubytek z plecaka i pochłaniamy energię

}

}

ammo_w_plecaku - ilość posiadanej amunicji odjąć ilość amunicji w magazynku

ammo_max_magazynek - pojemność magazynka

ammo_magazynek - ilość amunicji w magazynku

Odnośnik do komentarza
Udostępnij na innych stronach

Źle przepisałeś. Analiza kodu dla parametrów: 3 w magazynku, 1 w plecaku, 30 max w magazynku (pomijam ify):

1. 3 się nie zmienia, 1 zmienia się na (1-30+3), czyli -26

2. 3 zmienia się na (3+30-3), czyli 30 (teraz widzę, że tutaj trochę niepotrzebnie coś zrobiłem, ale mniejsza z tym), -26 nie zmienia się

3. 30 zmienia się na (30+(-26)), czyli 4, -26 się nie zmienia

4. 4 się nie zmienia, -26 zmienia się na 0.

Tym sposobem z 3/1 masz 4/0.

Odnośnik do komentarza
Udostępnij na innych stronach

a co zrobić jeśli chce mieć max w magazynku 90?

a kod mam taki:

GML
if(zapasowe_naboje[bron] > 0) //jeśli masz ammo w plecaku

{

 

zapasowe_naboje[bron] -= naboje_w_magazynku_max[bron]-naboje_w_magazynku[bron] //usuwamy z plecaka tyle pocisków, ile brakuje w magazynku

naboje_w_magazynku[bron] += naboje_w_magazynku_max[bron]-naboje_w_magazynku[bron] //ładujemy magazynek na full

if(zapasowe_naboje[bron] < 0) //jeśli w plecaku powstała antymateria

{

 

naboje_w_magazynku[bron] += naboje_w_magazynku[bron] //dodajemy do magazynka tyle antymaterii, ile jest w plecaku

naboje_w_magazynku[bron] = 0 //anihilujemy ubytek z plecaka i pochłaniamy energię

}

 

}

 

 

 

/*zapasowe_naboje - to sa te po prawej stronie

 

naboje_w_magazynku - to te po lewej

 

naboje_w_magazynku_max - maksymalna il. naboji w magazynku

 

*/

Odnośnik do komentarza
Udostępnij na innych stronach

Błąd widać na pierwszy rzut oka.

GML
if(zapasowe_naboje[bron] > 0) //jeśli masz ammo w plecaku

{

 

zapasowe_naboje[bron] -= naboje_w_magazynku_max[bron]-naboje_w_magazynku[bron] //usuwamy z plecaka tyle pocisków, ile brakuje w magazynku

naboje_w_magazynku[bron] += naboje_w_magazynku_max[bron]-naboje_w_magazynku[bron] //ładujemy magazynek na full

if(zapasowe_naboje[bron] < 0) //jeśli w plecaku powstała antymateria

{

 

naboje_w_magazynku[bron] += zapasowe_naboje[bron] //dodajemy do magazynka tyle antymaterii, ile jest w plecaku

zapasowe_naboje[bron] = 0 //anihilujemy ubytek z plecaka i pochłaniamy energię

}

 

}

Teraz jest dobrze.

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ę...