Jesteś tutaj
Lazik triggerowy
Na zyczenie tego pana z poprzedniego piatku, albo soboty. To jest łazik triggerowy, ktory przy uzyciu magicznej kombinacji klawiszy ctrl+alt+shift+kierunek z numerycznej powoduje, ze postac idzie w danym kierunku do momentu az:
- zmeczy sie
- napotka skrzyzowanie z wiecej lub mniej niz dwoma wyjsciami
- pokona wiecej niz 10 krokow
Nie wiem na ile jest on nadal aktualny, czy cos tam sie nie pozmienialo na arkadii, ale moze sie nada. Jak widac ostatnia aktualizacja byla 3 lata temu :)
Nalezy wkleic do katalogu ze skryptami. Zaladowac poleceniem /calldll Reader Read {q_lazik.txt} w pliku q.txt i to by bylo na tyle.
W testowej wersji arkdiska 4.0.x jest plik o takiej samej nazwie zawierajacy lazik beztriggerowy produkcji Mandreka. Mozna pobawic sie oboma.
;-------------------------------------
;
; Lazik... nielegalny skrypt... choc odobinke...
; ale za to doskonaly. O wiele skrocilem czas spedzany na traktach.
;
; zaczeto: 17:47 02-05-31
; ostatnio: 17:47 02-05-31
; ostatnio: 16:09 02-06-16
; ostatnio: 13:06 02-06-17
;
;-------------------------------------
;
; Co zrobic aby uzywac?
; Wystarczy zaladowac i nacisnac csakp8 aby postac poszla traktem na polnoc.
; Bedzie szla traktem, az napotka skrzyzowanie.
;
;
;
; #lazik kierunek - idzie w danym kierunku do najblizszego rozwidlenia nie dalej niz 10 lokacji naprzod
; #lazikzeruj - przerywa chod
; #lazikczas - minimalna liczba milisekund miedzy wysylaniem krokow domyslnie 1000
;
; komendy #lazik kierunek sa podbindowane pod klawisze csa+kp1-9
;
;-------------------------------------
; minimalny czas miedzy wyslaniem krokow
/var lazikStepTime {1000}
; ostatni kierunek
/var lazikLast {bzzz}
; liczba krokow
/var lazikSteps {0}
; to jest alias wywolywaney przez dll'ke Arka... za kazdym razem gdy pojawia sie wyjscia
; dll'ka wywoluje ten alias z 10 parametrami okreslajacymi czy jest wyjscie n e s w ne se sw nw u d
/alias {lazik %0} _
{_
; liczba wyjsc
/math {tmp} {@Word($0,1)+@Word($0,2)+@Word($0,3)+@Word($0,4)+@Word($0,5)+@Word($0,6)+@Word($0,7)+@Word($0,8)+@Word($0,9)+@Word($0,10)};_
; ustalamy jaki krok wykonac
/if {$tmp==2 && $lazikSteps<10} _
{_
/var lazikNext {hmm};_
/if {$lazikLast!="s" && @Word($0,1)} {/var lazikNext {n}};_
/if {$lazikLast!="w" && @Word($0,2)} {/var lazikNext {e}};_
/if {$lazikLast!="n" && @Word($0,3)} {/var lazikNext {s}};_
/if {$lazikLast!="e" && @Word($0,4)} {/var lazikNext {w}};_
/if {$lazikLast!="sw" && @Word($0,5)} {/var lazikNext {ne}};_
/if {$lazikLast!="nw" && @Word($0,6)} {/var lazikNext {se}};_
/if {$lazikLast!="ne" && @Word($0,7)} {/var lazikNext {sw}};_
/if {$lazikLast!="se" && @Word($0,8)} {/var lazikNext {nw}};_
/if {$lazikLast!="d" && @Word($0,9)} {/var lazikNext {u}};_
/if {$lazikLast!="u" && @Word($0,10)} {/var lazikNext {d}};_
; wyslanie kroku
$lazikNext;_
; opozniamy
/if {@Math(@Time()-$lazikLastTime)<$lazikStepTime} {Rdelay @Math($lazikStepTime-@Time()+$lazikLastTime)};_
; zapamietujemy dla nastepnej iteracji
/var lazikLast {$lazikNext};_
/var lazikLastTime {@Time()};_
/math {lazikSteps} {$lazikSteps+1};_
}_
; czasem jednak lazika trzeba przerwac
{_
#lazikzeruj;_
/if {$tmp==0} {/showme {@AnsiBold()@ForeWhite()Koniec trasy zupelny brak wyjsc.@AnsiReset()}};_
/if {$tmp==1} {/showme {@AnsiBold()@ForeWhite()Koniec trasy brak wyjsc.@AnsiReset()}};_
/if {$tmp>2} {/showme {@AnsiBold()@ForeWhite()Koniec trasy za duzo wyjsc.@AnsiReset()}};_
/if {$lazikSteps>=10 && $tmp==2} {/showme {@AnsiBold()@ForeWhite()Koniec trasy za duzo krokow.@AnsiReset()}};_
}_
}
/alias {#lazik %0}_
{_
/calldll Arka WyjsciaDodajAkcje {lazik};_
/enablegroup {GlazikAction};_
/var lazikNext {hmm};_
/var lazikSteps {1};_
/if {@Len($0)} {/var lazikLast {$0}} {/var lazikLast {#lazikzeruj}};_
/var lazikLastTime {@Time()};_
$lazikLast;_
}
/alias {#lazikzeruj} _
{_
/calldll Arka WyjsciaUsunAkcje {lazik}};_
/disablegroup {GlazikZeruj};_
}
/alias {#lazikczas %0} _
{_
/if {@IsNumber($0)} _
{/if {$0>=0 && $0<=10000} {/var lazikStepTime {$0}}} _
{/showme {Zly parametr.};_
}
; jedyny trigger pojawiajacy sie przy zmeczniu
/action {, ze nie mozesz dalej podazac w tym kierunku.} {#lazikzeruj} {GlazikAction}
/macro {csakp7} {#lazik nw}
/macro {csakp8} {#lazik n}
/macro {csakp9} {#lazik ne}
/macro {csakp4} {#lazik w}
/macro {csakp5} {#lazikzeruj;/showme {@AnsiBold()@ForeYellow()Lazik wyzerowany.@AnsiReset()}}
/macro {csakp6} {#lazik e}
/macro {csakp1} {#lazik sw}
/macro {csakp2} {#lazik s}
/macro {csakp3} {#lazik se}
#lazikzeruj
- Odpowiedz
- 591 odsłon

Lazik triggerowy
W arkdisku 402beta jest lazik, ale niestety nie dziala.
Czy ktos moze rozwiazac te zagadke?
Oto plik:
;
; q_lazik.txt
; Lazik by Mandrek
;
; Korzysta z zmienncyh z pliku q_exits.txt oraz Strings.dll
;
;----------------------- INFORMACJE PLIKU ----------------------
;//:START
;//:NAME {Łazik}
;//:DESC {Automatyczny łazik po traktach}
;//:DESC {ctrl+s powoduje zmiane tempa lazika}
;//:DESC {}
;//:DESC {ctrl+klawiatura numeryczna powoduje podazanie traktem na okreslony kierunek}
;//:DESC {}
;//:DESC {aby sie zatrzymac, nalezy nacinac kierunek na numerycznej}
;//:DESC {}
;//:DESC {#lazik_czekaj+ - wlacza czekanie lazika (lazikBindWait=1)}
;//:DESC {}
;//:DESC {#lazik_czekaj- - wylacza czekanie lazika (lazikBindWait=0)}
;//:DESC {}
;//:DESC { Uruchamianie z klawiatury numerycznej znajduje sie w pliku q_chodzenie.txt}
;//:DESC { Plik korzysta z zmiennych, ustalanych przez Arka.dll w pliku q_exits.txt}
;//:DESC { Plik korzysta takze z Strings.dll}
;//:UPDATES {1.11.2004 - Dołączony do Arkdiska}
;//:FLAGS {lazikTempo|lazikBind|lazikBindWait}
/var lazikOn {0}
/VAR {lazikTempo} {1}
/VAR {lazikBind} {1}
/VAR {lazikBindWait} {0}
/var lazikBindActive {0}
/empty lazikExits
/empty lazikLastdir
/alias {#lazik_start %9} {/var lazikLastdir {$9};/var lazikOn {1};_
/sh {@ForeYellow()@BackBlue()Lazik wlaczony@AnsiReset()};_
/if ($lazikBind) {/sh {@ForeYellow()@BackBlue()Tryb Bindowania@AnsiReset()}} _
{/sh {@ForeYellow()@BackBlue()Tryb Automatyczny@AnsiReset()}};_
$9_
}
/alias #lazik_stop {/empty lazikLastdir;/var lazikOn {0}}
/alias #lazik {_
/IF ($lazikOn=1) _
{_
/empty lazikExits;_
; Sporzadzanie listy wyjsc
/if ($mW) {/calldll Strings AddItem {lazikExits,"w"}} ;_
/if ($mNW) {/calldll Strings AddItem {lazikExits,"nw"}};_
/if ($mN) {/calldll Strings AddItem {lazikExits,"n"}};_
/if ($mNE) {/calldll Strings AddItem {lazikExits,"ne"}};_
/if ($mE) {/calldll Strings AddItem {lazikExits,"e"}};_
/if ($mSE) {/calldll Strings AddItem {lazikExits,"se"}};_
/if ($mS) {/calldll Strings AddItem {lazikExits,"s"}};_
/if ($mSW) {/calldll Strings AddItem {lazikExits,"sw"}};_
/if ($mUp) {/calldll Strings AddItem {lazikExits,"u"}};_
/if ($mDw) {/calldll Strings AddItem {lazikExits,"d"}};_
/calldll Strings NumItems {tmp,"$lazikExits"};_
/IF ($tmp=2) _
{_
; Odwracanie ostatniego kierunku
/calldll Strings IsMember {tmp,"w|nw|n|ne|e|se|s|sw|u|d","$lazikLastdir"};_
/calldll Strings Item {lazikLastdir,"e|se|s|sw|w|nw|n|ne|d|u",$tmp};_
/calldll Strings IsMember {tmp,"$lazikExits","$lazikLastdir"};_
/if ($tmp>0) _
{_
/if ($tmp=1) {/var tmp {2}} {/var tmp {1}};_
/if ($lazikBind==0) _
{_
/var {lazikBindActive} {0};_
/calldll Strings Item {lazikLastdir,"$lazikExits","$tmp"};_
/if ($lazikTempo) {_
/event {Elazik} {$lazikTempo} {$lazikLastdir;/unevent {Elazik}}_
} {$lazikLastdir}_
} {_
/if ($lazikBindWait) {/event {Elazik} {$lazikTempo} {/calldll Strings Item {lazikLastdir,"$lazikExits","$tmp"};/sh {@AnsiBold()@ForeYellow()@BackBlue()Pojdziesz teraz na $lazikLastdir};/var {lazikBindActive} {1};/unevent {Elazik}}} _
{/calldll Strings Item {lazikLastdir,"$lazikExits","$tmp"};/sh {@AnsiBold()@ForeYellow()@BackBlue()Pojdziesz teraz na $lazikLastdir};/var {lazikBindActive} {0}}_
}_
}_
}_
}_
}
; Zmiana tempa lazika
/macro {cs} _
{_
/math {lazikTempo} {$lazikTempo+1};_
/if ($lazikTempo>5) {/var lazikTempo 0};_
/calldll Strings Item {tmp,"_
@AnsiBold()@ForeRed()@BackRed()Baardzo szybko|_
@AnsiBold()@ForeRed()@BackMagenta()Szybki Bieg|_
@AnsiBold()@ForeYellow()@BackYellow()Trucht|_
@AnsiBold()@ForeYellow()@BackGreen()Marsz|_
@AnsiBold()@ForeGreen()@BackGreen()Spacer|_
@AnsiBold()@ForeCyan()@BackGreen()Zolwie tempo_
",@Math($lazikTempo+1)};_
/sh $tmp_
}
/macro {kpstar} _
{_
/if ($lazikBindActive==1) _
{_
$lazikLastdir;_
/var {lazikBindActive} {0}_
}_
}
/alias {#lazik_czekaj+} _
{_
/VAR {lazikBindWait} {1};_
/if ($lazikBind==0) {/sh {@AnsiBold()@ForeRed()@BackBlue()Lazik jest w trybie automatycznym - czekanie nie ma wplywu @AnsiReset()}} _
{/sh {@AnsiBold()@ForeYellow()@BackBlue()Bindowanie bedzie czekac wg Tempa Lazika (CTRL + S) @AnsiReset()}}_
}
/alias {#lazik_czekaj-} _
{_
/VAR {lazikBindWait} {0};_
/if ($lazikBind==0) {/sh {@AnsiBold()@ForeRed()@BackBlue()Lazik jest w trybie automatycznym - czekanie nie ma wplywu @AnsiReset()}} _
{/sh {@AnsiBold()@ForeYellow()@BackBlue()Bindowanie natychmiastowe. @AnsiReset()}}_
}
Lazik triggerowy
Działa. A jeżeli Tobie nie działa, to wypada opisać problem.
Lazik triggerowy
No ja cisne ctrl+numeryczna i mam tak:
> Lazik wlaczony
Tryb Bindowania
sw
Ruszasz niespiesznie na poludniowy-zachod.
ale lazik dalej nie idzie:( Ctrl+S - dziala zmiana szybkosci biegania ale lazik nie idzie:(
co jest nie tak?
a tu jest moj plik q_chodzenie
; q_chodzene.txt
;
;//:START
;//:NAME {Chodzenie}
;//:DESC { Tutaj zawarte są: }
;//:DESC { -makra klawiatury numerycznej}
;//:DESC { -hasła do mahakamu}
;//:DESC { -skrypty szybkiego chodzenie po zgóry ustalonych traktach}
;//:DESC { -Kilka gotowych traktów}
;//:UPDATES {1.11.2004 (Mandrek) - obsługa lazika w makrach - nacisniece klawiatury numerycznej powoduje wylaczenia lazika, nacisniecie klawiatury numerycznej z CTRL - włączenie łazika}
/macro {kp8} {n;#lazik_stop}
/macro {kp2} {s;#lazik_stop}
/macro {kp4} {w;#lazik_stop}
/macro {kp6} {e;#lazik_stop}
/macro {kp1} {sw;#lazik_stop}
/macro {kp3} {se;#lazik_stop}
/macro {kp7} {nw;#lazik_stop}
/macro {kp9} {ne;#lazik_stop}
/macro {pgdn} {d;#lazik_stop}
/macro {pgup} {u;#lazik_stop}
/macro {akp8} {przemknij n;#lazik_stop}
/macro {akp2} {przemknij s;#lazik_stop}
/macro {akp4} {przemknij w;#lazik_stop}
/macro {akp6} {przemknij e;#lazik_stop}
/macro {akp1} {przemknij sw;#lazik_stop}
/macro {akp3} {przemknij se;#lazik_stop}
/macro {akp7} {przemknij nw;#lazik_stop}
/macro {akp9} {przemknij ne;#lazik_stop}
/macro {apgdn} {przemknij d;#lazik_stop}
/macro {apgup} {przemknij u;#lazik_stop}
/macro {ckp8} {#lazik_start n}
/macro {ckp2} {#lazik_start s}
/macro {ckp4} {#lazik_start w}
/macro {ckp6} {#lazik_start e}
/macro {ckp1} {#lazik_start sw}
/macro {ckp3} {#lazik_start se}
/macro {ckp7} {#lazik_start nw}
/macro {ckp9} {#lazik_start ne}
/macro {cspgdn} {#lazik_start d}
/macro {cspgup} {#lazik_start u}
Lazik triggerowy
Tryb bindowania oznacza, ze lazik bedzie robil "krok" po nacisnieciu klawisza (gwiazdka na kp). Zamiarem Mandreka była chyba zgodność z zasadami.
Ustaw w arkdiskeditorze flage lazikBind na 0, a lazik bedzie pomykal automatycznie.
Lazik triggerowy
Ale nic sie nie dzieje po nacisnieu gwiazdki:( a gdzie jest ten edytor? napisz jak mozesz co dokladnie zrobic
Lazik triggerowy
Rozumiem, ze masz arkdiska powyzej 4, w takim razie program arkdiskEditor.exe masz w glownym katalogu z arkdiskiem. Jest to takie cholernie niewygodne, psujace skrypty, zawieszajace sie (...) narzedzie do konfigurowania pakietow skryptow.
Na liscie po prawej kliknij2x plik q_lazik.txt, po lewej w pole podpisane lazikBind wpisz 0 (czyli najlepiej tempo 1, bind 0, bindwait 0) i kliknij przycisk ktory sie na dole pojawil zapisz zmiany.
Jezeli cos sie nie uda to zmien skrypt recznie, jak napisalem na twoj.necie
Lazik triggerowy
Zrobilem jak mowiles.
I nie dziala nadal. Roznica jest taka, ze mam cos takiego jak wezme ctrl+se
Ruszasz marszem na wschod.
Zwyczajna droga.
===] poludniowy-wschod i zachod.
> Lazik wlaczony
Tryb Automatyczny
se
Ruszasz marszem na poludniowy-wschod.
Lazik dalej nie idzie! Co sie dzieje?
Zadnych pomyslow?
Lazik triggerowy
Mam maly problem odnosnie lazika. Poniewaz mi tez nie dzialal postanowilem, ze kombinacje ctrl+ kp wykorzystam do lazenia po pustyni a lazik usune.
Ze skryptu q_chodzenie usunalem czesc odpowiedzialna za wlaczanie lazika a reszte przerobilem na to:
/macro {kp8} {n} /macro {kp2} {s} /macro {kp4} {w} /macro {kp6} {e} /macro {kp1} {sw} /macro {kp3} {se} /macro {kp7} {nw} /macro {kp9} {ne} /macro {pgdn} {d} /macro {pgup} {u} /macro {akp8} {przemknij n} /macro {akp2} {przemknij s} /macro {akp4} {przemknij w} /macro {akp6} {przemknij e} /macro {akp1} {przemknij sw} /macro {akp3} {przemknij se} /macro {akp7} {przemknij nw} /macro {akp9} {przemknij ne} /macro {apgdn} {przemknij d} /macro {apgup} {przemknij u}Krotko mowiac pousuwalem z tych macr wsystko co bylo zwiazane z lazikiem.
W skrypcie q-lazik usunalem zawartosc i w miejsce tego wpisalem to:
;------------------------------- ; chodzenie po pustyni ;------------------------------- /macro {ckp8} {n;sprawdz kierunki} /macro {ckp2} {s;sprawdz kierunki} /macro {ckp4} {w;sprawdz kierunki} /macro {ckp6} {e;sprawdz kierunki} /macro {ckp1} {sw;sprawdz kierunki} /macro {ckp3} {se;sprawdz kierunki} /macro {ckp7} {nw;sprawdz kierunki} /macro {ckp9} {ne;sprawdz kierunki} /macro {cspgdn} {d;sprawdz kieunki} /macro {cspgup} {u;sprawdz kierunki}Niby wszystko dziala, jest tylko jeden maly problem. Przy chodzeniu cos wysyla do muda komende "#lazik". Po kazdym kroku #lazik i "Slucham?".
Troche irytujace :). Nie moge znalezc skryptu odpowiedzialnego za to, nigdzie nie widze nic co by mialo #lazik. Nie mam pojecia co to moze byc.
Lazik triggerowy
#lazik to alias w skrypcie lazika, tez szukalem jego wywolania, ale nie znalazlem. Mozliwe ze jest to jakos zwiazane z arka.dll, a w takim wypadku nie pozbedziesz sie tego. Proponuje zdefiniowac alias ktory nie bedzie mial zadnego znaczenia, chociazby:
/alias {#lazik} {/showme {}}pokaze sie pusta linia, lub lepiej:
/alias {#lazik} {/var {Vsmiec} {1}}nie bedzie zauwazalne
Lazik triggerowy
Po raz kolejny dziekuje Meylot.
Lazik triggerowy
Alez nie ma za co :)
Wracajac do sprawy zawiego... Nie przychodzi mi nic do glowy, to po prostu MUSI dzialac. Sciagnalem przed chwila arkdisk taki jak na serwerze (bez mioch modyfikacji) i po wylaczeniu trybu bind lazik dziala bez zarzutu.
Sprobuj paru dzialan diagnostycznych,
sprawdz czy jakis cudem nie masz gdzies nadpisanego aliasu #lazik,
sprawdz czy jest on wywolywany (np wklej w linii komend ten kod i pochodz pare lokacji)
/alias {#lazik} {/showme {===============DZIALA=============}}upewnij sie ze dziala ci okienko z wyjsciami,
i ze masz dllke Arka.dll (komenda /dll)
Tyle moich pomyslow.
Lazik triggerowy
Po sciagnieciu czystej wersji lazik dziala.
Teraz pytanie czy lazik jest zwiazany z plikiem Twoje skrypty? no ja mam plik twoje_skrypty zamieniony na twoje skrypty2 bo inaczej mudmaster podwaja wszystko. Moze dlatego w moim ardisku lazik nie dziala?
Zrobilem tak - sciagnalem czysty arkdisk 4.. beta - Lazik dziala super.
Zmienilem nazwe q_twoje_skrypty na q_twoje skrypty2 no i w pliku q tez tak zeby to wczytywal - Lazik naDAL DZIALa. Niestety kiedy wkleilem juz moj plik twoje skrypty z moimi skryptami lazik przestal dzialac.
W pliku tym mam swoje skrypty na zaslone itd, nie widze, zeby cos kolidowalo z lazikiem. Maylot chcesz go zobaczyc na prv?