Wiedźmin i jego ekwipunek
Z Djinni Wiki PL
Dość ważnym elementem podczas tworzenia modułu jest zdefiniowanie ekwipunku dla Geralta, czyli gracza. Niestety, nie możemy tego zrobić w prosty sposób, bo nie ma fizycznego obiektu Geralta, któremu moglibyśmy zdefiniować ekwipunek. Punkt startowy (ang. start point) definiuje tylko punkt, w którym pojawi się Geralt.
Jeżeli czegoś nie można zrobić lub nie można zrobić w prosty sposób, to na pewno można to zrobić z pomocą skryptu. Tworzymy zatem nowy skrypt. Tym razem tworzymy go w sposób standardowy, czyli z menu File wybieramy New -> Neverwinter Script (.nss):
Otworzy się okno new neverwinternights script:
Na początek wpisujemy komentarz:
Funkcja, której użyjemy do stworzenia przedmiotu w ekwipunku nazywa się CreateItemOnObject. Jednym z argumentów tej funkcji, który musimy podać, to obiekt, u którego ten przedmiot ma zostać stworzony. W naszym przypadku jest to Geralt, czyli gracz. Musimy pobrać obiekt gracza. Do tego służy bezargumentowa funkcja GetFirstPC.
Najpierw dodajemy kolejny komentarz, aby nasz skrypt był bardziej czytelny:
Potem wpisujemy linię z funkcją GetFirstPC:
Linię tę można odczytać tak: pobierz obiekt pierwszego gracza i przypisz go do obiektu oPC.
Czas na funkcję tworzącą przedmiot. Kolejnym argumentem, który musimy podać w funkcji CreateItemOnObject jest nazwa szablonu (ang. template) przedmiotu. Wszystkie szablony przedmiotów zapisane są w folderze \Data\Templates\Items\. Dla przykładu dodamy do ekwipunku Geralta, czyli gracza, kilka orenów (waluta stosowana w grze Wiedźmin) oraz srebrny miecz (standardowo Geralt posiada stalowy miecz, więc nie musimy mu go dodawać). Szablon orenów posiada nazwy od it_gold_001.uti do it_gold_014.uti. Te szablony zapisane są w folderze \Data\Templates\Items\Valuables\. Szablon srebrnego miecza posiada nazwę it_svswd_004.uti i jest zapisany w folderze \Data\Templates\Items\Weapons&Armor\. Proszę pamiętać, że w funkcji CreateItemOnObject podajemy samą nazwę szablonu, bez rozszerzenia .uti.
Wracamy do naszego skryptu. Oczywiście dodajemy kolejny komentarz, tym razem zrobimy to jednak w innym miejscu. Najpierw dodajemy funkcję CreateItemOnObject(:
Wyświetlona została podpowiedź z argumentami funkcji. Ostatnim argumentem, jaki musimy podać w funkcji CreateItemOnObject jest ilość. Jest to ilość obiektów o podanej nazwie szablonu, jaka ma zostać stworzona. Wpisujemy całą linię:
I obiecany komentarz w innym miejscu:
Jak widać komentarze możemy umieszczać też na końcu linii. Nie można ich natomiast zrobić na początku linii tzn. nie za pomocą znaków //. Jeżeli z jakiegoś powodu (a nie jest to zalecane, bo jest mało czytelne), chcielibyśmy dopisać komentarz na początku linii, to musimy posłużyć się komentarzem typu /* */.
Dodaną linię możemy odczytać tak: stwórz 50 obiektów na podstawie szablonu it_gold_005 w obiekcie oPC. Musimy jeszcze dodać miecz:
To wszystko. Nasz skrypt jest gotowy. Musimy go zapisać, a także przypisać do odpowiedniego zdarzenia. Najpierw zapisujemy skrypt. 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ę ekwipunek i klikamy w przycisk Zapisz. Proszę pamiętać, że nazwa pliku nie może być dłuższa niż 16 znaków. Zwróćcie uwagę, że przy zapisywaniu pliku będziemy zapisywać plik w formacie .nss:
Jeżeli widnieje tam inny typ pliku oznacza to, iż prawdopodobnie chcemy zapisać zawartość innego otwartego okna. Przed zapisaniem naszej postaci upewnijcie się, że aktywnym oknem jest okno new neverwinternights script. Jeżeli 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. Proszę pamiętać 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.
W niniejszym podręczniku nie stosowano tej metody, dodawano „ręcznie” pliki do modułu za pomocą eksploratora zasobów (ang. resources explorer). O takim sposobie zostało napisane w jednym z poprzednich rozdziałów.
Sprawdzamy w oknie Aurora log czy zapis i kompilacja skryptu powiodły się:
Pierwszy wpis oznacza, że zapis powiódł się (ang. saved successfully), natomiast drugi wpis, że kompilacja także się powiodła (ang. compiled successfully). Trzeci wpis to ponowny zapis skryptu.
Teraz musimy przypisać nasz skrypt do modułu. Najlepszym wyjściem będzie przypisanie skryptu do zdarzenia On Client Enter we właściwościach modułu. Tym samym skrypt zostanie uruchomiony w momencie, gdy tylko na module pojawi się Geralt, czyli gracz. Wczytujemy nasz moduł, o ile nie jest już wczytany. Otwieramy eksplorator modułu (ang. module explorer). W tym celu z menu View wybieramy Utility Windows -> Module Explorer:
W oknie eksploratora modułu dwukrotnie klikamy w wierszu Module Properties:
Tym samym z prawej strony otworzy się okno właściwości (ang. properties) modułu z atrybutami. Teraz klikamy w małą żółtą ikonę w prawej kolumnie obok atrybutu On client enter:
Otworzy się standardowe okno systemu Windows służące do wczytywania plików. Przechodzimy do folderu \Data\Scripts\ (tam zapisaliśmy nasz skrypt), zaznaczamy plik ekwipunek.nss i klikamy w przycisk Otwórz. Tym samym skrypt ekwipunek.nss zostanie przypisany do zdarzenia On client enter:
Pozostało nam zapisanie całego modułu. W tym celu z menu Module wybieramy Save Module:
Gdy teraz uruchomimy nasz moduł, Geralt, czyli gracz, będzie miał w ekwipunku 50 orenów i dodatkowo srebrny miecz. W ten sposób można definiować zawartość ekwipunku nie tylko dla gracza, ale także dla innych obiektów.




















