Author: NNPlayaNNPlaya hat geschrieben:http://forum.original-war.net/viewtopic.php?t=551
Konkretnie chodzi o ostatni fragment kodu:Przeróbmy go na Twoje potrzeby. Najpierw podsumujmy - potrzebna nam reakcja w postaci zakończenia misji (zakładam, że obejmuje to rówież medale i zapisywanie postaci). Ta reakcja ma mieć miejsce gdy spełniamy warunek - ktoś jest w określonej arei. Teraz przetłumaczmy to na język zrozumiały dla kompilatora SAIL.Code: Alles auswählen
every 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;
Objaśnienie sekcji po kolei:Code: Alles auswählen
every 0$1 trigger IsInArea(Twoj_identyfikator_postaci,Twoja_area) do //1 Begin AddMedal('med1',1); //2 AddMedal('med2',1); AddMedal('med3,-1); GiveMedals('Main'); //3 RewardPeople(Twoj_identyfikator_postaci); //4 SaveCharacters(Twoj_identyfikator_postaci,'Twoj_identyfikator_postaci_do_zapisu_w_pamięci_gry'); //5 YouWin; //6 end;
Na koniec jeszcze na pewno zauważyłeś bloki Begin end;. Oznaczają one, że zawarte w nich kod należy do wyrażenia warunkowego, w tym przypadku every. To się tyczy większości, o ile nie wszystkich języków programowania. Akurat bloki Begin end; zaczerpnięto z Pascala, w innych językach np PHP czy C++ są one zastąpione znakami nawiasów klamrowych. To wszystko
- Deklaracja powtarzania co 1 sekundę (0$1 - 1 sekunda) operacji sprawdzania, czy warunek IsInArea(Twoj_identyfikator_postaci,Twoja_area) jest prawdziwy. Warunek to taka funkcja, która przyjmuje pewną liczbę argumentów(wpisuje się je w nawiasy i oddziela przecinkami) i na podstawie ich stanu zwraca wartości typu boolean - true(czyli prawdziwy warunek) bądź false w przypadku gdy warunek nie jest spełniony. Instrukcja every pozwala na reakcję tylko w przypadku spełnienia bądź nie spełnienia warunku, żeby wprowadzić jakąś reakcję gdy nie ma określonego gościa w arei należy utworzyć drugie every.
- W drugiej sekcji w pamięci dodawane są medale. O medalach jest nawet w poradniku dołączonym do patcha, więc sobie daruję opisywanie.
- Trzecia sekcja zawiera komendę wyświetlającą tablicę z medalami (oczywiście wcześniej muszą zostać dodane komendami AddMedal;). Ponownie odsyłam do poradnika załączonego do patcha.
- W sekcji nr 4 masz komendę RewardPeople, która jako argument przyjmuje identyfikator jednego gostka bądź grupy ludzi. Wyświetla tablicę rozdzielania doświadczenia.
- Piąta sekcja to nic innego jak zapisanie postaci do pamięci pod dowolnym identyfikatorem podawanym w drugim argumencie jako ciąg literowy w apostrofach.
- Szósta i ostatnia sekcja to instrukcja YouWin nie wymagająca argumentów; kończy ona misję wygraną.
Topic: http://forum.original-war.net/viewtopic.php?t=1069