![]() |
[PL]1. Ucz się z Danielem - pierwsze zmiany w skryptach serwera. - Printable Version +- Gothic Online Forums (https://archive.gothic-online.com) +-- Forum: Community (https://archive.gothic-online.com/forum-18.html) +--- Forum: Polish (Polski) (https://archive.gothic-online.com/forum-19.html) +---- Forum: Poradniki (https://archive.gothic-online.com/forum-46.html) +---- Thread: [PL]1. Ucz się z Danielem - pierwsze zmiany w skryptach serwera. (/thread-391.html) |
[PL]1. Ucz się z Danielem - pierwsze zmiany w skryptach serwera. - Ignisio - 16.01.2016 Quote:Ta seria poradników będzie wyjątkowa - nie tylko dla tego, że jest pierwsza. Tym razem naprawdę będziecie uczyli się razem ze mną. To tak, jak gdybym ja poświęcił więcej czasu na próby, czytanie innych poradników czy wiki, a wy tylko poszli tą czystą drogą nauki. Nawet jeśli jesteście leniami, ja to za was nadrobię : 0. Wiki oraz pliki Serwerowe. Na początku naszym przyjacielem i kierunkowskazem będzie Gothic Online Wiki . To tam znajdują się najważniejsze funkcje, których będziemy używali do opisu wszelkich zdarzeń. Nie radzę jej jednak używać na ślepo. Jeśli użyjemy na przykład funkcji EnableGameNpcs() (Włączenie NPC z Singla), to możemy się zdziwić, bo nie da to żadnego efektu. Dlatego każdą nową funkcję sprawdzajmy od razu po wpisaniu. Absolutnie niezawodnym i najlepszym sposobem nauki jest przeglądanie plików które sami pobraliśmy razem z serwerem, które znajdują się w folderach client-scripts oraz server-scripts. Do ich przeglądania, edytowania, oraz pisania własnych polecam program Notepad++. Od razu widzimy, że te pliki są naprawdę przejrzyste. Mamy tutaj bloki oddzielone klamrami, każda ma swoją "nazwę" i zestaw "instrukcji". Szkoda tylko, że te nazwy i instrukcję nie do końca rozumiemy. Nie do końca, bo przecież to wszystko jest po angielsku i raczej nie problem domyśleć się, co robi funkcja exitGame(). No dobrze, mamy te kilka plików, ale spójrzmy tutaj: http://gothic-online.com.pl/forum/showthread.php?tid=327 Sative napisał skrypt klikalnego menu animacji w jakimś innym pliku. Co teraz? Teraz wchodzimy w plik GO_Config.xml znajdujący sie w głównym folderze i dopisujemy jego nazwę, zgodnie z podanym tam wzorem. Quote:Błędem, który popełniłem na początku, było otworzenie losowego pliku i wpisanie tam przykładu użycia funkcji z GO-wiki. Rozdzielenie plików na 2 foldery (Server/Client) oraz utworzenie dla nich osobnych działów na wiki ma swój powód. Funkcji serwera używamy tylko w folderze server-scripts, a funkcji klienta tylko w folderze client_scripts. 1. Pierwsze zadanie - pasek na dole ekranu, jak w grach MMO. A co się będziemy rozdrabniać : ![]() ![]() Tylko, żeby to było jasne. Nie, nie będziemy mieli od razu wyświetlania rodzaju broni czy magii w odpowiednich slotach, albo wybierania broni myszką. To jest początek i to ma tylko wyglądać jak taki pasek. Mi z moim wątpliwym talentem graficznym wyszło to tak: ![]() No dobrze, czyli przedstawmy co chcemy osiągnąć. - Tworzymy teksturę dolnego panelu i wstawiamy ją do Gothica. - Ustawiamy ją tam gdzie chcemy. - Umieszczamy na niej paski życia/many. Jeszcze jedno pytanie, czy będziemy aktywowali ten pasek przy wejściu do gry, po kliknięciu klawisza, a może przy wpisaniu komendy? To dobre miejsce, na omówienie tych trzech możliwości.
Code: function onInit()
Code: addEvent("onCommand", function(cmd, params) Mamy tu konstrukcję switch (przełącznik) case . Cały blok zaczyna się od addEvent, w którym widzimy magiczne "onCommand" które mówi samo za siebie. A więc, wywołanie funkcji po wpisaniu komendy po / ukośniku na chacie polega, na dopisaniu w tym miejscu odpowiedniego słowa po case. case "hpbar": WAŻNE! Nie wpisujemy przed tym słowem ukośnika / on już tam tak jakby jest. Słowo musi być w " " cudzysłowie, a na samym końcu nie stawiamy średnika, tylko : dwukropek, co jest wstępem do instrukcji.
Code: addEvent("onKey", function(key, letter) I co mamy po addEvent? "onKey". Prawda, że proste? Wszystko jest tutaj tak samo, jak w przypadku komendy na czacie, poza tym, że nie wpisujemy słowa do wpisania, ale instancję klawisza. Ich lista znajduje się tutaj: http://gothic-online.com.pl/wiki/index.php?title=Client_constants A na końcu, zamiast return mamy break. Wybierzcie sami. Ja osobiście wybrałem klawisz H na aktywowanie mojego "interefejsu" i tym się będę kierował. 2. Wiemy jak, nie wiemy co. Najlepiej by było, gdyby obojętnie jaką teksturę, chociażby jakiś kwadrat każdy zrobił sobie sam, ale ponieważ to pierwsza nasza "lekcja", to na koniec poradnika wstawię ten panel (bez barów). Tutaj następuje część, przez którą ja cię nie przeprowadzę, bo poradników o podstawach podstaw modyfikacji Gothica jest milion w całym internecie w milionie języków. Chodzi tutaj o to, że taką teksturę zapisuje w formacie .tga, potem exportujemy do .tex (np. Gomanem, ale można też skompilować przez grę), później zazwyczaj dodajemy do archiwum .VDF. Wracając do naszego planu, czyli: Quote:- Tworzymy teksturę dolnego panelu i wstawiamy ją do Gothica. Teraz każdy otwiera wiki i szuka (podpowiem, że w funkcjach klienta) tworzenie tekstury. . . . . . . . . Macie? Gdy wejdziemy do Client-side functions mamy ładne menu, przechodzimy do nagłówka "Texture" i widzimy wszystko co nam potrzebne. Konkretnie: createTexture Wchodzimy do naszego pliku. Jeśli chcecie, utwórzcie nowy, ja na razie piszę w main.nut i dopisuję do gotowych wzorów. Znajduję addEvent("onKey", function(key, letter) I dopisuję Code: case KEY_H: local panel. To coś nowego. W większości języków skryptowych występuje stałe i zmienne, tutaj mamy taką właśnie zmienną lokalną, która w jednym słowie (tutaj: panel) "zapisuje" dane, w tym przypadku: nazwę tekstury, pozycję na ekranie, wysokość, szerokość (tak jest zresztą podane) setTextureVisible tylko wywołuję, wyświetla tą teksturę, której wszystkie "argumenty" są zawarte w słowie "panel". Quote:Parę uwag. Najpierw spójrzmy na to Pierwszy myślnik mamy załatwiony. Drugi w pewnym sensie też, bo podałem już koordynaty które mi pasują, ale z podawaniem pozycji będziecie spotykali się na każdym kroku, więc muszę to opisać. Ale ta część jest zdecydowanie zbyt długa. Nikt tego nie przeczyta. Nie długo (serio) ukaże się kolejna część poradnika. Jak widzicie preferuję dość...lużne podejście do formy : ![]() Poza tym, jak pisałem, sam się jeszcze uczę. Czekam na wszelkie uwagi, wytykanie błędów, nie kłócę się jeśli ktoś mnie krytykuję tylko serio zastanawiam się nad zarzutami, więc piszcie poniżej co o tym myślicie. Jeśli ktoś chciałby mi pomóc, zapraszam tutaj: http://gothic-online.com.pl/forum/showthread.php?tid=389 RE: [PL]Ucz się z Danielem - pierwsze zmiany w skryptach serwera. - Bimbol - 16.01.2016 (16.01.2016, 15:59)Ignisio Wrote: Macie? Gdy wejdziemy do Client-side functions mamy ładne menu, przechodzimy do nagłówka "Texture" i widzimy wszystko co nam potrzebne. Konkretnie:Jakby co to w Squirrelu też mamy stałe ![]() Squirrel Script
RE: [PL]Ucz się z Danielem - pierwsze zmiany w skryptach serwera. - Ignisio - 16.01.2016 O właśnie. Trafiłem na spis stałych. http://gothic-online.com.pl/wiki/index.php?title=Constants Ale nie wiedziałem jak zdefiniować własną. Przyda się. RE: [PL]Ucz się z Danielem - pierwsze zmiany w skryptach serwera. - Hades - 20.01.2016 Dziękuję za poradniki. Aktualnie zaczynam szkolenie Squirrela i zapewne przeczytam wszystkie twoje lekcje. RE: [PL]Ucz się z Danielem - pierwsze zmiany w skryptach serwera. - Ignisio - 21.01.2016 Cieszę się, że tak szybko znalazłem odbiorcę. Pochwal się jak ci pójdzie Quest ![]() |