Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Nazarian
Administrator
Dołączył: 01 Mar 2008
Posty: 973
Przeczytał: 0 tematów
Pomógł: 12 razy Ostrzeżeń: 0/5 Skąd: Wąchock/Rzeszów
|
Wysłany: Pią 21:24, 05 Wrz 2008 Temat postu: [Skryptowanie] Zejście do podziemi |
|
Witam i zapraszam do napisania wspólnie pierwszego skryptu. Mogą być pewne niejasności, wymagana jest podstawowa wiedza programistyczna, radzę przed przystąpieniem do lektury zapoznać się z elementarzem. Jeśli nic po nim nie wiecie, to nic, zobaczycie w praniu jak to wszystko wygląda.
Naszym zadaniem jest oskryptowanie przedmiotu o id 8120. Jest to zejście w podziemia. Chcemy, żeby po kliknięciu "Use" na rzeczonym obiekcie postać została przeniesiona o poziom niżej, w serce podziemia.
Aby tego dokonać, otwieramy notatnik lub inny program do edycji tekstu, ale na litość boską, niech to nie będzie word.
Dodawaniem skryptów zajmę się z oczywistych przyczyn sam, więc Wy swoje możecie pisać nawet bezpośrednio w mailach.
Nasz skrypt ma dotyczyć itemu, którego się używa. W przypadku większości skryptów (wyjątkiem są te od rajdów) każdy typ (przedmiot, czar, runa, npc) wymaga trzymania się pewnego określonego szablonu. Szablonem tym jest funkcja, którą wywołuje serwer w momencie użycia przedmiotu. Ma ona następującą postać:
Kod: | function onUse(cid, item, fromPosition, itemEx, toPosition)
end |
Skrypt każdego itemu, którego da się użyć, zawiera w sobie coś takiego. W wolnym miejscu między pierwszą linijką a end'em wpisujemy wszystko, co chcemy dzięki temu skryptowi zrobić.
cid (Creature IDentifier) to numer stworzenia, które było "autorem" akcji - czyli użyło przedmiotu.
Ponieważ tej samej konstrukcji używa się dla przedmiotów aktywowanych przez "Use" i "Use with...", mamy dalej 4 argumenty:
item - zmienna przechowująca informacje o itemie którego użyliśmy przez "Use with...".
fromPosition - pozycja itemu, który użyliśmy przez "Use with..."
itemEx - zmienna przechowująca informacje o itemie na który daliśmy "Use" albo wycelowaliśmy przedmiotem aktywowanym przez "Use with..."
toPosition - pozycja w/w itemu.
Wszystkie argumenty poza cid są złożone. Znaczy to tyle, że jeśli chcemy dobrać się do współrzędnej X użytego itemu, to piszemy toPosition.x, a jeśli interesuje nas id przedmiotu, który został użyty, piszemy item.id. Proste, prawda?
Pozycje zawierają: .x, .y, .z, natomiast itemy: .id, .uid, .aid, .type. Nie będę ich teraz wyjaśniał, nie ma potrzeby .
Zajmijmy się raczej naszym skryptem. To co napiszemy stanie się dokładnie w momencie, kiedy zrobimy "Use" na zejściu do podziemia. Jedyne, co musimy w takim momencie wykonać, to teleportować gracza. Zaglądamy do genialnej ściągi z funkcjami (jest w osobnym temacie) i szukamy co mogłoby nam się przydać. Znajdujemy następującą funkcję:
doTeleportThing(cid, newpos, <optional> pushmove)
Przenosi ona stworzenie o numerze cid w miejsce o współrzędnych newpos.
Zrobimy zatem coś takiego:
Kod: | function onUse(cid, item, fromPosition, itemEx, toPosition)
doTeleportThing(cid,{toPosition.x,toPosition.y,toPosition.z+1})
end |
Skąd tam te nawiasy klamrowe? newpos również zbudowane jest w złożony sposób, jak fromPosition i toPosition - przechowuje trzy rzeczy, wpsółrzędną x, y i z. Żeby dostać się osobno do każdej współrzędnej, trzeba napisać to właśnie tak. Gdybyśmy np. chcieli przenieść gracza o numerze cid w miejsce o współrzędnych 1000, 1000, 4 (4 oznacza piętro +3), napisalibyśmy:
doTeleportThing(cid, {1000,1000,3}). Kolejność w nawiasie to zawsze x,y,z.
Teraz jeszcze jedno małe wyjaśnienie, jak to wszystko działa:
W momencie użycia zejścia, gracz jest teleportowany do miejsca dokładnie o poziom niżej niż zejście. Dlatego musieliśmy do współrzędnej Z dodać jeden. Dodać, ponieważ dla serwera 0 to najwyższe piętro, a 15 najniższe.
Proste, prawda? :]
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
|
|
Qbaz
Barsawia Team - Mapper
Dołączył: 26 Cze 2008
Posty: 84
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Sob 13:08, 06 Wrz 2008 Temat postu: |
|
Powiem tak - dziękuję za ten poradnik. Nie wiem czy w tej chwili będę w stanie coś samemu napisać, ale spróbuję powolutku to opanować
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Nazarian
Administrator
Dołączył: 01 Mar 2008
Posty: 973
Przeczytał: 0 tematów
Pomógł: 12 razy Ostrzeżeń: 0/5 Skąd: Wąchock/Rzeszów
|
Wysłany: Sob 17:28, 06 Wrz 2008 Temat postu: |
|
W każdej chwili możesz pytać. Wiesz, dla mnie łatwy jest każdy język programowania, bo znam ich już 6, i z języka na język pewne rzeczy pozostają niezmienne. Wystarczy zastosować taką ogólną wiedzę do szczególnych zasad i samo leci . Ty też do tego dojdziesz jeśli będziesz wyjątkowo ciekawski.
Najważniejszy jest spis funkcji. Czasem nie wiadomo co zwracają, wtedy możecie mnie zapytać, a ja zaglądne w źródła jak nie będę wiedział
Miłej nauki.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Qbaz
Barsawia Team - Mapper
Dołączył: 26 Cze 2008
Posty: 84
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Nie 12:21, 07 Wrz 2008 Temat postu: |
|
Jeżeli można prosić to zamieść ten skrypt już w 100% wykonany:) Myślę, że to pomoże.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Nazarian
Administrator
Dołączył: 01 Mar 2008
Posty: 973
Przeczytał: 0 tematów
Pomógł: 12 razy Ostrzeżeń: 0/5 Skąd: Wąchock/Rzeszów
|
Wysłany: Nie 15:53, 07 Wrz 2008 Temat postu: |
|
Ten skrypt JEST w 100% wykonany. Za sprawdzenie, na co kliknąłeś itd. odpowiada plik xml z akcjami. A ten skrypt ma tylko brać kolesia, i przenosić go piętro w dół.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Khadrim
Administrator
Dołączył: 27 Sie 2008
Posty: 156
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Wrocław
|
Wysłany: Czw 8:43, 25 Wrz 2008 Temat postu: |
|
Coś pokombinujemy, może coś pożytecznego napiszę
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Nazarian
Administrator
Dołączył: 01 Mar 2008
Posty: 973
Przeczytał: 0 tematów
Pomógł: 12 razy Ostrzeżeń: 0/5 Skąd: Wąchock/Rzeszów
|
Wysłany: Czw 20:10, 25 Wrz 2008 Temat postu: |
|
W najbliższym czasie dodam tutorial jak napisać NPC. Z niego nauczycie się zdecydowanie więcej o składni, wyrażeniach regularnych, wyrażeniach warunkowych i funkcjach.
Dobrze byłoby mieć podstawy programowania do tego tematu.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
|