В качестве самой копалки взят стандартный скрипт НА мининг Олмера, я дописал ходилку по шахте (с помощью стандартного скрипа walker с форума yoko ), леталку в дом/шахту и выгрузку в сундук.
Скриптингу под инжу только учусь так что могут быть косяки, но вроде работает нормально.
Как настроить:
1) Вначале скрипта указать все ID и type переменным (переменные описаны), Обратите внимание, что в шахту летит он по звезде(советую маркать как можно ближе к первой точки которую будет копать персонаж), а домой по рунбуке.
2) В sub GOTOXY() - указываем координаты шахты, на данный момент работает под шахту в гз (столица), а так же количество элементов массива var count=54 ;индекс последнего элемента массива (POSX[index]) +1 так как первая координата 0)
Вроде все
P.S Можно сразу затестить на шахте в Столице, главное замените все ID и Type в переменных сверху. Если что пишите.
Code: Select all
var book='0x400C3F55'; ID рунбуки
var mark=2; Номер записи в рунбуке к дому
var Chest='0x40648F9E' ; Id Сундука куда скидываем руду (Ставить возле места телепортации к дому)
var pickaxeBag='0x40670747'; Сумка с кирками, должна быть в сундуке для руды
var pickaxe='0x0E85'; тип кирки
var star='0x4007FE02' ; ID звезды в шахту
var MaxWeight=750 ; Максимальный вес
sub start()
RecallHome()
UO.SetGlobal('pos',0)
UO.SetGlobal('n', 1)
UO.SetGlobal('flag',0)
var n1,pos
while not UO.Dead()
n1=val(UO.GetGlobal('n'))
pos=val(UO.GetGlobal('pos'))
wait(100)
uo.findtype(pickaxe,-1,'backpack')
wait(100)
if UO.Weight<MaxWeight and uo.findcount()> 0 then
if val(UO.GetGlobal('flag'))==1 then
UO.SetGlobal('n', n1-1)
UO.SetGlobal('flag',0)
endif
if pos<>n1 then
GOTOXY()
wait(100)
else if pos==n1 then
n1=val(UO.GetGlobal('n'))+1
UO.SetGlobal('n', n1)
UO.SetGlobal('n', n1)
startMin()
endif
else
RecallHome()
endif
wend
end sub
sub RecallHome()
uo.unequip('Rhand')
wait(100)
UO.Print('Летим домой!');
UO.WarMode(False)
uo.recall(book, mark)
wait(5500);
unloadOres();
end sub
sub unloadOres()
var i
DIM OreType[4]
OreType[0]=0x19B9
OreType[1]=0x19BA
OreType[2]=0x19B7
OreType[3]=0x19B8
UO.Print('Выгрузка');
uo.useobject(Chest)
For i=0 to 3
uo.findtype(OreType[i],-1,'backpack')
repeat
if uo.findcount() then
uo.MoveItem('finditem','0',Chest)
endif
wait(800)
uo.findtype(OreType[i],-1,'backpack')
until uo.findcount()==0
Next
uo.findtype(pickaxe,-1,'backpack')
if uo.findcount() <2 then
uo.useobject(pickaxeBag)
wait(400)
for i=0 to 1
uo.findtype(pickaxe,-1,'backpack')
wait(50)
if uo.findcount() <2 then
uo.findtype(pickaxe,-1,pickaxeBag)
uo.MoveItem('finditem','0','backpack')
wait(400)
endif
next
endif
ToMine()
end sub
sub ToMine()
UO.SetGlobal('pos',0)
UO.Print('Летим в шахту!');
UO.WarMode(False)
uo.useobject(star)
wait(5500)
end sub
sub GOTOXY() ;Координаты шахты (Столица империи)
var n=val(UO.GetGlobal('n'))
var pos=val(UO.GetGlobal('pos'));
var count=54 ;индекс последнего массива (POSX[index]) +1
DIM POSX[int(count)]
DIM POSY