Yoko

All sides of Injection
It is currently 2024-03-28 15:52:27

All times are UTC+02:00




Post new topic  Reply to topic  [ 1 post ] 
Author Message
PostPosted: 2015-11-18 19:49:57 
Offline
User avatar

Joined: 2012-12-15 12:03:25
Posts: 119
Location: C-Петербург
Code:
##################
# Black Smithing #
##################
# -------- из старого скрипта, который был взят за основу ^^ ------------------
# Ignots in the source. Smith hammer on the right hand.
# We're standing near a forge, which we'll target and
# near ingots. If you can't find ingots - ,set finddistance 10
# 21.12.06 .Tested on shard Dragon World
#------------------------------------------------------
# 2015.  переделан by Kobol
# инги лежат в мешке - клик на мешок - открылся - клик на инг
# берет инги в пак по весу и кует. Когда инги в паке кончаются - добирает по весу и снова кует до заполнения пака (255 итемов)
#
#
var clr=38, clo=2524, cly=53, clg=63, clb=3, cla=89, clda=83, clp=120 , clgr=1088, clw=1156, cldg=1162
###################################################
Sub PrintInColor(text,color)
   # см также функцию uo.charprint(color, text)
   #
   # PrintInColor("здесь текст",'цвет текста')
   # красный   - '38' или '0x0026'  # темно-бирюзовый - '83' или '0x0053'
   # оранжевый - '43' или '0x002B'  # голубой    - '89'  или '0x0059'
   # желтый    - '53' или '0x0035'  # синий      - '3'   или '0x0003'
   # зеленый   - '63' или '0x003F'  # фиолетовый - '120' или '0x0078'
   # '1088' - по умолчанию
   # 1152 - бирюзовый 1151 - черный 1155 - фиолетовый 1156 - белый  1158 - кр 1161 - синий 1162 - темно зел 1166 ткр 1169 свзел
   # 2500 2524 - оранж  2517 кр 2567 малин 2566=0x0A06 белый
   #  2998 - белый 3008  3600 и выше - контур   3221 - контрастный!!!
   UO.ConColor(color)
   ;UO.Exec('set quiet 0')   # Показывать сообщения Injection.
   UO.Print(text)
   ;UO.Exec('set quiet 1')   # Не показывать сообщения Injection.
   UO.ConColor('1088')
endsub
##########################################################
sub BSComplectMain()
   var IngType ;  Type of ignots to smith (0x1BEF)
   var IngColor;  Color of ingots to smith
   var IngName ; Name of ingot
   ;var Item=0x1410 ; Type of a produced item
   var  n, name ,KolvoPAckItems, KolvoItems
   ;var ingi='0x1BEF' ;тип ingi
   Var WeightLimit=uo.getMaxHP()*4 ; максимальный вес персонажа
   var KolvoIngi ; количество  ингов которые можно забрать в пак
   var InginPack ; количество ингов в паке
   
   UO.Print('Choose ingots container') ; мешок где лежат инги для ковки
   UO.Exec('addobject istok')
   while UO.Targeting()
      wait(200)
   wend
   UO.UseObject('istok')
   
   UO.Print('Choose ingot type') ; выбор ингов для ковки
   UO.Exec('addobject tovar')
   while UO.Targeting()
      wait(100)
   wend
   
   IngType = UO.GetGraphic('tovar')
   IngColor=uo.getcolor('tovar')
   IngName=getname('tovar')
   UO.Print('Ing color='+(IngColor))
   PrintInColor('Ing name='+IngName,IngColor) ; '!!!!!!
   
   ; расчет перекладываемого веса
   if IngColor=="0" and IngType=="0x1BEF" then
      KolvoIngi=Int((WeightLimit -uo.weight)/0.81) ; вес инга железа=0.6
   else
      KolvoIngi=Int((WeightLimit -uo.weight))/0.81 ; вес инга железа=0.6
   end if
   
   UO.FindType('-1','-1','-1') ; сколько вещей в паке изначально
   KolvoPAckItems=uo.GetQuantity('finditem')
   UO.Print('WeightLimit='+str(WeightLimit))
   UO.Print('Char weight='+str(uo.weight))
   UO.Print('Ing kolvo='+str(KolvoIngi))
   UO.Print('KolvoPAckItems='+str(KolvoPAckItems))
   ; перекладываем инги в пак с учетом веса
   UO.FindType(IngType,IngColor,'istok')
   If UO.FindCount() > 0 then ; если инги в мешке есть
      repeat ; цикл по всем ингам контенер <<<<<<<<<<<<<<<<<<<<<<
         UO.MoveItem('finditem',KolvoIngi , 'backpack') ; перемещаем заданное количество в пак
         wait(800)
         CheckLag()
         # начинаем ковать
         uo.FindType(IngType,IngColor,'backpack') ; ищем инги в паке
         InginPack=uo.GetQuantity('finditem')
         PrintInColor('InginPack='+str(InginPack),IngColor) ; '!!!!!!
         UO.Print('backPak FindCount='+str(uo.FindCount()))
         if  uo.FindCount() and (InginPack > 11) then
            repeat ; цикл по ингам в паке ==================
               uo.DeleteJournal()
               uo.print('Ing='+str(uo.GetQuantity('finditem')))
               
               PrintInColor('SkillVal='+str(uo.SkillVal('Blacksmithing',1)),2998) ; '!!!!!!
               
               if IngName=="Mytheril"  then
                  if uo.SkillVal('Blacksmithing',1) > 999 then
                     Complect(IngName)
#                    Gauntlets(IngName)
                  else
      PrintInColor('insufficient skill. Script terminated', clb)
                  end if
               end if
               if IngName=="Black Rock"  then
                  if uo.SkillVal('Blacksmithing',1) > 999 then
                     Complect(IngName)
                  else
      PrintInColor('insufficient skill. Script terminated', clb)
                  end if
               end if
               if  IngName=="Obsidian"  then
                  if uo.SkillVal('Blacksmithing',1) > 999 then
                     Complect(IngName)
                  else
      PrintInColor('insufficient skill. Script terminated', clb)
                  end if
               end if
               
             
               if  IngName=="Blood Rock"  then
                  if uo.SkillVal('Blacksmithing',1) > 979 then
                     Complect(IngName)
                     ;Gauntlets(IngName)
                  else
      PrintInColor('insufficient skill. Script terminated', clb)
                  end if
               end if
               if  IngName=="Verite"  then
                  if uo.SkillVal('Blacksmithing',1) > 984 then
                     Complect(IngName)
                  else
      PrintInColor('insufficient skill. Script terminated', clb)
                  end if
               end if

               if  IngName=="Valorite"  then
                  if uo.SkillVal('Blacksmithing',1) > 984 then
                     Complect(IngName)
                  else
      PrintInColor('insufficient skill. Script terminated', clb)
                  end if
               end if


               wait(100)
               UO.FindType('-1','-1','backpack') ; сколько всего вещей в паке
               wait(100)
               KolvoPAckItems=uo.GetQuantity('finditem')
               UO.Print('In pack items='+str(KolvoPAckItems))
               PrintInColor('>>> KolvoPAckItems='+str(uo.FindCount()),3221) ; '!!!!!!
               if uo.FindCount()>254 then
                  PrintInColor('!!! KolvoPAckItems='+str(uo.FindCount()),clr) ; '!!!!!!
                  return
               end if
               wait(200)
               uo.FindType(IngType,IngColor,'backpack') ; ищем инги в паке
            until not uo.FindCount() || uo.GetQuantity('finditem') < 12
            ; цикл по ингам в паке ==================
         else
         end if   
         UO.Print('Requare more ings. Take it from container')
         wait(100)
         KolvoIngi=Int((WeightLimit -uo.weight)/0.62) ; вес инга железа=0.6
         UO.Print('WeightLimit='+str(WeightLimit))
         UO.Print('Char weight='+str(uo.weight))
         UO.Print('KolvoIngi='+str(KolvoIngi))
         
         if KolvoIngi<20 then
           
            UO.Print('Ing quantity too small='+str(KolvoIngi))
            return
         end if
         
         UO.FindType('-1','-1','-1') ; сколько всего вещей в паке
         KolvoPAckItems=uo.GetQuantity('finditem')
         UO.Print('2: KolvoPAckItems='+str(KolvoPAckItems))
         PrintInColor('2: KolvoPAckItems='+str(uo.FindCount()),clo) ; '!!!!!!
         if KolvoPAckItems>254 then
            return
         end if
         KolvoItems=(255-KolvoPAckItems)
         UO.Print('Left place for Items='+str(KolvoItems))
         if KolvoIngi>KolvoItems*12 then
            KolvoIngi=KolvoItems*12
            UO.Print('2 -- KolvoIngi='+str(KolvoIngi))
           
         end if
         uo.ignorereset()
         UO.FindType(IngType,IngColor,'istok')
         UO.Print('Container Ing GetQuantity='+str(uo.GetQuantity('finditem')))
         UO.Print('Container Ing FindCount='+str(uo.FindCount()))
      until not uo.FindCount() ; || uo.GetQuantity('finditem') < 11 or
      ; цикл по всем ингам <<<<<<<<<<<<<<<<<<<<<<
   else
      PrintInColor('insufficient ingots in container. Script terminated', clb)
   end if
end sub

############################################################
sub Complect(IngName)

PlateHelm(IngName)
   checklag()
PlatemailGorget(IngName)
   checklag()
Gauntlets(IngName)
   checklag()
PlatemailLegs(IngName)
   checklag()
PlatemailArms(IngName)
   checklag()
Platemail(IngName)
   checklag()
HeaterShield(IngName)

end sub

############################################################
sub PlateHelm(IngName)

repeat
   PrintInColor('PlateHelm ='+IngName,clr) ; '!!!!!!
   uo.cancelmenu()
   wait (50)
   uo.automenu('Blacksmithing','Colored Armor & Weapons')
   wait (50)
   uo.automenu('Colored Armor & Weapons',IngName+' Armor')
   wait (50)
   uo.automenu(IngName+' Armor',IngName+' Plate Armor & Shields')
   wait (50)
   uo.automenu(IngName+' Plate Armor',IngName+' '+'Plate Helm')
   wait (150)
               uo.UseObject('finditem')
               wait (100)
               repeat
                  wait(400)
               until uo.InJournal('put') || uo.InJournal('fail')

if uo.InJournal('fail') then
wait(8500)
end if

wait(1500)

until uo.InJournal('put')

end sub

############################################################
sub PlatemailGorget(IngName)

      repeat

   PrintInColor('PlatemailGorget Ing name='+IngName,clr) ; '!!!!!!
   uo.cancelmenu()
   wait (50)
   uo.automenu('Blacksmithing','Colored Armor & Weapons')
   wait (50)
   uo.automenu('Colored Armor & Weapons',IngName+' Armor')
   wait (50)
   uo.automenu(IngName+' Armor',IngName+' Plate Armor & Shields')
   wait (50)
   uo.automenu(IngName+' Plate Armor',IngName+' '+'Platemail Gorget')
   wait (50)
#   checklag()
               uo.UseObject('finditem')
               wait (100)
               repeat
                  wait(400)
               until uo.InJournal('put') || uo.InJournal('fail')
if uo.InJournal('fail') then
wait(8500)
end if

wait(1500)
until uo.InJournal('put')

end sub

############################################################
sub Gauntlets(IngName)

  repeat

   PrintInColor('Gauntlets Ing name='+IngName,clr) ; '!!!!!!
   uo.cancelmenu()
   wait (50)
   uo.automenu('Blacksmithing','Colored Armor & Weapons')
   wait (50)
   uo.automenu('Colored Armor & Weapons',IngName+' Armor')
   wait (50)
   uo.automenu(IngName+' Armor',IngName+' Plate Armor & Shields')
   wait (50)
   uo.automenu(IngName+' Plate Armor',IngName+' '+'Platemail Gauntlets')
   wait (50)
#   checklag()
               uo.UseObject('finditem')
               wait (100)
               repeat
                  wait(400)
               until uo.InJournal('put') || uo.InJournal('fail')
if uo.InJournal('fail') then
wait(8500)
end if

wait(1500)
until uo.InJournal('put')

end sub

############################################################
sub PlatemailArms(IngName)

repeat
   PrintInColor('PlatemailArms Ing name='+IngName,clr) ; '!!!!!!
   uo.cancelmenu()
   wait (50)
   uo.automenu('Blacksmithing','Colored Armor & Weapons')
   wait (50)
   uo.automenu('Colored Armor & Weapons',IngName+' Armor')
   wait (50)
   uo.automenu(IngName+' Armor',IngName+' Plate Armor & Shields')
   wait (50)
   uo.automenu(IngName+' Plate Armor',IngName+' '+'Platemail Arms')
   wait (50)
#   checklag()
               uo.UseObject('finditem')
               wait (100)
               repeat
                  wait(400)
               until uo.InJournal('put') || uo.InJournal('fail')

if uo.InJournal('fail') then
wait(8500)
end if

wait(1500)
until uo.InJournal('put')
wait(500)

end sub

############################################################
sub PlatemailLegs(IngName)

               repeat

   PrintInColor('PlatemailLegs Ing name='+IngName,clr) ; '!!!!!!
   uo.cancelmenu()
   wait (50)
   uo.automenu('Blacksmithing','Colored Armor & Weapons')
   wait (50)
   uo.automenu('Colored Armor & Weapons',IngName+' Armor')
   wait (50)
   uo.automenu(IngName+' Armor',IngName+' Plate Armor & Shields')
   wait (50)
   uo.automenu(IngName+' Plate Armor',IngName+' '+'Platemail Legs')
   wait (50)
#   checklag()
               uo.UseObject('finditem')
               wait (100)
               repeat
                  wait(400)
               until uo.InJournal('put') || uo.InJournal('fail')
if uo.InJournal('fail') then
wait(8500)
end if

wait(1500)
until uo.InJournal('put')

end sub

############################################################
sub Platemail(IngName)
               repeat
   PrintInColor('Platemail Ing name='+IngName,clr) ; '!!!!!!
   uo.cancelmenu()
   wait (50)
   uo.automenu('Blacksmithing','Colored Armor & Weapons')
   wait (50)
   uo.automenu('Colored Armor & Weapons',IngName+' Armor')
   wait (50)
   uo.automenu(IngName+' Armor',IngName+' Plate Armor & Shields')
   wait (50)
   uo.automenu(IngName+' Plate Armor',IngName+' '+'Platemail (')
   wait (50)
#   checklag()
               uo.UseObject('finditem')
               wait (100)
               repeat
                  wait(400)
               until uo.InJournal('put') || uo.InJournal('fail')
if uo.InJournal('fail') then
wait(8500)
end if

wait(1500)
until uo.InJournal('put')

end sub

############################################################
sub HeaterShield(IngName)
repeat

   PrintInColor('HeaterShield Ing name='+IngName,2567) ; '!!!!!!
   uo.cancelmenu()
   wait (150)
   uo.automenu('Blacksmithing','Colored Armor & Weapons')
   wait (150)
   uo.automenu('Colored Armor & Weapons',IngName+' Armor')
   wait (150)
   uo.automenu(IngName+' Armor',IngName+' Plate Armor & Shields')
   wait (250)
   uo.automenu(IngName+' Plate Armor',IngName+' '+'Heater Shield (')
#   uo.automenu(IngName+' Plate Armor', 3)
# 1 -helm
# 2 -рукавицы
# 4 -metal shield
# 5 -helm
# 8 -arms
# 10 -gorget
# 14 -metal shield
# 18 -arms
# 20 -legs
# 12 -рукавицы

   wait (50)
#   checklag()
               uo.UseObject('finditem')
               wait (100)
               repeat
                  wait(400)
               until uo.InJournal('put') || uo.InJournal('fail')
if uo.InJournal('fail') then
wait(8500)
end if

wait(1500)
until uo.InJournal('put')
   uo.cancelmenu()

end sub


############################################
sub CheckLag()
   repeat
      UO.DeleteJournal()
      UO.Click('backpack')
   until backpack()==1
endsub
############################################
sub backpack()
   var n
   for n=0 to 200
      if uo.injournal('a backpack') then
         return 1
      endif
      wait(200)
   next
endsub
############################################
sub pereklad()
   #****ДРВ*****#
   # (C) Cooper
   #****v1.0****#
   VAR IngType
   UO.Print('Выбери мешок с ингами')
   UO.Exec('addobject istok')
   while UO.Targeting()
      wait(100)
   wend
   UO.UseObject('istok')
   UO.Print('Выбери ПРИЕМНИК')
   UO.Exec('addobject priem')
   while UO.Targeting()
      wait(100)
   wend
   UO.Print('Выбери ТОВАР')
   UO.Exec('addobject tovar')
   while UO.Targeting()
      wait(100)
   wend
   IngType = UO.GetGraphic('tovar')
   UO.FindType(IngType,'-1','istok')
   If UO.FindCount() > 0 then
     
      repeat
         UO.MoveItem('finditem', '0', 'priem')
         wait(800)
         CheckLag()
         UO.FindType(IngType,'-1','istok')
      until not UO.FindCount()
     
      UO.Print('Закончили...')
   else
      UO.Print('А кидать то нечего...')
   endif
end sub
####################################
sub getname(ingi)
   var n, c, t
   Dim name[27]
   name[1]=''
   name[2]='Rusty'
   name[3]='Old Copper'
   name[4]='Dull Copper'
   name[5]='Bronze'
   name[6]='Shadow'
   name[7]='Rose'
   name[8]='Agapite'
   name[9]='Blood Rock'
   name[10]='Verite'
   name[11]='Valorite'
   name[12]='Mytheril'
   name[13]='Black Rock'
   name[14]='Obsidian'
   name[15]='Plutonium'
   name[16]='Vulcan'
   name[17]='Aqua'
   name[18]='Eldar'
   name[19]='Elvin'
   name[20]='Acid'
   name[21]='Steel'
   name[22]='Sand Rock'
   name[23]='Blood Crest'
   name[24]='Gorgan'
   name[25]='Krynite'
   name[26]='Crystaline'
   name[27]='Dragon'
   
Dim col[27] ; список цветов
   col[1]='0x0000'
   col[2]='0x0750'
   col[3]='0x0590'
   col[4]='0x060A'
   col[5]='0x0488'
   col[6]='0x096B'
   col[7]='0x0014'
   col[8]='0x0193'
   col[9]='0x04C2'
   col[10]='0x07D5'
   col[11]='0x00CE'
   col[12]='0x052D'
   col[13]='0x0455'
   col[14]='0x0028'
   col[15]='0x08AF'
   col[16]='0x09DA'
   col[17]='0x0060'
   col[18]='0x0BA7'
   col[19]='0x09E6'
   col[20]='0x09B9'
   col[21]='0x09D3'
   col[22]='0x008F'
   col[23]='0x09EC'
   col[24]='0x09F0'
   col[25]='0x010F'
   col[26]='0x09A4'
   col[27]='0x0085'
   Dim typ[3]
   typ[1]='0x1BE3'
   typ[2]='0x1BF5'
   typ[3]='0x1BE9'
   Dim nam[3]
   nam[1]='Copper'
   nam[2]='Silver'
   nam[3]='Golden'
   t=uo.getgraphic(ingi)
   c=uo.getcolor(ingi)
   for n=1 to 3
      if typ[n]==t then
         return nam[n]
      endif
   next
   for n=2 to 27
      if col[n]==c then
         return name[n]
      endif
   next
endsub



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

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 14 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