NukeBoards

Pomoc - Przeładowanie broni a amunicja w rezerwie.

Meeloks - 01-10-2016, 13:12
: Temat postu: Przeładowanie broni a amunicja w rezerwie.
Cześć! Chciałbym dowiedzieć się pewnej rzeczy. Mianowice jak zrobić przeładowanie broni.
Np. w magazynku maksymalnie mieści się nam 12 naboi. W rezerwie mamy ich 100. Gdy wystrzelimy 4 naboje i przeładujemy, to z rezerwy ubędzie nam 4 naboje, które wpadną do magazynku.

Z góry dziękuję za pomoc.
masterjayz - 01-10-2016, 13:32
:
To jest prosta rzecz, kiedyś zrobiłem sobie takie coś z nudów :-P

Jak przeładowujesz i ilość naboi w rezerwie jest większa niż maksymalna ilość amunicji w magazynku, to ustawiasz naboje w magazynku na maksymalną ich liczbę a od naboi w rezerwie odejmujesz ilość której brakuje w magazynku (czyli maks naboje - ilość naboi w magazynku, a i odjąć musisz zanim ustawisz magazynek na pełny). Jak amunicji w rezerwie jest mniej niż tyle ile brakuje to po prostu ustawiasz rezerwę na zero a do amunicji w magazynku dodajesz to co było w rezerwie.

To wszystko :D
BROO - 01-10-2016, 13:39
:
Skopiuj sobie zdarzenie 12 razy:

1. Jeżeli wciśnięto przycisk przeładowania
+ Liczba amunicji w rezerwie > 0
+ Liczba amunicji w magazynku < 12
-> Zwiększ liczbę naboi w magazynku o 1
-> Zmniejsz liczbę naboi w rezerwie o 1

Do pierwszego z tych zdarzeń możesz dodać sobie odgłos przeładowania magazynku czy jakąś animację przeładowania.

Edit: poprawka błędu
Meeloks - 01-10-2016, 13:42
:
Czy mógłbym prosić o jakiś przykład, czy coś XD?
Minty - 01-10-2016, 13:50
:
+ Kliknięto
+ Mag > 0
- strzał
- Mag = Mag-1

I jeśli niczego nie mylę:

+ Wciśnięto przeładowanie
+ Rezerwa > 0
- tempMag = min(Rezerwa+Mag,12)
- Rezerwa = Rezerwa + Mag-tempMag
- Mag = tempMag


min(Rezerwa+Mag,12) - jeśli masz w sumie mniej, niż 12 naboi, to tylko tyle może wylądować w magazynku.
Mag-tempMag - to różnica między magazynkiem przed i po przeładowaniem, czyli strata nabojów z rezerwy
tempMag - bo Mag zależy od Rezerwy, która zmienia się przed Mag i odwrotnie. Zmienna pomocnicza, no.

Mimo wszysztko wszystkie rozwiązania w temacie są poprawne, mastera po prostu rozdziela min() na dwa zdarzenia, a BROO rozdziela każdy nabój w magazynku osobno co... jest dziwne, ale zadziała. Masz mnóstwo opcji, wybieraj :P

Bonus: http://romanx.webd.pl/?104
BROO - 01-10-2016, 13:53
:
Wyjaśnij czego nie rozumiesz Meeloks.
Ishimura - 03-10-2016, 15:19
:
A nie łatwiej.

Jeśli reload:

-odejmij od rezerwy 12 - aktualny stan magazynka
-dodaj do magazynku 12 - aktualny stan magazynka
Minty - 04-10-2016, 15:45
:
Ishimura napisał/a:
A nie łatwiej.

Jeśli reload:

-odejmij od rezerwy 12 - aktualny stan magazynka
-dodaj do magazynku 12 - aktualny stan magazynka

-ujemna rezerwa
Ishimura - 04-10-2016, 20:32
:
No to zrobić to na loopie:

*Wcisnięto R
*Aktualny magazynek < 12

-Start loop przeładowanie (12- aktualny magazynek) times

*On loop przeładowanie
*Rezerwa > 0

-Dodaj 1 do magazynek
-Odejmij 1 od rezerwa

Wtedy nie ma ujemnej rezerwy i dodaje nam ile potrzeba, albo tyle ile zostało w rezerwie.
wermi - 04-10-2016, 23:57
:
to jest to samo co napisał broo
Ishimura - 05-10-2016, 00:13
:
worm, rzeczywiście nie zauważyłem tej odpowiedzi.