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

[LUA] Zrozumienie LUA

Napisz nowy tematOdpowiedz do tematu Forum www.barsawiaots.fora.pl Strona Główna -> Tutoriale
Zobacz poprzedni temat :: Zobacz następny temat
Autor Wiadomość
Clawien
Barsawia Team - Mapper
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ź

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

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 Wink )
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 Wink
[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” Wink 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 Wink
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ć Very Happy


Post został pochwalony 1 raz
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: Śro 17:29, 10 Gru 2008 Temat postu:

Dzięki za wykonanie.

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