восстановление сп аколита в заданном городе
Модератор: 4epT
Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
восстановление сп аколита в заданном городе
задача вроде простая а у меня не получается, вот:
хочу чтобы ако после того как после боя телепортнулся к кафре проверил у себя кол-во сп и если мало его то присел с афком и отдохнул
automacro SPrec {
location alberta
sp < 80 %
call SPrecovery
}
macro SPrecovery {
if ($.sp >= 340) goto end2
do sit
do chat create "afk"
:begin
if ($.sp >= 340) goto end1
pause 10
goto begin
:end1
do chat leave
do stand
:end2
}
менял оператор location на map и на mapchange - ничего не происходит
может надо юзать операторы run once и release? но где их ставить?
хочу чтобы ако после того как после боя телепортнулся к кафре проверил у себя кол-во сп и если мало его то присел с афком и отдохнул
automacro SPrec {
location alberta
sp < 80 %
call SPrecovery
}
macro SPrecovery {
if ($.sp >= 340) goto end2
do sit
do chat create "afk"
:begin
if ($.sp >= 340) goto end1
pause 10
goto begin
:end1
do chat leave
do stand
:end2
}
менял оператор location на map и на mapchange - ничего не происходит
может надо юзать операторы run once и release? но где их ставить?
офф-топ.. не совсем понял, к чему все это? пока бот доберется из города до локации у него и так сп будет достаточно.. для меня по крайней мере, это не актуально.. я просто в конфиге заглушил проверку хп..
# sitAuto_hp_lower 50
# sitAuto_hp_upper 80
sitAuto_sp_lower 20
sitAuto_sp_upper 85
и в скилах надо добавить notWhileSitting 1
# sitAuto_hp_lower 50
# sitAuto_hp_upper 80
sitAuto_sp_lower 20
sitAuto_sp_upper 85
и в скилах надо добавить notWhileSitting 1
от РО до шестой палаты - один шаг...
Так попробуй..
automacro SPrec {
location alberta
sp < 80 %
call SPrecovery
run-once 1
}
macro SPrecovery {
do sit
do chat create "afk"
$sp = @eval($::char->{sp})
$msp = @eval($::char->{sp_max})
while ($sp < $msp) as sploop
pause 5
$sp = @eval($::char->{sp})
end sploop
do chat leave
do stand
release SPrec
}
automacro SPrec {
location alberta
sp < 80 %
call SPrecovery
run-once 1
}
macro SPrecovery {
do sit
do chat create "afk"
$sp = @eval($::char->{sp})
$msp = @eval($::char->{sp_max})
while ($sp < $msp) as sploop
pause 5
$sp = @eval($::char->{sp})
end sploop
do chat leave
do stand
release SPrec
}
от РО до шестой палаты - один шаг...
выше перечисленное не заработало, а заработало вот что-
automacro SPrec {
location pay_fild03
sp < 360
call SPrecovery
timeout 20
run-once 1
}
macro SPrecovery {
if ($.sp >= 360) goto end2
do sit
do chat create "afk"
:begin
if ($.sp >= 360) goto end1
pause 10
goto begin
:end1
do chat leave
do stand
:end2
release SPrec
}
спасибо всем, и заодно не скинете ссылочку где расписана работа команды macro_debug в конфиге, в мануале все слишком кратко
automacro SPrec {
location pay_fild03
sp < 360
call SPrecovery
timeout 20
run-once 1
}
macro SPrecovery {
if ($.sp >= 360) goto end2
do sit
do chat create "afk"
:begin
if ($.sp >= 360) goto end1
pause 10
goto begin
:end1
do chat leave
do stand
:end2
release SPrec
}
спасибо всем, и заодно не скинете ссылочку где расписана работа команды macro_debug в конфиге, в мануале все слишком кратко
зачем обманываешь и не краснеешь? только что проверил - все работает как часики... может локацию не вписал нужную?
automacro SPrec {
location alberta
sp < 100%
call SPrecovery
run-once 1
}
macro SPrecovery {
do sit
do chat create "afk"
$sp = @eval($::char->{sp})
$msp = @eval($::char->{sp_max})
while ($sp < $msp) as sploop
pause 5
$sp = @eval($::char->{sp})
end sploop
do chat leave
do stand
release SPrec
}
кстати что у тебя такое - 360 ???
automacro SPrec {
location alberta
sp < 100%
call SPrecovery
run-once 1
}
macro SPrecovery {
do sit
do chat create "afk"
$sp = @eval($::char->{sp})
$msp = @eval($::char->{sp_max})
while ($sp < $msp) as sploop
pause 5
$sp = @eval($::char->{sp})
end sploop
do chat leave
do stand
release SPrec
}
кстати что у тебя такое - 360 ???
от РО до шестой палаты - один шаг...
360 - это количество сп, почему то у меня не срабатывают проценты в данном автомакро
локацию вписал , просто выдало ошибку синтаксиса, я не стал разбираться может сам чтото кудато не правильно скопировал, вобчем содрал у тебя тока расстановку run-once 1 release SPrec и все получилось, да и сложно у тебя все и непонятно для меня- нуба
но спасибо - на будущее пригодиться

локацию вписал , просто выдало ошибку синтаксиса, я не стал разбираться может сам чтото кудато не правильно скопировал, вобчем содрал у тебя тока расстановку run-once 1 release SPrec и все получилось, да и сложно у тебя все и непонятно для меня- нуба

я могу пояснить...
automacro SPrec { - это начало триггера.. то есть здесь нельзя делать никаких действий, кроме как определить условия, при которых вызывать макрос, который собственно и должен разруливать ситуацию..
location alberta - первое условие: локация
sp < 100% - ещё условие: СП
run-once 1 - блокировка автомакро
call SPrecovery - вызов именованного макроса
}
macro SPrecovery {
do sit - сесть
do chat create "afk" - создать чат
$sp = @eval($::char->{sp}) - получить текущее значение СП ($sp - это просто наша переменная, которой присваиваем значение)
$msp = @eval($::char->{sp_max}) - получить максимально возможное значение СП
while ($sp < $msp) as sploop - организуем цикл по условию, если тек СП меньше макс СП продолжаем выполнение цикла
pause 5 - небольшая задержка исполнения макроса
$sp = @eval($::char->{sp}) - обновим значение переменной
end sploop - прекратить если условие "ложь"или вернуться к метке sploop
do chat leave - закрыть чат
do stand - встать
release SPrec - разблокировать
}
automacro SPrec { - это начало триггера.. то есть здесь нельзя делать никаких действий, кроме как определить условия, при которых вызывать макрос, который собственно и должен разруливать ситуацию..
location alberta - первое условие: локация
sp < 100% - ещё условие: СП
run-once 1 - блокировка автомакро
call SPrecovery - вызов именованного макроса
}
macro SPrecovery {
do sit - сесть
do chat create "afk" - создать чат
$sp = @eval($::char->{sp}) - получить текущее значение СП ($sp - это просто наша переменная, которой присваиваем значение)
$msp = @eval($::char->{sp_max}) - получить максимально возможное значение СП
while ($sp < $msp) as sploop - организуем цикл по условию, если тек СП меньше макс СП продолжаем выполнение цикла
pause 5 - небольшая задержка исполнения макроса
$sp = @eval($::char->{sp}) - обновим значение переменной
end sploop - прекратить если условие "ложь"или вернуться к метке sploop
do chat leave - закрыть чат
do stand - встать
release SPrec - разблокировать
}
от РО до шестой палаты - один шаг...