- ElfBot ElfBot - piszemy skrypty :)

WinMar

User
Zarejestrowany
Dołączył
Luty 27, 2012
Posty
34
Liczba reakcji
0
Autor: Adam.

Nasz?o mnie co?, wi?c musia?em to napisa?... :d[/SIZE]

?al patrze? jak niekt?rzy prosz? o tak proste skrypty, kt?re by sami napisali w ci?gu kilku sekund? :o Przybli?? wam tutaj t? "czarn? magi?". Spotka?em si? nawet z opini?, ?e trzeba by? skrypterem ?eby m?c je pisa? - nic podobnego (no mo?e troch? xD). Wystarczy zna? tylko dobre linki i nauczy? si? tych banalnych podstaw :p

Dobra, no to zaczynamy...


Na pocz?tek zajmijmy si? prostymi skrypcikami, na koniec dojdziemy do bardziej z?o?onych (nie ma trudnych skrypt?w). Na sam pocz?tek trzeba pomy?le? jak skrypt ma dzia?a?. Niby banalne? Ale np. zamienianie golda na cc itp. Mo?na se pomy?le?, no przecie? niech tylko u?yje. No niby tak... ale trzeba nakierowa? bota aby "nacisn??" te 100gp a nie 20gp. ?eby by?o ?miesznie, nie ma jeszcze funkcji zwracaj?cej na danej pozycji w bp ile ma golda (ile jest w kupce). Dlatego trzeba jako? "??czy?" funkcje. Do tej pory widzia?em skrypt na przenoszenie w miejsce bolt?w gp (wk?adanie do skutku, bo przecie? wi?cej ni? 100 nie da si? po??czy? - i to trzeba wykorzysta?). Jak ju? w?o?y to tego u?yje i wtedy przeniesie do bp. Nast?pnie funkcja ??czenia itemek b?dzie grupowa? i ??czy?.
Skomplikowane? Tylko w teorii :)
No dobra, wi?c trzeba wymy?li? jak skrypt b?dzie dzia?a?. Zacznijmy od czego? prostego - mo?e:

Wy??czanie cave gdy cap mniejszy ni? 50
Kod:
auto 100 if [COLOR="SeaGreen"][$cap < 50][/COLOR] [COLOR="RoyalBlue"]{setcavebot off}[/COLOR]

Ju? t?umacz? ka?de s??wko po kolei:

auto 100 - czyli wykonuje akcj? co 100 milisekund (1000 milisekund = 1 sekunda). Nie polecam dawa? np. na 1 bo mo?e nam po prostu zamula? gr?.
if - z ang. je?eli. Czyli teraz b?dzie wykonywana akcja je?eli co?...

...
$cap - jest to zmienna (troszk? ni?ej wyt?umacz? co to jest). Zwraca ona obecny stan naszego capa (co 100 milisekund stan jest sprawdzany ponownie). Wyobra?cie sobie, ?e za $cap podstawiacie obecn? ilo?? cap, wyjdzie na to samo. Pami?tajcie, ?e warunek (zmienna por?wnywana do czego?) zawsze jest zamkni?ta w [].
Dalej jest por?wnywana zmienna $cap (ilo?? obecnego cap) do 50. Znacznik "<" jest to znak mniejszo?ci (ni?ej opisz? wszystkie dost?pne operatory).
...

I teraz tak, je?eli $cap zwr?ci True (prawd? - to co jest na zielono. W tym wypadku je?eli cap b?dzie mniejszy od 50) to wykona dalsz? akcj? czyli to co jest na niebiesko. W?a?nie to jest akcja. Czyli co? co jest wykonywane przez elfbota. Akcje kt?re ma wykona? obiera si? w {}. Tutaj zastosowa?em setcavebot off. Samo s??wko "set" to tak jak by co? przypisuje (dobrze, jak to zapami?tacie. Czemu? Zobaczycie p??niej), a wi?c "setcavebot" m?wi na logik?, ?e zmienia co? w cavebocie. S??wka off nie musze chyba t?umaczy?. Dochodzimy do wniosku, ?e ta akcja wy??cza cavebota. Akcje bior? st?d: http://www.elfbot.com.pl/topic25.html


Obieca?em dok?adniej wyt?umaczy? dzia?anie zmiennej.

Zmienna
Wyobra?my sobie, ?e posta? ma 500 hp. Warto?? ci?gle si? zmienia. Zastosujemy tu zmienn? $hp.
Wnioskujemy z tego, ?e
$hp to to samo co TERAZ 500hp. (Czyli mo?emy sobie w my?lach zast?pi? i por?wna? do czego?). Sk?d bior? zmienne? Przecie? bym tylu nie zapami?ta? :p : http://www.elfbot.com.pl/topic15.html Dobrze te? zauwa?y?, ?e wszystkie zmienne s? poprzedzone znakiem $.



No to teraz czas na operatory, czyli co? dzi?ki czemu por?wnujemy zmienn? do danej liczby / innej zmiennej / czy tam czego chcecie xd


  • == - co? jest r?wne jak...
  • >= - co? jest r?wne lub wi?ksze od...
  • <= - co? jest r?wne lub mniejsze od...
  • != - co? nie jest r?wne
  • < - co? jest mniejsze
  • > - co? jest wi?ksze
  • && - co? i co?
  • || - lub

Wracaj?c do skryptu. Pomy?lcie na logik?, czemu wy??czam cavebota, a targeting nie? ;] Takie ma?o zadanko

...i ju? mo?ecie napisa? proste skrypty :p


"Bardziej skomplikowane skrypty". G?upie poj?cie lecz fajne w praktyce (przynajmniej dla mnie ;)). B?d? dalej si? opiera? na poprzednim skrypcie. Oczywi?cie za zmienn? $cap mo?ecie podstawi? co tylko chcecie, tak samo z akcj?. W?a?nie, akcj?, a czemu nie akcjami :D? Skrypt mo?e wykonywa? kilka akcji w jednym skrypcie (b?dzie je wykonywa? po kolei wi?c nie radze ich dawa? za du?o, chyba, ?e nam na tym nie zale?y). Jak je oddzieli?? No a taki fajnym znaczkiem
Kod:
 |
^^ Przypominam wam r?wnie?, ?e jak i przed, tak i za trzeba zrobi? odst?p (spacj?). Czyli dodaj?c now? akcj? do poprzedniego skryptu (powie dany tekst):

Kod:
auto 100 if [COLOR="SeaGreen"][$cap < 50][/COLOR] [COLOR="RoyalBlue"]{setcavebot off | say 'hihi ^^'}[/COLOR]

Tak, to tyle :)

Ale teraz pomy?lcie od strony bota i wykonywania tego skryptu. Gdy b?dzie mia? mniej ni? 50 cap wy??czy cavebota i powie dany tekst. To drugie pomi?my bo to tylko taki "dodatek" nikomu nie potrzebny. Tak, bot poczeka te 10 minut i samo nas w ko?cu lognie. Tylko jak w tym czasie np. znikn? nam krzy?yki i akurat na nasze nieszcz??cie potworek nas zaatakuje? To wtedy nie logniemy. Trzeba zrobi? co?, by nas wylogowa?o. S? dwie mo?liwo?ci (jest wi?cej ale opisz? na razie te bardziej popularne):

  • Xlog (co? jak by exit)
  • wylogowanie jak nie b?dzie krzy?yk?w

Pierwsza metoda niby prostsza, bo wtedy ogranicza si? tylko do dodania jednej akcji (xlog)i tyle. Tylko co jak b?dzie nas wtedy atakowa? jaki? potworek? Mo?e zako?czy? si? deadem :( A tak jak nas atakuje potworek to krzy?yki nam nie znikn? wi?c mo?emy u?y? metody drugiej.
I co nowego?
Nowe to tu b?dzie zastosowanie warunku w akcji.


Kod:
auto 100 if [COLOR="SeaGreen"][$cap < 50][/COLOR] [COLOR="RoyalBlue"]{setcavebot off | [COLOR="SeaGreen"]if [$battlesign == 0][/COLOR] logout}[/COLOR]

Po kolei... Bot sprawdzi czy cap jest mniejszy ni? 50. Je?eli zwr?ci True wykona dalsz? cz??? skryptu. Czyli wy??czy cavebota i... no i w?a?nie je?eli masz krzy?yki to nas nie wyloguje. Skrypt b?dzie wykonywany ci?gle bo ci?gle b?dzie zwraca? mniej ni? 50 capa a drugi warunek nie b?dzie spe?niony. Je?eli si? pogubi?e? to si? troch? cofnij i przeczytaj jeszcze raz od pocz?tku :p


Ale co jak warunek zwr?ci False (fa?sz)? Mo?na nic nie zrobi? bo wtedy nic si? nie stanie. Ale mo?emy te? zastosowa? "else". Jest to ca?kiem co? innego, nie ?adna akcja ani zmienna. Co? jak "if". Teraz zmienimy tak skrypt, ?e je?eli pierwszy warunek zwr?ci nieprawd? to wykona co? innego.

Kod:
auto 100 if [COLOR="SeaGreen"][$cap < 50][/COLOR] [COLOR="RoyalBlue"]{setcavebot off | [COLOR="SeaGreen"]if [$battlesign == 0][/COLOR] logout}[/COLOR] else [COLOR="RoyalBlue"]{setcavebot on}[/COLOR]

Przypu??my tak? sytuacj? - mamy mniej ni? 50 capa. Bot wy??czy? cave, nagle zjad? fooda i cap si? powi?kszy?. Wcze?niej by nie zrobi? nic. Po prostu przesta?by wykonywa? skrypt. Teraz, je?eli warunek zwr?ci false w??czy ponownie cavebota i zacznie znowu expi? a? nie b?dzie mia? mniej ni? 50 capa :]

PS: Taka ciekawostka, przy zmiennych zwracaj?cych true lub false nie trzeba pisa? "== true" bo wystarczy tylko nazw? zmiennej da? w [] :)


Tworzenie w?asnych zmiennych...

Tak, da si? dzi?ki poleceniu
Kod:
set $x [COLOR="Orange"]y[/COLOR]
Tym skryptem stworzyliby?my zmienn? kt?ra by mia?a po prostu warto?? y. A wywo?aliby?my j? tak:
Kod:
$x

Tak jak ju? wcze?niej napisa?em, warto sobie zapami?ta?, ?e set co? przypisuje... Jak to mo?na wykorzysta?? Zamiast y mo?emy podstawi? jak?? akcj?, cyfr?, skomplikowane r?wnanie. Mo?na te? u?y? do przejrzysto?ci cavebota. Np. masz ponad 300 waypoint?w. W pierwszym od razu przypisujesz sobie zmienne kt?re p??niej wykorzystasz i jak by co edytujesz sobie te dane i nie wg??biasz si? w waypointy... :) Mi te? s?u?y do (nie wiem czy kto? to tak u?ywa ale mi si? przydaje) stopowania innych skrypt?w. Np. gdy przez te waypointy chc? aby by? wykonywany ten skrypt.

Przyk?ad: Chc? aby na respie sprawdza? cap (za pomoc? skryptu napisanego wcze?niej) ale wracaj?c do banku ju? nie i wracaj?c na respa znowu sprawdza?. Na pocz?tek deklaruj? zmienn?:

Kod:
set $sprawdzaj 0

Na razie zmienna $sprawdzaj to 0. Teraz dodaj? taki skrypt:



Kod:
auto 100 if [COLOR="SeaGreen"][$cap < 50 && $sprawdzaj == 0][/COLOR] [COLOR="RoyalBlue"]{setcavebot off | [COLOR="SeaGreen"]if [$battlesign == 0][/COLOR] logout}[/COLOR] else [COLOR="RoyalBlue"]{setcavebot on}[/COLOR]


Aha, wspomn? teraz o && bo dopiero teraz mam okazj? :p Zast?puje to s??wko "i". Czyli tutaj akurat wykona skrypt gdy cap b?dzie mniejszy i zmienna b?dzie r?wna?a si? 0. Je?eli kt?ry? z warunk?w zwr?ci false to nie zostanie wykonana akcja (chyba, ?e mamy else). No wi?c mamy ju? takie cudo ;p Ale jeszcze nie chc? aby przy wracaniu do depo mnie wylogowa?o. Zatem gdy ju? warunek mi sprawdzi w cavebocie czy ma i?? do depo i b?dzie szed? to dodam jescze taki skrypt:

Kod:
set $sprawdzaj 1

Zamieni zmienn? $sprawdzaj na 1. W takim razie warunek si? nie wykona. Dlatego je?eli doda?em, ?e przez ca?y resp $zmienna ma mie? 0 a wracaj?c do banku ma mie? 1 to skrypt wykona akcj? (nie licz?c else) tylko na respie bo tylko tam obydwa warunki zwr?c? TRUE. Na dodatek mo?na sobie doda? na hota taki skrypt:

Kod:
say $sprawdzaj

Wtedy wypowie zmienn?. Mi to s?u?y do sprawdzania jaka dana zmienna ma aktualnie warto?? (jak si? wykona? skrypt). Polecam tylko przy jego pisaniu, p??niej jest niepotrzebny ;p







No to na tyle, Oceniajcie i krytykujcie ;) Piszcie te?, czego brakuje - ja my?l?, ?e te podstawy powinny pocz?tkuj?cemu wystarczy?.


Pozdrawiam.
 
Odp: ElfBot - piszemy skrypty :)

Slaby poradnik, jak w cavebocie za duzo tekstu troche, takie cos trzeba pisac krotko, tresciwie i zrozumiale, bo duzo osob nie ma ochoty czytac tak dlugich poradnikow.
Poza tym nie opisane duzo rzeczy i nie wyjasnione. Np po co pisac auto x. Kiedy nie dawac i co sie wtedy stanie... W ogole nie ma setcolor i pos...
Jedyny plus to to, ze jako tako sa wytlumaczone wlasne zmienne ktore malo kto ogarnia bo nie wie kiedy i do czego je stosowac... Jak juz kopiujesz to jakies konkrety a nie cos slabego ;<
 
Back
Do góry