No cóż, skrypt w tym tutorialu nie ma nic wspólnego ze skryptem Lehmara w G2NK. Jest to mój autorski skrypt, i jeśli chcesz go wykorzystać w swojej modyfikacji albo zmodyfikować ten skrypt w ogóle, musisz napisać że autorem prototypu jestem ja. Mam nadzieję że się rozumiemy
Skoro się rozumiemy, to zaczynajmy. Ten skrypt przewiduje tylko kilka funkcji:
- Pożyczkę gotówki
- Zwrot na następny dzień
- Ewentualny foch na gracza jeśli nie oddał na następny dzień
Nie będzie tu wzmianki o tym co się dzieje po kilku dniach od nie zapłacenia. Jeszcze tego nie rozgryzłem i ewentualnie wy, możecie sobie dopisać. ;)
Na początku dialogu, tworzymy trzy zmienne:
Payoff (czyli Zapłata) - Dzięki tej zmiennej, Lichwiarz na następny dzień od pożyczki, zapyta czy mamy rudę.
Debt (czyli Dług) - Jeśli wartość tej zmiennej jest równa 0, będzie można pożyczyć pieniądze. Jeśli wartość będzie równa 1, 2 lub 3, nie będzie można pożyczyć pieniędzy gdyż jakąś kwotę pożyczyliśmy. Rozwinięcie tej zmiennej, będzie później.
Angry (czyli Foch) - No i jeśli ta zmienna będzie miała wartość 1, nie będziemy mogli ani od lichwiarza pożyczyć pieniędzy ani zagadać.
Dobra, co powinien posiadać skrypt pożyczki na początku? Trzy warunki:
- Jeśli Dług jest równy 0 (dzięki temu, jeśli pożyczymy pieniądze, nie będziemy mogli pożyczyć pieniędzy drugi raz)
- Jeśli Foch jest równy 0 (jeśli nie oddamy kasy na czas, nie będziemy mogli pożyczyć pieniędzy. Więc póki co, musi to być na zero)
- I jeśli pierwszą gadkę mamy za sobą (Czyli gadaliśmy już wcześniej i wiemy że możemy pożyczyć pieniądze.)
Wygląda to tak:
FUNC INT DIA_Lenn_Loan_Condition()
{
if (Angry == 0)
&& (Debt == 0)
&& (Npc_KnowsInfo (other, instance_pierwszej_rozmowy))
{
return TRUE;
};
};
Dialog omińmy. A teraz ważniejsza część. Choice, czyli wybór. Na końcu każdego wyboru, należy dodać:
B_GiveInvItems (self, other, ItMiNugget, ilość);
Info_ClearChoices (instance_dialogu_pożyczki);
AI_StopProcessInfos (self);
Debt = Debt + 1;
Payoff = Wld_GetDay();
Dzięki temu, otrzymujemy rudę, czyścimy choice i kończymy dialog. A więc co oznaczają te dwie ostatnie zmienne? A to że jeśli Debt jest równy 1, to nie możemy pożyczyć gotówki. A dzięki funkcji
Payoff = Wld_GetDay();, NPC odezwie się do nas na następny dzień. Przy każdym choice, do Debt, najlepiej dodać inną wartość, przyda się to w innej części skryptu ;)
Przejdźmy teraz do skryptu odbioru gotówki. Na samym początku w warunku, dodajemy dwie linijki:
if (Payoff!=Wld_GetDay())
&& (Debt >= 1)
Pierwszy warunek odpowiada za odezwę na następny dzień, zaś drugi za dług (Debt jest większe lub równe 1). A teraz odpowiedź na pytanie, dlaczego przy każdym choice kazałem dać inną wartość debt? A dlatego że wtedy Hero będzie wiedział ile pożyczył kasy i ile ma oddać. Zarys skryptu wygląda więc tak:
(pytanie czy ma Hero ma rudę)
if (Debt == 1)
(odpowiedź pozytywna że ma i oddaje rudę)
(ew. podzięki od npc)
Payoff = Wld_GetDay(); // Wyłączenie oczekiwania na gracza na następny dzień.
Debt = Debt - 1; // Wyłączenie funkcji długu, przez co można ponownie pożyczyć pieniądze.
AI_StopProcessInfos (self); // Koniec dialogu.
else if (Debt == 2)
(odpowiedź pozytywna że ma i oddaje rudę)
(ew. podzięki od npc)
Payoff = Wld_GetDay();
Debt = Debt - 2;
AI_StopProcessInfos (self);
(tutaj wstawiamy ile chcemy else if, tyle ile ustaliliśmy wyborów w skrypcie pożyczki, za każdym razem według wzorca)
else
(jeśli nie mamy jednak tej rudy. NPC nas atakuje i włącza się zmienna Angry dzięki czemu nie możemy już pożyczyć rudy)
Skryptu focha chyba nie muszę opisywać ;) To by było na tyle. Tutorial został skonstruowany tak, aby twórca miał tworzyć skrypt, a nie go zerżnąć żywcem z tutoriala, podmienić dane i happy. Tutorial można kopiować, pod warunkiem że się mnie poda za autora. To by było na tyle. Ciao!