Макросы - язык описания сценариев, крайне полезная вещь

Дополнения к OpenKore, расширяющиее её функциональность, называются плагинами.

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

Аватара пользователя
мираж
Admin
Сообщения: 610
Зарегистрирован: Сб ноя 04, 2006 1:15 am
Откуда: Москва
Контактная информация:

Макросы - язык описания сценариев, крайне полезная вещь

Сообщение мираж »

В начале скачайте ваш макрос и разархивируйте его.
У вас должна быть папка с названием Macro содержащая несколько .pm файлов и два файла с названием macro.pl и cvsdebug.pm. Создайте папку plugins в корневом каталоге опенкора и скопируйте туда папку Macro и файл macro.pl. Также скопируйте файл cvsdebug.pm в корневой каталог опенкора и создайте файл macros.txt в папке control. Это файл где будет содержатся ваш макрос/автомакрос.
Так должно выглядеть дерево каталогов вашего опенкора (исключая файлы самого опенкора):
openkore
|-- control
| `-- macros.txt
|-- cvsdebug.pm
|-- fields
|-- logs
|-- plugins
| |-- Macro
| | |-- Automacro.pm
| | |-- Data.pm
| | |-- Parser.pm
| | |-- Script.pm
| | `-- Utilities.pm
| `-- macro.pl
|-- src
`-- tables
Для конфигурации плагина прочитайте тему Файлы Конфигурации. Перед тем как использовать плагин вы должны прочитать документацию.
Команды

Код:

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

Macro <название макроса> [опция] [ -- параметр (-ры) ]
Запуск macro <название макроса>
Опция                Значение                         Описание
-repeat                      N                  Повторяет макрос n раз

-overrideAL         (нет значений)     Убирает исуственный интеллект
                                                     опенкора

-macro_delay      задержка             Убирает общую задержку из
                                                      текущего макроса

-orphan               method                 Использует <метод> для обработки 
                                                      одиночного макроса
Параметр для макроса может быть определен после двойного тире (или минуса кому как нравится) (--). Эти параметры сохраняют переменную $.param1 к $.paramN.

Пример:

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

macro foo {
log Parameter 1 is $.param1
log Parameter 2 is $.param2
}
Когда вызывается macro foo -- foo bar это будет выведено на экран
[macro] Parameter 1 is foo
[macro] Parameter 2 is bar

macro list
Списки всех доступных макросов.

macro stop
Остановка текущего макроса.

macro pause
Приостановка запущенного макроса.

macro resume
Включение приостановленного макроса.

macro set другое значение
Установка/изменение другого значения или удаление, если значение не задано.

macro version
Вывод версии макроса

macro reset [<название (-ния) >]
Сброс (или восстановление) всех запущенных автомакросов или изменение <название>.

macro status
Показывает запущен ли макрос в настоящее время. Если макрос запущен то показывает задержку перед следующей командой, текущую строку, параметры ИИ (Искуственного интелекта), действительно ли макрос завершен и действительно ли макрос зарегистрировался к ИИ. (эту фразу сам не понял но по идее просто перезапуск ИИ хотя могу и ошибаться)

Файлы Конфигурации
controls/macros.txt
Вставьте сюда свой макрос и автомакрос.

controls/timeouts.txt
Добавьте macro_delay и поставьте значение в секундах (по желанию) для паузы между командами
controls/config.txt

Код:

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

Переменная    Значение               Описание
macro_nowarn           01                         Включает или выключает раздражающие
                                                             предупреждения когда не                                                                                      .                                                            используется
                                                             команда call в вашем автомакросе  .  .   .                                                             (-сах).
macro_orphans        terminatereregi
                            sterreregister_safe    Смотрите Одиночные Макросы

macro_debug            Уровень (-ни)                Смотрите Отладку

Синтаксис Макроса

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

macro foo {
do this..
and that..
yattayatta..
}

В теории вы можете использовать любую консольную команду макроса. Я (ну не я а автор) тестировал и использовал этот плагин для покупки серебряных стрел, разговора с NPC (НПС) и pm ing people (команда ниже смотрите). Ленивые (заранее извиняюсь) люди могут использовать макрос для завершения квеста на проход в подземелье аматсу или на что-нибудь подобное.

do <команда>
Позволяет опенкору управлять <команда> (ну управления простыми командами типа sit, move).

Пример:

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

macro foo {
do move 123 234 prontera
do sit
do c "hello world"
}
log <текст>
Выводит <текст> на консоль.

Пример:

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

macro foo {
log This line logs a text to console.
log All your base are belong to us!
}
pause [<n>]
Останавливает на 1 или <N> секунд (надеюсь понятно что макрос).

Пример:

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

macro foo {
log I'm here and...
pause 10
log now I'm here.
}
call <название макроса> [<n>]
Вызывает макрос <название макроса> [<n> времени] (n – продолжительность макроса). Когда макрос <название макроса> заканчивается то текущий макрос продолжает работу. (т.е. вы можете прервать один макрос и запустить другой когда он закончится то прерванный макрос продолжит работу)

release (<название> | all)
Восстанавливает закрытый автомакрос (“run-once” ключевым словом или закрытый “lock”) или восстанавливает все автомакросы когда используется release all.

lock <название>
Закрывает автомакрос и выключает его проверку.

stop
Немедленно завершает запущенный макрос.

Описание и использование переменных.
Вы можете определить и работать с собственной переменной. Для установки переменной используют $variable = value, для восстановления величины используют $variable (я думаю понятно что переменной). Это дает возможность увеличивать или уменьшать переменную (имеется ввиду величину). Обратите внимание что переменные должны начинаться с символа должны содержать ничего кроме букв и цифр.

Пример:

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

macro foo {
$var1 = world
$var2 = hello
$var3 = $var2 $var1
log next line will yell out "hello world . world . hello"
do c $var3 . $var1 . $var2
$var4 = 47
log \$var4 is $var4
$var4++
log \$var4 is $var4
$var4 = @eval ($var4 + 52)
log \$var4 is $var4
}
Специальные переменные.
Здесь представлены специальные переменные начинающиеся с точки (ну и естественно перед точкой стоит знак $).
• $.map – карта на которой вы находитесь ("prontera")
$.pos – ваша текущая позиция ("123 234")
• $.time – текущее время как отметка пользователей Юникс ("1131116304")
• $.datetime – текущее число и время ("Fri Nov 4 15:59:36 2005")
• $.lastLogMsg – переключение текста состояния последнего автомакроса “console”
• $.lastpub – имя игрока переключившего текст последнего состояния автомакроса "pubm" (в кавычках скорее всего команды смотрите ниже)
• $.lastpubMsg – последнее его написанное сообщение
• $.lastpm - имя игрока переключившего текст последнего состояния автомакроса "pm"
• $.lastpmMsg - последнее его написанное сообщение
• $.lastguild - имя игрока переключившего текст последнего состояния автомакроса "guild" (тоже но с гильдой)
• $.lastguildMsg - последнее его написанное сообщение
• $.lastparty - имя игрока переключившего текст последнего состояния автомакроса "party" (а здесь с пати)
• $.lastpartyMsg - последнее его написанное сообщение
• $.lastMonster - имя игрока переключившего текст последнего состояния автомакроса "monster" (а здесь с монстром)
• $.lastMonsterPos – последняя известная позиция этого монстра ("123 234 prontera")
• $.lastMatchN – сопоставление последней инормации с ссылкой или сайтом regexp (неуверен что верно перевел и надо разобратся что это такое)
• $.paramN – строка параметров команд (смотрите Команды)
• $.caller – название последнего переключенного автомакроса
(Тут многие переменные похожи но они для разных случаев смотрите внимательно!)

Вложенные переменные.
Вы можете определить динамические или вложенные переменные (не спрашивайте как)

Пример:

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

macro foo {
$var = foo
log \$var is "foo"
${$var} = bar
log \$\$var is \$foo is "bar"
}
Управление потоком данных и метки. (Что такое метки, к программисту!)
В то время как все языки программирования высокого уровня используют конструкции типа "if .. then", "while", "repeat", "for .. next", "do .. while" и функции содержащие выражение "if", "goto" and "while". Вот почему макро плагин поддерживает только три этих оператора (или функции кому как нравится).
Так как нет (видимой) нумерации строк вы должны использовать метки которые определяются двоеточием и сопровождаются именем метки.
Пример конструкции "while":

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

macro foo {
$i = 0
log the next lines will loop 11 times (0 .. 10)
while ($i <= 10) as exampleloop
log loop $i
$i++
end exampleloop
}

macro foo {
$i = @random ("1", "2", "3")
if ($i == 1) goto one
if ($i == 2) goto two
log i is three.
goto end
:one
log i is one
goto end
:two
log i is two
:end
}
Специальные операторы.

@npc (<x> <y>)
показывает идентификатор НПСа который расположен <x>, <y> (по идее просто обнаруживает по координатам определенного НПСа или его идентификационный номер) (идентификационный номер это номер по которому что-то (вещь нпс и т.д.) зарегистрирована на сервере)

@inventory (<название вещи>)
находит в вашем инвентаре <название вещи> и возвращает ее идентификационный номер (надеюсь все понимают что название пишется на английском)

@cart (<название вещи>)
находит в вашей тележке <название вещи> и возвращает ее идентификационный номер

@storage (<название вещи>)
находит в вашем хранилище <название вещи> и возвращает ее идентификационный номер

@player (<имя игрока>)
находит игрока и возвращает его идентификационный номер

@vender (<имя игрока>)
находит игрока торговца (который открыл магазин и вышел с помощью команды) и возвращает его идентификационный номер

@store (<название вещи>)
находит вещь в магазине торговца и возвращает ее идентификационный номер

@random ("<параметр1>"[, "<параметр2>"[, ...]])
возвращает случайным образом один из данных параметров (наверно что-то типа рандомной заточки или запутывания ГМов)

@rand (<n>, <m>)
возвращает случайное число между (и включая эти числа) <n> и <m> (надеюсь все понимают что вместо n и m надо вставить числа)

@invamount (<название вещи>)
возвращает количество данной <название вещи> в инвентаре

@cartamount (<название вещи>)
возвращает количество данной <название вещи> в тележке

@shopamount (<название вещи>)
возвращает количество данной <название вещи> в магазине (который открыт игроком а не НПСом!)

@storamount (<название вещи>)
возвращает количество данной <название вещи> в хранилище

@eval (<аргумент>)
оценивает данный <параметр>

@arg ("<argument>", <n>)
возвращает <n>ый текстовой <параметр>

@config (<переменная>)
возвращает значение <переменная> определенная в config.txt

Простой пример макроса:

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

macro foo {
$foobegin = $.pos
do move 168 128 prt_in
do talk @npc (172 130)
do store
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 move $foobegin
}
Когда макрос вызывается через команду "macro foo [время]" то происходит следующие:
• Загружает вашу текущую позицию в "foobegin" (тоже макрос)
• Отправляется в 168 128 prt_in (магазин оружия)
• Разговаривает с НПСом который находится на 172 130 (Продавец оружия)
• Нажимает «магазин» (ну или кнопка “buy”) дважды чтобы посмотреть что он продает
• покупает 10,000 серебряных стрел.
• Идет к координатам в пронтере 280 198(Пронтера восточные ворота)
• Разговаривает с кафрой
• Выбирает хранилище и нажимает далее 1 (кнопка далее цифра 1) открывает хранилище
• Кладет в хранилище все кроме 1000 серебряных стрел и закрывает
• Возвращается на место где он был перед запуском макроса

Полный обзор синтаксиса макроса.

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

<letter> 'a' | 'b' | 'c' | .. | 'z' | 'A' | 'B' | 'C' | .. | 'Z'
<digit> '0' | '1' | '2' | .. | '9'
<blank> ' '
<undersc> '_'
<special> '-' | <undersc> | '.'
<sign> '+' | '-'
<cond> '==' | '!=' | '<' | '>' | '<=' | '>='
<newline> 'n' [<newline>] | 'rn' [<newline>]
<u_int> <digit> [<u_int>]
<int> <sign> <u_int>
<ident> <letter> [<ident> | <digit> | <undersc>]
<s_ident> '.' <ident>
<s_word> <letter> [<s_word>] | <digit> [<s_word>]
<word> <letter> [<word>] | <digit> [<word>] | <special> [<word>]
<string> <word> [<blank> [<string>]]
<math> '+' | '-' | '*' | '/'
<expression> <int> <math> <int> | <int> <math> <expression>
<automacro name> <word>
<macro name> <word>
<keyword> '@npc' | '@cart' | '@inventory' | '@store' | '@storage' | '@player' | '@vender' | '@var' | '@random' | '@rand' | '@invamount' | '@cartamount' | '@shopamount' | '@storamount' | '@eval' | '@arg' | '@config'
<argument> '(' <string> ')' | '(' <expression> ')'
<parseable> <string> | <keyword> <argument> | <parseable>
<macro command> 'log' <parseable> | 'lock' <parseable> | 'release' [<parseable> | 'all'] | 'pause' [<u_int>] | 'call' <macro name> [<u_int> | <parseable>] | 'stop'
<openkore command> (see openkore manual for console commands)
<command> <macro command> | 'do' <openkore command> <parseable>
<variable> '$' <ident>
<s_variable> '$' <s_ident>
<d_variable> '${' [<variable> | <s_variable>] '}'
<label> <ident>
<script> <open block> <block> <close block>
<block> <statement> <newline> [<block>] | <command> <newline> [<block>]
<open block> 'script' <word> '{' <newline>
<close block> '}' <newline>
<statement> <varassign> | <whilestat> | <ifstat> | <gotostat> | <labeldecl>
<varassign> <variable> '=' <parseable> | <variable> '++' | <variable> '--'
<dvarassign> <dvariable> '=' <parseable>
<labeldecl> ':' <label>
<gotostat> 'goto' <label>
<ifstat> 'if' '(' ['"'] (<variable>|<parseable>) ['"'] <cond> ['"'] (<variable>|<parseable>) ['"'] ')' (<gotostat> | 'stop')
<whilestat> 'while' '(' ['"'] (<variable>|<parseable>) ['"'] <cond> ['"'] (<variable>|<parseable>) ['"'] ')' 'as' <label> <newline><block>'end' <label>
(Это переводить не буду думаю сами справитесь я не знаю где тут команды а где описание)(И это была табличка)


Синтаксис автомакроса.

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

automacro foo {
<condition> bar
<condition> baz, yatta
call macroname
}

automacro mi {
<condition> moo
<condition> xyz
call {
do this
do that
}
}
Автомакрос это макрос который будет запущен тогда когда условия будут соответствовать заданным. (То есть например вы настроили чтоб у вас включался автомакрос при поднятие джеллопи вы убили поринга, подняли джеллопи и включился автомакрос)

map <название карты>
Запуск когда ваша текущая карта - <название карты>.

location [not] <название карты> [<x1> <y1> [<x2> <y2>]] [, ...]
Включение когда вы находитесь в [вне] указанной локации. Когда ни <x1> <y1> ни <x2> <y2> координата не указана, когда вы на [вне] карте <название карты>. Когда координаты <x2> <y2> не указаны и вы находитесь на [вне] <название карты> в <x1>, <x2> тоже. Когда <x1> <y1> и <x2> <y2> указаны и когда вы находитесь на <название карты> где-нибудь между <x1>, <y1> (верхний левый) и <x2>, <y2> (нижний правый) где <x1> < <x2> и <y1> > <y2> (По идее во всех этих случаях включается или вызывается макрос и извиняюсь за неточность перевода точнее не получилось). Отделенные запятыми параметры определяются как условие OR (или):

location geffen, prontera 123 234
Здесь макрос вызывается если вы оказываетесь в геффене или пронтере координаты 123 234. Несколько строк (от двух и более) определяются как условие AND(и):
location not geffen
location not prontera
Макрос вызывается когда вы ни в геффене ни в пронтере.

mapchange (<название карты>|any) [, ...]
Макрос вызывается когда происходит изменение карты на <название карты>. При использовании параметра any макрос вызывается при любом изменении карты. Отделенные запятыми определяются как условие OR (и).

hp <условие> <количество>[%]
Макрос вызывается когда ваше hp совпадают с <условие> <количество> (абсолютное значение) или <условие> <количество> % (процент) (относительное значение). (надеюсь все помнят что такое абсолютное и относительно зачение если нет то допустим у вас 100 hp и у вас сняли 40 hp значит теперь ваше абсолютное значение 60 hp а относительное 60%)
Условие Значение
< Меньше чем
<= Меньше или равно
== равно
>= Больше или равно
> Больше чем
!= Не равно
Несколько строк (от двух и более) определяются как условие AND(и).

sp <условие> <количество>[%]
Макрос вызывается когда ваше sp совпадают с <условие> <количество> (абсолютное значение) или <условие> <количество> % (процент) (относительное значение). Несколько строк (от двух и более) определяются как условие AND(и).

spirit <условие> <количество>
Макрос вызывается когда ваш spirit (понятия не имею что это такое) совпадают с <условие> <количество>. Несколько строк (от двух и более) определяются как условие AND(и).

weight <условие> <количество>
Макрос вызывается когда ваш вес совпадают с <условие> <количество> (абсолютное значение) или <условие> <количество> % (процент) (относительное значение). Несколько строк (от двух и более) определяются как условие AND(и).

cartweight <условие> <количество>
Макрос вызывается когда ваш вес в тележке совпадают с <условие> <количество> (абсолютное значение) или <условие> <количество> % (процент) (относительное значение). Несколько строк (от двух и более) определяются как условие AND(и).

zeny <условие> <количество>
Макрос вызывается когда ваши зени совпадают с <условие> <количество>. Несколько строк (от двух и более) определяются как условие AND(и).
(Здесь макрос выполняется в зависимости от условий и количества которые вы поставите)

soldout <условие> <слот>
Макрос вызывается когда проданные вещи со слотов магазина совпадают с <условие> <слот>. Несколько строк (от двух и более) определяются как условие AND(и).

status [нет] <статус> [, ...]
Макрос вызывается когда ваш статус [нет] <статус>. (нет - означает отсутствие статуса). Отделенные запятыми определяются как условие OR (и). Несколько строк (от двух и более) определяются как условие AND(и).

inventory "<название вещи>" <условие> <количество> [, ...]
Макрос вызывается когда параметры вещи d bydtynfht совпадают с "<название вещи>" <условие> <количество>. Отделенные запятыми определяются как условие OR (и). Несколько строк (от двух и более) определяются как условие AND(и).

storage "<название вещи>" <условие> <количество> [, ...]
Макрос вызывается когда параметры вещи в хранилище (в кафре которое) совпадают с "<название вещи>" <условие> <количество>. Отделенные запятыми определяются как условие OR (и). Несколько строк (от двух и более) определяются как условие AND(и).

cart "<название вещи>" <условие> <количество> [, ...]
Макрос вызывается когда параметры вещи в тележке совпадают с "<название вещи>" <условие> <количество>. Отделенные запятыми определяются как условие OR (и). Несколько строк (от двух и более) определяются как условие AND(и).

shop "<название вещи>" <условие> <количество> [, ...]
Макрос вызывается когда параметры вещи в магазине (вами открытом) совпадают с "<название вещи>" <условие> <количество>. Отделенные запятыми определяются как условие OR (и). Несколько строк (от двух и более) определяются как условие AND(и).

base <условие> <уровень>
Макрос вызывается когда ваш базовый уровень совпадает с <условие> <уровень>. Несколько строк (от двух и более) определяются как условие AND(и).

job <условие> <уровень>
Макрос вызывается когда ваш джоб уровень совпадает с <условие> <уровень>. Несколько строк (от двух и более) определяются как условие AND(и).

class <класс персонажа>
Макрос вызывается когда ваша класс совпадает с <класс персонажа>.

monster <имя монстра> [, ...]
Макрос вызывается когда монстр <имя монстра> неподалеку. Когда макрос вызван устанавливаются специальные переменные $.lastMonster и $.lastMonsterPos. Отделенные запятыми определяются как условие OR (и). Несколько строк (от двух и более) определяются как условие AND(и).

player "<имя игрока>" [, <расстояние> ]
Макрос вызывается когда игрок <имя игрока> в пределах видимости или не дальше чем <расстояние>. Несколько строк (от двух и более) определяются как условие 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 ("<текст>"|/<regexp>/)
Макрос вызывается когда <текст> получен на консоли или полученное совпадает с <regexp>. Нажатие i означает что <regexp> становится нечувствительным к тексту. Устанавливается $.lastLogMsg.

pm ("<текст>"|/<regexp>/) [, <имя игрока>]
Макрос вызывается когда <text> получен от pm [от <имя игрока>] или полученное совпадает с <regexp>. Нажатие i означает что <regexp> становится нечувствительным к тексту. Устанавливается $.lastpm и $.lastpmMsg.

pubm ("<текст>"|/<regexp>/) [, <расстояние>]
Макрос вызывается когда публичное сообщение получено [в пределах <расстояние>] и текст совпадает с <текст> или полученное совпадает с <regexp>. Нажатие i означает что <regexp> становится нечувствительным к тексту. Устанавливается $.lastpub и $. $.lastpubMsg.

party ("<текст>"|/<regexp>/)
Макрос вызывается когда <текст> получен из парти чата или полученное совпадает с <regexp>. Нажатие i означает что <regexp> становится нечувствительным к тексту. Устанавливается $.lastparty и $.lastpartyMsg.

guild ("<текст>"|/<regexp>/)
Макрос вызывается когда <текст> получен из гильд чата или полученное совпадает с <regexp>. Нажатие i означает что <regexp> становится нечувствительным к тексту. Устанавливается $.lastguild и $.lastguildMsg.
(То что указано после устанавливается это специальные переменные см. соответствующую тему)

hook <название захвата>(беспонятия что имелось ввиду)
Макрос вызывается после вызывания <название захвата>.

run-once (0|1)
Когда выбрано 1 автомакрос прекращает работу после вызова. Используйте команду release для восстановления макроса.

overrideAI (0|1)
Когда установлено 1 автомакрос игнорирует ИИ опенкора. Это означает что он не будет использовать паузу при движении (“move”) и при смерти (”status death”).

delay <n>
Ждет <n> секунд после чего вызывает соответствующий макрос.

timeout <n>
Ждет по крайней мере <n> секунд после чего макрос может быть перезапущен.

macro_delay <n>
Убирает (аннулирует) все macro_delay установки для текущего макроса.

set <переменная> <значение>
Устанавливает переменную <переменная> на <значение>. Вы можете иметь многочисленные set в автомакросе.

call <имя макроса>
Вызывает макрос <имя макроса> когда автомакрос запущен.

call {
<команда>
}
Запускает <команда> когда автомакрос запущен.

orphan <метод>
Устанавливает метод для работы с одиночным макросам. (см. тему одиночные макросы)
(Условия повторю OR(или) это запятая AND(и) это на каждой строчке то есть на первой одна команда на второй вторая и т.д. И важно в командах указано какие условия если нет одного значит его НЕЛЬЗЯ использовать для данной команды)
Пример автомакроса:

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

automacro checkshop {
location prontera
soldout >= 3
delay 60
call reopenshop
}
macro reopenshop {
do closeshop
}
Этот макрос запускается когда вы открываете ваш магазин в пронтере и продаете там 3 и более вещей. Когда макрос запущен он ждет 1 минуту и вызывается макрос "reopenshop" который закрывает ваш магазин. Если у вас в shopAuto_open или autoshop настроено на 1 ваш магазин будет открыт через некоторое время.

Одиночные макросы.
Это может случится - например после использования ai clear в то время как макрос запущен – этот макрос стал одиночным. Это означает что макрос существует но не может продолжатся потому что требуется ИИ для поддержания входа «макроса» на первом месте. Когда ИИ очищен «макро» вход исчезает. До версии 1.0.2 макроса нужно было вручную вводить остановку макроса “macro stop”. С 1.0.2 вы можете выбрать определенный механизм (хотя мне слово путь больше нравится) для решения этой проблемы. (То есть макрос остается без поддержки ИИ и не может действовать самостоятельно)Есть три метода:

terminate - Завершает макрос (Аналогично macro stop)

reregister - Перерегистрация ИИ и отмена других входов. Это вызывает продолжение макроса.

reregister_safe - Перерегистрация ИИ и установка ожидания. Это означает что макрос будет продолжен как только все другие задачи выполнены.

Отладка.
Отладка сделана пакетом (файлом) cvsdebug.pm.

Добавьте macro_debug <уровень (-ни)> в файл config.txt.

Уровни отладки:

variable_trace
Прослеживание переменных
command_preparsed
Не анализирует командную строку
command_parsed
Анализирует командную строку
parser_steps
Анализирует шаги
function_call_macro
Макро функции (низкий трафик)
function_call_auto
Автомакро функции (высокий трафик)
automacro_checks
Автомакро проверка (высокий трафик)
developers
Полезные отладочные сообщения разботчикам (и не только)
full
Полная отладка, все уровни
Отладочные уровни разделяются линией |
Пример:
macro_debug variable_trace|parser_steps
Теперь когда вы прочитали документацию…
Вы должны добавить в файл config.txt строку:
macro_readmanual red/chili
Или ваш плагин будет немедленно выгружен.
Todos/Known bugs/Known limitations. (не знал как перевести ну типа баги и недочеты)


1). Автомакрос не запускается когда другие макросы активны.
2). Автомакрос проверяет console игнорируя следующие области: selfchat, macro и cvsdebug.
3). Автомакрос проверяет console игнорируя все то что приводит начало "[macro]" к бесконечному циклу. (вроде так)
4). Не используйте закрытые скобки «)» в ключевом слове аргумента если закрытая скобка для аргумента для примера: @random ("foo", "bar", "@eval (4 + 5)", "yatta")- разрешено, @random ("foo", "bar", "Smile", "yatta")- запрещено.
-------------------------------------------------------------------------------------------------------------------------------------
Последний раз редактировалось мираж Сб окт 06, 2007 1:55 pm, всего редактировалось 3 раза.
Loader
Начинающий
Сообщения: 49
Зарегистрирован: Сб ноя 11, 2006 8:29 pm

Сообщение Loader »

automacro checkshop {
location prontera
soldout >= 3
delay 60
call reopenshop
}
macro reopenshop {
do closeshop
}
Элементарно невкурить, где это писать??? в конфиге??

Зачем нужен файл macros.txt в папке контрол...

Я вроде как понял, что автомакрос пишется в конфиге
automacro checkshop {
location prontera
soldout >= 3
delay 60
call reopenshop
}
а макрос в macros.txt
macro reopenshop {
do closeshop
}

ТОесть как я понял: автомакрос задает условие для вызова макроса, и пишется в конфиге... ХАчу очень в этом разобраться... )

_______

перечитал еще разз... почемуб было сразу не сделать??

automacro checkshop {
location prontera
soldout >= 3
delay 60
call reopenshop
do closeshop
}
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

1)

В этом разделе - не место для спора.
Здесь лежат уже готовые решения...
Вопросы следует задавать в разделе "Вопросы".

2)

Глупые вопросы лучше вообще НЕ задавать.
Хочешь задать глупый вопрос - сделай это на каком-нибудь другом форуме.

3)

Ответы на все твои вопросы - выше. Осиль доку.

--

Топик закрыт.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

PS: Теория - это хорошо, но чего нам реально не хватает, по крайней мере в этой теме - это кучи примеров...
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Закрыто