Есть отличный скриптик от AGRS для этого дела. (viewtopic.php?p=70833#70833)
Но когда типов итемов много, приходится менять переменные и перезапускать его. (например перекладка регов из кучи мешков в один)
Требуется дополнить скрипт массивом и встроить перебор этого массива. Сам по этой части очень слаб...
Вот исходник:
sub Main()
;Константы
Var Chest = 0x4000463C ;Серийник сундука в котором лежат мешочки
Var BagType = 0x0E75 ;Графический тип мешочков (например паки)
Var ItemAmountNeeded = 44 ;Необходимое кол-во предметов (например 44)
Var ItemType = 0x0EED ;Графический тип предметов (например золотые монетки)
;Переменные
UO.UseObject('backpack') ;Открываем рюкзак
WaitDelay() ;Делаем задержку
UO.UseObject(Chest) ;Открываем сундук с мешками
WaitDelay() ;Делаем задержку
UO.IgnoreReset() ;Обнуляем игнор лист объектов
If UO.Count(ItemType) < ItemAmountNeeded Then ;Проверяем, вдруг у нас уже есть нужные предметы
Repeat ;Организуем цикл(1) по открыванию мешков из сундука одного за другим
UO.FindType(BagType, -1, Chest) ;Ищем мешок в сундуке
If UO.FindCount() Then ;Если(1) мешок найден, то лутаем его
UO.UseObject('finditem') ;Но сначала мешок надо открыть
WaitDelay() ;Делаем задержку
Repeat ;Организуем цикл(2) по поиску нужных предметов в открытом мешке
UO.FindType(ItemType, -1, 'lastcontainer') ;Ищем предметы в открытом мешке
If UO.FindCount() Then ;Если(2) предмет найден, то...
UO.MoveItem('finditem', Str(ItemAmountNeeded - UO.Count(ItemType)), 'backpack') ;Перемещаем недостающее кол-во себе в рюкзак
WaitDelay() ;Делаем задержку
EndIf ;Больше никаких если(2)! Идем дальше!
Until (UO.Count(ItemType) >= ItemAmountNeeded) Or (Not UO.FindCount()) ;Цикл(2) завершен если у нас достаточно предметов или мешок пуст
UO.Ignore('lastcontainer') ;Игнорируем мешок, ибо пустые мешки нам нах не нужны.
EndIf ;Больше никаких если(1)! Идем дальше!
UO.FindType(BagType, -1, Chest) ;Проверяем, есть ли еще мешки с предметами, в которых можно поживиться
Until (UO.Count(ItemType) >= ItemAmountNeeded) Or (Not UO.FindCount()) ;Цикл(1) завершен если мешки закончились или если предметов у нас уже достаточно
EndIf
UO.Print('Now You have '+Str(UO.Count(ItemType))+' of items in Your backpack.') ;Отчет о проделанной работе
end sub
sub WaitDelay()
Wait(750)
end sub
Перекладывание итемов. Помогите доделать.
Moderators: Murderator+, Murderator
Както в руки попал вот такои скрипт ...
Code: Select all
sub Sort_Regs()
var Sunduk=0x40126158
var Sunduk2=0x4003AC89
var bag=0x0E76
var i, bagg
DIM reg[8]
reg[0]=0x0F88
reg[1]=0x0F85
reg[2]=0x0F7A
reg[3]=0x0F86
reg[4]=0x0F8D
reg[5]=0x0F7B
reg[6]=0x0F8C
reg[7]=0x0F84
reg[8]=0x0F88
uo.FindType(bag,'-1',Sunduk)
while uo.FindCount()
if uo.FindCount() then
uo.moveitem('finditem')
wait(100)
uo.UseObject('finditem')
wait(100)
bagg=uo.GetSerial('finditem')
for i=0 to 8
uo.FindType(reg[i],'-1',bagg)
if uo.FindCount(0x0F88) then
uo.moveitem('finditem','all',Sunduk2)
wait(400)
end if
wait(100)
next
end if
uo.FindType(bag,'-1',Sunduk)
wend
end sub
duzik wrote:Както в руки попал вот такои скрипт ...
Пасибки за пример!

UO.FindType(ItemType, -1, 'lastcontainer') ;Ищем предметы в открытом мешке
ItemType на -1 и пересыпал все реги. Но задачка состоит в выборе из кучи мусора по мешкам немногих нужных вещей. Теперь я ее решу! )))