| 11. O skryptach bardziej technicznie |
| ToolSet - Tutoriale | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| wtorek, 20 kwietnia 2010 21:55 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Skrypty używane są prawie zawsze wtedy, gdy autor chce wpłynąć na zachowanie się gry. Składnia skryptów Dragon Age przypomina do złudzenia język C, jednak występują tu pewne różnice. Dokładną dokumentację znajdziecie w pliku "descript.chm" w folderze Dragon Age\packages\core. Tutaj przedstawione zostaną tylko podstawowe zagadnienia. Skrypty głównie stosowane są w celu: - prowadzenia fabuły - skryptowania konwersacji - obsługiwania sztucznej inteligencji - obsługiwania umiejętności, talentów i zaklęć Język skryptowy Dragon Age posiada następujące operatory: 2.1 Operatory Arytmetyczne:
2.2 Operatory porównania
2.3 Operatory logiczne
2.4 Inne operatory
Jak w każdym języku skryptowym, tak i w tym z Dragon Age występują bardziej i mniej standardowe zmienne, struktury i typy danych. Ich opisy wraz z przykładami znajdziecie poniżej. 3.1 Zmienne Język skryptowy Dragon Age wspiera następujące typy zmiennych:
3.2 Domyślne typy event - eventy to coś w stylu sygnałów wysyłanych przez inne skrypty, lub silnik gry, do innych skryptów. location - command - polecenie dla obiektu lub npc-a, by wykonał jakąś czynność. Command-y tworzone są poprzez funkcje, które takowe zwracają. Następnym krokiem jest dodanie polecenia do listy naszego celu (który ma polecenie wykonać) za pomocą funkcji AddCommand(); effect - itemproperty - player - Wszystkie powyższe typy przekazywane są za pomocą odpowiednich zmiennych, dzięki czemu za każdym razem, gdy dana funkcja pobiera określony typ, tworzona jest jego kopia. Znaczy to mniej-więcej tyle, że jeśli jakaś funkcja zmienia pewne wartości którejś z powyższych struktur, musi zwrócić zmodyfikowaną wersję. 3.3 Struktury Jak w każdym sensownym języku skryptowym, także i w tym z Dragon Age: Początek użytkownik może definiować własne struktury. Wykorzystujemy do tego słowo struct: struct quaternion 3.4 Tablice W skrypcie Dragon Age'a możemy utworzyć tablice każdego typu, z wyjątkiem struktur zdefiniowanych przez użytkowników (co jest sporym utrudnieniem). Autorzy mogą tworzyć tablice zmiennych (int, float, string, itd.), tablice mogą być również zwracane przez funkcje. Tablice w Dragon Age różnią się nieco od tych znanych np.: z języka C - mogą zmieniać swoje rozmiary. Również sposób ich zapisu wygląda nieco inaczej. Innymi słowy - tablice w Dragon Age bardziej przypominają te znane z J2ME. Tablice różnią się od zwykłych zmiennych również tym, że przekazując tablicę funkcji, nie podajemy całej tablicy, a jedynie wskaźnik do niej (adres w pamięci komputera, pod którym tablica się znajduje). A oto i przykładowa tablica elementów typu int: void main() W Dragon Age ToolSet istnieją dwie metody, na odkrycie funkcji oraz tego co ona robi. Jeśli wpiszesz poprawnie nazwę funkcji i otworzysz nawias, edytor wyświetli mała ściągę, pokazującą jakie typy zmiennych dana funkcja przyjmuje. Druga opcja, to kliknięcie View->Other Windows->Help Window. Dzięki temu po wybraniu dowolnej funkcji z okienka Function Browser, wyświetli się nam opis funkcji. 4.1 Tworzenie własnych funkcji Nieraz już to robiliśmy, w przypadku funkcji main();. Innymi słowy, aby stworzyć własną funkcją posługujemy się formułką: zwracany_typ nazwa_funkcji( parametry) { /kod funkcji } dla przykładu, mała funkcja, dodająca do siebie dwie zmienne typu całkowitego: int dodaj(int a, int b) { int wynik; wynik = a + b; return wynik; } Powyższa funkcja zwraca zmienną typu int, stąd też przedrostek int. Jeśli funkcja ma zwracać inne typy, wystarczy zmienić int na inny, np.: float, object itp. Jeśli funkcja nie ma nic zwracać, w miejsce int wpisujemy void. Jak widać, funkcja nosi nazwę "dodaj", nie ma raczej co tutaj tłumaczyć. W nawiasach znajdują się dwa parametry - int a oraz int b. Oznacza to, że funkcja podczas wywoływania pobiera dwie zmienne typu int, które bezwzględnie musimy jej podać. Oto i przykład zastosowania funkcji: void main() { int x = 10; int y = 20; int result; result = dodaj(x, y); } Funkcja main() tworzy trzy zmienne - x, y oraz result. Zmiennym x oraz y przypisujemy odpowiednie wartości (w tym przypadku 10 i 20). Następnie zmiennej result przypisujemy wynik dodawania zmiennych x i y, obliczony za pomocą funkcji dodaj(); Funkcja dodaj() zwraca bowiem wynik owego dodawania (return wynik;), który zostaje przypisany do zmiennej result. Jak widać, tworzenie własnych funkcji nie jest niczym strasznym, a warto nadmienić że znacznie ułatwia pracę i poprawia przejrzystość kodu. Należy pamiętać, że funkcja stworzona w jednym skrypcie nie może być użyta w innym. Aby móc z niej korzystać, musimy ją tam po prostu skopiować. I to, jak na razie, tyle. Oczywiście jest o wiele więcej wiedzy, którą trzeba przyswoić, aby móc tworzyć złożone skrypty, ale na to możnaby poświęcić całą książkę. Polecam jednak się nie poddawać, przeglądać przykłady dodane do ToolSet-a, modyfikować je i sprawdzać efekty. Z czasem wrzucę również kilka przykładowych skryptów wraz z opisami. Autor: Krossfie
Źródła: http://social.bioware.com/wiki/datoolset/index.php/Scripting_overview
Tags:
Komentarze (0)
Tylko zarejestrowani użytkownicy mogą pisać komentarze!
Powered by !JoomlaComment 4.0 beta2
|

