спелы под ногами? / [not] spell ...? / eval в автомакро [!!]

Всё, что касается макро-плагина.

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

Правила форума
В форуме макросы "Макросы" разрешено только задавать вопросы по уже существующим макросам и просить помощь по недоработанным своим. При этом таким считается тот макрос который готов не менее чем на 2/3.
Если вы хотите попросить участников сообщества написать вам макрос, это можно сделать в разделе "сервис".
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

:D сделали клёвую штуку, а нюбу так и не помогли)

Добавлено спустя 2 минуты 56 секунд:

Смотришь 6 пост в этом топике
скачиваешь файлы с него
заменяешь те которые у тебя новыми
дальше в макрос.тхт добавлешь макросы из того 6 поста
надеюсь как пользоваться макросами ты знаешь
nikitaaa
Начинающий
Сообщения: 44
Зарегистрирован: Чт ноя 16, 2006 5:45 pm

Сообщение nikitaaa »

клик, я совсем не прото, как запустить мне ясно, мне интересно как это работат... так сказать хоццо научиться чемуто большему чем пользоваться тольк готовым.
Q: Im lazy, I want someone to make all macros that I want. Can someone do it?
...
(c) http://www.openkore.com/
DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid »

eval - вычисляет аргумент так как будто его запустили на выполнение, т.о. можно вызывать функции созданные внутри ОК, для внутреннего использования.

Misc::whenGroundStatus(Utils::calcPosition($::char),"Poem of Bragi")

whenGroundStatus - функция из модуля Misc, которая проверяет как раз заклинания на земле. ей требуется координата и название спелла.
Координату свою получаем вызовом ф-ии calcPosition.
$char - это переменная - мы (чар т.е.).

Кстати такой вызов вернет 1 если на земле есть брага.
Что бы определить что ее нет надо поставить отрицание (!).
nikitaaa
Начинающий
Сообщения: 44
Зарегистрирован: Чт ноя 16, 2006 5:45 pm

Сообщение nikitaaa »

спасибо (:
Q: Im lazy, I want someone to make all macros that I want. Can someone do it?
...
(c) http://www.openkore.com/
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Click писал(а)::D сделали клёвую штуку, а нюбу так и не помогли)
Кстати в примерах на форуме ОК (там я их чуть изменил)... короче, кажется в них там именно то что ему надо.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Сообщение 4epT »

ну всё теперь нахер плагины, юзаем макросы :crazy:

шутко %)
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
nikitaaa
Начинающий
Сообщения: 44
Зарегистрирован: Чт ноя 16, 2006 5:45 pm

Сообщение nikitaaa »

eval (*)Misc::whenGroundStatus(Utils::calcPosition($::char),"Poem of Bragi")

а не льзя тут замутить место для вписания полноценных условий?

Код: Выделить всё

< 	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/
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

nikitaaa
Там по умолчанию ничего не стоит. Потому что в перле true и 1 - это одно и тоже, а функция возвращает единицу.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid »

nikitaaa

Это место для всего, в том числе и для условий.
Смотри:

eval 2+2+2 >= Utils::calcPosition($::char)->{x}
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Ну-с, сабж включен в очередную сборку, SVN-6172.
Доступно в Даунлоаде: viewtopic.php?t=2
Можно испытывать.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
dvdc
Бывалый
Сообщения: 556
Зарегистрирован: Вс ноя 05, 2006 1:43 pm
Контактная информация:

Сообщение dvdc »

Ахтунг
два условия в автомакросе некорректно работают!!!
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
Контактная информация:

Сообщение 4epT »

помоему строчка eval должна быть 1 раз в условиях

Добавлено спустя 56 минут 4 секунды:

условия:
eval $::config{a} == 5
eval $::config{b} == 3
eval $::config{c} == 3
по тестам получается сработает тока последнее, 2 первых игнорируются.

если переменная в конфиге содержит букву, то тогда вообще писец, моя логика отказывает в понимаии как это всё работает
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

"Два условия не работают" - вернулись к первому же вопросу:
piroJOKE писал(а):Э... я извиняюсь, а чего ты его в "сингл" запихал, а не в "мульти"?
:twisted:
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
dvdc
Бывалый
Сообщения: 556
Зарегистрирован: Вс ноя 05, 2006 1:43 pm
Контактная информация:

Сообщение dvdc »

Дело в том, что и "сложный" eval не работает. )) видимо лучше сделать в мульти всё-таки )
DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid »

dvdc писал(а):Ахтунг
два условия в автомакросе некорректно работают!!!
eval $::config{something1} == "1"
eval $::config{something2t} == "2"

если в конфиге something2 равно 2, а something1 равно чему угодно - автомакро всё равно сработает. хотя не должен. управление условиями ==, =!, <>, <=, >= ничего не даёт.

any ideas?
1) может быть только один eval и считаться будет последний.
если надо проверять много условий то так и пишите
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.
Ответить