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