Code: Select all
while uo.getglobal('cast') == '1'
wait(50)
wend
uo.setglobal('cast', '1')
кастую
uo.setglobal('cast', '0')Moderators: Murderator+, Murderator
Code: Select all
while uo.getglobal('cast') == '1'
wait(50)
wend
uo.setglobal('cast', '1')
кастую
uo.setglobal('cast', '0')Code: Select all
sub fifoInit()
uo.setGlobal('fifoHead', '0')
uo.setGlobal('fifoTail', '0')
end sub
sub fifoPush(value)
var head = val(uo.getGlobal('fifoHead'))
uo.setGlobal('fifo' + str(head), value)
uo.setGlobal('fifoHead', str(head+1))
end sub
sub fifoPop()
var head = val(uo.getGlobal('fifoHead'))
var tail = val(uo.getGlobal('fifoTail'))
if (head == tail) then
#очередь пустая
return ''
end if
var value = uo.getGlobal('fifo' + str(tail))
tail = tail + 1
if (tail == head) then
#очередь пустая. ставим указатели в 0
tail = 0
head = 0
end if
uo.setGlobal('fifoHead', str(head))
uo.setGlobal('fifoTail', str(tail))
return value
end sub
value - значение, которое надо положить в очередь. любая строка, например название каста - Greater Heal, Energy BoltSanch wrote: sub fifoPush(value) - откуда берется это vaule и что она делает, отдаленно я знаю что так переносятся переменные из одного скрипта в другой, при запуске второго из первого.
в инжекте нету глобальных массивов. поэтому приходиться так вот извращаться.Sanch wrote: uo.setGlobal('fifo' + str(head), value) - непонятен смылс такого извращенного задания переменной, что это дает?
точно не знаю, но вроде бы нет. просто привчка еще с паскаляSanch wrote: (head == tail) - скобки обязательны?
return можно использовать не тока для выхода из функии, но и для возврата резултата. например:Sanch wrote: return value - в паре своих скриптов использовал просто "return" для выклучения скрипт, что же делает тобой напианая строка я не
понимаю.
Code: Select all
sub statCap()
return uo.str + uo.dex + uo.int
end sub
...
uo.print(str(statCap())) #сумма str, dex и int
...
ну напримерSanch wrote: Оч признателен за помощь, но ты не мог бы в кратце изложить принцип работы сего творения?
Code: Select all
sub energyBolt()
fifoPush("'Energy Bolt' lasttarget")
end sub
sub lightnig()
fifoPush("'Lightning' lasttarget")
end sub
sub greaterHeal()
fifoPush("'Greater Heal' self")
end sub
sub castManager()
var spell
repeat
spell = fifoPop()
if (spell <> '') then
uo.exec('cast ' + spell)
wait(5000)
end if
wait(100)
until 0
end sub
Code: Select all
начальное состояние
head
|
[ 0 ][ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ]
|
tail
push
head
|
[ 0 ][ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ]
|
tail
push
head
|
[ 0 ][ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ]
|
tail
pop
head
|
[ 0 ][ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ]
|
tail
pop
head
|
[ 0 ][ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ]
|
tail
вобщем согласен, очередь плохо себя будет вести довольно часто.Grin wrote:...
Code: Select all
sub setTimer(timerName, expireTime)
uo.setGlobal(timerName, str(uo.timer() + int(expireTime/100)))
end sub
sub isTimerExpire(timerName)
var n = val(uo.getGlobal(timerName))
return n <= uo.timer()
end sub
sub castLightning()
if (isTimerExpire('castTimer')) then
if (uo.count('lightScroll')) then
uo.waitTargetObject('lasttarget')
uo.useType('lightScroll')
setTimer('castTimer', 1600)
else
uo.cast('Lightning', 'lasttarget')
setTimer('castTimer', 2800)
end if
end if
end sub
Имхо было бы оч неплохо если промежутки между кастами были по 100мсек а не по 500-1000 при использовании рук, чтобы при физле сразу кастовать а не пока до тебя дойдет что у тебя физл, это то же потеря где то в 500-1000мсек.Ну это уже особенности шардов.
Но из своего опыта в пвп я понял, что где можно обойтись простым скриптом на каст, лучше не делать всяких циклов, очередей и т.п.