[Citizens 2] Denizen
Добавлено: 04 апр 2016, 10:33
Denizen
Лучше всего классифицировать данный плагин как платформу для создания сценариев.
Denizen, вероятно, лучше всего известен как способ создания скриптовых NPC Citizen.
На самом деле, весь этот проект начинался как расширение Citizens2.
NPC Данного типа могут использовать сценарии и события для взаимодействия с игроком или миром.
Например хранители порталов, Маги, Банкиры, тренера, говорящие горожане, кузнец.
Их можно использовать в любых целях: давать подсказки игрокам, квесты или администрирование.
Denizen используют собственный скриптовый язык, базирующийся на YAML.
Вот некоторые основные функции:
Файловая система
[spoiler]
Лучше всего классифицировать данный плагин как платформу для создания сценариев.
Denizen, вероятно, лучше всего известен как способ создания скриптовых NPC Citizen.
На самом деле, весь этот проект начинался как расширение Citizens2.
NPC Данного типа могут использовать сценарии и события для взаимодействия с игроком или миром.
Например хранители порталов, Маги, Банкиры, тренера, говорящие горожане, кузнец.
Их можно использовать в любых целях: давать подсказки игрокам, квесты или администрирование.
Denizen используют собственный скриптовый язык, базирующийся на YAML.
Вот некоторые основные функции:
- Скриптовый движок (The Script Engine) отправляет все команды, которые выполняются упорядоченно, это основа Denizen. В настоящее время имеется 3 очереди, для игрока, для Denizens и для задачи.
- Скрипты для взаимодействия (Interact Scripts) это основа Dezizen, которая позволяет игрокам и НПС взаимодействовать друг с другом и с миром. Такие скрипты очень гибко настраиваются. Подробнее о таких скриптах будет ниже.
- Скрипты действий (Activity Scripts) позволяют NPC Denizen быть как обычные игроки. То есть они смогут ходить, общаться друг с другом, сажать деревья, строить дома и еще много чего.
- Планировщик действий (Activity Scheduler) позволяет создавать «график» из скриптов для Denizen основанный на одном игровом дне в minecraft.
- Скрипты заданий (Task Scripts) это простые скрипты которые могут использоваться как «скрипты действий» и как «скрипты взаимодействия».
- Листнер (Listeners) в настоящее время находятся в «экспериментальной фазе», но уже позволяют контролировать события Minecraft bukkit. Например если вы хотите создать квест на убийство.
- Система флагов (Flag System) позволяет более динамичное использование Denizen. Сложная, но легко воспринимаемая система флагов была внедрена в Denizen, чтобы помочь отслеживать события, предметы, цифры, игроков и многое другое
Файловая система
- denizen.jar
как любой другой плагин и помещать в папку плагинов /plugins. - config.yml
Содержит некоторые параметры для изменения поведения Denizen. Вы можете использовать все значения по умолчанию, плохо от этого не станет)
Изменения в этот файл можно вносить и при работающем сервере, только потом может потребоваться перезагрузка плагина командой /denizen reload . - assignments.yml
В этом файле описываются все варианты действия для вашего NPC. Каким образом его редактировать будет объяснено дальше.
Изменения в этот файл можно вносить и при работающем сервере, только потом может потребоваться перезагрузка плагина командой /denizen reload . - saves.yml
Ни в коем случае не редактируйте вручную этот файл при включенном сервере. Он будет заполняться автоматически. Тут содержится информация о профессии НПС, флагах игроков, расположении НПС, активные сценарии, действия и другое. - read-only-scripts.yml
Еще один файл, который нельзя редактировать вручную. Сюда пишутся все скрипты которые плагин смог прочитать. - /scripts/ папка
Это папка из которой плагин будет читать скрипты при загрузке и заносить их в файл read-only-scripts.yml . Такая организация скриптов очень удобна, так как количество скриптов может быть очень велико и ориентироваться по ним будет сложно.Файлы в этой директории можно называть как угодно, но формат должен быть всегда .yml .
- Config.yml - примерное содержание файла с конфигурацией плагина:
[spoiler]
- # Операторы могут получать информацию о НПС с помощью правого клика.
# Если false то команда '/denizeninfo' делает то же самое.
right_click_and_sneak_info_mode_enabled: true
# Стандартное время отката триггеров в секундах.
default_click_cooldown_in_seconds: 2.0
default_location_cooldown_in_seconds: 30.0
default_proximity_cooldown_in_seconds: 15.0
default_death_cooldown_in_seconds: 0.0
default_damage_cooldown_in_seconds: 0.5
default_chat_cooldown_in_seconds: 2.0
# Если триггер атаки (damagetrigger) (левый клик) деактивирован. Выберите false если хотите
# чтобы был активен только правый клик.
disabled_damage_trigger_instead_triggers_click: false
# Ожидания действия.
engage_timeout_in_seconds: 150
# Задержка взаимодействия задает темп для очереди игрока и очереди НПС.
# рекомендуется ставить значения 10-20.
interact_delay_in_ticks: 10
# Максимальная длина строки диалога
multi_line_text_maximum_length: 55
# обычно, игроки могут говорить с НПС даже если нет триггера чата.
# Измените на true если вы хотите чтобы чат с НПС был виден для всех
chat_globally_if_no_chat_triggers: false
# Если триггер чата включен, и игрок вызывает недоступный триггер
# который не соответствует ни одному описанному в скрипте,
# Должен ли игрок продолжать чат с НПС и получать ответы или должен
# возвращаться в глобальный чат игнорируя НПС
# Измените на true если хотите
# чтобы чат у НПС был глобальный если триггер чата есть,
# но ненайдены соответствия
chat_globally_if_failed_chat_triggers: false
# также.. если НПС не взаиможействует с игроком(нет скрипта взаимодействия)
# по умолчанию чат по прежнему ориентирован на НПС
# Вы можете отключить эту опцию поставив true
chat_globally_if_not_interactable: false
# Должны ли игроки, взаимодействующие с Denizen слышать разговор другого игрока
bystanders_hear_player_to_npc_chat: true
bystanders_hear_npc_to_player_chat: true
# Определяет диапазоны в блоках для взаимодействия с нпс
player_to_npc_chat_range_in_blocks: 2
npc_to_player_chat_range_in_blocks: 7
npc_emote_range_in_blocks: 7
player_to_npc_shout_range_in_blocks: 15
npc_to_player_shout_range_in_blocks: 15
player_to_npc_whisper_range_in_blocks: 2
npc_to_player_whisper_range_in_blocks: 3
proximity_trigger_range_in_blocks: 3
location_trigger_range_in_blocks: 1
# Определяет как следует «разговаривать» НПС с игроком.
# <PLAYER>, <NPC> и <TEXT> стандартные теги
player_chat_to_npc: "Вы сказали <NPC>y, '<TEXT>'"
player_chat_to_npc_bystander: "<PLAYER> сказал <NPC>y, '<TEXT>'"
npc_chat_to_bystanders: "<NPC> говорит, '<TEXT>'"
npc_chat_to_player: "<NPC> сказал тебе, '<TEXT>'"
npc_chat_to_player_bystander: "<NPC> сказал <PLAYER>y, '<TEXT>'"
player_whisper_to_npc: "Вы прошептали <NPC>y, '<TEXT>'"
player_whisper_to_npc_bystander: "<PLAYER> прошептал что-то <NPC>у."
npc_whisper_to_bystanders: "<NPC> прошептал, '<TEXT>'"
npc_whisper_to_player: "<NPC> прошептал вам, '<TEXT>'"
npc_whisper_to_player_bystander: "<NPC> прошепталчтото <PLAYER>у."
player_shout_to_bystanders: "Выкрикнули, '<TEXT>'"
player_shout_to_bystanders_bystander: "<PLAYER> коикнул, '<TEXT>'"
npc_shout_to_bystanders: "<NPC> крикнул, '<TEXT>'"
npc_shout_to_player: "<NPC> крикнулвам, '<TEXT>'"
npc_shout_to_player_bystander: "<NPC> крикнул <PLAYER>у, '<TEXT>'"
npc_hint_prefix: "[HINT] Вы можете сказать: "
# Стандартные тексты, которые используются для взаимодейсвия.
default_denizen_unavailable_text: "Ты не видишь, я занят!"
default_no_click_trigger_text: "Мне пока нечего тебе сказать."
default_no_damage_trigger_text: "Эй! Это больно!!"
default_no_chat_trigger_text: "Извини, я тебя не понимаю."