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

Зацикленный каст.
http://forum.yoko.com.ua/viewtopic.php?f=20&t=11534
Page 1 of 1

Author:  SnOo13 [ 2007-03-02 21:34:46 ]
Post subject:  Зацикленный каст.

Дело простое: Но я не знаю всех команд, по этому в реализации у меня проблемы.

Скрипт прост: Писал я его самостоятельно, брав другие скрипты за основу, но задержка "Wait" не стабильна. Т.к. каст по времени изменяется на десятые секунды, но эти десятые в сумме важны.

Code:
sub Fsuy()
while 1
uo.print(' !!! -= FSIM HIM! =- !!! ')
   uo.cast('Flame Strike','laststatus')
   repeat
   wait(4700)
   wend
end sub


Работает так, на одну кнопку включил он ФСит, на другую выключаю.

Помогите реализовать, так: Допустим кастует ФС, массив из восьми типов регов, как только реги отобрались или физл, выполняет всю процедуру сначало).

Author:  Mihail [ 2007-03-03 00:11:45 ]
Post subject: 

чтобы на одну кнопку включать\выключать юзай глобальные переменные - так же было вроде в топике "полезности"
p.s.
Code:
UO.BM, UO.BP, UO.GA, UO.GS,
    UO.MR, UO.NS, UO.SA, UO.SS
[/code]

Author:  to4a [ 2007-03-03 01:16:19 ]
Post subject: 

в общем то писал в окне ответа, запускать не пробовал поэтому не исключено что ошибок дохрена, прокомментированые значения подстроить под шард.
Работает так: забиндил на кнопку ф-ция TriggerFS, нажал кнопку и он до охренения ФСит ластатус, нажал ещё раз перестаёт
Code:
sub TriggerFS()
   if UO.GetGlobal('FS') then
      UO.SetGlobal('FS',0)
   else
      UO.SetGlobal('FS',1)
      UO.Exec('FS')
   endif
endsub

sub FS()
   var TGT=UO.GetSerial('laststatus')
   if TGT==UO.GetSerial('self') and TGT=='0x00000000' and TGT=='0xFFFFFFFF' then
      UO.Print('LastStatus Target Error!')
      UO.SetGlobal('FS',0)
      return
   endif
   repeat
      if UO.SS and UO.SA then # РЕГИ ТРЕБУЕМЫЕ НА ФС
         if UO.Mana>=24 then # МАНА ТРЕБУЕМАЯ ДЛЯ ФСА
            UO.Cast('Flame Strike',TGT)
            WaitManaChange(UO.Mana)
         else
            if UO.Count('0x0F0E','0x09DF') then # ТИП И ЦВЕТ ТОТАЛ МАНКИ
               UO.UseType('0x0F0E','0x09DF')
            else
               UO.Print('No mana!')
               UO.SetGlobal('FS',0)
               return
            endif
         endif
      else
         UO.Print('No Reagents!')
         UO.SetGlobal('FS',0)
         return
      endif
   until not UO.GetGlobal('FS')
endsub

Sub WaitManaChange(now)
var timer=0
 while UO.Mana>=now or timer<=100
  timer=timer+1
  wait(50)
 wend
endsub

Author:  SnOo13 [ 2007-03-03 11:41:56 ]
Post subject: 

Блин, спасибо. Но это не-то, вы только задачу усложняете.
Объясню:
На моём шарде, я хожу в шмоте который мне позволяет пускать фсы один за одним и для прокачки на мобах, важно пускать фс 1 за 1, с минимумом задержек. Каст фса изменяется на десятые секунды, минимальная заддержка "Wait", часто приводит к физлам (1 каст не успевает кастанутся и начинается второй).

Приведу систему:
Code:
sub Fsuy() 
while 1
uo.print(' !!! -= FSIM HIM! =- !!! ')
   uo.cast('Flame Strike','laststatus')
   Ищет реги требуемые на фс UO.SS and UO.SA
   Запоминает кол-во UO.SS = приравнивая его к "X"
   Как-только UO.SS < X or UO.InJournal() = "The spell fizzles" ; Начитает всё сначало.
   wend
end sub

Это систему написал я так, как себе представляю, возможно другие команды или по другому она должна выглядеть, просьба направить меня на правельный путь. За ранее спасибо.

И еще вопрос, может ли этот скрипт работать без TWI?

Author:  to4a [ 2007-03-03 13:40:34 ]
Post subject: 

ну то что я написал всё это делать и будет

Author:  SnOo13 [ 2007-03-03 17:04:49 ]
Post subject: 

В твой скрипт работает, но у меня мана регенится очень быстро!
Он пускает 2-3 фса и скрипт ничего неделает, но функция запущенной остается.

Author:  to4a [ 2007-03-03 17:58:22 ]
Post subject: 

хм... ну я ж говорил что не писал в окне ответа... ну попробуй так, лишнее поудалял:
Code:
sub TriggerFS()
   if UO.GetGlobal('FS') then
      UO.SetGlobal('FS',0)
   else
      UO.SetGlobal('FS',1)
      UO.Exec('FS')
   endif
endsub

sub FS()
   var TGT=UO.GetSerial('laststatus')
   if TGT==UO.GetSerial('self') and TGT=='0x00000000' and TGT=='0xFFFFFFFF' then
      UO.Print('LastStatus Target Error!')
      UO.SetGlobal('FS',0)
      return
   endif
   repeat
      if UO.SS and UO.SA then # РЕГИ ТРЕБУЕМЫЕ НА ФС
         UO.Cast('Flame Strike',TGT)
         WaitManaChange(UO.Mana)
      else
         UO.Print('No Reagents!')
         UO.SetGlobal('FS',0)
         return
      endif
   until not UO.GetGlobal('FS')
endsub

Sub WaitManaChange(now)
var timer=0
 while UO.Mana>=now or timer<=100
  timer=timer+1
  wait(50)
 wend
endsub

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