|
Мини ЧАВО ЧАстозадаваемые ВОпросы. Различные гайды и инструкции. Тут будут ссылки на гайды и интересные топики. Если вы новичок, то сначала вам сюда. |
|
Опции темы | Опции просмотра |
14.02.2007, 01:19 | #11 |
Админ
|
8. условия
8. Условия
В макросах (например в операторе if) можно использовать следующие условия: < меньше чем ... <= меньше либо равно == равно > больше чем ... >= больше или равно != не равно ~ содержится (<левая переменная> это элемент <правой переменной>, здесь правая переменная представляет собой лист переменных (см. пункт 6.1)
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤ Быстро и качественно напишу конфиг (макрос) за yAD! Стучи! Последний раз редактировалось 4epT; 14.02.2007 в 01:51. |
14.02.2007, 01:39 | #12 |
Админ
|
9. специальные операторы
9. Специальные операторы
@npc (<x> <y>) Показывает ID НПЦ, находящегося на (<x>,<y>), или "-1" если НПЦ не найден. @inventory (<имя вещи>) Показывает ID <имя вещи>, находящейся у Вас в инвентаре, или "-1" если такая вещь не найдена. @Inventory (<имя вещи>) same as @inventory but returns all matching IDs as a comma-separated list or -1 if the item was not found. Здесь переводить не стал, т.к. не понял смысла оператора, кто разберётся чем он отличается от "@inventory" поделитесь секретом. @cart (<имя вещи>) Показывает ID <имя вещи>, находящейся у Вас в телеге, или "-1" если такая вещь не найдена. @Cart (<имя вещи>) same as @cart but returns all matching IDs as a comma-separated list or -1 if the item was not found. @storage (<имя вещи>) Показывает ID <имя вещи>, находящейся у Вас в кафре (хранилище), или "-1" если такая вещь не найдена. @Storage (<имя вещи>) same as @storage but returns all matching IDs as a comma-separated list or -1 if the item was not found. @player (<имя игрока>) Показывает ID <имя игрока>, или "-1" если такой игрок не найден. @vender (<имя игрока>) Показывает ID торговца <имя игрока>, который открыл магазин, или "-1" если такой игрок не найден. @store (<имя вещи>) Показывает ID <имя вещи> в магазине торговца (тут уже НПЦ, а не человека), или "-1" если такая вещь не найдена. @random ("<аргумент1>","<аргумент2>", ...) Показывает случайным образом один из указанных аргументов. Аргументы обязательно писать в кавычках. Несколько аргументов разделяются запятыми. @rand (<n>, <m>) Показывает случайное число между <n> и <m> (включительно). Дробные числа округляются до целого значения (3.4 округляется до 3; а 3.5 до 4). @invamount (<имя вещи>) Показывает количество данной <имя вещи> в инвентаре. @cartamount (<имя вещи>) Показывает количество данной <имя вещи> в телеге. @shopamount (<имя вещи>) Показывает количество данной <имя вещи> в Вашем (открытом) магазине. @storamount (<имя вещи>) Показывает количество данной <имя вещи> в кафре. @eval (<аргумент(ы)>) Оценивает данный аргумент, или несколько аргументов. Например, если аргумент "$v = 8", то результатом оператора "@eval ($v + 2)" будет число 10. @arg ("<набор слов>", <n>) Показывает <n>-ное слово из <набор слов>, или пробел, если <n> больше количества слов в <набор слов>. @config (<параметр>) Показывает значение параметра из config.txt. Например строчка в макросе "log @config (username)" покажет на экране: "[macro][log] <ваш логин>".
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤ Быстро и качественно напишу конфиг (макрос) за yAD! Стучи! Последний раз редактировалось 4epT; 14.02.2007 в 01:53. |
14.02.2007, 01:48 | #13 |
Админ
|
10. формирование "цепочки команд"
10. Формирование "цепочки команд"
Вы можете запустить последовательность команд (одну за другой), не дожидаясь OpenKore-вского искусственного интеллекта или macro_delay или чего-то ещё. Для этого заключите эти команды в квадратные скобки: [ И ]. Пример, с нумерацией линий: Код:
0 macro foo { 1 do <команда> 2 log <команда> BbInoLHeHa 3 [ 4 do <команда1> 5 do <команда2> 6 log <команда1> u <команда2> BbInoLHeHbI 7 ] 8 log END 9 }
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤ Быстро и качественно напишу конфиг (макрос) за yAD! Стучи! Последний раз редактировалось 4epT; 14.07.2007 в 01:20. |
14.02.2007, 18:23 | #14 |
Админ
|
11. пример макроса
11. Пример макроса
Код:
macro foo { $foobegin = $.pos do move 168 128 prt_in do talk @npc (172 130) do store do buy @store (Silver Arrow) 10000 do move 280 198 prontera do talk @npc (282 200) do talk cont do talk resp 1 do storage add @inventory (Silver Arrow) @eval (@invamount (Silver Arrow) - 1000) do storage close do move $foobegin }
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤ Быстро и качественно напишу конфиг (макрос) за yAD! Стучи! |
14.02.2007, 19:38 | #15 |
Админ
|
12. синтаксис автомакроса (часть 1)
12. Синтаксис автомакроса (Часть 1)
Существует 2 схемы автомакроса: 1. Автомакрос, который вызывает отдельный макрос: Код:
automacro foo { <условие> <значение> <условие> <значение1>, <значение2> call <имя макроса> } Код:
automacro mi { <условие> <значение> call { do <команда> do <команда> } } Далее АМ следует читать как автомакрос. В тело АМ можно прописать выполнение следующих условий: map <имя карты> АМ запустится, когда Вы будете находиться на локации <имя карты>. location [not] <имя карты> <x1> <y1> [<x2> <y2>] [, ...] АМ запустится, когда Вы находитесь в (вне (not)) локации <имя карты>. 1. Если координаты <x1> <y1> и <x2> <y2> не заданы, то АМ будет запускаться, как и в случае "map <имя карты>". 2. Если указаны только координаты <x1> <y1>, то АМ запустится, если Вы, находясь на локации <имя карты>, попадёте на координаты <x1> <y1>. 3. Если указаны координаты <x1> <y1> и <x2> <y2>, то АМ запустится, если Вы, находясь на локации <имя карты>, попадёте в мнимый прямоугольник, где <x1> <y1> - верхняя левая точка, а <x2> <y2> - нижняя правая точка. Код:
<x1> <y1> _______ | | | | |_______| <x2> <y2> Отделённые запятыми аргументы определяются как условие OR (или): Код:
location geffen, prontera 123 234 Несколько строк (от двух и более) определяются как условие AND (и): Код:
location not geffen location not prontera mapchange <имя карты> | any [, ...] АМ запустится, если Вы текущую локацию поменяли на <имя карты>. Если используется условие "mapchange any", то АМ будет запускаться при любом изменении локакци. Отделённые запятыми аргументы определяются как условие OR (или). У кого получится воспользоваться условием "mapchange any", отпишитесь, пожалуйста, а то у меня не получается. hp <условие> <значение>[%] АМ запустится, когда ваше HP будет удовлетворять <условие> <значение> (абсолютное значение) или <условие> <значение>% (процент) (относительное значение). Пусть у Вас всего 200 hp и у Вас отняли 40 hp, значит теперь Ваше абсолютное значение 160 hp а относительное 80% hp. Несколько строк (от двух и более) определяются как условие AND (и). sp <условие> <значение>[%] Тоже самое, только по отношению к Вашему SP spirit <условие> <значение> АМ запустится, когда число сферок (у монка) будет удовлетворять <условие> <значение>. Несколько строк (от двух и более) определяются как условие AND (и). weight <условие> <значение>[%] АМ запустится, когда Ваш вес будет удовлетворять <условие> <значение> (абсолютное значение) или <условие> <значение>% (процент) (относительное значение). Несколько строк (от двух и более) определяются как условие AND (и). cartweight <условие> <значение>[%] АМ запустится, когда вес Вашей телеги будет удовлетворять <условие> <значение> (абсолютное значение) или <условие> <значение>% (процент) (относительное значение). Несколько строк (от двух и более) определяются как условие AND (и). zeny <условие> <значение> АМ запустится, когда количество денег у Вас будет удовлетворять <условие> <значение>. Несколько строк (от двух и более) определяются как условие AND (и). soldout <условие> <количество слотов> АМ запустится, когда количество проданных слотов в Вашем магазине будет удовлетворять <условие> <количество слотов>. Несколько строк (от двух и более) определяются как условие AND (и). Например у Вас в АМ прописано "soldout > 1". Пусть у Вас в магазине продаются 4 элу и 5 ори. АМ сработает тогда, когда у Вас купят все элу или все ори. Если у Вас купят 1 элу, то слот будет считаться не проданным и АМ не сработает. status [not] <статус> [, ...] АМ запустится, когда у Вас статус (нет статуса (not)) <статус>. Отделённые запятыми аргументы определяются как условие OR (или). Несколько строк (от двух и более) определяются как условие AND (и). inventory "<имя вещи>" <условие> <значение> [, ...] АМ запустится, когда количество <имя вещи>, находящейся у Вас в инвентаре будет удовлетворять <условие> <значение>. Отмечу, что<имя вещи> обязательно нужно писать в ""! Отделённые запятыми аргументы определяются как условие OR (или). Несколько строк (от двух и более) определяются как условие AND (и). cart "<имя вещи>" <условие> <значение> [, ...] АМ запустится, когда количество <имя вещи>, находящейся у Вас в телеге будет удовлетворять <условие> <значение>. Отмечу, что<имя вещи> обязательно нужно писать в ""! Отделённые запятыми аргументы определяются как условие OR (или). Несколько строк (от двух и более) определяются как условие AND (и). storage "<имя вещи>" <условие> <значение> [, ...] АМ запустится, когда количество <имя вещи>, находящейся у Вас в кафре (хранилище) будет удовлетворять <условие> <значение>. Отмечу, что<имя вещи> обязательно нужно писать в ""! Отделённые запятыми аргументы определяются как условие OR (или). Несколько строк (от двух и более) определяются как условие AND (и). shop "<имя вещи>" <условие> <значение> [, ...] АМ запустится, когда количество <имя вещи>, находящейся у Вас в магазине (открытом) будет удовлетворять <условие> <значение>. Отмечу, что <имя вещи> обязательно нужно писать в ""! Отделённые запятыми аргументы определяются как условие OR (или). Несколько строк (от двух и более) определяются как условие AND (и). base <условие> <уровень> АМ запустится, когда Ваш базовый левл будет удовлетворять <условие> <уровень>. Несколько строк (от двух и более) определяются как условие AND (и). job <условие> <уровень> АМ запустится, когда Ваш джоб левл будет удовлетворять <условие> <уровень>. Несколько строк (от двух и более) определяются как условие AND (и). class <профессия> АМ запустится, если Ваша профессия: <профессия>. spell <имя скила> [, ...] АМ запустится, когда на Вас кто-нибудь будет кастовать <имя скила>. Отделённые запятыми аргументы определяются как условие OR (или).
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤ Быстро и качественно напишу конфиг (макрос) за yAD! Стучи! |
15.02.2007, 01:05 | #16 |
Админ
|
12. синтаксис автомакроса (часть 2)
12. Синтаксис автомакроса (Часть 2)
monster <имя моба> [, ...] АМ запустится, когда моб <имя моба> находится поблизости (в пределах видимости). Когда макрос вызван устанавливаются специальные переменные $.lastMonster и $.lastMonsterPos. Отделённые запятыми аргументы определяются как условие OR (или). Несколько строк (от двух и более) определяются как условие AND (и). notMonster <список мобов> АМ запустится, когда моб, находящийся возле Вас (в пределах видимости), не находится в <списке мобов>. Имена мобов следует писать через запятую, соблюдая РеГиСтР. Отделённые запятыми аргументы определяются как условие AND (и). aggressives <условие> <число> АМ запустится, когда число агрессивных монстров удовлетворяет условию: <условие> <число>. Несколько строк (от двух и более) определяются как условие AND (и). player <имя игрока> [, <число клеток>] АМ запустится, если игрок <имя игрока> находится в пределах видимости или не дальше чем <число клеток>. В качестве имени можно использовать либо строго заданное: "4epT" (пишется в кавычках), либо шаблон: /4epT/ (пишется через слэш). Разничца в том, что на имя 4epTik первое условие не сработает (то что в кавычках), а второе сработает (т.е. слово 4epTik сожершит буквы 4epT) Несколько строк (от двух и более) определяются как условие AND (и). equipped [<слот>] <имя вещи> | none [, ...] АМ запустится, когда <имя вещи> одето. Или не одето (none). Необязательно, но можно использовать <слот> (topHead, midHead, lowHead, leftHand, rightHand, robe, armor, shoes, leftAccessory, rightAccessory и arrow). Отделённые запятыми аргументы определяются как условие OR (или). Несколько строк (от двух и более) определяются как условие AND (и). var <имя переменной> (unset | <условие> <значение>) АМ запустится, если переменная <имя переменной> unset (не заданна) или удовлетворяет <условие> <значение>. Несколько строк (от двух и более) определяются как условие AND(и). varvar <имя вложенной переменной> (unset | <условие> <значение>) АМ запустится, если вложенная переменная unset (не заданна) или удовлетворяет <условие> <значение>. Несколько строк (от двух и более) определяются как условие AND(и). console "<текст>" | /<набор символов>/[i] АМ запустится, когда в консоле появится <текст> или если в консольном тексте сожержится символ (или слово) из <набор символов>. <набор символов> нужно разделять знаком "|" (например console /kast|agi|bles/). Параметр i (следует писать сразу после /<набор символов>/, без пробела) означает что <набор символов> становится нечувствительным к РеГиСтРу. Устанавливается специальная переменная $.lastLogMsg. Примеры: 1. Пусть в АМ есть строчка console "You are sitting.". Если в консоле набрать команду "sit", тот бот сядет и напишет "You are sitting." и АМ запустится. 2. Пусть в АМ есть строчка console /You/. Если в консольном тексте содержится слово "You", то АМ будет запускаться. Отмечу, что если бы бот писал "you are sitting.", то АМ бы не запустился. 3. Пусть в АМ есть строчка console /y/i. Если в консольном тексте содержится символ "y" или "Y", то АМ будет запускаться. Следует различать консольный текст и текст чатов (приват, общий, пати, гилд). Т.е. если Вам в приват напишут сообщение, то оно появится у Вас в консоли, НО для OpenKore это сообщение не консольный текст! pm ("<текст>" | /<набор символов>/[i]) [<имя игрока>] АМ запустится, если в приватном сообщении появится <текст> или если полученный текст содержит символ(ы) из <набор символов>. Это условие можно установить для определённого игрока <имя игрока>. Параметр i означает что <набор символов> становится нечувствительным к РеГиСтРу. Устанавливаются специальные переменные $.lastpm и $.lastpmMsg. pubm "<текст>" | /<набор символов>/[i] [<число клеток>] АМ запустится, если в общем чате появится <текст> или если полученный текст содержит символ(ы) из <набор символов>. Это условие можно установить для определённой дистанции (<число клеток>). Параметр i означает что <набор символов> становится нечувствительным к РеГиСтРу. Устанавливаются специальные переменные $.lastpub и $.lastpubMsg. party "<текст>" | /<набор символов>/[i] АМ запустится, если в пати-чате появится <текст> или если полученный текст содержит символ(ы) из <набор символов>. Параметр i означает что <набор символов> становится нечувствительным к РеГиСтРу. Устанавливаются специальные переменные $.lastparty и $.lastpartyMsg. guild "<текст>" | /<набор символов>/[i] АМ запустится, если в гилд-чате появится <текст> или если полученный текст содержит символ(ы) из <набор символов>. Параметр i означает что <набор символов> становится нечувствительным к РеГиСтРу. Устанавливаются специальные переменные $.lastguild и $.lastguildMsg. hook <hookname> triggers when openkore calls <hookname>. Без понятия что это. Если есть какие-то догадки, то пишите. saveN <hash key> (use in combination with hook) Сохраняет значение <hash key> в переменные от .$hooksave1 до .$hooksaveN. Без понятия что это. Если есть какие-то догадки, то пишите. run-once 0 | 1 Если установлена "1", то АМ закроется, пока его не включат (см. команду release). Например, пусть АМ запускается, когда Ваш вес больше "1", т.е. он будет запускаться пока Вы находитесь в игре. OpenKore постоянно будет писать, что АМ запущен. Если Вы в тело АМ добавите строчку "run-once 1" (не важно в начале или в конце), то АМ выполнится 1 раз, после чего он "закроется". overrideAI 0 | 1 Если установлена "1", то АМ будет игнорировать искусственный интеллект OpenKore. Т.е. АМ не будет использовать паузу при движении (“move”) и при смерти (”status death”). delay <n> АМ будет ждать <n> секунд, после чего продолжит свою работу. timeout <n> АМ будет ждать по крайней мере <n> секунд после чего перезапустится. Это пригодится, если необходимо повторять какие-то действия периодически через определённый промежуток времени. macro_delay <n> Устанавливает macro_delay (задержку между командами макроса) в <n> секунд, игнорируя значение в файле timeouts.txt. priority <номер> Устанавливает приоритет АМ. АМ с меньшим номером запустится раньше. Если приоритет не установлен, то устанавливается "0". exclusive 0 | 1 Если установлена "1", то этот АМ не может быть прерван другими АМ. set <переменная> <значение> Устанавливает <переменной> <значение>. В одном АМ можно использовать несколько условий "set". call <имя макроса> Вызывает макрос <имя макроса>. call { <команда> } Выполняет <команду>. В одном блоке "call" можно использовать несколько команд. orphan <метод> Устанавливает метод для работы с одиночным макросам. См. macro_orphans.
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤ Быстро и качественно напишу конфиг (макрос) за yAD! Стучи! Последний раз редактировалось 4epT; 17.07.2007 в 20:59. |
15.02.2007, 01:07 | #17 |
Админ
|
13. пример автомакроса
13. Пример автомакроса
Код:
automacro autoloot { console /You are now in the game/ call { do c @autoloot 100 } run-once 1 }
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤ Быстро и качественно напишу конфиг (макрос) за yAD! Стучи! |
15.02.2007, 01:11 | #18 |
Админ
|
14. отладка
14. Отладка[Внимание! Отладка была отключена в версии макро-плагина 2.0.1 (он для OpenKore версии 2.0.0 и выше)]
Отладка реализуется файлом cvsdebug.pm. Добавьте macro_debug <уровень(ни)> в файл config.txt. Существует следующие уровни отладки: variable_trace - прослеживание переменных command_preparsed - не анализирует командную строку command_parsed - анализирует командную строку parser_steps - анализирует шаги function_call_macro - макро функции (маленький трафик) function_call_auto - автомакро функции (большой трафик) automacro_checks - автомакро проверка (большой трафик) developers - полезные отладочные сообщения full - полная отладка, все уровни none - никаких сообщений отладки вообще. Уровни отладки разделяются символом "|". Пример: Код:
macro_debug variable_trace|parser_steps
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤ Быстро и качественно напишу конфиг (макрос) за yAD! Стучи! Последний раз редактировалось vitt; 15.06.2008 в 21:06. |
15.02.2007, 01:13 | #19 |
Админ
|
15. ограничения
15. Ограничения
@random ("foo", "bar", "@eval (4 + 5)", "yatta") - разрешено @random ("foo", "bar", ":-)", "yatta") - запрещено
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤ Быстро и качественно напишу конфиг (макрос) за yAD! Стучи! |
17.04.2007, 00:46 | #20 | |
Админ
|
16. Специальная переменная $.lastMatchN и регулярные выражения (regexp)
16. Специальная переменная $.lastMatchN и регулярные выражения (regexp)
Рассмотрим работу переменной $.lastMatchN на следующем примере: Допустим мы хотим уходить в хайд, когда вас пытаются азурить. Итак когда на вас используют азуру, то в консоли появляется строчка следующего типа: Цитата:
"Player .* (0) is casting Extremity Fist on you (time 920ms)" В языке Perl сочетание .* означает - любое число любых символов. Тем самым мы ушли от имени 4epT. Как вы заметили, после имени игрока в нашем шаблоне находится (0) - это номер игрока (бот сам пронумеровывает игроков, по мере их появления в пределах видимости), т.е. один и тот же игрок в разное время может иметь разный номер. Поэтому этот шаблон не универсален. Он сработает только если игрок под номером 0 будет азурить вас. В итоге получем шаблон: "Player .* is casting Extremity Fist on you" он читается как: "Player любое кол-во символов is casting Extremity Fist on you" Вернёмся к нашим яблокам, к специальной переменной $.lastMatchN. Допустим мы хотим выцепить из этого шаблона имя игрока. Для этого заключим его в скобки: "Player (.*) \(.*is casting Extremity Fist on you" Тем самым мы присвоили переменной $.lastMatch1 значение .* (в нашем случае это будет имя игрока) \( - это означет символ открывающейся скобки. При составлении шаблонов можно использовать различные метасимволы и модификаторы (типо .*). Памятка по регулярным выражениям (regexp) незнаю есть ли смысл передирать её сюда..
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤ Быстро и качественно напишу конфиг (макрос) за yAD! Стучи! Последний раз редактировалось 4epT; 31.05.2007 в 13:59. |
|
Опции темы | |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
macro плагин | 4epT | Новости | 7 | 01.04.2008 13:50 |
Пращу помощьи с macro-сом | TEXAS | Макросы и Плагины | 11 | 28.01.2007 09:08 |