FANDOM


W poprzednim rozdziale stworzyliśmy prosty film. Jednak film ten nigdy nie został wyświetlony. I właśnie to zaraz zmienimy. W celu uruchomienia filmu posłużymy się wyzwalaczem (ang. trigger) i skryptem, który zostanie uruchomiony w momencie, gdy Geralt, czyli gracz, wejdzie w wyzwalacz, natomiast skrypt będzie uruchamiał film. Ponieważ chcemy, aby film był wyświetlony tylko raz, skrypt dodatkowo będzie wyłączał wyzwalacz.


Pierwsze, co musimy dodać, to oczywiście wyzwalacz (ang. trigger). Mam nadzieje, że pamiętacie jak się dodaje wyzwalacze. Umieszczamy wyzwalacz tak, aby punkt startowy (ang. start point) znajdował się w obszarze wyzwalacza:

Launching cutscene1.jpg

Dla przypomnienia punkt startowy znajduje się na pierwszym obszarze, jaki stworzyliśmy tj. g31_jaskinia, dlatego też wyzwalacz dodajemy na tym obszarze. Klikamy teraz dwukrotnie na wyzwalaczu. Najlepiej to zrobić w oknie eksploratora modułu:

Launching cutscene2.jpg

Z prawej strony ekranu otworzy się okno właściwości (ang. properties) wyzwalacza z atrybutami:

Launching cutscene3.jpg

W atrybucie Tag w grupie General wpisujemy trigg_movie:

Launching cutscene4.jpg

Upewniamy się, że atrybut Enabled w grupie Attributes ustawiony jest na True:

Launching cutscene5.jpg

Oznacza to, że wyzwalacz jest włączony. Przyjrzyjmy się teraz grupie Scripts. Znajduje się tam atrybut On Enter. Skrypt przypisany do tego atrybutu zostanie uruchomiony w momencie, gdy w wyzwalacz wejdzie jakaś postać, może to być zarówno postać niezależna, potwór, ale także Geralt, czyli gracz. To właśnie w tym atrybucie przypiszemy skrypt uruchamiający film.


Ponieważ punkt startowy (ang. start point) znajduje się w obszarze wyzwalacza, oznacza to, że zaraz po uruchomieniu modułu zostanie wyświetlony film. Stanie się tak dlatego, że Geralt, czyli gracz, wszedł w wyzwalacz.


Teraz zostanie wyjaśnione w jaki sposób można uruchomić edytor skryptów inaczej niż za pomocą menu File. W atrybucie On Enter wpisujemy uruchom_film. Ponieważ tak naprawdę jest to nazwa pliku, proszę pamiętać, aby nie była dłuższa niż 16 znaków. Aby wprowadzić nazwę pliku klikamy w prawej kolumnie obok atrybutu On Enter, wpisujemy tekst i naciskamy ENTER:

Launching cutscene6.jpg

Teraz klikamy w małą czerwoną ikonę znajdującą się w prawej kolumnie:

Launching cutscene7.jpg

Otworzy się okno edytora skryptów:

Launching cutscene8.jpg

Zwróćcie uwagę, że skrypt został automatycznie nazwany tak, jak to ustawiliśmy w atrybucie On Enter. Ten sposób uruchomienia edytora skryptów jest trochę lepszy niż ten za pomocą menu File, ponieważ w tym przypadku większość rzeczy jest już zrobiona tzn. skrypt posiada nazwę, jest przypisany do atrybutu itp.


Czas napisać nasz pierwszy skrypt. Widać, że w każdym skrypcie znajduje się domyślnie bezargumentowa pusta (ang. void) funkcja main(). To właśnie w ciele tej funkcji tj. między nawiasami { } piszemy treść skryptu. Najpierw napiszemy komentarz, aby każdy wiedział, co to za skrypt. Wpisujemy tekst:

Launching cutscene9.jpg

Wszystko to, co napiszemy między /* */ jest traktowane jako komentarz, czyli omijane przez kompilator. Komentarz to dodatkowa informacja umieszczona w skrypcie, której zadaniem jest ułatwienie zrozumienia skryptu. Jak widać komentarz taki może być rozłożony na kilka linii. Innym rodzajem komentarza jest zastosowanie znaków //. Poniżej pierwszego komentarza wpisujemy:

Launching cutscene10.jpg

Ten rodzaj skryptów to tzw. komentarz jednoliniowy. Jak sama nazwa wskazuje może być umieszczony tylko w jednej linii. Jeżeli chcielibyśmy dodać kolejny komentarz tego typu w następnej linii, musielibyśmy zacząć pisanie od //. Czas na pierwszą funkcję. Pod drugim komentarzem wpisujemy:

Launching cutscene11.jpg

Zwróćcie uwagę, że po wpisaniu słowa Play pojawiło się okno. To okno zawiera podpowiedzi z listą funkcji, jakich możemy użyć. Jak widać w oknie znajduje się 6 funkcji zaczynających się od słowa Play. W oknie poruszamy się klawiszami kursora ? ?. Po wybraniu funkcji naciskamy klawisz TAB lub ENTER. Oczywiście możemy kontynuować ręczne wpisywanie funkcji.


Ponieważ chcemy uruchomić film wybieramy funkcję PlayCutscene. Po wpisaniu PlayCutscene otwieramy nawias okrągły (.

Launching cutscene12.jpg

Zwróćcie uwagę, że pojawiło się kolejne okno. Tym razem jest to podpowiedź odnośnie składni funkcji. Zgodnie z podpowiedzią musimy podać teraz nazwę filmu. Jest to oczywiście nazwa pliku z filmem, ale bez rozszerzenia .cut.


Kolejnym argumentem funkcji PlayCutscene jest nazwa skryptu, który zostanie uruchomiony na koniec odtwarzania filmu. Taki skrypt jest nam niepotrzebny, więc pozostawimy puste znaki „”. Interesuje nas 3 argument tej funkcji. Argument ten to tryb wyświetlania filmu. Jeżeli będzie miał wartość 1 (prawda, ang. true), to podczas wyświetlania filmu nie zostaną wyświetlone postaci z gry itp., natomiast, gdy będzie miał wartość 0 (fałsz, ang. false) to na filmie zostaną wyświetlone postacie z gry, a nawet Geralt. I o to nam chodzi. Podczas ruchu naszych kamer będziemy mogli zobaczyć Józka, Zygfryda i Geralta (pod warunkiem, że widok kamery ustawiliście w pobliżu punktów odradzania tych postaci). Cała linia powinna wyglądać tak:

Launching cutscene13.jpg

Proszę pamiętać o znaku średnika ; po każdej linii skryptu. Funkcja PlayCutscene uruchamia wyświetlanie filmu o podanej nazwie. Pozostaje nam jeszcze wyłączenie wyzwalacza.


Zanim go jednak wyłączymy, dodamy kolejny komentarz:

Launching cutscene14.jpg

Teraz wpisujemy kolejną funkcję. Wpisujemy słowo:

Launching cutscene15.jpg

Jak widzimy dostępnych jest kilka funkcji zaczynających się od słowa Enable. Zaraz, mieliśmy wyłączyć skrypt, czyli funkcja powinna zaczynać się od słowa Disable, ponieważ Enable włącza.


Funkcja, której potrzebujemy, to funkcja EnableTrigger. Wpisujemy tę funkcję i otwieramy nawias okrągły (:

Launching cutscene16.jpg

Jak wynika z podpowiedzi, pierwszym argumentem funkcji EnableTrigger jest obiekt wyzwalacza. Najpierw musimy pobrać wyzwalacz. Można to zrobić na dwa sposoby. Pierwszym jest dodanie linii z następującym skryptem:


object oTrigger = GetObjectByTag(„trigg_movie”);


Object to słowo kluczowe, które określa, że będziemy pobierać obiekt, oTrigger to po prostu dowolna nazwa, do której będzie przypisany obiekt.


Funkcja GetObjectByTag pobiera obiekt za pomocą jego tagu (identyfikatora). Często wspominałem, że tag wykorzystuje się przy skryptowaniu. To właśnie za pomocą funkcji GetObjectByTag możemy pobrać obiekt za pomocą tagu.


Argumentem funkcji GetObjectByTag jest właśnie tag obiektu. W tym przypadku chcemy pobrać obiekt wyzwalacza a jak pamiętamy wyzwalaczowi uruchamiający film nadaliśmy tag trigg_movie. Teraz wystarczyłoby wpisać:


EnableTrigger(oTrigger


Jest jednak łatwiejszy sposób – słowo kluczowe OBJECT_SELF.


Słowa kluczowe zaznaczane są w edytorze skryptów na niebiesko. OBJECT_SELF określa obiekt na rzecz, którego został on wywołany. Ponieważ skrypt jest przypisany do wyzwalacza trigg_movie to użycie OBJECT_SELF będzie dotyczyło właśnie wyzwalacza trigg_movie. Nie musimy wtedy pisać linii object oTrigger... Tak powinien wyglądać obecnie nasz skrypt:

Launching cutscene17.jpg

Funkcja EnableTrigger włącza lub wyłącza wyzwalacz. Drugi argument tej funkcji może przybrać wartość TRUE, co równa się z włączeniem wyzwalacza lub FALSE, co oznacza wyłącznie wyzwalacza. Wpisujemy po przecinku słowo FALSE i zamykamy nawias okrągły ):

Launching cutscene18.jpg

Na koniec linii stawiamy średnik ; Proszę o tym pamiętać. I tak naprawdę to wszystko. Nasz skrypt jest gotowy i na pewno działa. Musimy teraz go zapisać. Z menu File wybieramy Save uruchom_film.nss:

Launching cutscene19.jpg

Jeżeli nie ma Save uruchom_film.nss lub widnieje tam inna nazwa pliku oznacza to, że okno uruchom_film.nss nie jest aktywne. Aby je uaktywnić wystarczy kliknąć w nazwę okna uruchom_film.nss i ponownie z menu File wybrać Save uruchom_film.nss. Otworzy się okno Save File:

Launching cutscene20.jpg

W oknie tym możemy zdecydować, czy zapisywany plik będzie plikiem globalnym, tzn. takim, który będzie dostępny dla innych modułów. W takim przypadku klikamy w przycisk Global. Możemy plik zapisać bezpośrednio do modułu, co oznacza, że będzie on dostępny tylko dla danego modułu.


Drugi sposób jest dobry szczególnie wtedy, gdy zamierzamy nasz moduł umieścić w Internecie, ponieważ wszystkie pliki zapisane są w jednym pliku z modułem (format .adv). Jeżeli chcemy zapisać plik do modułu, klikamy w przycisk Module. Jeżeli klikniemy w przycisk Global, 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ę i klikamy w przycisk Zapisz.


Oczywiście później taki plik możemy dodać do modułu. Po co jednak utrudniać sobie pracę. Klikamy w przycisk Module. Otworzy się okno Enter name. Musimy tu podać nazwę skryptu. Najlepiej niech to będzie taka sama nazwa skryptu, pod jaką planowaliśmy go zapisać, czyli uruchom_film. Wpisujemy taką nazwę w oknie Enter name:

Launching cutscene21.jpg

Potem klikamy w przycisk OK. Skrypt zostanie skompilowany, a także pojawi się w oknie eksploratora modułu (ang. module explorer) w podgałęzi Neverwinter scripts sources:

Launching cutscene22.jpg

Ponieważ skrypt był kompilowany, warto zajrzeć do okna rejestru zdarzeń tzn. do okna Aurora log:

Launching cutscene23.jpg

Jeżeli podczas kompilacji wystąpi jakiś błąd, zostanie to zasygnalizowane kolorem czerwonym. Jak widać powyżej, przy pierwszej kompilacji wystąpił taki błąd:


NWNScript Compiler: \...\ uruchom_film.nss did not Compie successfully


Oznacza to, że skrypt uruchom_film.nss nie został skompilowany poprawie. W następnej linii opisany jest błąd:


NWNScript Compiler: uruchom_film.nss(10): ERROR: UNDEFINED IDENTIFER (PlayCuscene)


Po nazwie skryptu, w nawiasach okrągłych () podany jest nr linii, w której wystąpił błąd. W tym przypadku była to linia nr 10. Dalej opisany jest rodzaj błędu – UNDEFINED IDENTIFER, co oznacza nieokreślony identyfikator. Dalej w nawiasie okrągłym () podane jest, co to za identyfikator. Zgadza się, nie ma przecież funkcji PlayCuscene, jest PlayCutscene. Oczywiście poprawiono błąd i ponownie skompilowano skrypt:


NWNScript Compiler: \...\uruchom_film compiled successfully


Oznacza to, że skrypt został skompilowany poprawnie. Na koniec musimy zapisać cały moduł. W tym celu z menu Module wybieramy Save Module:

Launching cutscene24.jpg


I to wszystko. Stworzyliśmy nasz pierwszy skrypt. Nie jest on zbyt skomplikowany, ale na początek wystarczy.

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