Yoko
http://forum.yoko.com.ua/

Помогите начинающему скриптёру -)
http://forum.yoko.com.ua/viewtopic.php?f=20&t=13919
Page 2 of 2

Author:  TwiN [ 2008-09-17 19:02:51 ]
Post subject: 

Шаман ! :P
Всё заработало ! -)

Пасибо огромное, Destruction!
Просто читать хелп можно до одури, до визуальных галлюцинаций, до фиг знает чего ещё, но понятно всё, часто становится только когда увидиш конкретный пример того как это всё должно работать, как прописываться и т.п.

Как, собственно, получилось и в этом случае.

Ещё немного дополнил скрипт, добавил красивостей всяких (типа uo.concolor(0x53) и т.п. -) ), deljournal(), checklag(), прикрутил функцию завершения работы скрипта если нет бутылок и абсолютно всё вынес в переменные (ну или почти всё).

Вот что из этого получилось. Финальный релиз, такскать :D . Правда альфа версии, до беты осталось придумать куда и как прикрутить условие если вместо "You succeed" появляется сообщение о неуспешной попытке протравить оружие. Просто тестировалось на чаре у которого максимум поизонинга и физлов не бывает.

Самое простое, это изменить переменную done_msg примерно так - "You succeed|You fail", думаю должно всё получится... :?
Но тогда сообщение 'Poisoning in complete!' будет совсем не к месту.
Code:
sub Poisoning()
   var P_Type = '0x0F0E'  ;тайп бутылок
   var P_Col = '0x0694'    ;цвет бутылок
   var W_Type = '0x0F4B' ;тайп оружия для протравки
   var W_Col = '0x0253'   ;цвет оружия
   var Bottle, Weapon
   var done_msg = "You succeed"
   repeat
      deljournal( done_msg )
      uo.findtype( P_Type, P_Col )
      Bottle = uo.getSerial( "finditem" )
      uo.findtype( W_Type, W_Col )
      Weapon = uo.getSerial( "finditem" )
      uo.waittargetobject( Bottle, Weapon )
      uo.useskill('Poisoning')
      wait( 1000 )
      checklag()
      if uo.injournal( done_msg ) then
         uo.concolor(0x0694)
         uo.print('Poisoning in complete!')
         uo.concolor(0)
         wait( 10000 )
      else
         if uo.count( P_Type, P_Col ) < 1 then
            uo.concolor(0x53)
            uo.print( "А бутылки то закончились !" )
            uo.concolor(0)
            return false
         endif
      endif
   until uo.dead()
end sub

Sub checklag()
   deljournal("ackpack")
   uo.click("backpack")
   repeat
      wait( 100 )
   until uo.injournal("ackpack")
endsub

Sub deljournal(msg)
   while uo.injournal(msg)
      uo.setjournalline(uo.injournal(msg)-1,"")
   wend
end sub


Скрипт протестирован и на 100% рабочий, "заточен" под шард "Middle-Earth". :) Единственное условие, скрипт пока только для тех кто может травить без физлов.

Author:  Mirage [ 2011-05-08 23:12:47 ]
Post subject:  Re: Помогите начинающему скриптёру -)

Тему перенес и апнул так как метод заслуживает внимания. Кому интересно внимательно читаем обсуждение.

Author:  kobol [ 2016-01-09 18:27:03 ]
Post subject:  Re:

Destruction wrote:
Следущие три кода делают одно и то же:
Code:
var menu_size = 3 ; количество элементов в выборке меню
DIM promts[ val( str( menu_size ) ) ]
DIM choice[ val( str( menu_size ) ) ]
promts[0] = "Blacksmithing"
choice[0] = "Weapons"
promts[1] = "Weapons"
choice[1] = "Fencing"
promts[2] = "Fencing"
choice[2] = "dagger"
my.waitmenu( promts, choice, menu_size )

Code:
uo.exec( "waitmenu 'Blacksmithing' 'Weapons' 'Weapons' 'Fencing' 'Fencing' 'dagger'" )

Code:
uo.waitmenu( "Blacksmithing", "Weapons", "Weapons", "Fencing", "Fencing", "dagger" )


Причём как не крути, все эти коды, на самом деле - сводятся к варианту номер два -)


А почему не просто
Code:
DIM promts[ menu_size ]
DIM choice[ menu_size ]

???

Page 2 of 2 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/