SAIL - Dialog po dojściu do EON'u

Gotowe kody SAIL'a, informacje na temat moddingu, itd.

Moderator: zoNE

Post Reply
User avatar
zoNE
The Great Uniter & Site Administrator
The Great Uniter & Site Administrator
Posts: 2061
Joined: Fri Feb 17, 2006 3:44 pm
Location: Poland
Contact:

SAIL - Dialog po dojściu do EON'u

Post by zoNE »

NNPlaya wrote:Pamiętaj, że po ,,$ dr1" nie może być spacji w texts.txt. W Sailu zaczynasz od komendy Starting. Potem Begin i end. Przykład:

Code: Select all

Starting 
Begin 
KOD 
end;
Żeby postać mówiła musisz użyć komendy Say. Są jej różne rodzaje: SayNoFace(mówi, ale nie widać twarzy), SayRadio(tworzy efekt radia itp.), ale nas interesuje zwykłe Say. Tak więc w Say musisz podać dwa parametry (to w nawiasie, odzielone przecinkami. Te parametry to identyfikator twojej jednostki i tytuł dialogu (w tym przypadku dr1 wzięty w pojedynczy cudzysłów ' '). Powinno to wyglądać mniej więcej tak: (przyjmujemy, że twój bohater ma identyfikator heros):

Code: Select all

Starting 
Begin 
CenterNowOnUnits(heros); //Kieruje kamerę nad herosa 
Say(heros,'dr1'); 
end;
No to na tyle z podstawami. A teraz coś trudniejszego - warunki... Na początek musisz zadeklarować co ile sekund gra będzie sprawdzać, czy warunek jest spełniony komendą every 0$(liczba w sekundach trigger (warunek) do . Warunkiem, jaki nas interesuje jest IsInArea(heros,Area01). Obszary (Area) umiesz chyba tworzyć? Trzeba zaznaczyć obszar i kliknąć Create w zakładce Areas na dolnym pasku narzędziowym w edytorze. Area01 to nazwa arei, możesz zmienić. Po every enter i też Begin end; (Początek i koniec kodu wykonywanego:

Code: Select all

every 0$1 trigger IsInArea(heros,Area01) do 
Begin 
Say(heros,'dr1'); 
end; 
Możesz też przed i za Say wstawić komendy tworzące efekt filmiku: z pauzą i bez. Z pauzą to DialogueOn; a bez pauzy to InGameOn; Czyli przykład:

Code: Select all

DialogueOn; 
Say(heros,'dr1'); 
DialogueOff; //to wyłącza efekt
No a teraz zapytania... Najpierw dodaj w texts.txt coś takiego:

Code: Select all

? Zapytanie1 
Czy chcesz wstąpić do EONu? 
- Tak 
- Nie 
?
Potem w Sailu:

Code: Select all

every 0$1 trigger IsInArea(heros,Area02) do 
Begin 
Case Query("Zapytanie1") of 
1 : begin //Opcja pierwsza, jak w texts.txt to Tak 
//Tutaj wpisz komendy. 
end; 
2: begin //Opcja druga, jak w texts.txt 
// Tu też komendy 
end; 
end; 
end;
Dobra... Czyli zaczniemy od tego, co się stanie jak nie wejdziesz. Powinieneś wpisać w texts,txt :

Code: Select all

| tchorz //to tytuł wykorzystywany w Sailu 
Stchórzyłeś!!! //A to treść. NIGDY nie rób enterów w tekście do jednego dialogu, tekstu przegrania itp.
A potem w Sailu:

Code: Select all

every 0$1 trigger IsInArea(heros,Area02) do 
Begin 
Case Query("Zapytanie1") of 
1 : begin //Opcja pierwsza, jak w texts.txt to Tak 
//Zaraz to, nie wszystko naraz... 
end; 
2: begin //Opcja druga, jak w texts.txt 
YouLost('tchorz'); 
end; 
end; 
end;
A teraz z wygraną... Komenda aby ktoś wszedł do jakiegoś budynku pojazdu to ComEnterUnit(jeden lub grupa kolesi, pojazd/budynek); Tak więc po 1 : begin:
ComEnterUnit(kolo1,eon);
Wait(0$3); //Komenda Wait powoduje, że program czeka określoną ilość sekund.
ComEnterUnit(kolo2,eon);
Wait(0$3);
ComEnterUnit(kolo3,eon);
Wait(0$3);
ComEnterUnit(heros,eon);
A teraz mięsko, czyli medale i przydzielanie doświadczenia.
Żeby dać medale musisz najpierw w texts.txt wpisać treść za co dostałeś/ nie dostałeś medalu oraz przydzielenie medalów czyli coś takiego:

Code: Select all

 
^ MAIN 
Target achieved //przydzielenie medalów
i medale:

Code: Select all

* med1 
+ Nie narobiłeś w gacie. 
* 

* med2 
+ Nie zgubiłeś karabinu. 
* 

* med2a 
- Zapomniałeś kaszanki. 
*
,,-" oznacza, że nie ma medalu a ,,+" że dostajesz medal. W celu dodania medalu powinieneś zastosować komendę AddMedal('medx'); gdzie x to numer medalu. Oczywiście możesz stosowac inne nazwy niż med1, med2 itd. Po dodaniu wszystkich medali możesz je wyświetlić komendą GiveMedals('Main'); Potem przydzielanie doświadczenia: RewardPeople(heros); Czyli przydziel herosowi doświadczenie, oczywiście możesz wpisać kilka postaci. Potem tylko zapisanie postaci komendą SaveCharacters(heros,'heros'); Uwaga: heros w nawiasie to nazwa, pod jaką postać została zapisana. W następnej misji komenda heros=CreateCharacterSet('heros') tworzy postać o identyfikatorze heros z zapisanej postaci o nazwie heros. Na koniec YouWin; I tyle. A teraz podsumowując:

Code: Select all

very 0$1 trigger IsInArea(heros,Area02) do 
Begin 
Case Query("Zapytanie1") of 
1 : begin 
ComEnterUnit(kolo1,eon); 
Wait(0$3); 
ComEnterUnit(kolo2,eon); 
Wait(0$3); 
ComEnterUnit(kolo3,eon); 
Wait(0$3); 
ComEnterUnit(heros,eon); 
AddMedal('med1',1); 
AddMedal('med2',1); 
AddMedal('med3,-1); //Tutaj też -, czyli nie dostajesz medalu. 
GiveMedals('Main'); 
RewardPeople(heros); 
SaveCharacters(heros,'heros'); 
YouWin; 
end; 
2: begin 
YouLost('tchorz'); 
end; 
end; 
end;
Ufff........ A i jeszcze jedno: W Sailu nie ma różnicy, czy piszesz YOUWIN; youwin; czy YouWin;. Wielkość liter nie ma znaczenia, jeśli chodzi o komendy. No, to teraz fajrant...
Author: NNPlaya
Topic: http://forum.original-war.net/viewtopic.php?t=285
Post Reply