Page 1 of 1

Пойзон

Posted: 2005-06-21 19:00:17
by Boris
Пытался написать скрипт но как то затрудняюсь в середине скрипта
помогите пожалуйста

Code: Select all

sub Poison()
    var strela = 
    var binti =
    var blbinti =
    var butpus =
    var butjad =
    var sklad =
	while UO.SkillVal( 'Poisoning' ) < 100
	  
	   UO.FindType( strela, -1, 1 )
           UO.Grab( '1', 'finditem' )
	   wait( 2000 )
	   UO.FindType( butjad, -1, 1 )
	   If UO.FindCount() == 0 Then 
             UO.Print("Bottle of Poison not found") 
             return 
           Endif
############################################################################
#Сюда надо вставить скрипт чтобы чар начинал бутлкой яда пойзонить 1-ую стрелу 
#переложенную перед этим на пол(или в бекпак без разницы), в случае удачного запойзонивания
# надо чтобы чара сварил новую бутылку яда а дальше бы пошла проверка хп и перекладыания стрелы...
# если же неудачно то чтобы пойзонил снова стрелу 
###############################################################################




	if UO.Life < 80 then
	  If UO.Count( binti ) < 20 Then 
            UO.Findtype( blbinti ) 
            If UO.FindCount() > 0 Then 
               UO.MoveItem( 'finditem', 0, Sklad ) 
               wait(1000) 
               CheckLag() 
            Endif 
            UO.Findtype( bandag, -1, Sklad ) 
            If UO.FindCount() > 0 Then 
               UO.Grab( '100', 'finditem' ) 
               wait(1000) 
               CheckLag() 
            Endif
	  Endif
	 While UO.Life < 100
	    UO.Bandageself() 
            wait(4000) 
            CheckLag() 
         Wend
	Endif
         wait(2000)
	wend
        wait(50)
endsub
	
Sub CheckLag() 
   DeleteJournal( 'backpack' ) 
   UO.Click( 'backpack' ) 
   repeat 
      wait(100) 
   until UO.InJournal( 'backpack' ) 
endsub

Posted: 2005-06-21 19:23:17
by I'm

Code: Select all

while UO.SkillVal( 'Poisoning' ) < 100 
Если ты так намерен качатс до гыма то не 100 а 1000 И если значение реал от нериала различно то так

Code: Select all

while UO.SkillVal('Poisoning',1)<1000 
Должен признатся дальше несмотрел.

Хм а скрипт эдреда непробовал вроде по запросу чем-то похоже?
http://yoko.netroof.net/forum/viewtopic.php?t=704

Posted: 2005-06-21 19:24:44
by Boris
I'm wrote:Хм а скрипт эдреда непробовал вроде по запросу чем-то похоже?
http://yoko.netroof.net/forum/viewtopic.php?t=704
он у него похож, но там нет функции чтобы варил бутылку пойзона, у него они уже готовы

Posted: 2005-06-21 20:46:33
by I'm
Boris wrote:он у него похож, но там нет функции чтобы варил бутылку пойзона, у него они уже готовы
А ты добавь и выложи тут :wink:

Posted: 2005-06-21 21:26:22
by Boris
I'm wrote:
Boris wrote:он у него похож, но там нет функции чтобы варил бутылку пойзона, у него они уже готовы
А ты добавь и выложи тут :wink:
ну ладно завтра попробую что нить сделать

Posted: 2005-06-22 00:13:18
by I'm
А мы тебе поможем малек :wink:

Posted: 2005-06-22 14:13:38
by Boris
I'm wrote:А мы тебе поможем малек :wink:
вот сделал что смог, подскажите что не так, или что можно исправить. В ходе написания скрипта появилась токо один вопрос, он указан в тексте самого кода, помогите плиз :-)

Code: Select all

sub Poison()
    var strela = '0x0F3F'
    var stupka = 
    var NS = '0x0F88'
    var binti = '0x0E21'
    var blbinti = '0x0E20'
    var butpus = '0x0F0E'
    var butjad =
    var sklad =
    var ms1 = 'Select a poison potion'
    UO.Exec('set finddistance 2')
	while UO.SkillVal( 'Poisoning' ) < 1000
           CheckLag()
	   UO.FindType( strela, -1, 1 )         ;ищем стрелу на полу     
           UO.Grab( '1', 'finditem' )    
	   wait(1000)
	   UO.FindType('butjad')                ;ищем бутылку яда 	    
           UO.DeleteJournal() 
           CheckLag()
              repeat                  
                  UO.useskill('Poisoning', 'butjad')   ;начинаем пойзонить (для этого сначала надо заюзать скил пойзон, потом укзаать на бутылку яда
                    repeat                             ; а потом указать что будем пойзонить
                     wait(100)
                    until UO.InJournal('ms1')
                  UO.WaitTargetType('strela')
                   repeat
                    wait(100)
############################################################
           until UO.Count(strela)==1       ; пойзоним до тех пор пока в бек паке не окаджется хотя бы одна стрела запойзоненная
вот с эти есть небольшая проблема, я не знаю как сделать чтобы он пойзонил до тех пор пока в бекпаке не окажется хотя бы одна запойзоненная стрела,  пробовал делать по типу но он оказался один и тот же как у запойзоненной так и простой  в журнале в случае удачного пойзона нет ни одной надписи. Вообщем я в затруднеении
###############################################################################
           CheckLag()
           UO.FindType( otravstrela, -1, 'backpack' ) 
           UO.MoveItem( 'finditem', 0, sklad )         ; перекладываем запойзоненую стрелу в сумку
           wait(1000)
	     while UO.Count(butjad) < 4            ;смотри кол-во яда в бекпаке, если меньше 4 то варим
               UO.FindType( NS, -1, 1 )
               UO.WaitTargetType(NS)
               UO.Usetype('stupka')
               wait(200)
               UO.WaitMenu('What','Greater_Poison')
                 repeat
                  wait(100)
                 until UO.Count(butjad) == 4           ; до тех пор пока кол-во яда не будет равно 4
             wend
          CheckLag()
         if UO.Life < 80 then                        ; смотрим на хиты, если <80 проверяем не кончились ли бинты
	  If UO.Count( binti ) < 20 Then 
            UO.Findtype( blbinti ) 
            If UO.FindCount() > 0 Then 
               UO.MoveItem( 'finditem', 0, Sklad ) 
               wait(1000) 
               CheckLag() 
            Endif 
            UO.Findtype( bandag, -1, Sklad ) 
            If UO.FindCount() > 0 Then 
               UO.Grab( '100', 'finditem' ) 
               wait(1000) 
               CheckLag() 
            Endif
	  Endif
	 While UO.Life < 100
	    UO.Bandageself() 
            wait(4000) 
            CheckLag() 
         Wend
	Endif
      wend
endsub
	
Sub CheckLag() 
   DeleteJournal( 'backpack' ) 
   UO.Click( 'backpack' ) 
   repeat 
      wait(100) 
   until UO.InJournal( 'backpack' ) 
endsub

Posted: 2005-06-23 19:02:21
by Grin
ты лутше расскажи как ты сам определяешь что стрела отравлена? наличном опыте?;)
пойзонинг всегда удачный? а если есть не удача то есть ли какоето сообщение??? полюбому должна быть инфа...

Posted: 2005-06-23 19:47:13
by I'm
Ну еще очень хочется узнать что за шард :?:
Boris добро пожаловать в личку :wink:

Posted: 2005-06-23 19:54:56
by Boris
Grin wrote:ты лутше расскажи как ты сам определяешь что стрела отравлена? наличном опыте?;)
пойзонинг всегда удачный? а если есть не удача то есть ли какоето сообщение??? полюбому должна быть инфа...
если она отрвлена то просто меняет цвет с простого на зеленый, и на ней пишеться не просто arrow a зщшыщт arrow, пойзонит с физлами есть два варианта физла:
1 просто физланет
2 еще и себя отравит, при этом надписи разные

Posted: 2005-06-23 20:25:46
by I'm

Code: Select all

uo.findtype("type","color","where")

Posted: 2005-06-24 19:02:10
by Boris
Вообщем такая проблема, после выбора яда не находится стрела на полу и следовательно скрипт сбивает
пс суть такова: сначала находим в мешке стрелы, перетаскиваем на пол 1 стрелу, юзаем скил пойзон прицелом показываем на бутылку яда, потом прицелом показываем на стрелу, в случае удачного пойзона перекладываем запойзоненную стрелу из бекпака в мешок на полу. Далее смотрим скоко осталось бутылок пойзона, если меньше 4 то начинаем варить их до тех пор пока их не станет 4. Далее смотри не уменьшилось ли у нас хп если нет то все начинаем заново

Code: Select all

sub Poison() 
    var strela = '0x0F3F' 
    var stupka = '0x4D914CF3' 
    var NS = '0x0F88' 
    var binti = '0x0E21' 
    var blbinti = '0x0E20' 
    var butpus = '0x0F0E' 
    var butjad = '0x0F0A' 
    var sklad = '0x525AED3F' 
    var sklad1 = '0x4D1E3814' 
    var ms1 = 'Select a poison potion' 
    UO.Exec('set finddistance 2') 
   while UO.SkillVal( 'Poisoning' ) < 1000 
       CheckLag() 
      UO.FindType( 'strela', '0x0044', 'sklad' )         ;ищем стрелу в сумке      
       uo.moveitem ( 'finditem', '1', 'ground') 
       UO.print('Nawli strelu i kinuli na pol') 
      wait(1000) 
      UO.FindType('butjad')                ;ищем бутылку яда        
      UO.print('Nawli Jad') 
           UO.DeleteJournal() 
           CheckLag() 
        repeat 
                  UO.FindType('0x0F0A', '0x0000', 'backpack' ) 
                  wait(100) 
                  UO.useskill('Poisoning', 'finditem')       ;начинаем пойзонить (для этого сначала надо заюзать скил пойзон, потом укзаать на бутылку яда 
                    repeat                             ; а потом указать что будем пойзонить 
                     wait(100) 
################################################################# 
# В этом месте почему не начинается пойзонить стрелу 
#                   until UO.InJournal('Select an item.') 
                  uo.waittargetground( 'finditem' ) 
                  UO.FindType('strela', '0x0044', 'ground' ) 
                  wait(100) 
                ;  uo.waittargetground( 'finditem' ) 
                  UO.print('poisonim strelu') 
                 repeat 
                    wait(100) 
                 until UO.Count(strela)==1       ; пойзоним до тех пор пока в бек паке не окаджется хотя бы одна стрела запойзоненная 
               until UO.Count(strela)==1  
           CheckLag() 
           UO.FindType( 'strela', '0x0044', 'backpack' ) 
           UO.MoveItem( 'finditem', '0', 'sklad1' )         ; перекладываем запойзоненую стрелу в сумку со стрелами 
           wait(1000) 
        while UO.Count(butjad) < 4            ;смотри кол-во яда в бекпаке, если меньше 4 то варим 
               UO.FindType( 'NS', '-1', 'sklad' ) 
               UO.WaitTargetType(NS) 
               UO.Usetype('stupka') 
               wait(200) 
               uo.automenu('Select a potion to make','Greater_Poison') 
                 repeat 
                  wait(100) 
                 until UO.Count(butjad) == 4           ; до тех пор пока кол-во яда не будет равно 4 
             wend 
          CheckLag() 
         if UO.Life < 80 then                        ; смотрим на хиты, если <80 проверяем не кончились ли бинты 
     If UO.Count( binti ) < 20 Then 
            UO.Findtype( 'blbinti' ) 
            If UO.FindCount() > 0 Then 
               UO.MoveItem( 'finditem', '0', 'Sklad' ) 
               wait(1000) 
               CheckLag() 
            Endif 
            UO.Findtype( 'binti', '-1', 'Sklad' ) 
            If UO.FindCount() > 0 Then 
               UO.Grab( '100', 'finditem' ) 
               wait(1000) 
               CheckLag() 
            Endif 
     Endif 
    While UO.Life < 100 
       UO.Bandageself() 
              repeat 
                wait(100) 
              until UO.InJournal('You have cured your patient completely') and  UO.InJournal('You place a bloody bandage in your backpack') 
            CheckLag() 
         Wend 
   Endif 
      wend 
endsub 
    
Sub CheckLag() 
   UO.DeleteJournal() 
   UO.Click( 'backpack' ) 
   repeat 
      wait(100) 
   until UO.InJournal( 'backpack' ) 
endsub