Задача: На полу разные инготы, добрать так, чтобы в сумме в бекпаке их было 20-21, и при этом не было ресов, которых меньше 3ёх.
Итак, пишу скрипт на БС, пока проблема с добором ресурсов:
Code: Select all
sub BlackSmithing()
Des.GetResource("0x1BF2", "-1", 20, "backpack", "ground")
while Des.FixResource("0x1BF2", "-1", 3, "backpack")
Des.GetResource("0x1BF2", "-1", 20, "backpack", "ground")
wend
endsub
; Функция выкидывает кучки в которых слишком мало итемов
; type - тип предмета
; color - цвет предмета
; count - нужное количество
; cont - где проверять
Sub Des.FixResource(type, color, count, cont)
uo.ignorereset()
uo.findtype(type, color, cont)
while uo.findcount()
if uo.getQuantity("finditem") < count then
Des.KillItem( uo.getSerial( "finditem" ) )
return true
endif
uo.ignore("finditem")
uo.findtype(type, color, cont)
wend
return false
endsub
; Функция докладывает нужное количество ресурсов
; type - тип предмета
; color - цвет предмета
; count - нужное количество
; cont - куда класть
; from - где искать
Sub Des.GetResource(type, color, count, cont, from)
var current = Des.GetQuantity(type, color, cont)
if count - current == 1 then
current = count - 2
endif
if count - current <= 0 then
return
endif
uo.ignorereset()
uo.findtype(type, color, from)
while uo.findcount()
if uo.getQuantity( "finditem" ) > 0 then
uo.moveitem("finditem", str(count-current), cont)
checklag()
current = Des.GetQuantity(type, color, cont)
if count - current == 1 then
current = count - 2
endif
if count - current <= 0 then
return true
endif
endif
uo.ignore("finditem") ; откуда-то берётся 0xFFFFFFF
; и самое странное - лезет invalid object !!!
uo.findtype(type, color, from)
wend
die( "No resource" )
endsub
; Функция возвращает количество предметов
; type - тип предмета
; color - цвет предмета
; cont - где проверять
Sub Des.GetQuantity(type, color, cont)
var count = 0;
uo.findtype(type, color, cont)
while uo.findcount()
count = count + uo.getQuantity( "finditem" )
uo.ignore("finditem")
uo.findtype(type, color, cont)
wend
uo.ignorereset()
return count
endsub
Где проблема - пометил в скрипте. Спать наверное пора, подскажите кто-нибудь свежую мысль, что не так ?..
Причём проблема вылезает после второго запуска скрипта, видимо инжект в память какую-то лабуду себе записывает..
PS: Пробывал заюзать форгет - не помог.
YokoInjection 505.18 VeNdOr
script.dll из стандартной поставки