Yoko

All sides of Injection
It is currently 2024-03-29 10:00:10

All times are UTC+02:00




Post new topic  Reply to topic  [ 12 posts ] 
Author Message
PostPosted: 2014-11-01 22:42:15 
Offline

Joined: 2006-02-15 05:03:45
Posts: 23
Всех приветствую. Помогите люди добрые. Имеется скрипт на лут, работает отлично, но необходимо что бы лутал в мешок. Мешок я добавлю сам в обьекты или укажу в самом скрипте.
Code:
###                                    #######
######################################## Лут ###################################
###                                    #######
# Чтобы скрипт работал как задумывалось необходимо произвести настройки:
# 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.

Top
   
PostPosted: 2014-11-01 22:43:24 
Offline

Joined: 2006-02-15 05:03:45
Posts: 23
И еще был бы рад если кто- то обьяснит почему коракули. У меня в самом редакторе Инжекта все нормально на русском. Сюда же копирнул и вышли каракули.


Top
   
PostPosted: 2014-11-02 11:04:39 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Каракули потому что копируешь из окна инжекта. Надо копировать из блокнота, в котором открываешь файл скрипта.
Можно и автора скрипта спросить как сделать - мне же не сложно :)

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

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

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2014-11-02 11:43:08 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Для нормального копирования нужно сменить раскладку на русскую и после этого копировать. Тогда иероглифы не будут вылезать.
Пока не знаю как поправить, пробовал несколько вариантов - не помогло, но и не старался особо, это уже косметика.


Top
   
PostPosted: 2014-11-02 13:37:58 
Offline

Joined: 2006-02-15 05:03:45
Posts: 23
Mirage wrote:
backpack замени на ID контейнера куда лутать хочешь.

Да как то не думал что автор мониторит форум ))). А для чего переменная VAR Meshok = '0x0E76'; тип мешка ? Где она используется ?.
Quote:
в строках
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.

Top
   
PostPosted: 2014-11-02 13:38:38 
Offline

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


Top
   
PostPosted: 2014-11-02 21:09:06 
Offline

Joined: 2006-02-15 05:03:45
Posts: 23
Mirage wrote:
Можно и автора скрипта спросить как сделать - мне же не сложно :)

Ну и коль уж автор отписался. Вот вроде бы твой скриптик на переплавку всякого треша из мешка.
Code:
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

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


Top
   
PostPosted: 2014-11-03 13:34:28 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
шотокактотак
Code:
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:

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2014-11-03 15:18:29 
Offline

Joined: 2006-02-15 05:03:45
Posts: 23
Mirage wrote:
шотокактотак :roll:

А что по поводу лута ? Я заменил все backpack на обьект из вкладки обьектов. Но хотелось бы всетаки переменную в самом скрипте.
И как считаешь какую переменную лучше использовать ? Айди - обьект или тип или тип + колор.


Top
   
PostPosted: 2014-11-05 01:12:48 
Offline

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


Top
   
PostPosted: 2014-11-05 09:48:43 
Offline

Joined: 2006-02-15 05:03:45
Posts: 23
Вот работал впринцепи. но вдруг стал вызывать бинты почему хрен его знает.
Подправь где ошибся ?

Code:
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


Top
   
PostPosted: 2014-11-06 06:45:42 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
поправил свой пост - работает.
Кстати на бесте не обязательно переносить из сумки. Главное чтобы она в паке была. Слитки падают в бэкпак. Не удобно будет только с непереплавляемыми предметами. Но если руду то можно и не тягать.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 12 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 34 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited