ver 1.01
Добавил проверку на кол-во сфизлившихся ингов, по совету Distruction`a. В последствии, отпала нужда в разгрузе остатка ингов.
Скрипт берет инги из контейнера, крафтит фул армор со щитом. Затем складываем армор в мешок, и скидываем мешок в контейнер с ингами.
Крафтит до тех пор, пока есть достаточно ингов на фул арм.
Настройки:
VAR ArmBag - тип мешков, которые лежат в паке чара.
VAR IngotsNeed - кол-во ингов, требуемое на крафт.
Code: Select all
;| |--------------------|
;| | Full Armor Crafter |
;|------------| ver 1.02 |-------->
;| | crafted by Flake |
;| |--------------------|
sub CraftFullArmor()
VAR IngotsNeed = '118' ; Кол-во ингов, требуемое на крафт.
VAR ArmBag = '0x0E76' ; Тип мешков под арм
VAR IngotsType, IngotsColor, ArmBagSer, QuantBefore, QuantFizzl, AddIngots, k, a, c
Dim Choise[7]
Choise[1] = "'Armor' 'Shields' 'Shields' 'Heater Shield'"
Choise[2] = "'Armor' 'Plate Mail' 'Plate Mail' 'Platemail Gorget'"
Choise[3] = "'Armor' 'Plate Mail' 'Plate Mail' 'Platemail Gauntlets'"
Choise[4] = "'Armor' 'Plate Mail' 'Plate Mail' 'Plate Helm'"
Choise[5] = "'Armor' 'Plate Mail' 'Plate Mail' 'Platemail Arms'"
Choise[6] = "'Armor' 'Plate Mail' 'Plate Mail' 'Platemail Legs'"
Choise[7] = "'Armor' 'Plate Mail' 'Plate Mail' 'Platemail'"
Dim ArmPart[7]
ArmPart[1] = 0x1415 ;Platemail
ArmPart[2] = 0x1411 ;PlatemailLegs
ArmPart[3] = 0x1410 ;PlatemailArms
ArmPart[4] = 0x1414 ;PlatemailGauntlets
ArmPart[5] = 0x1412 ;PlatemailHelm
ArmPart[6] = 0x1413 ;PlatemailHelm
ArmPart[7] = 0x1B76 ;Heater
UO.Print( 'Укажите контейнер с ингами!' )
UO.Exec('addobject CraftBox')
While UO.Targeting()
Wait(100)
Wend
UO.Print( 'Укажите Инги для крафта!' )
UO.Exec('addobject Ingots')
While UO.Targeting()
Wait(100)
Wend
IngotsType = UO.GetGraphic( 'Ingots' )
IngotsColor = UO.GetColor( 'Ingots' )
UO.FindType( IngotsType, IngotsColor, 'CraftBox' )
While UO.GetQuantity( 'finditem' ) > IngotsNeed
UO.Grab( IngotsNeed, 'finditem' )
CheckLag()
;------------- Крафтим------------
For c=1 To 7
Craft:
UO.FindType( IngotsType )
QuantBefore = UO.GetQuantity( 'finditem' )
UO.DeleteJournal()
UO.Exec('waitmenu '+Choise[c])
UO.UseType( IngotsType )
k = 0
While NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 )
k = k + 1
Wait(500)
Wend
If UO.InJournal('fail') Then
;----- Физл! Добовляем нужное кол-во инго и повторяем крафт. ------
UO.FindType( IngotsType )
QuantFizzl = UO.GetQuantity( 'finditem' )
AddIngots = QuantBefore - QuantFizzl
UO.FindType( IngotsType, IngotsColor, 'CraftBox' )
If UO.GetQuantity( 'finditem' ) > AddIngots Then
UO.Grab( AddIngots, 'finditem' )
CheckLag()
GoTo Craft
Else
UO.Print( 'Не достаточно ингов, завершаем крафт!' )
UO.Exec( 'terminate CraftFullArmor' )
EndIf
EndIf
Next
;-----Сгружаем Арм в мешок, а затем кидаем мешок в сундук
UO.FindType( ArmBag )
ArmBagSer = UO.GetSerial( 'finditem' )
For a=1 To 7
UO.FindType( ArmPart[a] )
If UO.FindCount() > 0 then
UO.MoveItem( 'finditem', -1, ArmBagSer )
CheckLag()
EndIf
Next
UO.MoveItem( ArmBagSer, -1, 'CraftBox' )
CheckLag()
UO.FindType( IngotsType, IngotsColor, 'CraftBox' )
Wend
end sub
Старая версия:
Настройки:
VAR ArmBag - тип мешков, которые лежат в паке чара
VAR IngotsNeed - Кол-во ингов, требуемое на крафт, с учетов физлов. Подбирать под свой скил в соответсвии с матом, из которого крафтим(если собираемся крафтить арм из выхи, то стоит поставить побольше. Если же низкий арм, то 160 хватает).
Запускаем скрипт. Указываем прицелом на контейнер с ингами, затем на сами инги.
З.Ы. Некоторые элементы позаимствовал из скрипта Distruction`a.
Code: Select all
;| |--------------------|
;| | Full Armor Crafter |
;|------------| ver 1.00 |-------->
;| | crafted by Flake |
;| |--------------------|
sub CraftFullArmor()
VAR IngotsNeed = '160' ; Кол-во ингов, требуемое на крафт, с учетов физлов.
VAR ArmBag = '0x0E76' ; Тип мешков под арм
VAR IngotsType, IngotsColor, ArmBagSer, k, a, c
Dim Choise[7]
Choise[1] = "'Armor' 'Shields' 'Shields' 'Heater Shield'"
Choise[2] = "'Armor' 'Plate Mail' 'Plate Mail' 'Platemail Gorget'"
Choise[3] = "'Armor' 'Plate Mail' 'Plate Mail' 'Platemail Gauntlets'"
Choise[4] = "'Armor' 'Plate Mail' 'Plate Mail' 'Plate Helm'"
Choise[5] = "'Armor' 'Plate Mail' 'Plate Mail' 'Platemail Arms'"
Choise[6] = "'Armor' 'Plate Mail' 'Plate Mail' 'Platemail Legs'"
Choise[7] = "'Armor' 'Plate Mail' 'Plate Mail' 'Platemail'"
Dim ArmPart[7]
ArmPart[1] = 0x1415 ;Platemail
ArmPart[2] = 0x1411 ;PlatemailLegs
ArmPart[3] = 0x1410 ;PlatemailArms
ArmPart[4] = 0x1414 ;PlatemailGauntlets
ArmPart[5] = 0x1412 ;PlatemailHelm
ArmPart[6] = 0x1413 ;PlatemailHelm
ArmPart[7] = 0x1B76 ;Heater
UO.Print( 'Укажите контейнер с ингами!' )
UO.Exec('addobject CraftBox')
While UO.Targeting()
Wait(100)
Wend
UO.Print( 'Укажите Инги для крафта!' )
UO.Exec('addobject Ingots')
While UO.Targeting()
Wait(100)
Wend
IngotsType = UO.GetGraphic( 'Ingots' )
IngotsColor = UO.GetColor( 'Ingots' )
UO.FindType( IngotsType, IngotsColor, 'CraftBox' )
While UO.GetQuantity( 'finditem' ) > IngotsNeed
UO.Grab( IngotsNeed, 'finditem' )
CheckLag()
;------------- Крафтим------------
For c=1 To 7
Craft:
UO.DeleteJournal()
;UO.WaitMenu(Choise[c])
UO.Exec('waitmenu '+Choise[c])
UO.UseType( IngotsType )
k = 0
While NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 )
k = k + 1
Wait(500)
Wend
If UO.InJournal('fail') Then
GoTo Craft
EndIf
Next
;----Скинем остаток ингов обратно в сундук ------
UO.FindType( IngotsType, IngotsColor )
If UO.FindCount() > 0 Then
UO.MoveItem( 'finditem', -1, 'CraftBox' )
CheckLag()
EndIf
;-----Сгружаем Арм в мешок, а затем кидаем мешок в сундук
UO.FindType( ArmBag )
ArmBagSer = UO.GetSerial( 'finditem' )
For a=1 To 7
UO.FindType( ArmPart[a] )
If UO.FindCount() > 0 then
UO.MoveItem( 'finditem', -1, ArmBagSer )
CheckLag()
EndIf
Next
UO.MoveItem( ArmBagSer, -1, 'CraftBox' )
CheckLag()
UO.FindType( IngotsType, IngotsColor, 'CraftBox' )
Wend
end sub