Мудришь ты все чего то. Одновременно работающие функции тебя крашнут.
Вот черновик модуля для бота-охотника.
Code:
sub KillIt()
VAR MaxVes = 600
VAR n=1
var animal='0x000D'
uo.ignorereset()
Repeat
uo.Set('finddistance', n)
uo.FindType(animal, -1, 'ground')
if uo.FindCount() then
uo.resend()
n=1
uo.attack('finditem')
repeat
if uo.GetDistance('finditem') > 2 then
walker(uo.GetX('finditem'),uo.GetY('finditem'),2) ; если цель дальше чем 2 тайла шагаем к ней
else
wait(100) ; или ждем пока убьем или умрем
end if
until uo.dead() or uo.GetX('finditem')==0
wait(100)
Loot()
else
n=n+1 ; увеличиваем диапазон поиска жертвы
if n>10 then ; если расстояние поиска больше 10 тайлов - начинаем искать рядом
n=1
endif
end if
Loot()
Until uo.Dead() || UO.Weight > MaxVes ; все это повторяем пока не перегрузимся или не умрем
hanthome() ; тащимся домой
end sub
Sub Loot()
var a
DIM G[7]
G[1] = '0x0EED'; деньги
G[2] = '0x0E76'; мешки
G[3] = '0x09AA'; пандоры
G[4] = '0x1BFB'; болты
G[5] = '0x0F3F'; стрелы
G[6] = '0x1087'; серьги
G[7] = '0x108A'; кольца
var body = '0x2006' ; тип трупа
var corpse
UO.Set('quiet','1')
uo.set('finddistance', '3')
###Вот это сообщение которое вылезает при быстром луте.###
UO.filterspeech('clear')
UO.filterspeech('add','[Surprize ! Fast loot detected!]')
UO.filterspeech('on')
###########################################################
uo.findtype(body, -1, 'ground')
if uo.findcount() and Uo.GetDistance( body ) < 4 then ; если труп ближе чем 4 тайла
corpse = uo.getSerial('finditem')
uo.deletejournal()
uo.useobject(corpse)
checklag()
if NOT uo.injournal("You can't do it here") then ; если ты можешь достать до трупа и можешь открыть его
For a=1 to 7 ; ищем предметы в трупе
UO.FindType( G[a], -1, corpse )
while UO.FindCount()
uo.moveitem('finditem','0','backpack')
wait(100)
UO.FindType( G[a], -1, corpse )
wend
next
endif
UO.Hide(corpse) ; скрываем труп
UO.Ignore(corpse) ; игнорируем для дальнейшего поиска
else
For a=1 to 7 ; ищем предметы на земле
UO.FindType(G[a],-1,'ground')
while UO.FindCount()
uo.moveitem('finditem','0','backpack')
wait(100)
UO.FindType(G[a],-1,'ground')
wend
next
endif
uo.Set('finddistance', 1)
UO.Set('quiet','0')
endsub
Это для охоты. Сканим вокруг себя начиная от 1 тайла до 10 тайлов. Если нашли - идем бить, убили - лутаем.
Тут можно посмотреть нужные тебе фишки и использовать в своем творении. Ходилки и каких то var возможно не хватает.
Будет глючить если рядом с тобой ктото убивает зверьков. Может пытаться открыть не тобой убитый труп а тот который ближе к тебе. Но когда охотишься в одиночку или ПВП 1 на 1 то сойдет. Зато просто используя LOOT можно облутить неограниченное количество трупов в куче. Пока хватит веса чара.