Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Inject не лутает трупы монстров-людей
Joanne d'Arc
сообщение 31.12.2017, 4:09
Сообщение #1


****

Группа: Пользователи
Наличность: 0
Из: Bad Bentheim.Germany
Пользователь №: 12.626
Возраст: 25



Доброго времени суток! Имеется скрипт на автолут с резкой, но почему-то он не лутает монстров-людей, обычных игроков и монстров лутает.
Подскажите пожалуйста где проблема ?

Код
sub fastloot()
   var corpse
   corpse = findcorps()
   if not corpse == 'null' then
      UO.addobject('corpse', corpse)
      lootlag()
      loot()
   else
      uo.print('!!! Corpse is not Found !!!')
      uo.print('!!! Corpse is not Found !!!')
      uo.print('!!! Corpse is not Found !!!')
      uo.ignore('corpse', 'off')
   end if
   uo.msg('.upd')
end sub

sub loot()
   var bag = '0x09AA'; Oei noiee a eioi?o? neeaauaaai eoo.
   var all = 1 ; Anee 1 oi eooeo ana, anee 0 oi eooeo oieuei i?ei?eoaoiua aaue.
   var clear = 1; Anee 1 oi eaii?e?oao aaue ec nienea, anee 0 oi ia eaii?e?oao.
   if uo.findtype(bag,"-1","backpack") then
      uo.addobject('lootpack', 'finditem')
   else
      uo.addobject('lootpack', 'backpack')
   end if
  
   DIM Loot[10] # neieuei aauae a nienea
   var a
  
   # Oeacuaaai oeiu i?ei?eoaoiuo aey eooa aauae.
   # Yoe aaue aoaoo eooeouny a ia?ao? i?a?aau.
  
   Loot[1]="0x1F08"; Necklace
   Loot[2]="0x1088"; Gold Necklace
   Loot[3]="0x1B76"; Heater Shield
   Loot[4]="0x1B75"; Kite Shield
   Loot[5]="0x1B76"; Heater Shield
   Loot[6]="0x1BC3"; Chaos Shield
   Loot[7]="0x1B7A"; Shield of Energy
   Loot[8]="0x14EF"; Recipe
   Loot[9]="0x13F9"; Staff
   Loot[10]="0x0EED"; Gold
  
   loot:
   for a=1 to 10
      uo.findtype(Loot[a],"-1","corpse")
      if UO.FindCount()>0 and Uo.GetDistance("corpse")<=3 then
    ;uo.useobject('finditem')
         uo.moveitem("finditem", "-1", "lootpack")
         wait(1000)
         goto loot
      end if
   next
   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
   skining()
end sub

sub lootlag()
   var timer
   timer = uo.timer()
   repeat
      uo.findtype("-1","-1","corpse")
      wait(50)
   until uo.findcount() > 0 or timer + 3 <= uo.timer()
end sub

sub skining()
   UO.WaitTargetObject('corpse')
   UO.UseType('0x0EC4')
   wait(500)
   allloot:
   clearloot("corpse")
   uo.findtype("-1","-1","corpse")
   if uo.findCount() > 0 and Uo.GetDistance("corpse")<=3 then
      uo.moveitem("finditem", "-1", "lootpack")
      wait(1300)
      goto allloot
      wait(200)
   end if
end sub

sub clearloot(corpse)
   DIM Item[3]
   VAR i
   ##################################################
   # Ooo oeacuaaai oeiu eaii?e?oaiuo aey eooa aauae.#
   ##################################################
   Item[0] = "0x0E20"; Bloody Bandage
   Item[1] = "0x14FB"; Lockpicks
   Item[2] = "0x0F39"; Shovel
   for i=0 to 2
      ignoreitem:
      uo.findtype(Item[i],"-1",corpse)
      if UO.FindCount()>0 and Uo.GetDistance(corpse)<=3 then
         uo.ignore("finditem")
         goto ignoreitem
         # wait(10); ?aneiiiaioe?iaaou anee e?aoeo
      end if
   next
end sub

sub findcorps()
   DIM body[8]
   var a
   Uo.Set('finddistance','3')
   body[1] = '0x0ECA';
   body[2] = '0x2006';
   body[3] = '0x0E40';
   body[4] = '0x0E41';
   body[5] = '0x2DF2'; Priest Chest
   body[6] = '0x2DF1'; Priest Chest
   body[7] = '0x4910'; Ice Level 2 Chest
   body[8] = '0x4911'; Ice Level 2 Chest
   For a = 1 to 8
      Uo.FindType(body[a],'-1','ground')
      If Uo.FindCount()>0 then
         uo.useobject('finditem')
         return Uo.GetSerial('finditem')
      endif
   next
   return 'null'
end sub


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aimed
сообщение 31.12.2017, 5:51
Сообщение #2


********

Master
Сообщений: 1.573
Регистрация: 29.12.2012
Группа: Пользователи
Наличность: 7004
Пользователь №: 15.607
Возраст: 25



Код
sub findcorps()
   DIM body[8]
   var a
   Uo.Set('finddistance','3')
   body[1] = '0x0ECA';
   body[2] = '0x2006';
   body[3] = '0x0E40';
   body[4] = '0x0E41';
   body[5] = '0x2DF2'; Priest Chest
   body[6] = '0x2DF1'; Priest Chest
   body[7] = '0x4910'; Ice Level 2 Chest
   body[8] = '0x4911'; Ice Level 2 Chest
   For a = 1 to 8
      Uo.FindType(body[a],'-1','ground')
      If Uo.FindCount()>0 then
         uo.useobject('finditem')
         return Uo.GetSerial('finditem')
      endif
   next
   return 'null'
end sub


Увеличь массив body и добавь туда типы трупов монстров-хуманоидов. Наверняка у них другой тип.


--------------------
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Frog
сообщение 31.12.2017, 12:08
Сообщение #3


****

Apprentice
Сообщений: 266
Регистрация: 6.9.2005
Группа: Пользователи
Наличность: 1292
Пользователь №: 4.172
Возраст: 25



Если это UORPG - лутать нужно не из 'corpse', а из 'lastcontainer'.


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Joanne d'Arc
сообщение 31.12.2017, 18:28
Сообщение #4


****

Группа: Пользователи
Наличность: 0
Из: Bad Bentheim.Germany
Пользователь №: 12.626
Возраст: 25



Цитата(Aimed @ 31.12.2017, 6:51) *

Код
sub findcorps()
   DIM body[8]
   var a
   Uo.Set('finddistance','3')
   body[1] = '0x0ECA';
   body[2] = '0x2006';
   body[3] = '0x0E40';
   body[4] = '0x0E41';
   body[5] = '0x2DF2'; Priest Chest
   body[6] = '0x2DF1'; Priest Chest
   body[7] = '0x4910'; Ice Level 2 Chest
   body[8] = '0x4911'; Ice Level 2 Chest
   For a = 1 to 8
      Uo.FindType(body[a],'-1','ground')
      If Uo.FindCount()>0 then
         uo.useobject('finditem')
         return Uo.GetSerial('finditem')
      endif
   next
   return 'null'
end sub


Увеличь массив body и добавь туда типы трупов монстров-хуманоидов. Наверняка у них другой тип.


Тип гуманойдов указан : body[2] = '0x2006';

Цитата(Frog @ 31.12.2017, 13:08) *

Если это UORPG - лутать нужно не из 'corpse', а из 'lastcontainer'.


Спасибо огромное !


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Joanne d'Arc
сообщение 2.1.2018, 1:41
Сообщение #5


****

Группа: Пользователи
Наличность: 0
Из: Bad Bentheim.Germany
Пользователь №: 12.626
Возраст: 25



да, бывает подглючивает. Складывает лут не в ту сумку, и бывает из моей сумки выкладывает вещи в сумку с лутом..
Ну в принципе не критично.


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Mirage
сообщение 2.1.2018, 11:00
Сообщение #6


*******

Группа: Пользователи
Наличность: 3412
Из: Иваново
Пользователь №: 13.089
Возраст: 35



Логика то скрипта в принципе верная но для инжекта некоторые команды можно упростить.

Код
   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** вервии?


--------------------
Изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Joanne d'Arc
сообщение 2.1.2018, 16:57
Сообщение #7


****

Группа: Пользователи
Наличность: 0
Из: Bad Bentheim.Germany
Пользователь №: 12.626
Возраст: 25



Цитата(Mirage @ 2.1.2018, 12:00) *

В общем скрипт на треть можно подсократить и обновив команды оптимизировать. Писался чай для какой нибудь 5** вервии?


Скрипт очень старый. Дорабатывается постоянно по надобности )


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 22.5.2018, 18:42
Designed by Nickostyle