Page 1 of 1

Крафт Фул армов

Posted: 2005-06-04 18:00:24
by flake
Update:
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

Re: Крафт Фул армов

Posted: 2005-06-07 11:42:49
by Destruction
flake wrote:VAR IngotsNeed - Кол-во ингов, требуемое на крафт, с учетов физлов.
:?

Нехорошо, ИМХО.

Posted: 2005-06-07 11:54:22
by flake
А что именно не хорошо?

Posted: 2005-06-07 17:27:13
by Destruction
flake wrote:А что именно не хорошо?
Надо чтобы в случае физла - через гетквонти высчитывать скока физланул и брать еще, а ты как пишешь, надо брать столько, сколько надо с учетом, что как физланешь, так и не повезет. :evil:

Posted: 2005-06-07 17:36:34
by flake
Может потом приделаю проверку.
У меня скрипт еще ни разу не сбивался из-за этого.
Физлов слишком много не бывает, насколько я заметил.

Posted: 2005-06-07 20:58:11
by Alucard
Ммм, ну физлы это дело рандомное :) Вот начну в уо играться, авось тож напишу скрипт для кования фулов, или этот переделаю :)

Posted: 2005-06-07 22:13:22
by Destruction
У мну тоже был скрипт... Афигенный прям, даже не сбивался почти :))

Понимаешь, иногда это важно, я перковал 50к каждого метала нах в горгетки на своем... Заепся с физлами.

ЗЫ: Переписывай :!: 8)

Posted: 2005-06-09 13:20:39
by fRz_
Блин.. на дрв этот скритик чет не пашет.. В меню кидает и усё. Пытался меню заемнить и т д , несмог чет. Эх..

Posted: 2005-06-09 14:01:34
by flake
А каким образом у вас вызывается меню БСа?
У нас, как видно в скрипте, просто нужно дабл-кликнуть на инги (находясь у форжи и держа в руках молоточек).

Если так же, то проблема может быть только в менюшках.

Posted: 2005-06-09 14:15:01
by fRz_
Мм.. В том то и проблема , что менюшки то подходят под скрипт.. Но при загрузке скрипта , просто появл. меню и стоит , ниче крафтить не хочет.. Вот такая вот поршивая проблема. :cry:

Posted: 2005-06-09 14:37:14
by flake
Так перепиши менюшки под себя, и все.

Posted: 2005-06-10 13:31:14
by flake
Апдейт!
Добавил проверку на кол-во сфизлившихся ингов.
Новая версия в первом посте.