восстановление сп аколита в заданном городе

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

Модератор: 4epT

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Zloten
Начинающий
Сообщения: 43
Зарегистрирован: Ср ноя 29, 2006 2:57 pm

восстановление сп аколита в заданном городе

Сообщение Zloten »

задача вроде простая а у меня не получается, вот:
хочу чтобы ако после того как после боя телепортнулся к кафре проверил у себя кол-во сп и если мало его то присел с афком и отдохнул
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? но где их ставить?
¤Seii¤
Энтузиаст
Сообщения: 62
Зарегистрирован: Чт ноя 30, 2006 4:38 pm

Сообщение ¤Seii¤ »

можно так

if ($town == "alberta") goto
Remember botting can be fun and not just because you get to taste the fruit without much work, but because you can have a lot of memorable moments.
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

офф-топ.. не совсем понял, к чему все это? пока бот доберется из города до локации у него и так сп будет достаточно.. для меня по крайней мере, это не актуально.. я просто в конфиге заглушил проверку хп..

# sitAuto_hp_lower 50
# sitAuto_hp_upper 80
sitAuto_sp_lower 20
sitAuto_sp_upper 85

и в скилах надо добавить notWhileSitting 1
от РО до шестой палаты - один шаг...
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

Так попробуй..

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
}
от РО до шестой палаты - один шаг...
Zloten
Начинающий
Сообщения: 43
Зарегистрирован: Ср ноя 29, 2006 2:57 pm

Сообщение Zloten »

выше перечисленное не заработало, а заработало вот что-
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 в конфиге, в мануале все слишком кратко
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

зачем обманываешь и не краснеешь? только что проверил - все работает как часики... может локацию не вписал нужную?

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 ???
от РО до шестой палаты - один шаг...
Zloten
Начинающий
Сообщения: 43
Зарегистрирован: Ср ноя 29, 2006 2:57 pm

Сообщение Zloten »

360 - это количество сп, почему то у меня не срабатывают проценты в данном автомакро :(
локацию вписал , просто выдало ошибку синтаксиса, я не стал разбираться может сам чтото кудато не правильно скопировал, вобчем содрал у тебя тока расстановку run-once 1 release SPrec и все получилось, да и сложно у тебя все и непонятно для меня- нуба :shock: но спасибо - на будущее пригодиться
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

я могу пояснить...

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 - разблокировать
}
от РО до шестой палаты - один шаг...
Zloten
Начинающий
Сообщения: 43
Зарегистрирован: Ср ноя 29, 2006 2:57 pm

Сообщение Zloten »

большое спасибо, как раз кстати, а то с опреторами я тока начал разбираться, тему мона закрыть
Ответить