References — различия между версиями
4epT (обсуждение | вклад) |
4epT (обсуждение | вклад) (→Умения) |
||
(не показано 26 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
− | ==Условные обозначения== | + | == Условные обозначения == |
− | Условные обозначения используются при | + | Условные обозначения используются при описании параметров конфигурационных файлов и различных команд. |
{|border="1" cellpadding="2" cellspacing="1" | {|border="1" cellpadding="2" cellspacing="1" | ||
Строка 15: | Строка 15: | ||
|align=center|( ) | |align=center|( ) | ||
|Заключённые в круглые скобки параметры являются обязательными. | |Заключённые в круглые скобки параметры являются обязательными. | ||
− | |||
|- | |- | ||
|align=center|[ ] | |align=center|[ ] | ||
Строка 21: | Строка 20: | ||
|- | |- | ||
|align=center| | | |align=center| | | ||
− | |Вертикальная черта | + | |Вертикальная черта означает "или". Необходимо выбрать либо левую, либо правую часть. |
|} | |} | ||
Строка 27: | Строка 26: | ||
== Типы значений == | == Типы значений == | ||
Значения параметров в конфигурационных файлах и аргументов в командах могут быть следующих типов: | Значения параметров в конфигурационных файлах и аргументов в командах могут быть следующих типов: | ||
− | + | ||
− | {|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|lowHead | ||
|Голова низ. | |Голова низ. | ||
|- | |- | ||
+ | |align=center|2 | ||
|align=center|rightHand | |align=center|rightHand | ||
|Правая рука. | |Правая рука. | ||
|- | |- | ||
− | |align=center| | + | |align=center|4 |
− | | | + | |align=center|robe |
+ | |Накидка, плащ. | ||
|- | |- | ||
+ | |align=center|8 | ||
|align=center|rightAcessory | |align=center|rightAcessory | ||
|Правый акцессуар. | |Правый акцессуар. | ||
|- | |- | ||
− | |align=center| | + | |align=center|16 |
− | |||
− | |||
|align=center|armor | |align=center|armor | ||
|Броня на тело. | |Броня на тело. | ||
|- | |- | ||
− | |align=center| | + | |align=center|32 |
− | | | + | |align=center|leftHand |
+ | |Левая рука. | ||
|- | |- | ||
+ | |align=center|64 | ||
|align=center|shoes | |align=center|shoes | ||
|Обувь. | |Обувь. | ||
|- | |- | ||
+ | |align=center|128 | ||
+ | |align=center|leftAcessory | ||
+ | |Левый акцессуар. | ||
+ | |- | ||
+ | |align=center|256 | ||
+ | |align=center|topHead | ||
+ | |Голова верх. | ||
+ | |- | ||
+ | |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|8192 | ||
+ | |align=center|costumeRobe | ||
+ | |Robe costume slot. | ||
+ | |- | ||
+ | |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''', тогда с самим сообщением будет выводиться имя домена сообщений, к которому оно относится. | Чтобы узнать, к какому домену сообщений относится то или иное сообщение, пропишите в параметре конфига [[showDomain]] '''1''', тогда с самим сообщением будет выводиться имя домена сообщений, к которому оно относится. | ||
Строка 317: | Строка 387: | ||
− | == | + | == Названия == |
− | Иногда | + | Иногда название оружия, брони, предметов и мобов различаются от сервера к серверу, поэтому OpenKore имеет свою собственную базу данных в папке tables, где хранятся стандартные названия. Для каждого вида объектов OpenKore имеет свои правила наименования. |
=== Оружие и броня === | === Оружие и броня === | ||
---- | ---- | ||
− | Написание | + | Написание названия оружия или брони подчиняется следующим правилам: |
# для обычного оружия или брони | # для обычного оружия или брони | ||
− | [BROKEN] [+< | + | [BROKEN] [+<уровень_заточки>] (<название предмета>) [[<вставленная_карта>[*<кол-во>]] [<кол-во слотов>] [<кол-во свойств>]] |
# для элементального оружия | # для элементального оружия | ||
− | [BROKEN][+< | + | [BROKEN][+<уровень_заточки>][VS|VVS|VVVS][Fire|Earth|Wind|Water](<название предмета>) [<кол-во свойств>] |
'''Примечания:''' | '''Примечания:''' | ||
* Если оружие или броня не сломано, слово '''BROKEN''' не пишется. | * Если оружие или броня не сломано, слово '''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 пробелы в | + | В файле [[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> | ||
Строка 377: | Строка 443: | ||
''' Пример: ''' | ''' Пример: ''' | ||
− | * | + | * Название наземного умения: 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 использует только первое | + | OpenKore использует только первое поле из этого файла. |
''' Пример: ''' | ''' Пример: ''' | ||
Строка 398: | Строка 463: | ||
'''Примечание:''' | '''Примечание:''' | ||
− | * | + | * Название локации, на которой в данный момент находится персонаж, можно подсмотреть [[:Category:Console Command|консольной командой]] [[where]]. |
=== Мобы === | === Мобы === | ||
---- | ---- | ||
− | Имена мобов, монстров находятся в файле tables\monsters.txt, записи в этом файле выглядят вот так: | + | Имена мобов, монстров находятся в файле [[tables]]\[[monsters.txt]], записи в этом файле выглядят вот так: |
<monster ID> <monster name> | <monster ID> <monster name> | ||
Строка 413: | Строка 478: | ||
'''Примечание:''' | '''Примечание:''' | ||
− | * Имя моба можно узнать при помощи [[Console | + | * Имя моба можно узнать при помощи [[:Category:Console Command|консольной команды]] [[ml]], будет выведен список мобов рядом с персонажем. |
=== Игроки === | === Игроки === | ||
---- | ---- | ||
− | Имена игроков можно узнать при помощи [[Console | + | Имена окружающих игроков можно узнать при помощи [[: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" |
− | |||
|+ Список кодов разговора с неписями | |+ Список кодов разговора с неписями | ||
!Код | !Код | ||
Строка 466: | Строка 536: | ||
|Продолжить разговор с неписью. То же самое, что нажатие кнопки "Next". | |Продолжить разговор с неписью. То же самое, что нажатие кнопки "Next". | ||
|- | |- | ||
− | !r | + | !r<номер варианта ответа> |
|Выбрать один из предложенных вариантов. Индексация вариантов ответа начинается с нуля. | |Выбрать один из предложенных вариантов. Индексация вариантов ответа начинается с нуля. | ||
|- | |- | ||
− | !w | + | !r=<искомый текст> |
+ | |Выбрать тот вариант ответа, который совпадает с заданным текстом. Появилось в ревизии [http://sourceforge.net/p/openkore/code/8937/ 8937]. | ||
+ | |- | ||
+ | !r~/<регулярное выражение>/ | ||
+ | |Выбрать тот вариант ответа, который подходит к указанному регулярному выражению. Если после второй черты поставить i, то регистр букв станет неважен. Появилось в ревизии [http://sourceforge.net/p/openkore/code/8998/ 8998]. | ||
+ | |- | ||
+ | !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''', когда | + | |Подождать, пока непись скажет "Done talking". Используется после кодов '''s''' или '''b''', когда идёт разговор с неписью, которая скупает-продаёт предметы. |
|- | |- | ||
− | !a= | + | !a="<консольная команда>" |
|Выполнить указанную консольную команду. Например '''a="is Red Potion"'''. | |Выполнить указанную консольную команду. Например '''a="is Red Potion"'''. | ||
|- | |- | ||
!x | !x | ||
− | | | + | |Снова начать разговор с неписью. Это нужно, чтобы в одну команду [[talknpc]] запихивать несколько обращений к одной неписи. |
|} | |} | ||
− | + | === Примеры === | |
− | * Поговорить с неписью, стоящей по координатам (63 60), | + | * Поговорить с неписью, стоящей по координатам (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} |
+ | |Значение будет равно X | ||
|- | |- | ||
!align=center|X..Y | !align=center|X..Y | ||
− | + | X-Y | |
− | + | ![X, Y] | |
− | ! | + | |Диапазон значений - все числа от X до Y включительно |
− | |Диапазон значений - все числа от X до Y включительно | ||
|- | |- | ||
!align=center|> X | !align=center|> X | ||
− | |Все значения, которые больше чем X | + | !(X, +∞) |
+ | |Все значения, которые больше чем X | ||
|- | |- | ||
!align=center|>= X | !align=center|>= X | ||
− | |Все значения, которые больше либо равны X | + | ![X, +∞) |
+ | |Все значения, которые больше либо равны X | ||
|- | |- | ||
!align=center|< X | !align=center|< X | ||
− | |Все значения, которые меньше чем X | + | !(-∞, X) |
+ | |Все значения, которые меньше чем X | ||
|- | |- | ||
!align=center|<= X | !align=center|<= X | ||
− | |Все значения, которые меньше либо равны 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 | ||
Текущая версия на 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=<имя_интерфейса>
.