Логика то скрипта в принципе верная но для инжекта некоторые команды можно упростить.
Код
if uo.findtype(bag,"-1","backpack") then
uo.addobject('lootpack', 'finditem')
else
uo.addobject('lootpack', 'backpack')
end if
Каждый раз при вызове не обязательно закидывать в объекты серийник сумок. Но если все таки есть необходимость заюзать где то там еще то лучше добавлять в глобалки:
Код
uo.FindType(LootType,LootColour,'backpack')
If uo.FindCount()> 0 then
LootID = uo.getSerial('finditem')
uo.setGlobal('LootBag',LootID)
else
uo.setGlobal('LootBag','backpack')
endif
Если скининг поместить перед лутом то от скининга можно оставить только
Код
sub skining()
UO.WaitTargetObject('corpse')
UO.UseType('0x0EC4')
wait(500)
endsub
На некоторых старых шардах в пак трупа человека падает прическа. Когда в луте собираешь все (-1 -1) лучше заигнорить прически :
Код
Sub IgnorHair(corpse)
For var hair = 0x203B to 0x204D
UO.FindType(hair, -1, corpse)
if UO.FindCount() then
UO.Ignore('finditem')
endif
next
end sub
Вот тут либо убрать кусок строки с if либо дабавить endif
Код
if all == 1 then
if clear == 1 then
clearloot("corpse")
end if
allloot:
uo.findtype("-1","-1","corpse")
if uo.findCount() > 0 and Uo.GetDistance("corpse")<=2 then
;uo.useobject('finditem')
uo.moveitem("finditem", "-1", "lootpack")
wait(1000)
goto allloot
wait(200)
else if uo.findCount() == 0 then <----- открывается условие
uo.print('Corpse is now Ignored!')
uo.ignore("corpse", "on")
end if <---- и не закрывается
end if
Вообще в инжекте есть проверка поиска на дистанции
UO.FindType(body[a], -1, 'ground', LootDist)
Что делает не обязательным игнорирование всех трупов в округе.
В общем скрипт на треть можно подсократить и обновив команды оптимизировать. Писался чай для какой нибудь 5** вервии?