Лут. Необходимо добавить что бы лутал все в мешок.

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Mimiks
Posts: 23
Joined: 2006-02-15 05:03:45
Contact:

Лут. Необходимо добавить что бы лутал все в мешок.

Post by Mimiks »

Всех приветствую. Помогите люди добрые. Имеется скрипт на лут, работает отлично, но необходимо что бы лутал в мешок. Мешок я добавлю сам в обьекты или укажу в самом скрипте.

Code: Select all

###                                    #######
######################################## Лут ###################################
###                                    #######
# Чтобы скрипт работал как задумывалось необходимо произвести настройки:
# 1) Файл скрипта должен называться autoload.sc и находится в папке с инжектом (либо с клиентом - зависит от версии инжекта).
# 2) В MAIN окне инжекта должна быть включена галочка "Autostart" (в середине окна)
# 3) В паке игрока должны быть ножницы и кинжал. После резки тела в руки берется оружие которое было на момент запуска скрипта.
# 4) Запускать REZ - для порезки или Loot для лута тела.
# 5) Если лут прервать принудительно то нужно запускать Lootrunning() для обновления константы. Иначе резать будет, лутать - нет.
# 6) В планируемых доработках - сделать чтобы стакующиеся предметы складывались в кучу, не стакующиеся в рядок.
#
# Описание процедур скрипта:
# autostart()   - автозапуск. Задает константу для защиты от повторного срабатывания скрипта на лут и добавляет фильтр фастлута.
# REZ() - резка трупа кинжалом, после резки автоматически запускает лут.
# Lootrunning()   - назначает константу для защиты от повторного срабатывания скрипта на лут. Можно запускать руками при необходимости.
# Loot()   - основной скрипт лута. В нем используются все последующие функции.
# findcorps()   - определяет что будем лутить - скелет или труп животного.
# IgnorHair(corpse) - игнорирует волосы в трупе игрока (баг на 55-56 сферах)
# Ignor(corpse)   - игнорирует реагенты в трупах (пример как добавлять не нужные для лута вещи)
# GrabLoot(corps)   - функция лута первоочередных предметов.
# Scissors()   - порезка кожи в рюкзаке персонажа. Срабатывает когда игрок в тени.
# PUTLoot2(Type1, Type2, Color, SourceContainer, TargetContainer,X,Y,Z) - процедура перемещения массива объектов.
# PUTLoot(Type, Color, SourceContainer, TargetContainer,X,Y,Z) - процедура перемещения одного объекта.
# DeleteJournal(msg) - очищает журнал.
# checklag()   - чеклаг (динамическая пауза).
#
### Контейнеры ###
VAR Meshok   = '0x0E76';   тип мешка
VAR Deed     = '0x14EF';   свиток ресурсов
VAR body     = '0x2006';   труп (не разделанный)
##################
#
### Инструменты ###
VAR Dagger   = '0x13F6';   кинжал (резка трупа)
VAR Scissors = '0x0F9E';   ножницы
##################
#
### Сырье ###
VAR hides    = '0x1078';   шкура животного
VAR leather  = '0x1067';   готовая кожа
##################
#
### Вспомогательные константы ###
VAR lootwait = 100;         пауза
VAR printcolour  = '1069'; цвет сообщений
##################
#
### Переменные ###
VAR MeshSer, d, LastTimer, timemove
VAR Type, TType, Type1, Type2, Color, SourceContainer, TargetContainer
VAR corpse, a, hair, reg, colhides
##################
#
Sub autostart()
   Lootrunning()
   UO.filterspeech('clear')
   UO.filterspeech('add','[Surprize ! Fast loot detected!]')
   UO.filterspeech('on')
end sub
#
Sub REZ()
   UO.Set('quiet','1')
   uo.set('finddistance', '3')
   ;uo.ignorereset()
   uo.findtype(body, -1, 'ground')
   if uo.findcount() and Uo.GetDistance( 'finditem' ) < 3  then
      var x = uo.GetGraphic(uo.ObjAtLayer('Rhand'))
      var y = uo.GetGraphic(uo.ObjAtLayer('Lhand'))
      uo.warmode(0)
      wait(500)
      UO.SetArm("1")#
      corpse = uo.getSerial("finditem")
      UO.WaitTargetObject(corpse)
      UO.UseType(dagger)
      wait(500)
      UO.Arm("1")   #
      UO.UnSetArm() #
      uo.Equipt('Rhand',x)
      uo.Equipt('Lhand',y)
      if x <> uo.GetGraphic(uo.ObjAtLayer('Rhand')) or y <> uo.GetGraphic(uo.ObjAtLayer('Lhand')) then
         UO.UseType(x)
         wait(100)
         UO.UseType(y)
         wait(100)
      endif
      Loot()
      uo.warmode(1)
   endif
   UO.Set('quiet','0')
end sub
#
Sub Lootrunning()
   uo.setGlobal('running',1)
end sub
#
Sub Loot()
   ;uo.ignorereset()
   DIM G[7]
   G[1] = '0x0EED';   деньги
   G[2] = '0x0E76';   мешки
   G[3] = '0x09AA';   пандоры
   G[4] = '0x1BFB';   болты
   G[5] = '0x0F3F';   стрелы
   G[6] = '0x1087';   серьги
   G[7] = '0x108A';   кольца
   UO.Set('quiet','1')
   if val(uo.getGlobal('running'))==1 then
      uo.setGlobal('running',2)
      uo.set('finddistance', '3')
      corpse = '0x00000000'
      corpse = findcorps()
      if corpse<>'0xffffffff' and corpse<>'0x00000000' then
         IF uo.findcount() and Uo.GetDistance( 'finditem' ) <= 4 then
            uo.deletejournal()
            uo.useobject(corpse)
            wait(300)
            if NOT uo.injournal("You can't do it here") then
               GrabLoot(corpse)
               IgnorHair(corpse)
               ;Ignor(corpse)
               PUTLoot('-1', '-1', corpse, 'backpack','','','')
            endif
            UO.Hide(corpse)
            UO.Ignore(corpse)
         endif
      else
         for a=1 to 7
            PUTLoot(G[a], '-1', 'ground', 'backpack',30,150,0)
         next
      endif
      Scissors()
      uo.setGlobal('running',1)
   endif
   UO.Set('quiet','0')
end sub
#
Sub findcorps()
   DIM body[2]
   body[1] = '0x0ECA';
   body[2] = '0x2006';
   for a = 1 to 2
      UO.FindType(body[a], -1, 'ground')
      if UO.FindCount() then
         return uo.getSerial('finditem')
      endif
   next
end sub
#
Sub IgnorHair(corpse)
   for hair = 0x203B to 0x204D
      UO.FindType(hair, -1, corpse)
      if UO.FindCount() then
         UO.Ignore('finditem')
      endif
   next
end sub
#
Sub Ignor(corpse)
   for reg = 0xF7A to 0xF7B
      UO.FindType(reg, -1, corpse)
      if UO.FindCount() then
         UO.Ignore('finditem')
      endif
   next
   for reg = 0xF84 to 0xF86
      UO.FindType(reg, -1, corpse)
      if UO.FindCount() then
         UO.Ignore('finditem')
      endif
   next
   for reg = 0xF88 to 0xF88
      UO.FindType(reg, -1, corpse)
      if UO.FindCount() then
         UO.Ignore('finditem')
      endif
   next
   for reg = 0xF8C to 0xF8D
      UO.FindType(reg, -1, corpse)
      if UO.FindCount() then
         UO.Ignore('finditem')
      endif
   next
end sub
#
Sub GrabLoot(corps)
   var pack = 'backpack'
   ;uo.charprint(printcolour,'лутим типы')
   PUTLoot('0x1869', '0', corps, pack,'','','');   ЭНЧАНТ шарики
   PUTLoot('0x09AA', '0x0834', corps, pack,'','','');   Пандора 10 Лв.
   PUTLoot('0x09AA', '0x0833', corps, pack,'','','');   Пандора 9 Лв.
   PUTLoot('0x09AA', '0x0832', corps, pack,'','','');   Пандора 8 Лв.
   PUTLoot('0x09AA', '0x08EA', corps, pack,'','','');   Пандора 7 Лв.
   PUTLoot('0x09AA', '0x08C1', corps, pack,'','','');   Пандора 6 Лв.
   PUTLoot('0x13B1', '0x099F', corps, pack,'150','170','0');   Exc.Rangers Bow
   PUTLoot('0x13B1', '0x05D8', corps, pack,'150','160','0');   Rangers bow
   PUTLoot('0x0A3E', '0', corps, pack,'160','170','0');   шкатулка
   PUTLoot(-1, '0x086C', corps, pack,'','','');   хантер вещи
   PUTLoot(-1, '0x099F', corps, pack,'','','');   ренжер вещи
   PUTLoot(-1, '0x0358', corps, pack,'','','');   рат вещи
   PUTLoot2(0x1869, 0x1870, '-1', corps, pack,'','','');   шарики
   PUTLoot('0x0EED', '0', corps, pack,'','','');   золото
   PUTLoot2(0x1E88, 0x1E89, '-1', corps, pack,'','','');   мясо драконов и демонов
   PUTLoot2(0x1E8E, 0x1E8F, '-1', corps, pack,'','','');   жаренное мясо драконов и демонов
   PUTLoot('0x09B5', '0', corps, pack,'','','');   змеиные яйца
   PUTLoot('0x0EE3', '0', corps, pack,'','','');   паутинка
   PUTLoot2(0x1085, 0x108b, '-1', corps, pack,'','','');   бижутерия
   PUTLoot2(0x1f05, 0x1f0a, '-1', corps, pack,'','','');   бижутерия
   PUTLoot2(0xf0f, 0xf30, '-1', corps, pack,'','','');   камни
   PUTLoot2(0x1f5d, 0x1f6c, '0', corps, pack,'','','');   scroll 7-8
   PUTLoot(-1, '0x0991', corps, pack,'','','');   руины
   PUTLoot('0x9aa', '-1', corps, pack,10,170,0);   пандоры
   PUTLoot(-1, '0x0482', corps, pack,'','','');   серебрянные вещи
end sub
#
Sub Scissors()
   If UO.Hidden() and UO.Count ( Scissors ) > 0 Then
      UO.FindType(hides, -1, 'backpack')
      While UO.FindCount()
         colhides = uo.getColor('finditem')
         UO.WaitTargetObject('finditem')
         uo.usetype( Scissors )
         wait(300)
         UO.FindType(leather, colhides, 'backpack')
         if UO.FindCount() then
            UO.MoveItem('finditem', 0, 'backpack', 30, 150, 0)
            wait(300)
         endif
         UO.FindType(hides, -1, 'backpack')
      wend
   EndIf
end sub
#
Sub PUTLoot2(Type1, Type2, Color, SourceContainer, TargetContainer,X,Y,Z)
   ;uo.ignorereset()
   for TType = Type1 to Type2
      PUTLoot(TType, Color, SourceContainer, TargetContainer,X,Y,Z)
   next
end sub
#
Sub PUTLoot(Type, Color, SourceContainer, TargetContainer,X,Y,Z)
   ;uo.ignorereset()
   UO.FindType(Type, Color, SourceContainer)
   while UO.FindCount()
      if (TargetContainer=='ground') then
         uo.MoveItem('finditem',0,TargetContainer,uo.GetX('self'),uo.GetY('self'),uo.GetZ('self'))
      else
         timemove=UO.Timer()
         while UO.ContainerOf( UO.GetSerial('finditem') )==SourceContainer && timemove+20>UO.Timer()
            uo.MoveItem('finditem',0,TargetContainer,X,Y,Z)
            wait(lootwait)
         wend
      end if
      UO.FindType(Type, Color, SourceContainer)
   wend
end sub

Так же по возможности\желанию было бы хорошо сюда прикрутить выбор прятаться или не прятаться при луте. Но это уже второстепенное. Главное что бы лутал в мешок.
Вот в начале скрипта есть переменная VAR Meshok = '0x0E76'; но в скрипте она как я понял не используется. Я не очень опытен и боюсь накосячить. Помогите пажалуйста. Заранее благодарю.
Last edited by Mimiks on 2014-11-02 13:39:30, edited 1 time in total.
Mimiks
Posts: 23
Joined: 2006-02-15 05:03:45
Contact:

Re: Лут. Необходимо добавить что бы лутал все в мешок.

Post by Mimiks »

И еще был бы рад если кто- то обьяснит почему коракули. У меня в самом редакторе Инжекта все нормально на русском. Сюда же копирнул и вышли каракули.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Лут. Необходимо добавить что бы лутал все в мешок.

Post by Mirage »

Каракули потому что копируешь из окна инжекта. Надо копировать из блокнота, в котором открываешь файл скрипта.
Можно и автора скрипта спросить как сделать - мне же не сложно :)

в строках
PUTLoot('-1', '-1', corpse, 'backpack','','','')
и
var pack = 'backpack'

backpack замени на ID контейнера куда лутать хочешь.
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Лут. Необходимо добавить что бы лутал все в мешок.

Post by Juicy Fruit »

Для нормального копирования нужно сменить раскладку на русскую и после этого копировать. Тогда иероглифы не будут вылезать.
Пока не знаю как поправить, пробовал несколько вариантов - не помогло, но и не старался особо, это уже косметика.
Mimiks
Posts: 23
Joined: 2006-02-15 05:03:45
Contact:

Re: Лут. Необходимо добавить что бы лутал все в мешок.

Post by Mimiks »

Mirage wrote:backpack замени на ID контейнера куда лутать хочешь.

Да как то не думал что автор мониторит форум ))). А для чего переменная VAR Meshok = '0x0E76'; тип мешка ? Где она используется ?.
в строках
PUTLoot('-1', '-1', corpse, 'backpack','','','')
и
var pack = 'backpack'
А можно использовать переменную ? Что бы не искать по скрипту когда надо поменять мешок. Скажем аналогично VAR Meshok = '0x0E76' ? Какую переменную Обьект через айди, ? Или можно тип, еще было бы удобно использовать колор. Тогда бы Мешочек просто береш цвета определенного для лута.?
Last edited by Mimiks on 2014-11-02 13:42:59, edited 1 time in total.
Mimiks
Posts: 23
Joined: 2006-02-15 05:03:45
Contact:

Re: Лут. Необходимо добавить что бы лутал все в мешок.

Post by Mimiks »

И да можно просто раскладку менять во время копирования скрипта и тогда норм пастит.
Mimiks
Posts: 23
Joined: 2006-02-15 05:03:45
Contact:

Re: Лут. Необходимо добавить что бы лутал все в мешок.

Post by Mimiks »

Mirage wrote:Можно и автора скрипта спросить как сделать - мне же не сложно :)

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

Code: Select all

sub SellSmelt()
   UO.Set('finddistance', '1')
   var item, bagg, itemID
   var bag = '0x0E76'
   var forge = '0x197E'
   var Tree = '0x11C9'
 
   UO.FindType( forge,-1,'ground')
   If UO.FindCount() > 0 Then
      item=forge
   else
      UO.FindType( Tree ,-1,'ground')
      If UO.FindCount() > 0 Then
         item=Tree
      endif
   endif
   uo.FindType(bag,'-1','backpack')
   If UO.FindCount() > 0 Then
      bagg=uo.GetSerial('finditem')
      uo.UseObject('finditem')
      wait(400)
   else
      uo.print ('Нет мешка')
      return
   endif
   UO.FindType('-1','-1',bagg)
   if UO.FindCount() then
      while UO.FindCount()
         itemID=uo.GetSerial('finditem')
         uo.moveitem('finditem','1','backpack',100,100,0)
         wait(500); Можно и меньше но не нужно.
         UO.DeleteJournal()
         uo.WaitTargetObject(itemID)
         UO.UseFromGround( item )
         while not UO.InJournal('smelt|put|is consumed|fire is not|положили|получили|see the target')
            wait(100)
         wend
         UO.FindType('-1','-1',bagg)
      wend
   end if
end sub

Проблема в том что, он раскладывает вещи которые в стопке по одной. Можешь подсказать или допилить сам, что бы перекладывал всю стопку. И еще было бы хорошо что бы при запуске мешок можно было бы указать. Спасибо.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Лут. Необходимо добавить что бы лутал все в мешок.

Post by Mirage »

шотокактотак

Code: Select all

sub SellSmelt()
   UO.Set('finddistance', '2')
   var item, itemID
   uo.addobject('bag')
   while uo.targeting()
      wait(100)
   wend
   uo.useobject('bag')
   wait(500)
   uo.addobject('forge')
   while uo.targeting()
      wait(100)
   wend
   UO.FindType('-1','-1','bag')
   if UO.FindCount() then
      while UO.FindCount()
         itemID=uo.GetSerial('finditem')
         uo.moveitem(itemID,0,'backpack',100,100,0)
         wait(700)
         UO.DeleteJournal()
         uo.WaitTargetObject(itemID)
         UO.UseObject('forge')
         while not UO.InJournal('smelt|put|is consumed|fire is not|положили|получили|see the target')
            wait(100)
         wend
         UO.FindType('-1','-1','bag')
      wend
   end if
end sub


работает. :roll:
Mimiks
Posts: 23
Joined: 2006-02-15 05:03:45
Contact:

Re: Лут. Необходимо добавить что бы лутал все в мешок.

Post by Mimiks »

Mirage wrote:шотокактотак :roll:

А что по поводу лута ? Я заменил все backpack на обьект из вкладки обьектов. Но хотелось бы всетаки переменную в самом скрипте.
И как считаешь какую переменную лучше использовать ? Айди - обьект или тип или тип + колор.
Mimiks
Posts: 23
Joined: 2006-02-15 05:03:45
Contact:

Re: Лут. Необходимо добавить что бы лутал все в мешок.

Post by Mimiks »

Не чо то коряво работает. Нужно что бы можно было выбрать мешок, выбрать форжу. И что бы перемешал все что в мешке не по 1 му предметику а если это кучка скажем гп то все сразу.
Mimiks
Posts: 23
Joined: 2006-02-15 05:03:45
Contact:

Re: Лут. Необходимо добавить что бы лутал все в мешок.

Post by Mimiks »

Вот работал впринцепи. но вдруг стал вызывать бинты почему хрен его знает.
Подправь где ошибся ?

Code: Select all

sub SellSmelt() # Переплавка/продавалка. В Британнии на плавильне у кладбища.
   # Металлические вещи сложить в простой мешок. Плавит ВСЕ переплавляемое.
   # Не переплавляемое кидает в пак.
   UO.Set('finddistance', '1')
   var item, bagg, itemID
   var bag = '0x0E76'
   var forge = '0x197E'
   var Tree = '0x11C9'
   var Box
   
   uo.addobject('Box')
   while uo.targeting()
      wait(100)
   wend
   
   UO.FindType("forge",-1,'ground')
   If UO.FindCount() > 0 Then
      item=forge
   else
      UO.FindType("Tree" ,-1,'ground')
      If UO.FindCount() > 0 Then
         item=Tree
      endif
   endif
   uo.FindType('Box','-1','backpack')
   If UO.FindCount() > 0 Then
      Box=uo.GetSerial('finditem')
      uo.UseObject('finditem')
      wait(400)
   else
      uo.print ('Нет мешка')
      return
   endif
   UO.FindType('-1','-1',"Box")
   if UO.FindCount() then
      while UO.FindCount()
         itemID=uo.GetSerial('finditem')
         uo.grab('finditem','0','backpack',100,100,0)
         wait(500); Можно и меньше но не нужно.
         UO.DeleteJournal()
         uo.WaitTargetObject("itemID")
         UO.UseFromGround("item")
         while not UO.InJournal('smelt|put|is consumed|fire is not|положили|получили|see the target')
            wait(100)
         wend
         UO.FindType('-1','-1',"Box")
      wend
   end if
end sub
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Лут. Необходимо добавить что бы лутал все в мешок.

Post by Mirage »

поправил свой пост - работает.
Кстати на бесте не обязательно переносить из сумки. Главное чтобы она в паке была. Слитки падают в бэкпак. Не удобно будет только с непереплавляемыми предметами. Но если руду то можно и не тягать.
Post Reply