1. Najczęściej używane funkcje: end - kończy wykonywanie hotkeya (nie dezaktywuje go a po prostu kończy tak jakby już więcej w nim nie było instrukcji)
skip - przechodzi do następnego waypointa
dontlist - dzięki temu bot nie umieści aktywnego hotkeya na liście aktywnych hotkeyi -> użycie: auto 200 dontlist | safe healparalysis 'utani gran hur'
safe - wykona daną akcję, jeżeli aktualnie bot Cie nie leczy
listas 'TEKST' - przeciwieństwo 'donlist', zapisuje hotkey na liście, jako TEKST
2. Krótkie wprowadzenie. a) Co to zmienna?
- Jest to symbol odpowiadający jakiejś wartości.
Przykład:
$mp jest zmienną w Elfbocie, która jest liczbą Twojej aktualnej many
b) Jak porównać zmienną do wartości?
- Jak w matematyce, tylko, że zamiast '=' używasz '==': '==' '<' oraz '>', a jeżeli chcesz sprawdzić czy zmienna jest równa lub mniejsza niż dana wartość użyj '<='.
Przykład:
$mp > 300 zwróci prawdę, jeżeli masz mniej niż 300 many, jeżeli więcej to zwróci fałsz (także w wypadku równości).
c) Mogę porównać zmienną z inną zmienną?
- Oczywiście, że tak

Przykład:
$mp == $hp zwróci prawdę jeżeli masz tyle samo many ile hp
d) Dlaczego '==' a nie '='?
- Aby to wytłumaczyć musiałbym poświęcić na to oddzielny punkt poradnika. Powiem tyle, że jest tak w programowaniu i tego trzymają się twórcy Elfbota. Po prostu używaj '==' bez zbędnych pytań.
e) Dlaczego '>=' a nie '>=='?
- '>' oraz '<' ma zastosowanie tylko do porównywania wartości dlatego bot sam się 'domyśla' co chcesz zrobić i nie potrzebujesz pisać '>=='.
f) Jak sprawdzić czy X nie jest równe Y?
- Użyj '!='.
3. Jak stworzyć prosty warunek.
Aby powiedzieć botowi aby sprawdzić czy coś jest prawdą, użyj:
if [sprawdź czy prawda] { akcja }
Zawsze pamiętaj o '[', ']', '{' oraz '}'.
Przykład:
Wykona akcję zawartą pomiędzy '{' i '}', tylko wtedy, gdy będziesz mieć więcej niż 300 many.
Wyjaśnienie:
'$mp > 300' zamieni się w 'true' jeżeli będziesz mieć więcej niż 300 many, lub 'false' gdy mniej. Oczywiście pamiętaj, że 'akcja' zostanie wykonana tylko i wyłącznie wtedy gdy '$mp > 300' zwróci 'true' czyli prawdę.
4. Jak wykonać więcej niż jedną akcję. Na temat "|".
Jeżeli chcesz wykonać więcej niż jedną akcję oddziel je używając "|".
Przykład:
Wykona akcję1, akcję2 i na koniec akcję3.
Powinieneś/powinnaś wiedzieć też, że używając "|" możesz oddzielić kilka warunków (bloków "if"). Jest to tak samo proste jak z akcjami.
5. Bardziej zaawansowane warunki. Na temat "&&" i "||".
&& - identyczne z 'i', 'oraz'
|| - identyczne z 'albo', 'lub'
a) Używając '&&' możesz sprawić, że bot sprawdzi czy 2 warunki zwrócą true i tylko wtedy wykonał daną akcję.
Przykład:
Tak, tak. Możesz sprawdzić więcej niż tylko 2 warunki.
Wyjaśnienie:
Tak jak mówiłem wcześniej, bot wykona daną akcję tylko wtedy, gdy pomiędzy '[' i ']' znajdą się same true (prawdy). Poniżej jest kilka objaśnień.
$mp > 300 zwróci true, jeżeli masz więcej niż 300 many
$hp < 300 zwróci true, jeżeli masz mniej niż 300 hp
Jeżeli wszystkie warunki zwrócą true, powinno to wyglądać mniej więcej tak:
a gdy drugie zwróci false:
Akcja w takim wypadku nie zostanie wykonana.
b) Używając '||' możesz zmusić bota na wykonanie, jeżeli
KTÓRYKOLWIEK z warunków zwróci true.
Przykład:
Wyjaśnienie:
Przykład zwróci true, jeżeli masz więcej niż 300 many
mniej niż 300 hp. Znaczy to, że akcja zostanie wykonana, jeżeli jeden z tych warunków jest prawdziwy.
c) Możesz też użyć obydwóch, '||' oraz '&&' na raz!
Jak?
Po prostu użyj '(' oraz ')' do oddzielenia warunków. Jak poniżej:
Warunek umieszczony pomiędzy nawiasami '(' i ')' zwróci tylko JEDNO, true lub false. Oznacza to, że '($hp > 600 || $cap < 800)' zwróci tylko jedną wartość. Tak, więc akcja zostanie wykonana tylko wtedy, gdy masz więcej niż 300 many oraz (więcej niż 600 hp lub mniej niż 800 capa).
Nie jest to jeszcze tak dobrze wyjaśnione tak jak bym chciał. Więc:
($hp > 600 || $cap < 800) zwróci true, jeżeli jeden z warunków jest prawdą (true). Natomiast false, jeżeli obydwa są fałszem (false).
($hp > 600 && $cap < 800) zwróci true, jeżeli obydwa warunki są prawdą. False, jeżeli jeden z nich jest fałszem.
Identycznie jak w matematyce. Działania w nawiasach zwracają tylko jedną wartość:
5 - (5+4-5+3)
(5+4-5+3) zwróci 7. Czyli wynik to -2.
Konieczne jest używanie '&&' oraz '||'?
- nie, ale jeżeli chcesz uniknąć skomplikowanych kodów, w których nie da się połapać to lepiej ich używaj
Przykład:
Kod powyżej może być zapisany zgrabniej i bardziej oczywiście:
Nie uważaj, że ten drugi kod (z użyciem '&&') jest łatwiejszy, zgrabniej napisany i mniej skomplikowany?
PS: W niektórych przypadkach będziesz zmuszony/a do użycia kodów takich jak ten powyżej (bez '&&'). Wytłumaczę je w punkcie 6, poniżej.
6. Trochę bardziej skomplikowane warunki.
Ten punkt jest na temat sprawdzania wielu warunków i wykonywanie danych akcji, jeżeli dane warunki zostaną spełnione.
Przykład:
Wyjaśnienie:
Kod z przykładu sprawdzi czy masz mniej niż 400 hp. Jeżeli tak to dalej bot napotka warunek sprawdzający czy masz mniej niż 100 many, co skutkuje wykonaniem akcji 'say exura'. Następnie jest warunek sprawdzający czy masz więcej niż 100 many, jeżeli tak to bot wykona akcję 'say exura gran'.
Możliwe jest stworzenie jeszcze bardziej skomplikowany warunków, jak poniżej:
Poszukaj teraz początków i końców poszczególnych bloków 'if'. Nie dostajesz może bólu głowy? :P Dobrą wiadomością jest to, że raczej nie ma takiego skryptu, który by potrzebował tak skomplikowanych warunków. Przytoczyłem to, aby pokazać jak skomplikowane skrypty można napisać.
WAŻNE:
Jeżeli chcesz umieścić 2 bloku 'if' po sobie to oddziel je używając '|'. Jak poniżej:
Są to 2 bloki 'if' zawarte w innym bloku.
Skrypt powyżej jest całkowicie poprawny, podczas gdy ten poniżej jest totalną bzdurą.
7. Kiedy nie musisz używać "{", "}" oraz bloków 'if'.
eraz będą coraz bardziej skomplikowane i trudne do zrozumienia rzeczy, będziesz też musiał/a częściej testować wszystko, aby zrozumieć.
a) Kiedy nie trzeba stosować "{" i "}".
Szczerze to nie jest to zbyt trudne. Przypominam, że nie musisz ich unikać, ale jest to tak jak wcześniej pisałem pomoc w pisaniu przejrzystych skryptów i odnosi się tylko do tych małych, tak, więc skomplikowane skrypty ZAWSZE wymagają "{" i "}" (pisząc skomplikowane mam na myśli te z wieloma instrukcjami).
Przykładem gdzie można uniknąć pisania tych nawiasów klamrowych może być skrypt leczenia:
Bot sam rozpoznaje koniec warunku [$hp < 400] bo jest on zamknięty w nawiasach, potem tylko czyta do końca akcję.
Klamer możesz uniknąć też na końcu skryptu:
Musze przyznać, że nie jest to zbyt dobry pomysł. Głównie ze względu na przyszłe usprawnienia skryptu, możesz po prostu nie zauważyć braku nawiasów na końcu.
Ostatni przypadek, w którym można uniknąć nawiasów występuje, gdy masz ciąg warunków (bloków 'if'), tzn. jeżeli jest warunek, który spełniony ma pozwolić na sprawdzenie drugiego.
Nie wydaje Ci się, że po usunięciu klamer będzie ładniej?
Jak wspomniałem wcześniej, poeksperymentuj z tym, aby lepiej to zrozumieć.
WAŻNE!
Pamiętaj, że umieszczenie "|" po akcji (po deklaracji "if [warunek] akcja") równe jest rozpoczęciu nowej akcji, np. if [$hp < 300] say 'exura gran' | if [$hp < 500] say 'exura'
Jest to CAŁKOWICIE niepoprawne. b) Jak uniknąć bloków "if"?
Tak naprawdę to chodzi tu o usunięcie "if [sprawdź]" jednym wyrazem. Twórcy Elfbota dali "kilka" takich funkcji, aby ułatwić nam pisanie skryptów ;p
Przykłady:
auto 200 ifplayeronscreen playsound 'playeronscreen.wav' - Zagra muzykę z pliku 'playeronscreen.wav’, jeżeli znajdzie gracza na ekranie.
auto 200 safe healparalysis 'utani gran hur' - Użyje gran hura, jeżeli jesteś sparaliżowany i bot aktualnie Cie nie leczy (safe).
auto 200 targethplower 600 say 'exevo gran mas vis' - Użyje ue, jeżeli cel ma mniej niż 600 hp.
8. O wiadomościach.
ym razem nauczymy się wszystkiego na temat wiadomości. Jest to podstawowy aspekt zaawansowanych skryptów Elfbota. Potrzebny jest w refillerach czy auto responderach, oraz w miarę chęci do kierowanie postacią będącego całkowicie AFK kolegi. Pewnie teraz pytasz jak to kierować??? Proste. Ustawiasz żeby kolega pisał do Ciebie jak go ktoś, np. bije. Jeżeli ustawisz akcję na dane wiadomości to możesz sprawić, że postać kolegi zaatakuje PKera, da x loga, ucieknie do miasta, napisze do swoich kolegów żeby pomogli, itp... dosłownie COKOLWIEK! Nie chcesz się tego nauczyć?!?! Na pewno tak =]
Nadszedł czas, aby wytłumaczyć wszystko na temat otrzymanych wiadomości.
Istnieją 3 funkcje umożliwiające sprawdzenie tychże wiadomości na trzy różne sposoby:
$curmsg - sprawdza coś na temat każdej otrzymanej wiadomości (nie zalecam używania tej zmiennej w wypadku, gdy nie chcemy sprawdzać 2 razy tej samej wiadomości)
$lastmsg - sprawdza coś na temat ostatnio otrzymanej wiadomości
$lastnavmsg - sprawdza coś na temat ostatnio otrzymanej wiadomości nawigacyjnej (navigation system)
Aby "sprawdzić coś" na temat wiadomości musisz określić, CO. To 'co' zamieniasz ze słowem wartość z poniższego przykładu:
$lastmsg.wartość
Wcześniej dałem listę dostępnych wartości.
Przykład:
Sprawdzi czy nick tego co wysłał ostatnią wiadomość zawiera w sobie 'GM'.
Wyjaśnienie:
Jak zapewne zauważyłeś/aś użyłem operatora "?" aby sprawdzić czy nick zawiera 'GM'. Konkretnie pozwala on na sprawdzenie pozycji tekstu x w tekście y.
Akcja zostanie wykonana jeżeli bot znajdzie tekst2 w tekście1.
b) Wysyłanie wiadomości.
Jest to tylko spis funkcji wysyłających określone wiadomości na dane kanały:
gamesay 'something' - mówi coś na game-chat
guildsay 'something' - mówi coś na guild-chat
helpsay 'something' - mówi coś na help
npcsay 'something'- mówi coś na npc-chat
pm 'Furao Dutra' 'something' - wysyła wiadomości prywatną do Furao Dutra (jest to przypadkowy nick, który wymyśliłem na miejscu do użycia w poradniku)
rlsay 'something' - mówi coś na real-life chat
say 'something' - mówi coś na default chat
tradesay 'something' - mówi coś na trade
Mimo, że jest to tylko spis funkcji to czuję konieczność dania przykładu... ;p
Przykład:
Sprawdzi czy ostatnia otrzymana wiadomość została wysłana przez kogoś o napisie "GM" lub "CM" w nicku i napisze pm do Furao Dutra żeby go przelogował. Oczywiście ten przykład będzie spamować bo nie sprawdzam czy ta wiadomość jest taka sama jak ta sprawdzona poprzednio... Jest to jednak tylko przykład dlatego nie rozwinąłem go w celu utrzymania prostoty.
c) Użytek.
Wiem, że dałem już przykład ale opis praktycznego użycia jest raczej zalecany.
Jeżeli chcesz napisać komuś to co ktoś do Ciebie napisał:
Jeżeli chcesz napisać coś na default jeżeli dany gracz coś do Ciebie napisze:
Jeżeli chcesz aby Twój char coś zrobił po otrzymaniu określonej wiadomości od danego gracza użyj:
Pamiętaj, że to są tylko niedokończone przykłady, które nie będą wcale dobrze działać w praktyce. Do dobrego sprawdzania wiadomości TYLKO raz służy pętla o których poniżej. Jednak nie wykluczam, że można to zrobić bez pętli sprawdzając czy zmienna, np. $mes istnieje a jeżeli nie to zapisać do niej tekst danej wiadomości. W przypadku istnienia $mes sprawdzić jej wartość (poprzednią wiadomość) z wiadomością pobraną tym razem, jeżeli się nie pokrywają oznacza to otrzymanie nowej wiadomości.
9. Pętle.
Co to pętla?
- jest to wyznaczony blok skryptu wykonywany określoną ilość razy aż do zwrócenia końca pętli.
Po co to?
- głównie używa się tego do sprawdzenia czegoś na temat każdego stwora/gracza/npc na ekranie lub do sprawdzenia czegoś na temat każdej otrzymanej wiadomości
Są 3 typy pętli w Elfbocie:
a) foreach 'typlisty' $zmienna { akcja }
- tworzy listę czegoś (graczy, stworów lub wiadomości), co zdefiniujesz, jako 'typlisty' i zapisuje jej element do zmiennej wykonuje akcję i znowu zapisuje element listy do zmiennej, lecz już następny (czyli jeżeli jest to scarab, larva, scarab to po kolei najpierw zapisze do zmiennej scarab potem larva i na koniec scarab)
b) while [warunek] { akcja }
- wykonuje daną akcję tak długo jak warunek zwraca true
c) loop 'numer' { akcja }
- wykonuje akcję określoną ilość razy, podane, jako numer
WAŻNE!
Tylko pętla 'foreach' jest dozwolona w hotkeyach
9.1 Foreach
Jak zawsze na początek przykład
Wyśle wiadomość do Fura Dutra za każdym razem gdy wykryje kogoś na ekranie.
Jak to działa?
Słowo kluczone 'foreach' mówi botowi, że jest to pętla z listą typu 'floorplayers', która sprawia, że sprawdza on graczy znajdujących się na ekranie i będących na tym samym poziomie (floorze) co ty. Sprawdza każdego po kolei. Najpierw zapisuje dane gracza do zmiennej $var a potem wykonuje akcję. Pamiętaj, że nie musisz używać '$var' może to być cokolwiek, np. $jakistamgraczzekranu (polecam jednak jak najkrótsze nazwy ;p). Jest tu jednak pewien błąd (w przykładzie). Napisze on do 'Furao Dutra', że jesteś na swoim ekranie bo jak już pisałem sprawdza coś na temat graczy znajdujących się na Twoim ekranie, także Ciebie. Poprawny kod powinien wyglądać tak:
Dodałem tylko warunek, który nie pozwaala na wykonanie akcji jeżeli nick sprawdzanego gracza jest równy twojemu.
Poniżej zamieszczam dostępne typy list:
allcreatures, allplayers, allmonsters, floorcreatures, floorplayers, floormonsters, screencreatures, screenplayers, screenmonsters, shootablecreatures, shootableplayers, shootablemonsters, newmessages
Jak już powinieneś wiedzieć, możliwe jest sprawdzenie czegoś na temat każdej nowej otrzymanej wiadomości. Aby to zrobić użyj pętli 'newmessages'.
9.2 While
Jak już wcześniej wspomniałem, pętle 'while' wykonają daną akcję tylko wtedy gdy warunek zwróci true. Dla przykładu:
Będzie kupować 20 mana potionów tak długo jak długo nie będziesz mieć ich przynajmniej 200
Jak to działa?
- najpierw sprawdzi czy warunek "[$itemcount.268 < 200]" zwróci true. Jeżeli tak sie stanie zostanie wykonana akcja "buyitems 268 20".
W jakim typach skryptów ta pętla jest użyteczna?
- głównie w refillerach, itp.
9.3 Loop
Ta pętla wykona akcję tyle razy ile będziesz chciał.
Przykład:
Kupi 20 itemów o ID 268 2 razy.
Ta pętla raczej nie wymaga szczegółowego opisu... ;p
9.4 Szkielety funkcji
Jak można zauważyć w przykładach nie umieszczałem akcji w nawiasach klamrowych "{" i "}". Jeżeli zrozumiałeś punkt poradnika mówiący o tym kiedy te nawiasy trzeba i kiedy nie trzeba używać to powinno to być wiadome, że nie użyłem ich tutaj bo jest to koniec hotkeya i nie potrzeba było. Poniżej zamieszczam szkielety pętli:
9.5. Pętla w pętli?
Oczywiście, że jest to możliwe! Możesz umieścić je w ten sposób:
10 Jak pisać refillery
W końcu dotarliśmy do ostatniego już podpunktu tego poradnika. Refillery są znane, jako najtrudniejsza część pisania skryptów, mija się to dalece z prawdą. W pisaniu refillerów trudne jest tylko wymyślenie jak bot ma obkupywać postać. Ze względu na brak jednego uniwersalnego rozwiązania każdy musi myśleć nad własnym. Uwierz mi jednak, że jest to łatwiejsze, niż co niektóre naprawde trudne i skomplikowane skrypty. Dobra, teraz wytłumaczę wszystko, co jest potrzebne do napisania refillerów ^^
10.1 Główny zarys wiedzy, który potrzebujesz do tego typu skryptów.
a) Do pisania refillerów nie wystarczy kilka funkcji i deklaracje 2 zmiennych. Musisz też znać się na waypointach Elfbota, aby nie wtopić w mieście z pominięciem 'WALK' ;p
b) Waypointy refillera prawie zawsze trzeba zawrzeć w 2 'blokach'. Coś w tym stylu:
Raczej nie potrzeba dodatkowych wyjaśnień.
c) W oknie cavebota w prawym górnym rogu jest przycisk 'hotkeys'. Jest to lista hotkeyi (jeden hot na linię) wykonywanych tylko wtedy, gdy opcja 'follow waypoints' jest włączona.
d) Używaj "walk" do poruszania się w mieście i stand, jeżeli postać MUSI stanąć na dany SQM. Bot nigdy nie ominie waypointa "stand". Po więcej informacji zajrzyj do poradników. Po więcej informacji odsyłam do innych poradników.
10.2 Jak odkupić zaopatrzenie. a) Kilka akcji, które niekoniecznie, ale można użyć.
- depozyt przedmiotów
- wypłacenie pieniędzy z banku (obliczone ile potrzebujesz na podstawie pożądanej ich ilości i aktualnie posiadanej)
- sprawdzenie czy w baku jest kasa czy nie (jeżeli nie to wyloguj)
- jeżeli czas = hh:mm:ss zakończ botowanie i wyloguje
Oczywiście jest więcej rzeczy, które można zrobić przy użyciu Elfbota. To już zależy od Twojej wyobraźni i potrzeby ;p
b) Dobra, jestem w mieście. Co teraz?
Najpierw oczywiście dojdź postacią tam gdzie chcesz, np. mana shop i użyj jednej tych kilku (nie wszystkich) funkcji poniżej.
say - mówi coś na default, przykład: say hi
npcsay - mówi coś na kanale npc, przykład: npcsay trade
buyitems 268 20 - kupi 20 przedmiotów o ID 268 (musisz mieć otwarty trade z NPC)
settradeoptions - ustawia opcje tradu, przykład: settradeoptions 'buywithbps' 'ignorecap' 'ignoreequipped'
c) Ile jeszcze zostało?
Aby sprawdzić ile przedmiotów Ci zostało użyj tych funkcji i zmiennych:
countitems 268 - zmusi bota do użycia przedmiotu o danym ID (tutaj 268) sprawiając, że wyświetli się zielony tekst na środku ekranu: Using one of XXX YYY. Oczywiście przedmiot ten nie zostanie tak naprawdę użyty.
countitemsvisible 268 - jw. z tym, że liczy tylko te widocznie + brak zielonego tekstu
$itemcount.268 - zwraca ilość widocznych przedmiotów o danym ID (tutaj 268)
$itemcount.'mana potion' - zwraca ilość tych widocznych i nie widocznych przedmiotów o danej nazwie. Informacje pobiera z zielonego tekstu wyświetlanego podczas użycia określonego przedmiotu, czyli musisz użyć funkcji countitems IDITEMU lub po prostu użyć hotkeya.
Jeżeli dalej nie wiesz w jaki sposób masz kupić określoną ilość danych przedmiotów to powiem, że najpierw pomyśl jakie itemy chcesz kupić i co z nimi zrobić. Dla przykładu - speary, trzeba je najpierw kupić potem najlepiej umieścić w ręce.
- czyli, najlpierw piszemy hi potem trade i kupujemy (tutaj) 10 spearów.
PS: Zakładanie do ręki najlepiej zrobić w hotkeyu sprawdzając ilość spearów w danej ręce i tych ogólnie widocznych. Następnie jeżeli liczba ogólnie widocznych spearów przewyższa tą w ręce to zakładamy speary z bp (funkcja refillammo).
- uzupełnianie softów jest chyba najłatwiejszą rzeczą związaną z refillerem.
Jednak jak odkupić stracone manasy czy też health potiony? No właśnie! Jak już wcześniej wspomniałem twórcy Elfbota nie rozwiązali tego problemu tak jak byśmy tego chcieli. W tym temacie trzeba wykazać się inwencją twórczą

. Oczywiście powstał nie jeden pomysł na to, jednakże żaden z nich nie jest w 100% pewny, że za każdym razem dobrze nas obkupi. Wcale nie jest to spowodane brakiem dobrych funkcji w Elfie do tego tylko brakiem dobrego pomysłu.
- wypłacamy kase z banku
Ale co jeżeli chcesz wypłacić określoną ilość pieniędzy? Cóż, w grę wchodzi czysta matematyka. Piszesz działanie używając zmiennych, np:
11. Extras.
a) System time.
Aby sprawdzić czas w systemu należy użyć zmiennej $systime.
Przykład:
Przejdzie do labela o nazwie log o godzinie 7:50
Czas zwracany jest w formacie hh:mm:ss b) Losowe liczby
Od jakiegoś czasu hotkey nie musi być wykonywany zawsze co X milisekund.
Przykład:
Powyższy skrypt będzie wykonywany co 200 do 500 milisekund LOSOWO! Oznacza to, że może być wykonany po 200, 500 lub pomiędzy, np. 432 czy 324 milisekundach. Ale to nie wszystko! Przypisuje tutaj losową liczbę do zmiennej $randomheal. Jak widać przypisywana liczba jest w przedziału od 0 do 200 czyli może wykonić 0, 200 lub coś pomiędzy. Dzięki temu używając warunku if [$hp < 700 - $randomheal] sprawdzam czy moje hp jest mniejsze od 700 odjąć losową liczbę przydzieloną do $randomheal. Na koniec skrypt czeka (wait 500..1000) losowo od 500 do 1000 milisekund (0.5 do 1 sekundy).
12. Wyjaśnienia. a) label
Labelem (etykietą) można oznaczyć dowolną linijkę w cavebocie dzięki czemu będzie można w każdym momencie kazać botowi przejść do waypointów umieszczonych pod danym labelem. Wyjaśnię na przykładzie.
Załóżmy, że mamy waypointy na expie:
Teraz chcielibyśmy aby bot refillował jakieś itemy, np. speary. Musimy do tego oczywiście dodać waypointy do miasta a potem spowrotem na expa, czyli piszemy:
Koniec skryptu bot doszedł spowrotem na expa i przeszedł do początku skryptu i tak w kółko. Jest tu jednak jakiś błąd. Bot zawsze będzie szedl do miasta nie zależnie od tego czy brakuje nam spearów czy nie. Do tego użyjemy etykiet i skryptu "gotolabel".
Więc, aby powiedzieć botowi, że ma wrócić na początek skryptu a nie iść do miasta musimy najpierw umieścić etykietę tam gdzie zaczynają się waypointy na expie a następnie przed waypointami do miasta umieszczamy funkcję gotolabel (oczywiście jako action script). Etykietę nazwiemy start sugerującą, że jest ona umieszczona na początku skryptu. Teraz nasze waypointy wyglądają tak:
Teraz bot nie będzie chodzić do miasta ale znowu mamy problem. Bot NIGDY nie pójdzie do miasta. Musimy więc sprawdzać czy potrzebujemy spearów czy jeszcze mamy dostatecznie dużo aby kontynuować expienie. Do sprawdzenia ile mamy na sobie spearów użyjemy jednej z poniższych opcji:
Jako, że speary z reguły mamy wszystkie widoczne na ekranie my użyjemy tej pierwszej "$itemcount.ITEMID" (do refillowania manasów należy użyć tej drugiej w formie, np: $itemcount.'great mana potion' ). Sprawdzanie czy mamy za mało spearów odbywa się następująco:
SPEAR_ID zamieniamy na ID spear'a a X na liczbę przy, której bot ma iść do depo.
Teraz nasz skrypt powinien wyglądać tak:
Koniec! Autor: Bodajże linek