References
Условные обозначения
Условные обозначения используются при описании параметров конфигурационных файлов и различных команд.
Условное обозначение | Значение |
---|---|
Bold | Выделенный жирным текст вводится без изменений. |
< > | В угловых скобках указывается информация, которую должен ввести человек. |
( ) | Заключённые в круглые скобки параметры являются обязательными. |
[ ] | Заключённые в квадратные скобки параметры являются необязательными. |
| | Вертикальная черта означает "или". Необходимо выбрать либо левую, либо правую часть. |
Типы значений
Значения параметров в конфигурационных файлах и аргументов в командах могут быть следующих типов:
булев флаг
- Значение параметров интерпретируются с помощью правил Perl "Истина или Ложь".
Значение | Описание |
---|---|
0 или пустая строка (значение отсутствует) | ЛОЖЬ (выключено) |
1 | ИСТИНА (включено) |
- На самом деле булев (логический) флаг может иметь любое значение (не только 0 или 1). Он не проверяется ни на что, кроме логического.
- Булевы параметры МОГУТ быть расширены в будущем (например, dealAuto). В таком случае значения 0 и 1 ДОЛЖНЫ сохранить старое поведение, а новые значения добавляют новую реакцию.
- API: отдельного API не существует, используется стандартные логические операторы Perl.
- Пример:
if ($config{dcOnDisconnect}) { ...
значение
- Этот параметр имеет одно из заранее заданных значений. Список доступных значений всегда указывается в описании параметра.
- Например: -1, 0, 1 или 2
целое число
- Числовое значение, смысл которого зависит от конкретного контекста. Может быть ТОЛЬКО целым. Пустая строка (отсутствующее значение) или строки, начинающиеся с нецифровых символов, обычно оцениваются в Perl как "0".
- Примечание: Это не диапазон. Значения типа "
= 11
" будут равны 0. - API: отдельного API не существует, используется стандартные операторы отношения и равенства Perl.
- Пример:
if ($config{avoidGM_near} >= 4) { ...
процент
- Целое число от 0 до 100. Знак процента "%" приписывать не надо, если в описании параметра не сказано иначе.
число или секунды
- Произвольное число, может быть дробным. Дробная часть разделяется точной, например, "0.5"
- Часто используется для указания количества секунд.
строка
- Любая текстовая строка.
Слот экипировки
Имена слотов, в которые одевается броня, аксессуары, оружие и стрелы с патронами. Описывается в переменной "%equipSlot_lut" в файле Globals.pm
Тип | Слот | Описание |
---|---|---|
1 | lowHead | Голова низ. |
2 | rightHand | Правая рука. |
4 | robe | Накидка, плащ. |
8 | rightAcessory | Правый акцессуар. |
16 | armor | Броня на тело. |
32 | leftHand | Левая рука. |
64 | shoes | Обувь. |
128 | leftAcessory | Левый акцессуар. |
256 | topHead | Голова верх. |
512 | midHead | Голова середина. |
1024 | costumeTopHead | Upper head costume slot. |
2048 | costumeMidHead | Middle head costume slot. |
4096 | costumeLowHead | Lower heads costume slot. |
8192 | costumeRobe | Robe costume slot. |
16384 | costumeFloor | Floor costume slot. |
32768 | arrow | Стрелы или патроны. |
65536 | shadowArmor | |
131072 | shadowRightHand | |
262144 | shadowLeftHand | |
524288 | shadowShoes | |
1048576 | shadowRightAccessory | |
2097152 | shadowLeftAccessory |
Домены сообщений
Выводимые на консоль сообщения сведены в группы сообщений, называемые доменами сообщений.
Чтобы узнать, к какому домену сообщений относится то или иное сообщение, пропишите в параметре конфига showDomain 1, тогда с самим сообщением будет выводиться имя домена сообщений, к которому оно относится.
Имя домена сообщений | Описание |
---|---|
ai_attack | Атака. |
ai_npcTalk | Команды при разговоре с неписями. |
attacked | Моб атакует персонажа. |
attackedMiss | Моб атакует персонажа и промахивается. |
attackMon | Персонаж атакует моба. |
attackMonMiss | Персонаж атакует моба и промахивается. |
connection | Соединение с игровым сервером. |
console | Просто консольное сообщение. |
deal | Сделка с другим игроком. |
drop | С моба упали итемы. |
emotion | Эмоции. |
exp | Получение опыта. |
equip | Одевание оружия или брони. |
follow | Следование за ведущим игроком. |
guildchat | Чат гильдии. |
guildnotice | Объявление в гильдии. |
info | Информация о персонаже. |
input | Информация, введённая человеком с консоли. |
inventory | Инвентарь персонажа. |
list | Список акторов. |
load | Загрузка конфигурационных файлов. |
looter | Атака моба-лутера. |
map_event | Сообщения режимов PvP/GvG. |
npc | Разговор неписей. |
parseMsg_statuslook | Изменение состояния или экипировки персонажа. |
parseMsg/hairColor | Изменение цвета волос. |
parseMsg/job | Смена профессии. |
parseMsg/upgrade | Заточка итема. |
party | Пати и следования за ведущим. |
partychat | Чат пати. |
pet | Пет, питомец. |
plugins | Плагины. |
pm | Полученное приватное сообщение. |
pm/sent | Отправленное приватное сообщение. |
portals | Порталы переходов между локациями. |
portalRecord | Запись перехода через портал. |
publicchat | Общий, публичный чат. |
refine | Заточка оружия. |
route | Просчитывание маршрута. |
route_teleport | Телепортация при прохождении маршрута. |
schat | Сообщение GM'а на весь сервер. |
selfSkill | Используемые самим персонажем скиллы. |
skill | Скиллы, не связанные с сообщениями об атаке. |
sold | Продан итем в торговой лавке. |
startup | Сообщения при запуске OpenKore. |
storage | Склад кафры, положили или взяли итем. |
success | Operation succeeded messages. |
syntax | Проверка правописания в файлах. |
teleport | Телепортация, винги. |
useItem | Исользование итема. |
useTeleport | Попытка использовать телепорт. |
waypoint | Waypoint messages. |
xkore | Режим X-Kore. |
Далее следует список доменов, используемых для отладки:
|
|
|
|
|
Названия
Иногда название оружия, брони, предметов и мобов различаются от сервера к серверу, поэтому OpenKore имеет свою собственную базу данных в папке tables, где хранятся стандартные названия. Для каждого вида объектов OpenKore имеет свои правила наименования.
Оружие и броня
Написание названия оружия или брони подчиняется следующим правилам:
# для обычного оружия или брони [BROKEN] [+<уровень_заточки>] (<название предмета>) [[<вставленная_карта>[*<кол-во>]] [<кол-во слотов>] [<кол-во свойств>]] # для элементального оружия [BROKEN][+<уровень_заточки>][VS|VVS|VVVS][Fire|Earth|Wind|Water](<название предмета>) [<кол-во свойств>]
Примечания:
- Если оружие или броня не сломано, слово BROKEN не пишется.
- Если оружие или броня не заточены, тогда часть имени +<уровень заточки> не пишется.
- Для описания вставленных карт используется только имя моба без слова Card, например просто Hydra вместо Hydra Card.
- Если вставлена только одна карта одного типа, то часть имени *<кол-во> не пишется.
- Если вставлено несколько типов карт, то пары <вставленная карта>*<кол-во> разделяются знаком двоеточия ":", а сам список карт должен быть отсортирован в алфавитном порядке.
- Если оружие или броня не слотовые, то часть <кол-во слотов> пропускается.
- Регистр букв в названии предметов не важен.
- Названия предметов можно подсмотреть при помощи консольных команд: i, cart, storage.
Пример:
- +7 Cranial Mirror Shield:
+7 Mirror Shield [Thara Frog] [1]
- Hard Padded Armor:
Padded Armor [Pupa] [1]
- 3-слотовый +5 Double Flammable Boned Saber:
+5 Saber [Skel Worker:Vadon*2] [3]
- +6 Very Very Strong Wind Tsurugi:
+6 VVS Wind Tsurugi
- +5 Очень очень очень сильный Двуручный топор с 4-мя доп. свойствами:
+5 VVVS Двуручный топор [4 Option]
Предметы
Названия предметов находятся в файле tables\items.txt, записи в этом файле выглядят вот так:
<Item ID>#<item_name>#
В файле items.txt пробелы в названиях предметов заменяются знаком подчеркивания "_". При использовании в OpenKore знаки подчеркивания заменяются на, собственно, пробелы.
Пример:
- Предмет называется "Mirror Shield".
2107#Mirror_Shield#
Примечания:
- Регистр букв в названии предметов не важен.
- Названия предметов можно подсмотреть при помощи консольных команд i, cart, storage.
Наземные умения
Названия наземных умений находятся в файле tables\spells.txt, записи в этом файле выглядят вот так:
<Spell ID> <spell name>
Пример:
- Название наземного умения: Safety Wall
126 Safety Wall
Примечание:
- Название наземных умений, работающих рядом с OpenKore, можно подсмотреть при помощи консольной команды spell.
Локации
Названия локаций находятся в файле tables\maps.txt, записи в этом файле выглядят вот так:
<map file name>#<map name>#
OpenKore использует только первое поле из этого файла.
Пример:
- Название локации Prontera
prontera.rsw#Prontera City#
Примечание:
- Название локации, на которой в данный момент находится персонаж, можно подсмотреть консольной командой where.
Мобы
Имена мобов, монстров находятся в файле tables\monsters.txt, записи в этом файле выглядят вот так:
<monster ID> <monster name>
Пример:
- Имя моба: Scorpion
1001 Scorpion
Примечание:
- Имя моба можно узнать при помощи консольной команды ml, будет выведен список мобов рядом с персонажем.
Игроки
Имена окружающих игроков можно узнать при помощи консольной команды pl.
Примечание: В именах игроков важен регистр букв.
Умения
В конфигах OpenKore, в макросах или при использовании консольных команд иногда приходится указывать умения. При написании умения можно использовать три равнозначных варианта:
- <ID_умения> - уникальный номер умения. Не зависит от языковых настроек OpenKore. Можно найти в файле tables\SKILL_id_handle.txt
- <skill_handle> - буквенное название умения (не содержит пробелов). Не зависит от языковых настроек OpenKore. Можно найти в файлах tables\SKILL_id_handle.txt и tables\..\skillnametable.txt
- <название_умения> - "человеческое" название умения. Зависит от языковых настроек OpenKore. Можно найти в файле tables\..\skillnametable.txt
Пример:
- 142 - ID умения
- NV_FIRSTAID - его skill_handle
- "Первая помощь" - русское название
- "First Aid" - английское название
Примечания:
- Названия умений персонажа можно посмотреть консольной командой skills.
Статусы
В качестве статуса можно указывать дескриптор или имя статуса.
Дескрипторы статусов можно найти в файлах tables/{AILMENT,LOOK,STATE,STATUS}_id_handle.txt
. Эти дескрипторы одинаковые для всех серверов с которыми работает OpenKore, например "EFST_ATTHASTE_POTION1".
Сами названия статусов можно найти в файле statusnametable.txt. Для каждого сервера имена статусов могут отличаться. Например, на сервере euRO используются английские названия статусов (Concentration potion), а на rRO - русские (Зелье Концентрации).
Примечание:
- Список наложенных на персонажа статусов можно узнать с помощью консольной команды "s".
Профессии
Правильное название можно подсмотреть в файле src/Globals.pm. Название профессии всегда пишется на английском языке, например: Novice, Thief, Rogue, и т.д.
Профессию окружающих игроков можно посмотреть с помощью консольной команды pl.
Индекс
Индекс - это временный номер по порядку чего-либо. Например, индекс предмета в инвентаре\телеге\складе, индекс игроков\монстров\НПЦ в пределах видимости. Когда чар появляется на локации, к нему с сервера прилетает пакет со списком предметов. OpenKore присваивает индивидуальный номер (индекс) каждому предмету, начиная с 0. Всё взаимодействие OpenKore с сервером идёт с использованием этого индекса, например, консольная команда "is 10" - использовать на себя предмет с индексом 10. Если бот переподключится, то индекс одного и того же предмета может поменяться - это следует учитывать при написании макросов. Не путайте индекс предмета и его ИД!
Коды разговора с неписями
Коды разговора с неписями используются чтобы записать - как надо говорить с неписью. Где какие варианты ответа выбирать, когда и какие числа вводить, а когда просто продолжить беседу. Эта форма записи используется в консольной команде talknpc, в параметрах конфига config.txt, например в storageAuto_npc_steps, а также в других местах, например в файле tables\portals.txt. Разговор с неписью записывается как строка кодов, где коды разделяются пробелами.
Код | Действие |
---|---|
c | Продолжить разговор с неписью. То же самое, что нажатие кнопки "Next". |
r<номер варианта ответа> | Выбрать один из предложенных вариантов. Индексация вариантов ответа начинается с нуля. |
r=<искомый текст> | Выбрать тот вариант ответа, который совпадает с заданным текстом. Появилось в ревизии 8937. |
r~/<регулярное выражение>/ | Выбрать тот вариант ответа, который подходит к указанному регулярному выражению. Если после второй черты поставить i, то регистр букв станет неважен. Появилось в ревизии 8998. |
w<кол-во секунд> | Подождать указанное количество секунд, а потом продолжить разговор. |
d<число> | Сказать число. |
t=<текст> | Сказать текстовую строку. |
s | Начать продажу предметов. |
b | Начать покупку предметов. |
b<№ предмета в магазине>,<кол-во> | Купить у неписи предмет в указанном количестве. См. также консольную команду buy. Количество указывается в обязательном порядке. |
n | Закончить разговор с неписью. |
e | Подождать, пока непись скажет "Done talking". Используется после кодов s или b, когда идёт разговор с неписью, которая скупает-продаёт предметы. |
a="<консольная команда>" | Выполнить указанную консольную команду. Например a="is Red Potion". |
x | Снова начать разговор с неписью. Это нужно, чтобы в одну команду talknpc запихивать несколько обращений к одной неписи. |
Примеры
- Поговорить с неписью, стоящей по координатам (63 60), используя следующую последовательность: дальше > выбрать четвертый вариант > дальше > выбрать первый вариант > дальше > дальше > выбрать первый вариант > дальше > конец.
talknpc 63 60 c r3 c r0 c c r0 c n
- Пример закупки.
talknpc 126 76 b b0,5 b1,6 e
- Примеры регулярных выражений в консольных командах talk, talknpc и в файле portals.txt.
talk resp /test/ talknpc x y c c r~/test/ c n morocc 156 97 payon 161 58 1200 1 c r~/tele/i c r~/pay/i
Диапазон значений
Диапазоны (интервалы) значений позволяют более гибко настраивать некоторые параметры конфига config.txt.
Значение | Условное обозначение | Описание |
---|---|---|
X | {X} | Значение будет равно X |
X..Y
X-Y |
[X, Y] | Диапазон значений - все числа от X до Y включительно |
> X | (X, +∞) | Все значения, которые больше чем X |
>= X | [X, +∞) | Все значения, которые больше либо равны X |
< X | (-∞, X) | Все значения, которые меньше чем X |
<= X | (-∞, X] | Все значения, которые меньше либо равны X |
API: функции и плагины должны использовать Utils::inRange(<значение>, <диапазон>) для проверки соответствия значений указанному диапазону.
Примеры:
- Если HP персонажа больше десяти процентов:
hp > 10%
- Если у персонажа ровно 5000 зени:
zeny 5000
- Если проф-уровень персонажа от 10 до 15 включительно:
jlvl 10..15
Атрибуты блочных параметров
Self Conditions
Self Conditions - набор атрибутов, которые описывают самочувствие персонажа, его состояние, информация о различных его параметрах. Условия для проверки состояния персонажа описываются атрибутами.
Эти атрибуты можно использовать в следующих блочных параметрах конфига: attackComboSlot, attackSkillSlot, buyAuto, doCommand, equipAuto, monsterSkill, partySkill, useSelf_item, useSelf_skill
Проверка условий Self Conditions
функция Misc::checkSelfCondition (<атрибут>)
- возвращает "true", если условие для <атрибута> выполняется.
Добавление нового условия Self Conditions
Можно добавить свои собственные, нестандартные атрибуты и проверки состояния персонажа при помощи хука checkSelfCondition
, который содержит следующие элементы:
префикс
- название блочного конфига (для атрибута "blockOption" префикс будет:$config{$prefix."_blockOption"}
)return
- код возврата. Установить 0 если условие не выполняется.
Monster Conditions
Monster Condition - это условия, проверяющие состояние моба и известную о нём информацию. Условия описываются атрибутами, которые можно использовать в следующих блочных параметрах конфига: attackComboSlot, attackSkillSlot, equipAuto и monsterSkill. Названия этих атрибутов начинаются с префикса target_.
Player Conditions
Player Condition - это условия, проверяющие состояние другого игрока и известную о нём информацию. Условия описываются атрибутами, которые в настоящее время может использовать только один блочный параметр конфига - partySkill. Названия этих атрибутов начинаются с префикса target_.
Skill Use Conditions
Skill Use Condition - это условия применения скиллов. Условия описываются атрибутами. Эти атрибуты можно использовать в следующих блочных параметрах конфига: attackComboSlot, attackSkillSlot, monsterSkill, partySkill и useSelf_skill.
Интерфейсы OpenKore
У OpenKore есть несколько вариантов интерфейса. Самые популярные: Консольный интерфейс (быстрый) и Wx интерфейс (красивый). Чтобы запустить один из интерфейсов - используйте соответствующий исполняемый файл (для Windows) или укажите параметр командной строки: --interface=<имя_интерфейса>
.