Зацикленный каст.

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
SnOo13
Posts: 47
Joined: 2006-03-10 15:28:05

Зацикленный каст.

Post by SnOo13 »

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

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

Code: Select all

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


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

Помогите реализовать, так: Допустим кастует ФС, массив из восьми типов регов, как только реги отобрались или физл, выполняет всю процедуру сначало).
Кто с мечом к нам прийдет - того легче пристрелить :)
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

чтобы на одну кнопку включать\выключать юзай глобальные переменные - так же было вроде в топике "полезности"
p.s.

Code: Select all

UO.BM, UO.BP, UO.GA, UO.GS,
    UO.MR, UO.NS, UO.SA, UO.SS
[/code]
to4a
Posts: 265
Joined: 2006-03-10 00:19:11
Location: http://drw.ru/

Post by to4a »

в общем то писал в окне ответа, запускать не пробовал поэтому не исключено что ошибок дохрена, прокомментированые значения подстроить под шард.
Работает так: забиндил на кнопку ф-ция TriggerFS, нажал кнопку и он до охренения ФСит ластатус, нажал ещё раз перестаёт

Code: Select all

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
SnOo13
Posts: 47
Joined: 2006-03-10 15:28:05

Post by SnOo13 »

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

Приведу систему:

Code: Select all

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?
Кто с мечом к нам прийдет - того легче пристрелить :)
to4a
Posts: 265
Joined: 2006-03-10 00:19:11
Location: http://drw.ru/

Post by to4a »

ну то что я написал всё это делать и будет
SnOo13
Posts: 47
Joined: 2006-03-10 15:28:05

Post by SnOo13 »

В твой скрипт работает, но у меня мана регенится очень быстро!
Он пускает 2-3 фса и скрипт ничего неделает, но функция запущенной остается.
Кто с мечом к нам прийдет - того легче пристрелить :)
to4a
Posts: 265
Joined: 2006-03-10 00:19:11
Location: http://drw.ru/

Post by to4a »

хм... ну я ж говорил что не писал в окне ответа... ну попробуй так, лишнее поудалял:

Code: Select all

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
Post Reply