SAIL - Dialog po dojściu do EON'u
NNPlaya pisze: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:
Kod:
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):
Kod:
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:
Kod:
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:
Kod:
DialogueOn; Say(heros,'dr1'); DialogueOff; //to wyłącza efektNo a teraz zapytania… Najpierw dodaj w texts.txt coś takiego:
Kod:
? Zapytanie1 Czy chcesz wstąpić do EONu? - Tak - Nie ?Potem w Sailu:
Kod:
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 :
Kod:
| 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:
Kod:
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:Kod:
^ MAIN Target achieved //przydzielenie medalówi medale:
Kod:
* 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:
Kod:
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: https://forum.original-war.net/viewtopic.php?t=285



