спелы под ногами? / [not] spell ...? / eval в автомакро [!!]
Модератор: 4epT
Правила форума
В форуме макросы "Макросы" разрешено только задавать вопросы по уже существующим макросам и просить помощь по недоработанным своим. При этом таким считается тот макрос который готов не менее чем на 2/3.
Если вы хотите попросить участников сообщества написать вам макрос, это можно сделать в разделе "сервис".
В форуме макросы "Макросы" разрешено только задавать вопросы по уже существующим макросам и просить помощь по недоработанным своим. При этом таким считается тот макрос который готов не менее чем на 2/3.
Если вы хотите попросить участников сообщества написать вам макрос, это можно сделать в разделе "сервис".
клик, я совсем не прото, как запустить мне ясно, мне интересно как это работат... так сказать хоццо научиться чемуто большему чем пользоваться тольк готовым.
Q: Im lazy, I want someone to make all macros that I want. Can someone do it?
...
(c) http://www.openkore.com/
...
(c) http://www.openkore.com/
eval - вычисляет аргумент так как будто его запустили на выполнение, т.о. можно вызывать функции созданные внутри ОК, для внутреннего использования.
Misc::whenGroundStatus(Utils::calcPosition($::char),"Poem of Bragi")
whenGroundStatus - функция из модуля Misc, которая проверяет как раз заклинания на земле. ей требуется координата и название спелла.
Координату свою получаем вызовом ф-ии calcPosition.
$char - это переменная - мы (чар т.е.).
Кстати такой вызов вернет 1 если на земле есть брага.
Что бы определить что ее нет надо поставить отрицание (!).
Misc::whenGroundStatus(Utils::calcPosition($::char),"Poem of Bragi")
whenGroundStatus - функция из модуля Misc, которая проверяет как раз заклинания на земле. ей требуется координата и название спелла.
Координату свою получаем вызовом ф-ии calcPosition.
$char - это переменная - мы (чар т.е.).
Кстати такой вызов вернет 1 если на земле есть брага.
Что бы определить что ее нет надо поставить отрицание (!).
спасибо (:
Q: Im lazy, I want someone to make all macros that I want. Can someone do it?
...
(c) http://www.openkore.com/
...
(c) http://www.openkore.com/
eval (*)Misc::whenGroundStatus(Utils::calcPosition($::char),"Poem of Bragi")
а не льзя тут замутить место для вписания полноценных условий?
а то как я понял по дэфолту там стоит равно? или я не то понял...
4ерт... а шутко ли? (:
а не льзя тут замутить место для вписания полноценных условий?
Код: Выделить всё
< less than
<= less than or equal to
== equal to
>= greater than or equal to
> greater than
!= not equal to
~ <left part> is element of <right part (comma-separated list)>
4ерт... а шутко ли? (:
Q: Im lazy, I want someone to make all macros that I want. Can someone do it?
...
(c) http://www.openkore.com/
...
(c) http://www.openkore.com/
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Ну-с, сабж включен в очередную сборку, SVN-6172.
Доступно в Даунлоаде: viewtopic.php?t=2
Можно испытывать.
Доступно в Даунлоаде: viewtopic.php?t=2
Можно испытывать.
Ахтунг
два условия в автомакросе некорректно работают!!!
eval $::config{something1} == "1"
eval $::config{something2t} == "2"
если в конфиге something2 равно 2, а something1 равно чему угодно - автомакро всё равно сработает. хотя не должен. управление условиями ==, =!, <>, <=, >= ничего не даёт.
any ideas?
два условия в автомакросе некорректно работают!!!
eval $::config{something1} == "1"
eval $::config{something2t} == "2"
если в конфиге something2 равно 2, а something1 равно чему угодно - автомакро всё равно сработает. хотя не должен. управление условиями ==, =!, <>, <=, >= ничего не даёт.
any ideas?
- 4epT
- macro-маньячина
- Сообщения: 2792
- Зарегистрирован: Чт дек 21, 2006 1:23 pm
- Сервер RO:: 4game
- Discord: ya4ept#8494
- Контактная информация:
помоему строчка eval должна быть 1 раз в условиях
Добавлено спустя 56 минут 4 секунды:
условия:
если переменная в конфиге содержит букву, то тогда вообще писец, моя логика отказывает в понимаии как это всё работает
Добавлено спустя 56 минут 4 секунды:
условия:
по тестам получается сработает тока последнее, 2 первых игнорируются.eval $::config{a} == 5
eval $::config{b} == 3
eval $::config{c} == 3
если переменная в конфиге содержит букву, то тогда вообще писец, моя логика отказывает в понимаии как это всё работает
1) может быть только один eval и считаться будет последний.dvdc писал(а):Ахтунг
два условия в автомакросе некорректно работают!!!
eval $::config{something1} == "1"
eval $::config{something2t} == "2"
если в конфиге something2 равно 2, а something1 равно чему угодно - автомакро всё равно сработает. хотя не должен. управление условиями ==, =!, <>, <=, >= ничего не даёт.
any ideas?
если надо проверять много условий то так и пишите
eval $::config{something1} == "1" and $::config{something2} == "2"
Кстати мне кажется что пользоваться eq а не == лучше.
2) если и с 1 эвалом работает некорректно, то создайте макрос и в нем напишите
Macro TestEval {
log @eval(...условие из автомакроса...)
}
Так вы проверите срабатывает ли оно вообще
Пример:
Код: Выделить всё
### Проверка нескольких условий ###
automacro T4 {
eval $::config{attackAuto} eq "2" and $::config{sellAuto } eq "0" and $::config{serverEncoding} eq "Russian"
timeout 60
call {
log Im alive
}
}
### как вывести значение ###
macro T4 {
log @eval($::config{attackAuto} eq "2" and $::config{sellAuto } eq "0" and $::config{serverEncoding} eq "Russian1")
}
Макро Т4 при запуске выдает:
macro T4
[macro][log]
Т.е. пустое значение = ЛОЖЬ (потому что $::config{serverEncoding} eq "Russian1" ложно)
Меняем его на
$::config{serverEncoding} eq "Russian"
macro T4
[macro][log] 1
1=Истина!
-------------------------------
4ерТ
"если переменная в конфиге содержит букву, то тогда вообще писец, моя логика отказывает в понимаии как это всё работает"
Я не понял что ты имеешь в виду )
Добавлено спустя 3 минуты 5 секунд:
Приведи пожалуйста пример сложного эвала который не работает.dvdc писал(а):Дело в том, что и "сложный" eval не работает. )) видимо лучше сделать в мульти всё-таки )
Я его прогоню на плагине с включенным выводом отладки и увижу если там есть ошибка... вот как в моем примере что я вижу в консоли:
eval $::config{attackAuto} eq "2" and $::config{sellAuto } eq "1" or $::config{serverEncoding} == "Russian" = 1
[macro] automacro T4 triggered.