References: различия между версиями
4epT (обсуждение | вклад) Новая страница: «==Syntax Legends== Syntax format used in declarations of configuration options and commands. {|border="1" cellpadding="2" cellspacing="1" |- style=background-colo…» |
4epT (обсуждение | вклад) |
||
(не показаны 33 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
== | == Условные обозначения == | ||
Условные обозначения используются при описании параметров конфигурационных файлов и различных команд. | |||
{|border="1" cellpadding="2" cellspacing="1" | {|border="1" cellpadding="2" cellspacing="1" | ||
|- style=background-color:#F9F9F9; | |- style=background-color:#F9F9F9; | ||
! | !Условное обозначение | ||
! | !Значение | ||
|- | |- | ||
!align=center|Bold | !align=center|Bold | ||
| | |Выделенный жирным текст вводится без изменений. | ||
|- | |- | ||
|align=center|< > | |align=center|< > | ||
| | |В угловых скобках указывается информация, которую должен ввести человек. | ||
|- | |- | ||
|align=center|( ) | |align=center|( ) | ||
| | |Заключённые в круглые скобки параметры являются обязательными. | ||
|- | |- | ||
|align=center|[ ] | |align=center|[ ] | ||
| | |Заключённые в квадратные скобки параметры являются необязательными. | ||
|- | |- | ||
|align=center| | | |align=center| | | ||
| | |Вертикальная черта означает "или". Необходимо выбрать либо левую, либо правую часть. | ||
|} | |} | ||
== | == Типы значений == | ||
Значения параметров в конфигурационных файлах и аргументов в командах могут быть следующих типов: | |||
{|border="1" cellpadding="2" cellspacing="1" | === булев флаг === | ||
: Значение параметров интерпретируются с помощью [http://perldoc.perl.org/perlsyn.html#Truth-and-Falsehood правил Perl "Истина или Ложь"]. | |||
{| border="1" cellpadding="2" cellspacing="1" style="text-align:center" | |||
|- style=background-color:#F9F9F9; | |- style=background-color:#F9F9F9; | ||
! | !Значение | ||
! | !Описание | ||
|- | |- | ||
| | | 0 или пустая строка (значение отсутствует) | ||
| | | ЛОЖЬ (выключено) | ||
|- | |- | ||
| | | 1 | ||
| | | ИСТИНА (включено) | ||
|} | |} | ||
: На самом деле [https://perldoc.perl.org/5.8.8/perlsyn.html#Truth-and-Falsehood булев (логический) флаг] может иметь любое значение (не только 0 или 1). Он не проверяется ни на что, кроме логического. | |||
: Булевы параметры МОГУТ быть расширены в будущем (например, [[dealAuto]]). В таком случае значения 0 и 1 ДОЛЖНЫ сохранить старое поведение, а новые значения добавляют новую реакцию. | |||
: '''API:''' отдельного API не существует, используется стандартные логические операторы Perl. | |||
: '''Пример:''' | |||
if ($config{dcOnDisconnect}) { ... | |||
=== значение === | |||
: Этот параметр имеет одно из заранее заданных значений. Список доступных значений всегда указывается в описании параметра. | |||
: Например: -1, 0, 1 или 2 | |||
== | === целое число === | ||
: Числовое значение, смысл которого зависит от конкретного контекста. Может быть ТОЛЬКО целым. Пустая строка (отсутствующее значение) или строки, начинающиеся с нецифровых символов, обычно оцениваются в Perl как "0". | |||
: '''Примечание:''' Это не [[References#Диапазон значений|диапазон]]. Значения типа "<code>= 11</code>" будут равны '''0'''. | |||
: '''API:''' отдельного API не существует, используется стандартные [http://perldoc.perl.org/perlop.html#Relational-Operators операторы отношения и равенства Perl]. | |||
: '''Пример:''' | |||
if ($config{avoidGM_near} >= 4) { ... | |||
=== процент === | |||
: Целое число от 0 до 100. Знак процента "%" приписывать не надо, если в описании параметра не сказано иначе. | |||
=== число или секунды === | |||
: Произвольное число, может быть дробным. Дробная часть разделяется точной, например, "0.5" | |||
: Часто используется для указания количества секунд. | |||
=== строка === | |||
: Любая текстовая строка. | |||
== Слот экипировки == | |||
Имена слотов, в которые одевается броня, аксессуары, оружие и стрелы с патронами. Описывается в переменной "%equipSlot_lut" в файле [https://github.com/OpenKore/openkore/blob/c0a5ad2cbfcf94bbda942f02426b28ec7d99368a/src/Globals.pm#L61 Globals.pm] | |||
{| border="1" cellpadding="2" cellspacing="1" | {| border="1" cellpadding="2" cellspacing="1" | ||
|- style=background-color:#F9F9F9; | |- style=background-color:#F9F9F9; | ||
|+ | |+ Список слотов для экипировки. | ||
! | !Тип | ||
! | !Слот | ||
!Описание | |||
|- | |- | ||
|align=center| | |align=center|1 | ||
| | |align=center|lowHead | ||
|Голова низ. | |||
|- | |||
|align=center|2 | |||
|align=center|rightHand | |||
|Правая рука. | |||
|- | |- | ||
|align=center| | |align=center|4 | ||
| | |align=center|robe | ||
|Накидка, плащ. | |||
|- | |- | ||
|align=center| | |align=center|8 | ||
| | |align=center|rightAcessory | ||
|Правый акцессуар. | |||
|- | |- | ||
|align=center| | |align=center|16 | ||
| | |align=center|armor | ||
|Броня на тело. | |||
|- | |- | ||
|align=center|32 | |||
|align=center|leftHand | |align=center|leftHand | ||
| | |Левая рука. | ||
|- | |- | ||
|align=center| | |align=center|64 | ||
| | |align=center|shoes | ||
|Обувь. | |||
|- | |- | ||
|align=center|128 | |||
|align=center|leftAcessory | |align=center|leftAcessory | ||
| | |Левый акцессуар. | ||
|- | |||
|align=center|256 | |||
|align=center|topHead | |||
|Голова верх. | |||
|- | |- | ||
|align=center| | |align=center|512 | ||
| | |align=center|midHead | ||
|Голова середина. | |||
|- | |||
|align=center|1024 | |||
|align=center|costumeTopHead | |||
|Upper head costume slot. | |||
|- | |||
|align=center|2048 | |||
|align=center|costumeMidHead | |||
|Middle head costume slot. | |||
|- | |||
|align=center|4096 | |||
|align=center|costumeLowHead | |||
|Lower heads costume slot. | |||
|- | |- | ||
|align=center| | |align=center|8192 | ||
| | |align=center|costumeRobe | ||
|Robe costume slot. | |||
|- | |- | ||
|align=center| | |align=center|16384 | ||
| | |align=center|costumeFloor | ||
|Floor costume slot. | |||
|- | |- | ||
|align=center|32768 | |||
|align=center|arrow | |align=center|arrow | ||
| | |Стрелы или патроны. | ||
|- | |||
|align=center|65536 | |||
|align=center|shadowArmor | |||
| | |||
|- | |||
|align=center|131072 | |||
|align=center|shadowRightHand | |||
| | |||
|- | |||
|align=center|262144 | |||
|align=center|shadowLeftHand | |||
| | |||
|- | |||
|align=center|524288 | |||
|align=center|shadowShoes | |||
| | |||
|- | |||
|align=center|1048576 | |||
|align=center|shadowRightAccessory | |||
| | |||
|- | |||
|align=center|2097152 | |||
|align=center|shadowLeftAccessory | |||
| | |||
|} | |} | ||
== Домены сообщений == | |||
Выводимые на консоль сообщения сведены в группы сообщений, называемые доменами сообщений. | |||
Чтобы узнать, к какому домену сообщений относится то или иное сообщение, пропишите в параметре конфига [[showDomain]] '''1''', тогда с самим сообщением будет выводиться имя домена сообщений, к которому оно относится. | |||
{| border="1" cellpadding="2" cellspacing="1" | {| border="1" cellpadding="2" cellspacing="1" | ||
|- style=background-color:#F9F9F9; | |- style=background-color:#F9F9F9; | ||
|+ | |+ Список известных доменов сообщений: | ||
! | !Имя домена сообщений | ||
! | !Описание | ||
|- | |- | ||
|align=center|ai_attack | |align=center|ai_attack | ||
| | |Атака. | ||
|- | |- | ||
|align=center|ai_npcTalk | |align=center|ai_npcTalk | ||
| | |Команды при разговоре с неписями. | ||
|- | |- | ||
|align=center|attacked | |align=center|attacked | ||
| | |Моб атакует персонажа. | ||
|- | |- | ||
|align=center|attackedMiss | |align=center|attackedMiss | ||
| | |Моб атакует персонажа и промахивается. | ||
|- | |- | ||
|align=center|attackMon | |align=center|attackMon | ||
| | |Персонаж атакует моба. | ||
|- | |- | ||
|align=center|attackMonMiss | |align=center|attackMonMiss | ||
| | |Персонаж атакует моба и промахивается. | ||
|- | |- | ||
|align=center|connection | |align=center|connection | ||
| | |Соединение с игровым сервером. | ||
|- | |- | ||
|align=center|console | |align=center|console | ||
| | |Просто консольное сообщение. | ||
|- | |- | ||
|align=center|deal | |align=center|deal | ||
| | |Сделка с другим игроком. | ||
|- | |- | ||
|align=center|drop | |align=center|drop | ||
| | |С моба упали итемы. | ||
|- | |- | ||
|align=center|emotion | |align=center|emotion | ||
| | |Эмоции. | ||
|- | |- | ||
|align=center|exp | |align=center|exp | ||
| | |Получение опыта. | ||
|- | |- | ||
|align=center|equip | |align=center|equip | ||
| | |Одевание оружия или брони. | ||
|- | |- | ||
|align=center|follow | |align=center|follow | ||
| | |Следование за ведущим игроком. | ||
|- | |- | ||
|align=center|guildchat | |align=center|guildchat | ||
| | |Чат гильдии. | ||
|- | |- | ||
|align=center|guildnotice | |align=center|guildnotice | ||
| | |Объявление в гильдии. | ||
|- | |- | ||
|align=center|info | |align=center|info | ||
| | |Информация о персонаже. | ||
|- | |- | ||
|align=center|input | |align=center|input | ||
| | |Информация, введённая человеком с консоли. | ||
|- | |- | ||
|align=center|inventory | |align=center|inventory | ||
| | |Инвентарь персонажа. | ||
|- | |- | ||
|align=center|list | |align=center|list | ||
| | |Список акторов. | ||
|- | |- | ||
|align=center|load | |align=center|load | ||
| | |Загрузка конфигурационных файлов. | ||
|- | |- | ||
|align=center|looter | |align=center|looter | ||
| | |Атака моба-лутера. | ||
|- | |- | ||
|align=center|map_event | |align=center|map_event | ||
|PvP/GvG | |Сообщения режимов PvP/GvG. | ||
|- | |- | ||
|align=center|npc | |align=center|npc | ||
| | |Разговор неписей. | ||
|- | |- | ||
|align=center|parseMsg_statuslook | |align=center|parseMsg_statuslook | ||
| | |Изменение состояния или экипировки персонажа. | ||
|- | |- | ||
|align=center|parseMsg/hairColor | |align=center|parseMsg/hairColor | ||
| | |Изменение цвета волос. | ||
|- | |- | ||
|align=center|parseMsg/job | |align=center|parseMsg/job | ||
| | |Смена профессии. | ||
|- | |- | ||
|align=center|parseMsg/upgrade | |align=center|parseMsg/upgrade | ||
| | |Заточка итема. | ||
|- | |- | ||
|align=center|party | |align=center|party | ||
| | |Пати и следования за ведущим. | ||
|- | |- | ||
|align=center|partychat | |align=center|partychat | ||
| | |Чат пати. | ||
|- | |- | ||
|align=center|pet | |align=center|pet | ||
| | |Пет, питомец. | ||
|- | |- | ||
|align=center|plugins | |align=center|plugins | ||
| | |Плагины. | ||
|- | |- | ||
|align=center|pm | |align=center|pm | ||
| | |Полученное приватное сообщение. | ||
|- | |- | ||
|align=center|pm/sent | |align=center|pm/sent | ||
| | |Отправленное приватное сообщение. | ||
|- | |- | ||
|align=center|portals | |align=center|portals | ||
| | |Порталы переходов между локациями. | ||
|- | |- | ||
|align=center|portalRecord | |align=center|portalRecord | ||
| | |Запись перехода через портал. | ||
|- | |- | ||
|align=center|publicchat | |align=center|publicchat | ||
| | |Общий, публичный чат. | ||
|- | |- | ||
|align=center|refine | |align=center|refine | ||
| | |Заточка оружия. | ||
|- | |- | ||
|align=center|route | |align=center|route | ||
| | |Просчитывание маршрута. | ||
|- | |- | ||
|align=center|route_teleport | |align=center|route_teleport | ||
| | |Телепортация при прохождении маршрута. | ||
|- | |- | ||
|align=center|schat | |align=center|schat | ||
|GM | |Сообщение GM'а на весь сервер. | ||
|- | |- | ||
|align=center|selfSkill | |align=center|selfSkill | ||
| | |Используемые самим персонажем скиллы. | ||
|- | |- | ||
|align=center|skill | |align=center|skill | ||
| | |Скиллы, не связанные с сообщениями об атаке. | ||
|- | |- | ||
|align=center|sold | |align=center|sold | ||
| | |Продан итем в торговой лавке. | ||
|- | |- | ||
|align=center|startup | |align=center|startup | ||
| | |Сообщения при запуске OpenKore. | ||
|- | |- | ||
|align=center|storage | |align=center|storage | ||
| | |Склад кафры, положили или взяли итем. | ||
|- | |- | ||
|align=center|success | |align=center|success | ||
Строка 249: | Строка 319: | ||
|- | |- | ||
|align=center|syntax | |align=center|syntax | ||
| | |Проверка правописания в файлах. | ||
|- | |- | ||
|align=center|teleport | |align=center|teleport | ||
| | |Телепортация, винги. | ||
|- | |- | ||
|align=center|useItem | |align=center|useItem | ||
| | |Исользование итема. | ||
|- | |- | ||
|align=center|useTeleport | |align=center|useTeleport | ||
| | |Попытка использовать телепорт. | ||
|- | |- | ||
|align=center|waypoint | |align=center|waypoint | ||
Строка 264: | Строка 334: | ||
|- | |- | ||
|align=center|xkore | |align=center|xkore | ||
|X-Kore | |Режим X-Kore. | ||
|} | |} | ||
Далее следует список доменов, используемых для отладки: | |||
{| | {| | ||
| | | | ||
Строка 317: | Строка 387: | ||
== | == Названия == | ||
Иногда название оружия, брони, предметов и мобов различаются от сервера к серверу, поэтому OpenKore имеет свою собственную базу данных в папке tables, где хранятся стандартные названия. Для каждого вида объектов OpenKore имеет свои правила наименования. | |||
=== | === Оружие и броня === | ||
---- | ---- | ||
Написание названия оружия или брони подчиняется следующим правилам: | |||
# | # для обычного оружия или брони | ||
[BROKEN] [+< | [BROKEN] [+<уровень_заточки>] (<название предмета>) [[<вставленная_карта>[*<кол-во>]] [<кол-во слотов>] [<кол-во свойств>]] | ||
# | # для элементального оружия | ||
[BROKEN][+< | [BROKEN][+<уровень_заточки>][VS|VVS|VVVS][Fire|Earth|Wind|Water](<название предмета>) [<кол-во свойств>] | ||
''' | '''Примечания:''' | ||
* | * Если оружие или броня не сломано, слово '''BROKEN''' не пишется. | ||
* | * Если оружие или броня не заточены, тогда часть имени '''+<уровень заточки>''' не пишется. | ||
* | * Для описания вставленных карт используется только имя моба без слова Card, например просто Hydra вместо Hydra Card. | ||
* | * Если вставлена только одна карта одного типа, то часть имени '''*<кол-во>''' не пишется. | ||
* | * Если вставлено несколько типов карт, то пары '''<вставленная карта>*<кол-во>''' разделяются знаком двоеточия ":", а сам список карт должен быть отсортирован в алфавитном порядке. | ||
* | * Если оружие или броня не слотовые, то часть '''<кол-во слотов>''' пропускается. | ||
* | * Регистр букв в названии предметов не важен. | ||
* | * Названия предметов можно подсмотреть при помощи [[:Category:Console Command|консольных команд]]: [[i]], [[cart]], [[storage]]. | ||
'''Пример:''' | |||
* +7 Cranial Mirror Shield: <code>+7 Mirror Shield [Thara Frog] [1]</code> | |||
* Hard Padded Armor: <code>Padded Armor [Pupa] [1]</code> | |||
* 3-слотовый +5 Double Flammable Boned Saber: <code>+5 Saber [Skel Worker:Vadon*2] [3]</code> | |||
* +6 Very Very Strong Wind Tsurugi: <code>+6 VVS Wind Tsurugi</code> | |||
* +5 Очень очень очень сильный Двуручный топор с 4-мя доп. свойствами: <code>+5 VVVS Двуручный топор [4 Option]</code> | |||
=== Предметы === | |||
=== | |||
---- | ---- | ||
Названия предметов находятся в файле [[tables]]\[[items.txt]], записи в этом файле выглядят вот так: | |||
<Item ID>#<item_name># | <Item ID>#<item_name># | ||
В файле [[items.txt]] пробелы в названиях предметов заменяются знаком подчеркивания "_". При использовании в OpenKore знаки подчеркивания заменяются на, собственно, пробелы. | |||
''' | ''' Пример: ''' | ||
* | * Предмет называется "Mirror Shield". | ||
2107#Mirror_Shield# | 2107#Mirror_Shield# | ||
''' | '''Примечания:''' | ||
* | * Регистр букв в названии предметов не важен. | ||
* | * Названия предметов можно подсмотреть при помощи [[:Category:Console Command|консольных команд]] [[i]], [[cart]], [[storage]]. | ||
=== Наземные умения === | |||
=== | |||
---- | ---- | ||
Названия наземных умений находятся в файле [[tables]]\[[spells.txt]], записи в этом файле выглядят вот так: | |||
<Spell ID> <spell name> | <Spell ID> <spell name> | ||
''' | ''' Пример: ''' | ||
* | * Название наземного умения: Safety Wall | ||
126 Safety Wall | 126 Safety Wall | ||
''' | '''Примечание:''' | ||
* | * Название наземных умений, работающих рядом с OpenKore, можно подсмотреть при помощи [[:Category:Console Command|консольной команды]] [[spell]]. | ||
=== Локации === | |||
=== | |||
---- | ---- | ||
Названия локаций находятся в файле [[tables]]\[[maps.txt]], записи в этом файле выглядят вот так: | |||
<map file name>#<map name># | <map file name>#<map name># | ||
OpenKore использует только первое поле из этого файла. | |||
''' | ''' Пример: ''' | ||
* | * Название локации Prontera | ||
prontera.rsw#Prontera City# | prontera.rsw#Prontera City# | ||
''' | '''Примечание:''' | ||
* | * Название локации, на которой в данный момент находится персонаж, можно подсмотреть [[:Category:Console Command|консольной командой]] [[where]]. | ||
=== | === Мобы === | ||
---- | ---- | ||
Имена мобов, монстров находятся в файле [[tables]]\[[monsters.txt]], записи в этом файле выглядят вот так: | |||
<monster ID> <monster name> | <monster ID> <monster name> | ||
''' | ''' Пример: ''' | ||
* | * Имя моба: Scorpion | ||
1001 Scorpion | 1001 Scorpion | ||
''' | '''Примечание:''' | ||
* | * Имя моба можно узнать при помощи [[:Category:Console Command|консольной команды]] [[ml]], будет выведен список мобов рядом с персонажем. | ||
=== | === Игроки === | ||
---- | ---- | ||
Имена окружающих игроков можно узнать при помощи [[:Category:Console Command|консольной команды]] [[pl]]. | |||
''' | '''Примечание:''' В именах игроков важен регистр букв. | ||
=== Умения === | |||
В конфигах OpenKore, в макросах или при использовании консольных команд иногда приходится указывать умения. При написании умения можно использовать три равнозначных варианта: | |||
--- | # '''<ID_умения>''' - уникальный номер умения. Не зависит от языковых настроек OpenKore. Можно найти в файле [[:Категория:tables|tables]]\[[SKILL_id_handle.txt]] | ||
# '''<skill_handle>''' - буквенное название умения (не содержит пробелов). Не зависит от языковых настроек OpenKore. Можно найти в файлах [[:Категория:tables|tables]]\[[SKILL_id_handle.txt]] и [[:Категория:tables|tables]]\..\[[skillnametable.txt]] | |||
# '''<название_умения>''' - "человеческое" название умения. Зависит от языковых настроек OpenKore. Можно найти в файле [[:Категория:tables|tables]]\..\[[skillnametable.txt]] | |||
''' Пример: ''' | |||
* 142 - ID умения | |||
* NV_FIRSTAID - его skill_handle | |||
* "Первая помощь" - русское название | |||
* "First Aid" - английское название | |||
---- | |||
* | '''Примечания:''' | ||
* Названия умений персонажа можно посмотреть [[:Category:Console Command|консольной командой]] [[skills]]. | |||
=== Статусы === | |||
---- | |||
В качестве статуса можно указывать дескриптор или имя статуса. | |||
Дескрипторы статусов можно найти в файлах <code>tables/{AILMENT,LOOK,STATE,STATUS}_id_handle.txt</code>. Эти дескрипторы одинаковые для всех серверов с которыми работает OpenKore, например "EFST_ATTHASTE_POTION1". | |||
Сами названия статусов можно найти в файле '''statusnametable.txt'''. Для каждого сервера имена статусов могут отличаться. Например, на сервере euRO используются английские названия статусов (Concentration potion), а на rRO - русские (Зелье Концентрации). | |||
''' | '''Примечание:''' | ||
* Список наложенных на персонажа статусов можно узнать с помощью '''[[s|консольной команды "s"]]'''. | |||
=== Профессии === | |||
---- | |||
Правильное название можно подсмотреть в файле [https://github.com/OpenKore/openkore/blob/master/src/Globals.pm#L143 src/Globals.pm]. Название профессии всегда пишется на английском языке, например: Novice, Thief, Rogue, и т.д. | |||
Профессию окружающих игроков можно посмотреть с помощью консольной команды [[Actor_List_Command|pl]]. | |||
== Индекс == | |||
Индекс - это временный номер по порядку чего-либо. Например, индекс предмета в инвентаре\телеге\складе, индекс игроков\монстров\НПЦ в пределах видимости. Когда чар появляется на локации, к нему с сервера прилетает пакет со списком предметов. OpenKore присваивает индивидуальный номер (индекс) каждому предмету, начиная с 0. Всё взаимодействие OpenKore с сервером идёт с использованием этого индекса, например, консольная команда "[[is|is 10]]" - использовать на себя предмет с индексом 10. Если бот переподключится, то индекс одного и того же предмета может поменяться - это следует учитывать при написании макросов. Не путайте индекс предмета и его ИД! | |||
== | == Коды разговора с неписями == | ||
Коды разговора с неписями используются чтобы записать - как надо говорить с неписью. Где какие варианты ответа выбирать, когда и какие числа вводить, а когда просто продолжить беседу. Эта форма записи используется в [[:Category:Console Command|консольной команде]] [[talknpc]], в параметрах конфига [[:Category:config.txt|config.txt]], например в [[storageAuto_npc_steps]], а также в других местах, например в файле [[tables]]\[[portals.txt]]. Разговор с неписью записывается как строка кодов, где коды разделяются пробелами. | |||
{| | {|class="TablePager" | ||
|+ Список кодов разговора с неписями | |||
!Код | |||
!Действие | |||
|- | |||
!c | |||
|Продолжить разговор с неписью. То же самое, что нажатие кнопки "Next". | |||
|- | |- | ||
| | !r<номер варианта ответа> | ||
|Выбрать один из предложенных вариантов. Индексация вариантов ответа начинается с нуля. | |||
|- | |- | ||
! | !r=<искомый текст> | ||
| | |Выбрать тот вариант ответа, который совпадает с заданным текстом. Появилось в ревизии [http://sourceforge.net/p/openkore/code/8937/ 8937]. | ||
|- | |- | ||
!r | !r~/<регулярное выражение>/ | ||
| | |Выбрать тот вариант ответа, который подходит к указанному регулярному выражению. Если после второй черты поставить i, то регистр букв станет неважен. Появилось в ревизии [http://sourceforge.net/p/openkore/code/8998/ 8998]. | ||
|- | |- | ||
!w | !w<кол-во секунд> | ||
| | |Подождать указанное количество секунд, а потом продолжить разговор. | ||
|- | |- | ||
!d | !d<число> | ||
| | |Сказать число. | ||
|- | |- | ||
! | !t=<текст> | ||
| | |Сказать текстовую строку. | ||
|- | |- | ||
!s | !s | ||
| | |Начать продажу предметов. | ||
|- | |- | ||
!b | !b | ||
| | |Начать покупку предметов. | ||
|- | |- | ||
!b | !<span style="white-space:nowrap;">b<№ предмета в магазине>,<кол-во></span> | ||
| | |Купить у неписи предмет в указанном количестве. См. также консольную команду [[buy]]. Количество указывается в обязательном порядке. | ||
|- | |- | ||
!n | !n | ||
| | |Закончить разговор с неписью. | ||
|- | |- | ||
!e | !e | ||
| | |Подождать, пока непись скажет "Done talking". Используется после кодов '''s''' или '''b''', когда идёт разговор с неписью, которая скупает-продаёт предметы. | ||
|- | |- | ||
!a= | !a="<консольная команда>" | ||
| | |Выполнить указанную консольную команду. Например '''a="is Red Potion"'''. | ||
|- | |- | ||
!x | !x | ||
| | |Снова начать разговор с неписью. Это нужно, чтобы в одну команду [[talknpc]] запихивать несколько обращений к одной неписи. | ||
|} | |} | ||
=== Примеры === | |||
* | * Поговорить с неписью, стоящей по координатам (63 60), используя следующую последовательность: дальше > выбрать четвертый вариант > дальше > выбрать первый вариант > дальше > дальше > выбрать первый вариант > дальше > конец. | ||
talknpc 63 60 c r3 c r0 c c r0 c n | 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 | |||
== Диапазон значений == | |||
Диапазоны ([https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%BC%D0%B5%D0%B6%D1%83%D1%82%D0%BE%D0%BA_(%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)#%D0%A2%D0%B8%D0%BF%D1%8B_%D0%BF%D1%80%D0%BE%D0%BC%D0%B5%D0%B6%D1%83%D1%82%D0%BA%D0%BE%D0%B2 интервалы]) значений позволяют более гибко настраивать некоторые параметры конфига [[:Category:config.txt|config.txt]]. | |||
{| border="1" cellpadding="2" cellspacing="1" | {| border="1" cellpadding="2" cellspacing="1" | ||
|- style=background-color:#F9F9F9; | |- style=background-color:#F9F9F9; | ||
!Значение | |||
! | !Условное обозначение | ||
! | !Описание | ||
|- | |- | ||
!align=center|X | !align=center|X | ||
| | !{X} | ||
|Значение будет равно X | |||
|- | |- | ||
!align=center|X..Y | !align=center|X..Y | ||
X-Y | |||
![X, Y] | |||
! | |Диапазон значений - все числа от X до Y включительно | ||
| | |||
|- | |- | ||
!align=center|> X | !align=center|> X | ||
| | !(X, +∞) | ||
|Все значения, которые больше чем X | |||
|- | |- | ||
!align=center|>= X | !align=center|>= X | ||
| | ![X, +∞) | ||
|Все значения, которые больше либо равны X | |||
|- | |- | ||
!align=center|< X | !align=center|< X | ||
| | !(-∞, X) | ||
|Все значения, которые меньше чем X | |||
|- | |- | ||
!align=center|<= X | !align=center|<= X | ||
| | !(-∞, X] | ||
|Все значения, которые меньше либо равны X | |||
|- | |- | ||
|} | |} | ||
'''API''': функции и плагины должны использовать [https://github.com/OpenKore/openkore/blob/master/src/Utils.pm#L1070 Utils::inRange(<значение>, <диапазон>)] для проверки соответствия значений указанному диапазону. | |||
''' | ''' Примеры: ''' | ||
* | * Если HP персонажа больше десяти процентов: | ||
hp > 10% | |||
* | * Если у персонажа ровно 5000 зени: | ||
zeny 5000 | zeny 5000 | ||
* | * Если проф-уровень персонажа от 10 до 15 включительно: | ||
jlvl 10..15 | jlvl 10..15 | ||
== Атрибуты блочных параметров == | |||
=== [[:Category:Self Condition|Self Conditions]] === | |||
{{:Category:Self Condition}} | {{:Category:Self Condition}} | ||
=== [[:Category:Monster Condition|Monster Conditions]] === | === [[:Category:Monster Condition|Monster Conditions]] === | ||
Строка 580: | Строка 652: | ||
{{:Category:Player Condition}} | {{:Category:Player Condition}} | ||
== [[:Category:Skill Use Condition|Skill Use Conditions]] == | === [[:Category:Skill Use Condition|Skill Use Conditions]] === | ||
{{:Category:Skill Use Condition}} | {{:Category:Skill Use Condition}} | ||
== [[:Category:Interfaces| | == [[:Category:Interfaces|Интерфейсы OpenKore]] == | ||
{{:Category:Interfaces}} | {{:Category:Interfaces}} |
Текущая версия от 00:45, 2 мая 2023
Условные обозначения
Условные обозначения используются при описании параметров конфигурационных файлов и различных команд.
Условное обозначение | Значение |
---|---|
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=<имя_интерфейса>
.