![]() |
[PL]1.Ucz się z Danielem - pierwsze zmiany w skryptach serwera. 2 - 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. 2 (/thread-392.html) |
[PL]1.Ucz się z Danielem - pierwsze zmiany w skryptach serwera. 2 - Ignisio - 16.01.2016 3. Pozycja Przez to, że nie wiedziałem skąd się biorą "te cyferki" długo zwlekałem z rozpoczęciem nauki pisania skryptów serwerowych. Okazało się, że całkiem nie potrzebnie. Nie wiem, jakie starsi czy lepsi "skrypterzy" mają sposoby, na dobieranie pozycji na ekranie, ja pokaże wam tutaj formę, która mi w zupełności odpowiada. Na początek dodajemy kursor. Czy po kliknięciu klawisza, czy od razu gdy wejdziemy do gry - wasza sprawa. Żeby dowiedzieć się, jak to zrobić, wchodzimy na wiki, wchodzimy w funkcje klienta i odnajdujemy akapit "Cursor". Od razu widzimy funkcję setCursorVisible. Niektórzy mogą się już domyślać, że kolejną potrzebną nam funkcją będzie getCursorPosition. Tutaj sprawa robi się trochę ciekawsza Quote:Przydatne! Gdy tylko aktywujemy nasz kursor, kamera oraz gracz w grze wciąż się poruszają przy ruchach myszki. W tym wypadku, razem z aktywacją kursora polecam użyć setFreeze(true); Jak można się domyśleć, najeżdżam kursorem w miejsce w którym chciałbym umieścić teksturę, później...zaraz zaraz, no ale nasza tekstura ma swoją szerokość, wysokość, a my mamy tylko punkcik. Wyobrażamy sobie, że w koordynatach które wpiszemy znajdzie się LEWY GÓRNY róg naszej tekstury, drawa czy innego tekstu. Więc, najeżdżam kursorem w odpowiednie miejsce i klikając klawisz, wyświetlam na ekranie pozycje kursora. Nie będę pisał o wywoływaniu funkcji, ale muszę pochylić się nad wyświetlaniem pozycji. Zamiast podawać cały kod, teraz zrobimy to krokowo. 1. Wpisuję kod na klawisz/komendę którą będę pobierał pozycję. 2. Tworzę zmienną lokalną i przypisuję do niej pozycję kursora local pozycja = getCursorPosition(); Czym jest pozycja? Każdy kto miał matematykę, wie, że pozycji 2d odpowiada układ współrzędnych z dwiema osiami (X,Y). Czyli mamy tutaj dwie wartości X i Y a zmienna jest tylko jedna. To oznacza, że zmienna będzie . . . . . Tabelą! 3. Wyświetlam pozycję kursora. a) Jak wgl cokolwiek wyświetlić? Ogólnie mamy dwie możliwości addMessage() print() Nie wiem czy tak ma być, ale wyświetlanie pozycji kursora w addMessage mi nie działa. Więc opiszę print, a przykładów na addMessage macie już w skryptach masę. Powiem tylko, że addMessage wypisuje nam coś na czasie, a print na środku ekranu.[/color] print(pos.x+" "+pos.y); Można się już co-nieco domyślić prawda? print czyli print pozycja.x pozycja.y To jest bardzo ważne, szczególnie, że nie zawsze tak będzie. Po kropce wypisujemy nazwę pola do którego chcemy się odwołać. Wracając do definicji getCursorPosition w wiki czytamy: Quote:Current position of cursor in table with fields x and y. Obecna pozycja kursora w tabeli znajduję się w polach X i Y. Dlatego po kropce mamy podane akurat X i Y. Spójrzcie na przykłady innych tabel w tych artykułach: http://gothic-online.com.pl/wiki/index.php?title=GetPlayerPosition http://gothic-online.com.pl/wiki/index.php?title=GetPlayerColor + " " Plusa używamy, żeby połączyć tekst ze zmienną. Cudzysłowie zaczyna i kończy tekst, a spacja to jest po prostu przerwa pomiędzy tymi współrzędnymi. Zastanówcie się, jak by wyglądał print, gdybyśmy chcieli napisać Współrzędna X: xxxx , Współrzędna y: yyyy Rozwiązanie Quote:WAŻNE!Myślę, że wyczerpałem temat. Gdzie kod? Sami go napiszcie ![]() 4. Przeniesienie paska życia. Szczerze mówiąc, tą część moglibyście zrobić sami. Ponieważ pozycję i inne problemy już opisałem, a operacje manipulacji na paskach (czyli Bars) już są w pliku main.nut. Nie będę taki zły i to opiszę. Chyba, że ktoś postawi sobie wyzwanie i sam to zrobi, wtedy koniecznie musi pochwalić się w komentarzu ![]() U mnie akurat wygląda to tak, że miejsce na bary narysowałem sobie na teksturze panelu, więc tam je umiejscowię. A wygląda to tak. Code: setBarPosition(HEALTH_BAR, 240, 7550); Oczywiście aktywowane (najlepiej) tym samym klawiszem czy komendą, co nasz panel. setBarPosition(HEALTH_BAR, 240, 7550); HEALTH_BAR to odwołanie do paska życia. Warto zauważyć, że nie utworzymy nowego paska, tylko przesuniemy ten stary. Łatwo też się domyśleć, jaka będzie instancja paska many, prawda? Dalej jest już odpowiednio: Pozycja X, Pozycja Y. Widać, że pozycja X rośnie od lewej do prawej, a pozycja Y id góry do dołu. setBarSize(HEALTH_BAR, 2560, 170); Znów instancja bara, później Szerokość (całkiem duża zresztą) i Wysokość. Od razu widać, rozdzielczość szerokości mojego monitora to 1360, a tutaj mam pasek szeroki na 2560 i sami widzicie jak jest stosunkowo krótki (obrazek w poprzednim temacie). Tym sposobem mamy coś na wzór naszego dolnego paska. Wiem, że nie jest on tak funkcjonalny jak w prawdziwych grach MMO. Nie wykluczam, że wrócimy jeszcze do niego, ponieważ ta seria nazywa się "Ucz się z Danielem", a Daniel jeszcze tego, po prostu nie umie. Poza tym, to już solidna podstawa do zrobienia ciekawego interfejsu. Można na takim pasku dodać np. godzinę, guziki z menu, pomoc, komendy, cokolwiek. Sam wyobrażam sobie, że można by zrobić obrazek zmieniający się np. co godzinę Gothicową i odwzorowujący pozycję słońca na niebie, zupełnie jak w Wiedźminie 3. Może właśnie tym się zajmiemy. A może wstawimy boty? Sam jeszcze nie wiem, za co wezmę się następnym razem. Ale napewno podzielę się tym z wami. Tak samo jak chciałbym, żebyście pochwalili się paskami, które sami zrobicie i wstawicie do gry! A zapomniałbym! Jeśli się nie brzydzicie, macie tu ten mój nieszczęsny panel: http://hostuje.net/file.php?id=4bdf5013d77b4ef33fea2654002ffbe3 Przypominam, poszukuję tłumaczy! http://gothic-online.com.pl/forum/showthread.php?tid=389 RE: [PL]Ucz się z Danielem - pierwsze zmiany w skryptach serwera. 2 - Quarchodron - 16.01.2016 http://strefagothic.eu.org/thread-31.html Jak ci sie coś z tego przyda to hapśnij. Chyba tam 12 poradników jest. Ale kiepa troszku. RE: [PL]Ucz się z Danielem - pierwsze zmiany w skryptach serwera. 2 - Bimbol - 16.01.2016 getCursorPosition nie zwraca tablicy, tylko tabele. To różnica. Tablica jest jakby taką listą elementów, a tabela ma dane przechowywane w indeksach do których dostajemy się po nazwie. Jak np. pozycja.x pozycja.y, w tablicy było by coś takiego pozycja[0], pozycja[1]. Czyli w skrócie, tablica to kontener na dane układane jeden po drugim, tabela to również kontener ale tam dostęp do danych uzyskujemy przez podanie konkretnej nazwy indeksu. RE: [PL]Ucz się z Danielem - pierwsze zmiany w skryptach serwera. 2 - Ignisio - 16.01.2016 Wow. Nie wyłapałbym tego sam. Efekt pisania tych poradników przez kilka bitych godzin. Już poprawiam. Quarchodron, no fajna stronka, ale ja tu chcę pouczyć na przykładach Gothicowych. Można by to gdzieś przypiąć w jakimś temacie z polecanymi poradnikami, albo na wiki. #Uff, tylko na początku napisałem Tablica. RE: [PL]Ucz się z Danielem - pierwsze zmiany w skryptach serwera. 2 - Son Goku - 19.01.2016 Hmm. Dodałbym dla potomnych, aby się nie męczyli: local stex0 = createTexture(0, 0, 8192, 8192, "Menu_InGame.TGA"); to wyświetla tekstrę na cały ekran, chcę wam wyjaśnić współrzędne. Po kolei: 0 - Początek "X" od lewej 0- Początek "Y" od góry 8192 - Rozciągnięcie "X" w prawo (W tym przypadku na maxa) 8192 - Rozciągnięcie "Y" w dół (Jak wyżej) RE: [PL]Ucz się z Danielem - pierwsze zmiany w skryptach serwera. 2 - Quarchodron - 19.01.2016 Te X w Prawo to szerokość i odpowiednio wysokość. |