FANDOM


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

Otworzy się okno new neverwinternights script:

Flag testing2.jpg

Jak zwykle zaczynamy od komentarza:

Flag testing3.jpg

Dalej wpisujemy linię:

Flag testing4.jpg

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

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

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

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

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

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

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

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

Flag testing12.jpg

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

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

Flag testing14.jpg

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

Flag testing15.jpg

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

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

Flag testing17.jpg

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

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Więcej z Fandomu

Losowa wiki