Clawien
Barsawia Team - Mapper
Dołączył: 02 Mar 2008
Posty: 110
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: Czeladź
|
Wysłany: Śro 11:40, 10 Gru 2008 Temat postu: [LUA] Zrozumienie LUA |
|
1.
Na początku musimy zastanowić się jaki rodzaj skryptu będziemy chcieli zrobić.
Możemy wykonać movement/creature/talk action/action scripts.
-action script-
Skrypty tego rodzaju są najczęściej wykorzystywane przy questach. Jak sama nazwa wskazuje skrypt ten powoduje akcję . Powoduje zrobienie czegoś w momencie uzycia przedmiotu. Action scripts nie spowoduje niczego dopóki nie zrobimy czegoś aby go wlączyć (na przykład jeśli klikniemy na skrzynie, przełącznik od questa włączymy skrypt , jeśli nie klikniemy nic to również nic się nie stanie)
-movement script-
movement scripts jest najczęściej uzywany by wywolac akcje gdy ktos lub cos się porusza . Dlatego przy tym rodzaju skryptu nie musimy niczego używać wystarczy ze poruszamy się po czyms albo wykonamy ruch , a akcja zostanie wykonana.
-creature script-
Creature Script jest wykorzystywany na przykład dla ustawienia pierwszych przedmiotów z którymi gracz rozpoczyna grę. Możesz zmodyfikować wiele rzeczy, które są aktywowane przez postać gdy robi ona coś bardziej skomplikowanego (nie możesz zobaczyć i dotknąć tego).
Dla przykładu „Wysyłana jest do ciebie wiadomość gdy kogoś zabijesz albo zginiesz”
-talk action script-
Jak sama nazwa wskazuje akcja zostanie rozpoczeta gdy zaczniesz rozmawiać. Nie może zostać uzyta przez chodzenie itp. Tym sposobem możesz zrobić coś złego osobom, które na przykład przeklinają
2.
Początek każdego z tych skryptów jest inny.
action scripts zaczyna się tak:
Kod: | function onUse(cid, item, frompos, item2, topos) |
movement scripts zaczyna się tak:
Kod: | function onStepIn(cid, item, pos) |
lub
Kod: | function onStepOut(cid, item, pos) |
creature scripts zaczyna się inaczej zaleznosci co zacznie wykonywanie akcji. Jeśli chcesz żeby akcja została zaczęta gdy ktoś umiera wtedy:
Kod: | function onDie(cid, corpse) |
lub gdy ktoś się zaloguje:
Kod: | function onLogin(cid) |
talk action script zaczyna się:
Kod: | function onSay(cid, words, param) |
Wiele rzeczy musi zostać jeszcze dodanych aby utworzyć kompletny skrypt takich jak na przykład: item, action, unique ids które będą powodować rozpoczęcie akcji. Jeśli zrobisz action script, który ma zostać rozpoczęty w momencie uzycia dźwigni wtedy musisz wpisać jaki item id, action id albo unique id posiada ta dzwignia inaczej gra wyświetli ci błąd, ze nie wie co ma powodować rozpoczęcie akcji.
Nie rób akcji która może zostać rozpoczęta przy uzyciu zwykłego item id. Jest to głupie ponieważ spowoduje to ze wszystkie przedmioty posiadające taki sam item id będą powodować te same rzeczy.
(przykładowo mamy 2 takie same skrzynki na poi Quest i anihilatorze w momencie klikniecia w ta i tamta spowoduje to wykonanie takiej samej akcji = np. z anni soft boots )
Dlatego proponowane jest uzywanie unique id. Aby go uzyc musimy znaleźć wolny unique id (nie uzywany przez nic innego) a nastepnie w action script wpisac cos takiego:
Kod: | if item.uid == 1234 then |
Następnie musisz wpisac unique id 1234 do itema który ma spowodowac rozpoczęcie akcji (otwierasz map editor wstawiasz np. skrzynke otwierasz jej właściwości i wpisujesz 1234)
(1234 to tylko przykład)
3.
Kiedy zdecydujesz się jaki rodzaj skryptu chcesz stworzyć musisz wiedzieć jakie funkcję będziesz mógł uzyć. Jako, ze zapamiętanie wszystkich funkcji jakie oferuje lua dla Tibii może być trudne dlatego poniżej możemy zobaczyć ot taki pliczek
[link widoczny dla zalogowanych]
Zawiera on mnóstwo użytecznych funkcji, które możemy użyć skryptując w lua. Wyjaśnia on również funkcję „get” . Jest ona wykorzystywana do uzyskiwania informacji z gry potrzebnych aby wykonać akcję np. NPC od promocji uzywa "getPlayerVocation(cid)" do zebrania informacji jaki vocation id posiada gracz. Jeśli teraz uzyjesz funkcji „do” do wykonania akcji będzie to wyglądało tak „doPlayerSetVocation(cid,voc)” Spowoduje to akcję która zmieni profesję gracza na inną.
Dlatego w naszym przypadku zamiast „voc” wpiszemy id profesji, która ma otrzymać promocję.
Jednak to nie wystarczy. Gdyby każdy posiadający inną profesję zaczął rozmawiać z NPC zmieniałby on profesję na ustawioną w wartości „voc”. Dlatego musimy użyć funkcji „if”. Daje nam ona o wiele więcej opcji. Powoduje ona, że gra myśli: „jeśli player ma profesję id 3 wtedy zrobię to, inaczej zrobię coś innego” . Możesz wykorzystać tak dużo „if” ile potrzebujesz. „If” może zostać użyty przed wszystkimi funkcjami. Na przykład "if getPlayerSex" albo "if doPlayerRemoveMoney".
Jeśli tworzysz rozbudowanego NPC od sprzedaży wtedy potrzebujesz funkcji „if” ponieważ NPC musi odebrać pieniądze od gracza w chwili dania mu czegoś. Nikt chyba nie chce by NPC dawał komuś „free itemy” Dlatego musisz użyć funkcji "if doPlayerRemoveMoney". Jednak musisz nauczyć grę czym są pieniądze „Money”. Komputer nie wie wszystkiego dlatego na początku skryptu musisz wpisać takie coś:
Kod: | player_gold = getPlayerItemCount(cid,2148)
player_plat = getPlayerItemCount(cid,2152)*100
player_crys = getPlayerItemCount(cid,2160)*10000
player_money = player_gold + player_plat + player_crys |
To powinno nauczyć komputer jak działa system pieniężny.
Więc teraz NPC wie jaki item id posiadają pieniądze i potrafi wziąć również 2 platynki zamiast 200gp
Oczywiście nie weźmie niczego innego oprócz tego co pozwoliłeś mu wziąć wpisując odpowiednie id
Możesz spróbować stworzyć jakiś skrypt. Na początku otwórz sobie jakiś inny skrypt i usuń / dodaj to co chcesz stworzyć tak będzie po prostu łatwiej ^^
Wersja mocno beta jakby były błędy to pisać
Post został pochwalony 1 raz
|
|