Разгрузка

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
CxC
Posts: 93
Joined: 2012-12-31 00:17:09

Разгрузка

Post 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')

разные, то работает норм, а вот если одинаковые и доступны на финддистенс, то один массив разгружает, а второй нет. Где ошибка? И как правильно написать, подскажите, пожалуйста
Last edited by CxC on 2012-12-31 00:33:21, edited 1 time in total.
CxC
Posts: 93
Joined: 2012-12-31 00:17:09

Re: Разгрузка

Post 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
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Разгрузка

Post by Mirage »

1) зачем заморачиваться с типами если у тебя известны ID ? Обычную открывашку сделай.
2) Если ты на бесте то там выявили причину не работы массмува.
3) если все таки хочешь любстись с типами - игнорируй и делай игнорересет в конце. А то у тебя получается если рядом 2 сундука то будет находиться всегда первый.
CxC
Posts: 93
Joined: 2012-12-31 00:17:09

Re: Разгрузка

Post by CxC »

Mirage wrote:1) зачем заморачиваться с типами если у тебя известны ID ? Обычную открывашку сделай.
2) Если ты на бесте то там выявили причину не работы массмува.
3) если все таки хочешь любстись с типами - игнорируй и делай игнорересет в конце. А то у тебя получается если рядом 2 сундука то будет находиться всегда первый.

1) А как я тебе буду искать сундук по ид? ) И если не находит - не разгружать этот массив
2) да, на бесте. Какую причину? я не читал
3) сейчас попробую
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Разгрузка

Post 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 процедура для перекладывания.
CxC
Posts: 93
Joined: 2012-12-31 00:17:09

Re: Разгрузка

Post by CxC »

Mirage wrote:Инжект и клиент запоминают ID предмета и могут его использовать в радиусе досягаемости.
У меня рудокоп скидывал руду даже не открывая сундук. Главное чтобы стоял рядом.
Либо я делал разгрузку - 1 сундук, в нем коробки и в них уже фасовал. В сундук можно до 255 ящиков или мешков забить. Более чем достаточно для разгрузки лута ;)
Массмув лечится новой dll и увеличенными паузами - на форуме у Славы игроки нашли решение. А с массмувом у тебя 2/3 скрипта можно выкидывать.

т.е. без поиска сундука? тогда инжект же будет тупить, если один сундук найдет, а второй нет ) хочу массивами, так удобнее )
В один сундук не вариант, т.к. живу не 1 в доме и есть где-то общие мешки, где-то личные )
CxC
Posts: 93
Joined: 2012-12-31 00:17:09

Re: Разгрузка

Post 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, 'Закончил!' )
CxC
Posts: 93
Joined: 2012-12-31 00:17:09

Re: Разгрузка

Post by CxC »

блин, все равно не работает :( как вытаскивать из списка игнора один итем, а не все?
CxC
Posts: 93
Joined: 2012-12-31 00:17:09

Re: Разгрузка

Post by CxC »

Решил проблему игнором изначально всех сундуков и затем вытаскиванием нужного сундука перед финд тайпом. Возникло сомнение теперь с

Code: Select all

   UO.FindType('0x0E41','-1','ground')
   if UO.FindCount() > 0 then
      if uo.getserial('finditem') == Sunduk1 then

надо или нет, ведь в игноре будут все сундуки, кроме одного. Подумаю
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Разгрузка

Post by ZeroDX »

чё-то я не вдупляю, сундуки есть, их id есть, зачем их искать? их может не быть? как так?
CxC
Posts: 93
Joined: 2012-12-31 00:17:09

Re: Разгрузка

Post by CxC »

ZeroDX wrote:чё-то я не вдупляю, сундуки есть, их id есть, зачем их искать? их может не быть? как так?

сундуки в разных местах. Чисто физически чар не может достать до сундука с камнями при скидывании логов, к примеру
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Разгрузка

Post by Mirage »

Ну так как бы можно передвинуть или растащить сортировку на 2 скрипта или проверять координаты чара и сортировать только то что нужно.

Для массива предметов от 0 до 100
если Х чара равно 1234 и Y чара = 5678 тогда
для предметов от 0 до 50 перекидываем в сундук А
в противном случае если X = 4321 и Y = 7654 тогда
для массива предметов от 50 до 100 перекидываем в сундук Б
в противном случае - не перекидываем.

хз, искать типы сундуков, потом их сравнивать... Тем более что на 1 тайл если Слава опять не понакрутил можно закинуть больше 15 сундуков...
Но естесно дело вкуса.
CxC
Posts: 93
Joined: 2012-12-31 00:17:09

Re: Разгрузка

Post by CxC »

Mirage wrote:хз, искать типы сундуков, потом их сравнивать... Тем более что на 1 тайл если Слава опять не понакрутил можно закинуть больше 15 сундуков...
Но естесно дело вкуса.

примерно так (цифры - места разгрузки)
Image

по координатам не удобно, надо точно на то место вставать, если не огваривать диапазон. Если с диапазоном - нет мобильности и универсальности
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Разгрузка

Post 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
можно по всякому извращаться
Post Reply