Savage
Ethernal newbie
Joined: 16 Aug 2003
Posts: 236
Posted: Tue Sep 09, 2003 9:58 pm Post subject:
--------------------------------------------------------------------------------
Code:
Code: ;======================================================== sub lj() UO.Exec('terminate alarm') UO.Exec('exec alarm') while NOT UO.Dead() lj1() lj2() lj3() wend end sub
sub eat() UO.UseType("fish") ; any registered type of food end sub
sub unload() VAR TempRune=0x4008A39E ; serial of temporary rune markrune: UO.DeleteJournal() UO.WaitTargetObject(TempRune) UO.Cast('Mark') wait(4000) If UO.InJournal("spell fizzles") then goto markrune endif mrecal(0x4008A399) ; home serial of rune to store container logunload() mrecal(TempRune) end sub
sub chopit(ChopX,ChopY) VAR Count, Last=0 VAR MaxCount=200 ; delay of max time to chop one tree VAR MaxWeight=820 ; weight nearly to overload
if UO.Weight>MaxWeight then unload() endif repeat UO.DeleteJournal() If Last then UO.WaitTargetTile('lasttile') UO.UseObject("hatchet") ; Registered object Else UO.UseObject("hatchet") wait(400) UO.LClick(ChopX,ChopY) Last=1 endif Count=0 while NOT UO.InJournal("You put") AND NOT UO.InJournal("You hack") AND NOT UO.InJournal("There are no") AND NOT UO.InJournal("That is too") AND NOT UO.InJournal("It appears") AND NOT UO.InJournal("You can") AND NOT Count>MaxCount wait(50) Count=Count+1 wend if UO.InJournal("You hack") OR UO.InJournal("You put")then UO.DeleteJournal() endif until UO.InJournal("There are no") OR UO.InJournal("That is too") OR UO.InJournal("It appears") OR UO.InJournal("You can") OR Count>MaxCount end sub
;------------------ Walking, first X then Y --------------------------------
sub walk(dx,dy) VAR i, walkwait=400 If dx<>0 then If dx>0 then If UO.GetDir()<>2 then UO.Press(34) wait(walkwait) Endif For i=1 to dx UO.Press(34) wait(walkwait) next Else If UO.GetDir()<>6 then UO.Press(36) wait(walkwait) Endif For i=1 to dx*-1 UO.Press(36) wait(walkwait) next Endif
endif If dy<>0 then If dy>0 then If UO.GetDir()<>4 then UO.Press(35) wait(walkwait) Endif For i=1 to dy UO.Press(35) wait(walkwait) next Else If UO.GetDir()<>0 then UO.Press(33) wait(walkwait) Endif For i=1 to dy*-1 UO.Press(33) wait(walkwait) next Endif endif wait(1000) end sub
;------------------------- When You less HP then alarm ----------------- sub alarm() while NOT UO.Dead() wait(1000) if UO.Life<UO.GetMaxHP() then gong(1) endif wend end sub
sub lj1() VAR ct=1 DIM dbX[6],deX[6],dbY[6],deY[6],Dir[6] VAR i
;----- InitTrack----- dbX[1]=2078 ; Start track X coord. deX[1]=2078 ; End track X coord. dbY[1]=2082 ; Start track Y coord. deY[1]=2139 ; End Track Y coord. Dir[1]=1 ; Direction of walking 1 - N->S, -1 S->N
dbX[2]=2086 deX[2]=2086 dbY[2]=2130 deY[2]=2087 Dir[2]=-1 dbX[3]=2094 deX[3]=2094 dbY[3]=2073 deY[3]=2133 Dir[3]=1 dbX[4]=2102 deX[4]=2102 dbY[4]=2130 deY[4]=2096 Dir[4]=-1
dbX[5]=2102 dbY[5]=2096
mrecal(0x4009A638) ; start position
for ct=1 to 4 repeat tohide() chopit(278,171) chopit(362,253) walk(0,3*Dir[ct]) until UO.GetY()==deY[ct] eat() walk(dbX[ct+1]-deX[ct],dbY[ct+1]-deY[ct]) next mrecal(0x4008A399) ; home serial of rune to store container logunload()
; gong(2) end sub
sub lj2() VAR ct=1 DIM dbX[6],deX[6],dbY[6],deY[6],Dir[6] VAR i
;----- InitTrack----- dbX[1]=3382 deX[1]=3382 dbY[1]=426 deY[1]=474 Dir[1]=1
dbX[2]=3374 deX[2]=3374 dbY[2]=474 deY[2]=502 Dir[2]=1 dbX[3]=3366 deX[3]=3366 dbY[3]=516 deY[3]=484 Dir[3]=-1 dbX[4]=3358 deX[4]=3358 dbY[4]=510 deY[4]=432 Dir[4]=-1
dbX[5]=3358 dbY[5]=432
mrecal(0x400C018F) ; start position
for ct=1 to 4 repeat tohide() chopit(278,171) chopit(362,253) walk(0,3*Dir[ct]) until UO.GetY()==deY[ct] eat() walk(dbX[ct+1]-deX[ct],dbY[ct+1]-deY[ct]) next mrecal(0x4008A399) ; home serial of rune to store container logunload() end sub
sub lj3() VAR ct=1 DIM dbX[6],deX[6],dbY[6],deY[6],Dir[6] VAR i
;----- InitTrack----- dbX[1]=3266 deX[1]=3266 dbY[1]=261 deY[1]=326 Dir[1]=1
dbX[2]=3258 deX[2]=3258 dbY[2]=378 deY[2]=250 Dir[2]=-1 dbX[3]=3246 deX[3]=3246 dbY[3]=219 deY[3]=310 Dir[3]=1 dbX[4]=3238 deX[4]=3238 dbY[4]=315 deY[4]=348 Dir[4]=1
dbX[5]=3238 dbY[5]=348
mrecal(0x400822B6) ; start position
for ct=1 to 4 repeat tohide() chopit(278,171) chopit(362,253) walk(0,3*Dir[ct]) until UO.GetY()==deY[ct] eat() walk(dbX[ct+1]-deX[ct],dbY[ct+1]-deY[ct]) next mrecal(0x4008A399) ; home serial of rune to store container logunload() end sub
;----------------Recal and Mark faded rune ------------- sub mrecal(rune) repeat UO.DeleteJournal() UO.WaitTargetObject(rune) UO.Cast('Recal') wait(4000) until NOT UO.InJournal("spell fizzles") ; mesage of fizzle spell
markrune: If UO.InJournal("fades completely") then ; message of faded rune UO.DeleteJournal() UO.WaitTargetObject(rune) UO.Cast('Mark') endif wait(4000) If UO.InJournal("spell fizzles") then ; mesage of fizzle spell goto markrune endif end sub
;------------------------- UnLoad ---------------------------- sub logunload() UO.SetCatchBag('0x40082EBA') ; serial of store log container wait(500) begin: UO.FindType("log") ; log - registered type if UO.GetQuantity('finditem')>0 then UO.Grab('0','finditem') wait(800) ; time to wait for fastloot-detector goto begin endif UO.UnSetCatchBag() end sub
;------------------------ Hiding ------------------------------- sub tohide() while NOT UO.Hidden() UO.UseSkill('Hiding') wait(3000) wend end sub
;--------------- Play *.wav file ----------------------------- sub gong(times) VAR i for i=1 to times UO.Exec("playwav c:\game\uo\cow") ; ani *.wav file wait(1200) ; time to play sample at once next end sub
Last edited by Savage on Mon Oct 13, 2003 4:31 pm; edited 1 time in total
Savage
Ethernal newbie
Joined: 16 Aug 2003
Posts: 236
Posted: Tue Sep 09, 2003 9:58 pm Post subject: LumberJack script
--------------------------------------------------------------------------------
Писано для DRW так что не обижайтесь если что не так.
1. Необходимо поставвить патч вердаты на пеньки:
http://drguild.nm.ru/verdata.htm
2. Вырубаются деревья справа и слева от чара при хождении по координате X то есть напрваление N->S или S->N
3. Находим место которое подходит нам как начало дорожки и марчим там руну, координаты места забиваем в массив. Чар должен стоять по середине между двумя деревьями:
http://www.jetta.ru/lj.jpg
Проходим по дорожке до препядствия или до точки перед препядствием, но на три шага дальше последнего вырубленного дерева и забиваем координаты в массив. Далее переходим к следующей дорожке и забиваем координаты в следующий массив.
4. Правим сериалы рун на свои, так же сериал контэйнера для разгрузки. И пробуем запускать модуль lj1 если чар правильно ходит и в конце вырубки разгрузился, настраиваем так же следующий модуль. Если логи ресаются быстро, то хватит и одного. У нас надо три полных пака нарубить прежде чем они реснутся.
Скрипт не проверяет сэйвы, поэтому может сбиться, сделать лишний шаг.
|