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 если чар правильно ходит и в конце вырубки разгрузился, настраиваем так же следующий модуль. Если логи ресаются быстро, то хватит и одного. У нас надо три полных пака нарубить прежде чем они реснутся.
Скрипт не проверяет сэйвы, поэтому может сбиться, сделать лишний шаг.