Tworząc konwersację (ang. conversation) i zadanie (ang. quest) w poprzednich rozdziałach zastosowano flagi, które w zależności od sytuacji miały wartość 0 (fałsz, ang. false) lub 1 (prawda, ang. true). Niestety edytor D’jinni nie pozwala sprawdzać stanu flag. Na szczęście możemy to zrobić za pomocą skryptu. Dla przypomnienia użyliśmy następujących flag:
- posiada_zlecenie,
- herszt_zabity,
- raport_zdany.
Tworzymy nowy skrypt. Z menu File wybieramy New -> Neverwinter Script (.nss):
Otworzy się okno new neverwinternights script:
Jak zwykle zaczynamy od komentarza:
Dalej wpisujemy linię:
Tu pierwsza uwaga. Na końcu linii rozpoczynającej się słowem kluczowym if nie stawiamy średnika! To bardzo ważne. Jeżeli postawimy tam średnik, to skrypt nie będzie działał tak jak powinien.
Słowo kluczowe if to instrukcja warunkowa. Zadaniem instrukcji warunkowej jest kontrolowanie wykonywania skryptu, którego część zostanie wykonana dopiero wtedy, gdy zajdą określone warunki. W wyniku wykonania instrukcji warunkowej if jest zwracana wartość 0 (fałsz, ang. false), gdy warunek nie jest prawdziwy, oraz wartość 1 (prawda, ang. true), gdy warunek jest prawdziwy.
Funkcja GetDialogFlagValue pobiera wartość flagi dialogowej o podanej nazwie. Całe przedstawione wyrażenie można odczytać tak – gdy wartość pobranej flagi dialogowej o nazwie posiada_zelenie jest równa 0 to… No właśnie, teraz musimy napisać dalszy ciąg skryptu odpowiedzialny za to, co się stanie, gdy wartość pobranej flagi jest równa 0. Wpisujemy dalszy ciąg instrukcji warunkowej if:
Funkcja PrintString wyświetla podany tekst w oknie rejestru zdarzeń tj. w oknie Aurora log. Całe wyrażenie można teraz odczytać tak - gdy wartość pobranej flagi dialogowej o nazwie posiada_zlecenie jest równa 0 to tekst Flaga posiada_zlecenie = 0 w oknie rejestru zdarzeń. Prawda, że proste? Mam nadzieję, że choć trochę tak.
Musimy teraz napisać instrukcję warunkową if z uwzględnieniem, że wartość flagi posiada_zlecenie jest równa 1. Nic prostszego:
Skoro już wiemy jak ma wyglądać skrypt dla jednej flagi, możemy cały blok kodu powtórzyć dla pozostałych dwóch flag:
Na koniec mała niespodzianka. Osoby, które miały kiedyś styczność z programowaniem i uczyły się programować z książek zapewne pamiętają, że pierwszy program to po prostu wyświetlony tekst... tak, nie mylicie się – "Hello World". Żeby nie odchodzić od tych standardów dopisujemy na końcu skryptu:
Tekst jest trochę dłuższy, ale trzeba być oryginalnym. Pozostało nam zapisanie skryptu. W tym celu z menu File wybieramy Save As...:
Otworzy się standardowe okno systemu Windows służące do zapisywania plików. Przechodzimy do folderu \Data\Scripts (w tym folderze zapisane są wszystkie skrypty), wpisujemy nazwę test_flag i klikamy w przycisk Zapisz. Pamiętajcie, że nazwa pliku nie może być dłuższa niż 16 znaków. Proszę też zwrócić uwagę, że przy zapisywaniu pliku będziemy zapisywać go w formacie .nss:
Jeżeli widnieje tam inny typ pliku oznacza to, iż prawdopodobnie chcemy zapisać zawartość innego otwartego okna. Przed zapisaniem upewnijcie się, że aktywnym oknem jest okno new neverwinternights script. Jeżeli to okno będzie nieaktywne to pasek tytułu wyświetli się w kolorze szarym:
Inny kolor paska niż szary oznacza, że okno jest aktywne:
Gwiazdka widniejąca przed nazwą okna w pasku tytułowym oznacza, że plik nie został zapisany od czasu wprowadzenia ostatniej zmiany. Przypominam o możliwości zapisania skryptu bezpośrednio do modułu. W tym celu z menu File wybieramy Save new neverwinternights scripts i w oknie Save File klikamy w przycisk Module. Po zapisaniu skryptu Zwróćcie uwagę, czy w oknie Aurora log jest informacja o pomyślnym zapisie pliku (ang. saved successfully) i kompilacji skryptu (ang. compiled successfully). Teraz otwieramy ono eksploratora zasobów (ang. resource explorer). W tym celu z menu View wybieramy Utility Windows -> Resource Explorer.
W oknie eksploratora zasobów rozwijamy gałąź Data -> Scripts. Widnieje tam nasz skrypt test_flag.nss:
Uruchamiamy tryb gry. W tym celu z menu Game wybieramy Play:
Po wejściu w tryb gry uruchamiamy nasz moduł. Po uruchomieniu przechodzimy do okna eksploratora zasobów i klikamy prawym przyciskiem myszki w nasz skrypt test_flag.nss. Z menu wybieramy Run scripts:
W oknie Aurora log na samym końcu powinniśmy ujrzeć taki wpis:
Jak widać, na początku wszystkie flagi mają wartość 0. Weźcie od Zygfryda zadanie i uruchomcie jeszcze raz skrypt. Zabijcie herszta bandytów i ponownie uruchomcie skrypt. Zapewne zobaczycie różnice. W taki oto sposób, za pomocą skryptów, możemy ułatwić sobie pracę.