[VX] Skrypt głodu - tylko jeden bohater - Wersja do druku
Ultima Forum
[VX] Skrypt głodu - tylko jeden bohater - Wersja do druku

+- Ultima Forum (https://forum.ultimateam.pl)
+-- Dział: RPG Maker (/Forum-RPG-Maker)
+--- Dział: Wsparcie (/Forum-Wsparcie)
+--- Wątek: [VX] Skrypt głodu - tylko jeden bohater (/Thread-VX-Skrypt-g%C5%82odu-tylko-jeden-bohater)



Skrypt głodu - tylko jeden bohater - aron155 - 27-08-13 05:24

Witam.
Przerobiłem skrypt głodu i pragnienia tak, że jest tylko opcja pragnienia (póki co działa więc zmiana wyszła pozytywnie :D ). Problem w tym, że w drużynie jest 4 bohaterów a skrypt ma dotyczyć tylko jednego bohatera. Jak to zrobić? Czym zastąpić ,,actor" w skrypcie? Przepraszam za brak tabulatur, ale kod miałem zapisany w notatniku.

Spoiler: (Otwórz)



RE: Skrypt głodu - tylko jeden bohater - Ayene - 27-08-13 07:27

Za actor trzeba podstawić cyfrę, która odpowiada indeksowi bohatera w drużynie. Czyli pierwszy bohater ma indeks 0, drugi - 1, trzeci - 2, itd.
Dlatego w komendzie
Kod:
change_hunger(actor, amount)
jeśli chcesz zmienić poziom głodu pierwszej postaci w drużynie, wpisz:
Kod:
change_hunger(0, 200)



RE: Skrypt głodu - tylko jeden bohater - aron155 - 29-08-13 02:25

Problem w tym, że w skrypcie nie ma tego polecenia. Mogę sam aktywować tą komendę w zdarzeniu. Podczas poruszania zmienia się głód i to jest w skrypcie zawarte. Znalazłem jednak, że jest pełno pętli for zależnych od rozmiaru drużyny. Wyrzucę je i zamiast parametru i dam konkretnego bohatera.
Wpadłem właśnie na lepszy pomysł (ah to podwójne espresso o 4 nad ranem :D ). Jak zrobić, aby naliczanie głodu było zależne od zmiany klasy bohatera bądź zmiennej? Na zasadzie, że gra się normalnie, jakieś zdarzenie zmienia klasę bohatera/zmienia zmienną i wtedy włącza się system głodu dla danego bohatera? Tutaj jest link do pełnego skryptu jak coś: SKRYPT


RE: Skrypt głodu - tylko jeden bohater - Ayene - 29-08-13 20:47

Czyli chcesz, aby głód bohatera wzrastał przy chodzeniu, ale dopiero po zmianie jego klasy?


RE: Skrypt głodu - tylko jeden bohater - aron155 - 29-08-13 22:17

Dokładnie. Konkretnie chodzi o przypisanie tego skryptu do konkretnej klasy (jak bohater będzie tej klasy, to skrypt będzie działał dla niego). Może być przy zmianie klasy bądź zmiennej/przełącznika. Zapewne najwygodniej będzie ze zmienną - if zmienna = 1 ... Wtedy skrypt będzie przygotowany pod konkretnego bohatera ale aktywny, gdy zmienna będzie miała konkretną wartość. Tylko nie wiem jak sprawdzać w skrypcie wartość zmiennej :/


RE: Skrypt głodu - tylko jeden bohater - Ayene - 29-08-13 22:46

W cale nie będzie łatwiej ze zmienną. Znajdź w skrypcie linijkę:
Kod:
$game_party.members[i].hunger += STEP_HUNGER_ADDED if USE_HUNGER
przed nią dodaj:
Kod:
if [1, 2, 3].include?($game_party.members[i].class_id)
następnie znajdź poniżej:
Kod:
jet2211_increase_steps(*args)
przed nią dodaj:
Kod:
end
tablica [1, 2, 3] zawiera po przecinku ID klas, które mają aktywować głód i pragnienie.


RE: Skrypt głodu - tylko jeden bohater - aron155 - 29-08-13 23:01

Dzięki, poszło ;) Myślałem, że porównanie zmiennej będzie prostsze ;) Pojawił mi się jeszcze jeden problem. Po linii if AFFECT_STATS odpowiadającej za modyfikację atrybutów dodałem fragment odpowiadający za obniżenie życia i many:
Spoiler: (Otwórz)
Jeśli osiągnięty zostanie określony prób, to poziom życia i many spada o zadany współczynnik. Przy leczeniu miksturką życie nie wraca do pełna (tak ma być).
Pierwszy problem: gdy dam bohaterowi miksturę życia, to spada mana. Analogicznie gdy dam manę spada życie. Jak to zniwelować?
Drugi problem: Załóżmy, że max hp wynosi 400 a obecne hp 300. Gdy współczynnik wynosi 0.9 max hp będzie 360. Problem w tym, że hp też spada a chciałbym żeby zostało bez zmian.
Dodatkowym problemem jest zaokrąglenie. Przy drugim problemie hp ma kilka miejsc po przecinku. W jaki sposób mogę je zaokrąglić do 1 miejsca po przecinku?