Page 1 of 1
Разгрузка
Posted: 2012-12-31 00:20:38
by CxC
в некоторых местах делал специально через массивы, не винить ))
Code: Select all
VAR Sunduk1 ='0x401A743D'; шкура
VAR Sunduk2 ='0x4050641A'; мясо
VAR i
..........................
DIM Shkyra[1]
Shkyra[1] = '0x1067'
DIM Myso[3]
Myso[1] = '0x09F1' # мясо
Myso[2] = '0x09B9' # мясо птицы
Myso[3] = '0x1607' # мясо курицы
...................................
UO.Set('finddistance','2')
UO.FindType('0x0E41','-1','ground')
if UO.FindCount() > 0 then
if uo.getserial('finditem') == Sunduk1 then
uo.setreceivingcontainer(Sunduk1)
for i=1 to 1
while UO.Count( Shkyra[i] ) > 0
uo.findtype(Shkyra[i],"-1",'backpack')
if UO.FindCount()>0 then
UO.Grab("0","finditem")
wait(100)
end if
wend
next
end if
end if
UO.FindType('0x0E41','-1','ground')
if UO.FindCount() > 0 then
if uo.getserial('finditem') == Sunduk2 then
uo.setreceivingcontainer(Sunduk2)
for i=1 to 3
while UO.Count( Myso[i] ) > 0
uo.findtype(Myso[i],"-1",'backpack')
if UO.FindCount()>0 then
UO.Grab("0","finditem")
wait(700)
end if
wend
next
end if
end if
.........................................
endsub
рассказываю в чем косяк. Мне надо чтоб скрипт искал сундук по ИД, если есть - разружал бекпак, если нет - искал следующий. Если типы сундуков
Code: Select all
UO.FindType('0x0E41','-1','ground')
разные, то работает норм, а вот если одинаковые и доступны на финддистенс, то один массив разгружает, а второй нет. Где ошибка? И как правильно написать, подскажите, пожалуйста
Re: Разгрузка
Posted: 2012-12-31 00:31:51
by CxC
как вариант, искать по цвету. Так скрипт работает, но меня это немного не устраивает
Code: Select all
UO.FindType('0x0E43','0x055F','ground')
if UO.FindCount() > 0 then
uo.setreceivingcontainer('finditem')
for i=1 to 1
while UO.Count( Shkyra[i] ) > 0
uo.findtype(Shkyra[i],"-1",'backpack')
if UO.FindCount()>0 then
UO.Grab("0","finditem")
wait(100)
end if
wend
next
end if
end if
UO.FindType('0x0E43','0x0000','ground')
if UO.FindCount() > 0 then
uo.setreceivingcontainer('finditem')
for i=1 to 3
while UO.Count( Myso[i] ) > 0
uo.findtype(Myso[i],"-1",'backpack')
if UO.FindCount()>0 then
UO.Grab("0","finditem")
wait(100)
end if
wend
next
end if
end if
Re: Разгрузка
Posted: 2012-12-31 07:53:57
by Mirage
1) зачем заморачиваться с типами если у тебя известны ID ? Обычную открывашку сделай.
2) Если ты на бесте то там выявили причину не работы массмува.
3) если все таки хочешь любстись с типами - игнорируй и делай игнорересет в конце. А то у тебя получается если рядом 2 сундука то будет находиться всегда первый.
Re: Разгрузка
Posted: 2012-12-31 10:46:12
by CxC
Mirage wrote:1) зачем заморачиваться с типами если у тебя известны ID ? Обычную открывашку сделай.
2) Если ты на бесте то там выявили причину не работы массмува.
3) если все таки хочешь любстись с типами - игнорируй и делай игнорересет в конце. А то у тебя получается если рядом 2 сундука то будет находиться всегда первый.
1) А как я тебе буду искать сундук по ид? ) И если не находит - не разгружать этот массив
2) да, на бесте. Какую причину? я не читал
3) сейчас попробую
Re: Разгрузка
Posted: 2012-12-31 11:21:32
by Mirage
Инжект и клиент запоминают ID предмета и могут его использовать в радиусе досягаемости.
У меня рудокоп скидывал руду даже не открывая сундук. Главное чтобы стоял рядом.
Либо я делал разгрузку - 1 сундук, в нем коробки и в них уже фасовал. В сундук можно до 255 ящиков или мешков забить. Более чем достаточно для разгрузки лута
Массмув лечится новой dll и увеличенными паузами - на форуме у Славы игроки нашли решение. А с массмувом у тебя 2/3 скрипта можно выкидывать.
Code: Select all
PUTLoot2(0x1085, 0x108b, '-1', SundLoot, SundBi,'','','') ; бижутерия
PUTLoot2(0x1f05, 0x1f0a, '-1', SundLoot, SundBi,'','','') ; бижутерия
PUTLoot2(0xf0f, 0xf30, '-1', SundLoot, SundBi,'','','') ; камни
PUTLoot2(0x1f5d, 0x1f6c, '0', SundLoot, SundSW,'','','')
PUTLoot2(0x1f19, 0x1f5c, '0', SundLoot, SundS,'','','') ; scroll 1-6
PUTLoot2(0xF06, 0xF0D, '-1', SundLoot, SundB,'','','') ; бутылки
PUTLoot2(0xf78, 0xf91, '0', SundLoot, SundR,'','','') ; реагенты
PUTLoot(0x14ef, 0x0487, SundLoot, SundR,'','','') ; регдиды
PUTLoot2(0xe9c, 0xe9e, '0', SundLoot, SundD,'','','') ; мусор на продажу
и 1 процедура для перекладывания.
Re: Разгрузка
Posted: 2012-12-31 11:46:51
by CxC
Mirage wrote:Инжект и клиент запоминают ID предмета и могут его использовать в радиусе досягаемости.
У меня рудокоп скидывал руду даже не открывая сундук. Главное чтобы стоял рядом.
Либо я делал разгрузку - 1 сундук, в нем коробки и в них уже фасовал. В сундук можно до 255 ящиков или мешков забить. Более чем достаточно для разгрузки лута
Массмув лечится новой dll и увеличенными паузами - на форуме у Славы игроки нашли решение. А с массмувом у тебя 2/3 скрипта можно выкидывать.
т.е. без поиска сундука? тогда инжект же будет тупить, если один сундук найдет, а второй нет ) хочу массивами, так удобнее )
В один сундук не вариант, т.к. живу не 1 в доме и есть где-то общие мешки, где-то личные )
Re: Разгрузка
Posted: 2012-12-31 12:51:20
by CxC
Спасибо, Алу! Нашел решение с твоего пинка )
Сначала игнорим все сундуки вот этого типа
Code: Select all
UO.FindType('0x0E41','-1','ground')
которые не используются в скрипте. Вот так:
Code: Select all
UO.Ignore(Sunduk4)
UO.Ignore(Sunduk5)
UO.Ignore(Sunduk6)
UO.Ignore(Sunduk7)
Ну а потом игнорим при самой выгрузке )
Code: Select all
UO.FindType('0x0E41','-1','ground')
if UO.FindCount() > 0 then
if uo.getserial('finditem') == Sunduk1 then
uo.setreceivingcontainer(Sunduk1)
for i=1 to 1
while UO.Count( Shkyra[i] ) > 0
uo.findtype(Shkyra[i],"-1",'backpack')
if UO.FindCount()>0 then
UO.Grab("0","finditem")
wait(100)
end if
wend
next
end if
end if
UO.Ignore(Sunduk1)
UO.FindType('0x0E41','-1','ground')
if UO.FindCount() > 0 then
if uo.getserial('finditem') == Sunduk2 then
uo.setreceivingcontainer(Sunduk2)
for i=1 to 3
while UO.Count( Myso[i] ) > 0
uo.findtype(Myso[i],"-1",'backpack')
if UO.FindCount()>0 then
UO.Grab("0","finditem")
wait(700)
end if
wend
next
end if
end if
UO.Ignore(Sunduk2)
ну в конце
Code: Select all
UO.Ignorereset()
uo.charprint(printcolour, 'Закончил!' )
Re: Разгрузка
Posted: 2012-12-31 15:15:50
by CxC
блин, все равно не работает

как вытаскивать из списка игнора один итем, а не все?
Re: Разгрузка
Posted: 2012-12-31 15:34:14
by CxC
Решил проблему игнором изначально всех сундуков и затем вытаскиванием нужного сундука перед финд тайпом. Возникло сомнение теперь с
Code: Select all
UO.FindType('0x0E41','-1','ground')
if UO.FindCount() > 0 then
if uo.getserial('finditem') == Sunduk1 then
надо или нет, ведь в игноре будут все сундуки, кроме одного. Подумаю
Re: Разгрузка
Posted: 2012-12-31 18:39:11
by ZeroDX
чё-то я не вдупляю, сундуки есть, их id есть, зачем их искать? их может не быть? как так?
Re: Разгрузка
Posted: 2012-12-31 20:29:11
by Mirage
Вот и я спросил

Re: Разгрузка
Posted: 2013-01-03 16:04:11
by CxC
ZeroDX wrote:чё-то я не вдупляю, сундуки есть, их id есть, зачем их искать? их может не быть? как так?
сундуки в разных местах. Чисто физически чар не может достать до сундука с камнями при скидывании логов, к примеру
Re: Разгрузка
Posted: 2013-01-03 17:06:38
by Mirage
Ну так как бы можно передвинуть или растащить сортировку на 2 скрипта или проверять координаты чара и сортировать только то что нужно.
Для массива предметов от 0 до 100
если Х чара равно 1234 и Y чара = 5678 тогда
для предметов от 0 до 50 перекидываем в сундук А
в противном случае если X = 4321 и Y = 7654 тогда
для массива предметов от 50 до 100 перекидываем в сундук Б
в противном случае - не перекидываем.
хз, искать типы сундуков, потом их сравнивать... Тем более что на 1 тайл если Слава опять не понакрутил можно закинуть больше 15 сундуков...
Но естесно дело вкуса.
Re: Разгрузка
Posted: 2013-01-03 17:32:49
by CxC
Mirage wrote:хз, искать типы сундуков, потом их сравнивать... Тем более что на 1 тайл если Слава опять не понакрутил можно закинуть больше 15 сундуков...
Но естесно дело вкуса.
примерно так (цифры - места разгрузки)

по координатам не удобно, надо точно на то место вставать, если не огваривать диапазон. Если с диапазоном - нет мобильности и универсальности
Re: Разгрузка
Posted: 2013-01-03 22:01:02
by ZeroDX
ну как бы так
Code: Select all
if uo.getdistance(sunduk1) <= 1 then
start = 0
end = 50
receiving_container = sunduk1
else
start = 50
end = 100
receiving_container = sunduk2
end if
for i = start to end
поиск
перемещение
next
можно по всякому извращаться