Page 1 of 1
Зацикленный каст.
Posted: 2007-03-02 21:34:46
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
Работает так, на одну кнопку включил он ФСит, на другую выключаю.
Помогите реализовать, так: Допустим кастует ФС, массив из восьми типов регов, как только реги отобрались или физл, выполняет всю процедуру сначало).
Posted: 2007-03-03 00:11:45
by Mihail
чтобы на одну кнопку включать\выключать юзай глобальные переменные - так же было вроде в топике "полезности"
p.s.
Code: Select all
UO.BM, UO.BP, UO.GA, UO.GS,
UO.MR, UO.NS, UO.SA, UO.SS
[/code]
Posted: 2007-03-03 01:16:19
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
Posted: 2007-03-03 11:41:56
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?
Posted: 2007-03-03 13:40:34
by to4a
ну то что я написал всё это делать и будет
Posted: 2007-03-03 17:04:49
by SnOo13
В твой скрипт работает, но у меня мана регенится очень быстро!
Он пускает 2-3 фса и скрипт ничего неделает, но функция запущенной остается.
Posted: 2007-03-03 17:58:22
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