вот нашел у вас скрипт который мне в принципе подходит.
НО на Абисе нельзя марчить руны прям в шахтах...поэтому можете сюда пожалуйста воткнуть функцию рекола по 2-3 рунам из банке+
доход до самой пещеры при рунах прямо напротив входа+ рекол домой\разгруз в банк. т.к. какие пещеры и куда идти вы не знаете - лучше обьясните мне как сюда воткнуть ходьбу по прямой сразу после рекола...)
тоесть в итоге должно получится что-то типа "рекол по руне из банка к шахте - доход до пещеры - весь этот скрипт хождения и копания - рекол домой и разгрузка"
заранее благодарен
# 1) Запускаем функцию sub record_path()
# 2) Медленно при помощи клавиатуры ходим по желаемому маршруту копания
# 3) При прохождении всего маршрута (желательно вернуться на исходную позицию... И желательно запомнить ее расположение) пишем просто слово stop
# 4) Появится окошко ТЕКСТ. Там вы увидите набор примерно такого вида 9s9d8e4k6g
# 5) Копируем его и вставляем в кавычки в поля var path="ТУТ ВСТАВИТЬ" в функции main().
# 6) В функции sub record_path() поле var path="" оставить без изменений (пустым)
# 7) В обжект тайпах прописать тип pickaxe на кирку. Либо, у кого дойдут руки, отредактировать этот скрипт и вставить запрос на кирку прямо в клиенте (прим. ВЕТЕРАН).
#
Скрипт писал не я.
###########################################################
# Main Mining Function! Conf. Needed (look above)
############################################################
sub go_mining()
var cycle=1 # 1 - зациклировать, 0 - нет
var path="9s2sl9n3no9snio9niki" # все в кавычках очистить вначале скрипта
var test=0
var i=0
var j
UO.SetCatchBag("oresBag")
UO.DeleteJournal()
While i<LEN(path)
if VAL(path[i]) then
j=VAL(path[i])
i=i+1
else
j=1
endif
Repeat
if test<>1 then
UO.DeleteJournal()
mine_spot()
end if
UO.Print("New Location!")
if not make_step(path[i]) then
UO.Print("Probably Stuck!")
UO.Print("Hope it is a Worldsave")
endif
j=j-1
Until j==0
i = i + 1
if cycle && i==LEN(path) then
i=0
endif
Wend
end sub
############################################################
# Auxilliar Function. Little mod needed (look above)
############################################################
sub mine_spot()
var maxMineTime=1000
var times=0
var timeout=0
While UO.InJournal("You stop")==0
UO.Print("Mining time!")
UO.DeleteJournal()
UO.WaitTargetTile("1339",STR(UO.GetX()),STR(UO.GetY()),"0")
UO.UseType("pickaxe")
timeout=0
times = times +1
if times>20 then
wait(maxMineTime)
times = 0
endif
Repeat
timeout=timeout+200
Wait(200)
#UO.Print("Waiting...")
Until UO.InJournal("You put") OR UO.InJournal("There is no") OR timeout>maxMineTime
Wend
return 0
end sub
############################################################
# Main Path-Recording function!
############################################################
sub record_path()
var x
var y
var path=""
UO.DeleteJournal()
Repeat
x=UO.GetX()
y=UO.GetY()
if waitNewPos(x,y) then
path=path+extract_dir(x,y,UO.GetX(),UO.GetY())
endif
Until UO.InJournal("stop")
path = compressPath(path)
UO.TextClear()
UO.TextOpen()
UO.TextPrint("Your path is:")
UO.TextPrint(path)
end sub
############################################################
# Auxilliar sub.
############################################################
sub send_step(keycode,dir)
var x = UO.GetX()
var y = UO.GetY()
var timeout = 0
if UO.GetDir()<>dir then
UO.Press(keycode)
Repeat
wait(50)
Until UO.GetDir()==dir
endif
UO.Press(keycode)
Repeat
timeout=timeout+50
wait(50)
Until x<>UO.GetX() || y<>UO.GetY() || timeout>2000
if timeout>2000 then
return 0
endif
return 1
end sub
############################################################
# Bunch of auxilliar subs. No need to change anything!
############################################################
sub waitNewPos(x,y)
while x==UO.GetX() && y==UO.GetY()
if UO.InJournal("stop") then
return 0
endif
wend
return 1
end sub
sub compressPath(path)
Var i=0
Var j=0
Var newPath=""
while i<LEN(path)
j=1
while path[i]==path[i+1] AND j<9
i=i+1
j=j+1
wend
if j==1 then
newPath=newPath+path[i]
else
newPath=newPath+STR(j)+path[i]
endif
i=i+1
wend
return newPath
end sub
sub extract_dir(x,y,a,b)
if x>a then
if y==b then
return "i"
else
if y>b then
return "n"
else
return "w"
endif
endif
else
if x<a then
if y==b then
return "l"
else
if y>b then
return "e"
else
return "s"
endif
endif
else
if y>b then
return "o"
else
return "k"
endif
endif
endif
end sub
sub make_step(dir)
if dir=="e" then
send_step(39,1)
return 1
endif
if dir=="l" then
send_step(34,2)
return 1
endif
if dir=="s" then
send_step(40,3)
return 1
endif
if dir=="k" then
send_step(35,4)
return 1
endif
if dir=="w" then
send_step(37,5)
return 1
endif
if dir=="i" then
send_step(36,6)
return 1
endif
if dir=="n" then
send_step(38,7)
return 1
endif
if dir=="o" then
send_step(33,0)
return 1
endif
if dir=="d" then
While UO.Count("0x19b9")
UO.Drop("0x19b9")
wait(1000)
Wend
wait(200)
return 1
endif
UO.Print("Recall Time!")
return 0
end sub
Скрипт нужно оформлять по правилам и в нужном разделе форума © Mirage