Djinni Wiki PL
Advertisement

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):

Flag testing1

Otworzy się okno new neverwinternights script:

Flag testing2

Jak zwykle zaczynamy od komentarza:

Flag testing3

Dalej wpisujemy linię:

Flag testing4

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:

Flag testing5

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:

Flag testing6

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:

Flag testing7

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:

Flag testing8

Tekst jest trochę dłuższy, ale trzeba być oryginalnym. Pozostało nam zapisanie skryptu. W tym celu z menu File wybieramy Save As...:

Flag testing9

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:

Flag testing10

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:

Flag testing11

Inny kolor paska niż szary oznacza, że okno jest aktywne:

Flag testing12

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.

Flag testing13

W oknie eksploratora zasobów rozwijamy gałąź Data -> Scripts. Widnieje tam nasz skrypt test_flag.nss:

Flag testing14

Uruchamiamy tryb gry. W tym celu z menu Game wybieramy Play:

Flag testing15

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:

Flag testing16

W oknie Aurora log na samym końcu powinniśmy ujrzeć taki wpis:

Flag testing17

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ę.

Advertisement