Forum www.barsawiaots.fora.pl Strona Główna
  FAQ  Szukaj  Użytkownicy  Grupy  Galerie   Rejestracja   Profil  Zaloguj się, by sprawdzić wiadomości  Zaloguj 

[Skryptowanie] Zejście do podziemi

Napisz nowy tematOdpowiedz do tematu Forum www.barsawiaots.fora.pl Strona Główna -> Tutoriale
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

PostWysł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 Wink.

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
Zobacz profil autora
Qbaz
Barsawia Team - Mapper
Barsawia Team - Mapper



Dołączył: 26 Cze 2008
Posty: 84
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysł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ćSmile

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
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

PostWysł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 Wink. 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ł Wink

Miłej nauki.


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Qbaz
Barsawia Team - Mapper
Barsawia Team - Mapper



Dołączył: 26 Cze 2008
Posty: 84
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysł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
Zobacz profil autora
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

PostWysł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
Zobacz profil autora
Khadrim
Administrator



Dołączył: 27 Sie 2008
Posty: 156
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Wrocław

PostWysłany: Czw 8:43, 25 Wrz 2008 Temat postu:

Coś pokombinujemy, może coś pożytecznego napiszę Wink Smile

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
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

PostWysł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
Zobacz profil autora
Wyświetl posty z ostatnich:
Napisz nowy tematOdpowiedz do tematu Forum www.barsawiaots.fora.pl Strona Główna -> Tutoriale Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1


Skocz do:  
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


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB Š 2001, 2005 phpBB Group
Theme bLock created by JR9 for stylerbb.net
Regulamin