CloudSkills — боевые навыки для игроков

Приветствуем вас в нашей новой статье! Искали хороший плагин на уникальные способности для игроков? Представляем нашу разработку — CloudSkills. Идея простая: игрок выбирает себе боевой навык, и тот срабатывает сам, прямо в момент удара по противнику. Никаких кнопок, перезарядок и лишних менюшек в бою.

Навык — это не активная способность, которую надо не забыть нажать. Это то, что случается с вашим противником, когда вы до него дотянулись.
cloudskills
cloudskills
cloudskills
cloudskills
1 / 4

Четыре навыка из коробки

НавыкЧто делаетЦифрыСовмещается
Благословение ЗевсаБьёт цель молнией в момент атаки6 урона, срабатывание 100%нет
Огонь АдаПоджигает противникагорение 10 секундда
ОтравительНакладывает отравлениеОтравление II на 3 секундыда
ЛётчикОтправляет противника в полётЛевитация I на 3 секундыда

Обратите внимание на последний столбец. Зевс — навык-одиночка: пока он активен, других взять нельзя, и плагин честно об этом скажет. Остальные три спокойно живут вместе, так что «поджечь, отравить и отправить в небо» одним ударом — законная связка. Флаг совместимости стоит у каждого навыка отдельно, так что баланс на вашем сервере вы решаете сами.

cloudskills
cloudskills
cloudskills
cloudskills
1 / 4

Из чего собран навык

Внутри каждый навык — это набор функций, и функций у одного навыка может быть сколько угодно. Доступны три типа:

  • Молния — урон и шанс срабатывания
  • Поджог — секунды горения и шанс
  • Эффект — любой ванильный эффект, его уровень, длительность и шанс

То есть вы не ограничены четырьмя заготовками. Хотите навык, который с шансом в треть накладывает слепоту на пять секунд и одновременно поджигает на три — просто дописываете две строки, и он появляется в игре. Шанс задаётся дробью от нуля до единицы, поэтому «срабатывает в 15% случаев» настраивается так же легко, как «срабатывает всегда».

Именно здесь плагин отличается от аналогов: у большинства навыки зашиты в код, и вы берёте то, что дали. Здесь набор навыков — это ваш конфиг, а не наш.

Что видит игрок

В момент срабатывания навыка обе стороны получают тайтл посреди экрана: атакующему пишется, что навык сработал, жертве — что по ней сработали. Появление, задержку и исчезновение тайтла можно подкрутить по кадрам, а если такие надписи мешают — выключаются одним параметром.

Всё управление у игрока в одной команде /skill (она же /skills):

  • /skill list — список навыков, у активных горит зелёный кружок, у выключенных серый
  • /skill select <навык> — включить
  • /skill info <навык> — что навык делает
  • /skill reject <навык> — выключить один
  • /skill reject all — выключить сразу все

Привилегии и донат

У каждого навыка своё право доступа. Это и есть готовая донат-механика: раздайте Зевса только владельцам верхней привилегии, Отравителя — средней, а Лётчика оставьте всем. Ничего дописывать не нужно, всё делается в LuckPerms или чем вы пользуетесь.

Оптимизация и сохранение

Плагин не только проработан, но и хорошо оптимизирован: мы отдельно занимались запросами к базе и операциями, которые обычно нагружают сервер, — лишней нагрузки они не создают. Выбор игрока сохраняется автоматически раз в пять минут, так что перезапуск сервера ничего не теряет.

Полная кастомизация текста

Каждое сообщение плагина лежит в конфиге и правится под ваш стиль: префикс, тексты об активации и отключении, отказ при попытке совместить несовместимое, заголовки, значки статуса и даже строка помощи. Цвета — обычными кодами, так что плагин подстраивается под оформление сервера, а не наоборот.

cloudskills
cloudskills
cloudskills
1 / 3

Что можно поменять в конфиге

Четыре навыка из коробки — это стартовый набор, а не потолок. Навык в CloudSkills не зашит в код: он собирается в config.yml из готовых кирпичей, поэтому свой можно завести без единой строчки Java.

Кирпичей три, и записываются они одной строкой через точку с запятой:

# LIGHTNING;<урон>;<шанс 0..1>
# FIRE;<секунд горения>;<шанс 0..1>
# EFFECT;<эффект>;<уровень>;<секунд>;<шанс 0..1>

Вот как из них собран «Отравитель» — весь навык целиком, включая право доступа и совместимость с остальными:

skills:
  poison:
    display: '&2Отравитель'
    description: 'Отравляет противника при атаке'
    permission: cloudskills.poison
    combinate: true
    features:
      - 'EFFECT;POISON;2;3;1.0'

POISON второго уровня на 3 секунды, шанс 1.0 — то есть срабатывает всегда.

Дальше начинается ваша настройка. Шанс — последнее число в строке: поставили 0.25 вместо 1.0, и навык стреляет в четверти ударов. Сила — уровень и длительность эффекта, у Зевса вместо них урон молнии. А combinate решает, можно ли держать навык вместе с другими: у Зевса стоит false, поэтому молния не складывается с ядом и левитацией.

У навыка может быть несколько функций сразу, и они срабатывают независимо друг от друга. Хотите удар, который одновременно бьёт молнией, поджигает и ослепляет, — просто добавьте три строки в один features. Никаких ограничений на количество мы не ставили.
  storm:
    display: '&9Буря'
    permission: cloudskills.storm
    combinate: false
    features:
      - 'LIGHTNING;4;0.3'
      - 'FIRE;5;0.3'
      - 'EFFECT;BLINDNESS;1;2;0.3'

Пример своего навыка: три эффекта в одном ударе, каждый со своим шансом.

Права permission у каждого навыка свои, поэтому раздавать их удобно привилегиями: базовым игрокам — один навык, донатерам — весь набор. Плагин ничего не знает про вашу систему прав, он просто проверяет право с нужным именем.

Оформление тоже целиком настраиваемое. Тайтл при срабатывании можно выключить или растянуть, автосохранение выбора игроков — ускорить или замедлить:

settings:
  titles: true
  fade-in: 10
  stay: 40
  fade-out: 10
  save-interval: 300   # автосохранение данных игроков, секунд

И ни одной вшитой в код фразы: все сообщения плагина — от префикса до отказа в совмещении навыков — лежат в конфиге и переписываются под тон вашего проекта.

messages:
  prefix: '&e&lSkills &8| &f'
  selected: 'Навык %skill% &fактивирован!'
  no-combine: 'Этот навык нельзя совмещать — выключите остальные.'
  no-permission: 'У вас нет доступа к этому навыку!'

Итог

CloudSkills добавляет в PvP слой, которого обычно не хватает: бой перестаёт быть обменом ударами и начинает зависеть от того, какой навык вы выбрали до драки. При этом плагин не требует ни ресурспака, ни клиентских модов — работает на 1.16.5 и выше на чистом сервере.

Обновления и поддержка — бесплатно. Нужен свой набор навыков под ваш проект — напишите, соберём.