Система счёта игровых событий

Материал из Minecraft Wiki
Перейти к: навигация, поиск
Скриншот с системой счёта игровых событий на боковой панели.

Система счёта игровых событий (англ. scoreboard) — сложная система игровой механики, позволяющая отслеживать статистику игроков. В основном предназначена для разработчиков карт и операторов серверов.

Задачи[править | править вики-текст]

Задачи состоят из трёх основных параметров: названия, критерия и отображаемого имени. Счёт в задаче — целое число от -2 147 483 648 до 2 147 483 647.

Название используется внутри команд в качестве ссылки. Должно быть одним словом.
Отображаемое имя используется при отображении на экране. В отличие от названия отображаемое имя может быть не уникальным и состоять из нескольких слов.
Критерий определяет, что нужно отслеживать.

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

Условия селектора score_задача и score_задача_min позволяют произвести поиск сущностей с определённым счётом в указанной задаче.

  • score_задача=СЧЁТ ищет цель со счётом не больше значения СЧЁТ в указанной задаче.
  • score_задача_min=СЧЁТ ищет цель со счётом не меньше значения СЧЁТ в указанной задаче.

Например, командный блок с командой /testfor @p[score_deaths=5,score_deaths_min=1] (где deaths — событие с критерием deathCount) при активации подаст сигнал компаратору на выход, если ближайший игрок умер хотя бы раз, но не больше пяти раз.

Критерии[править | править вики-текст]

Критерий Описание Изменяется через /scoreboard?
dummy Счёт может быть изменён только командами. Может быть полезно, например, при математических вычислениях. Да
trigger Счёт может быть изменён только командами. Игрок может использовать команду /trigger, чтобы изменить свой счёт в задаче с этим критерием, если эта задача «включена» для данного игрока. После выполнения команды, задача «отключается» для игрока, исполнившего эту команду. Да
deathCount Счёт игрока увеличивается с его смертью. Да
playerKillCount Счёт игрока увеличивается с убийством другого игрока. Да
totalKillCount Счёт игрока увеличивается с убийством моба или другого игрока. Да
health Счёт игрока соответствует количеству его очков здоровья. Нет
food Счёт игрока соответствует количеству его очков сытости. Нет
xp Счёт игрока соответствует количеству его опыта. Нет
level Счёт игрока соответствует его уровню опыта. Нет
air Счёт игрока соответствует количеству его кислорода. Нет
armor Счёт игрока соответствует количеству его очков защиты. Нет

Критерии могут использовать систему статистики в виде составных критериев[1]. В отличие от критериев, приведённых выше, составные критерии разделаются точками («.»). Счёт всех составных критерии может быть изменён командами.


Этот раздел статьи нужно срочно оформить!
Вы можете помочь, отредактировав его.

Список известных составных критериев:

Основа Подкритерии Описание
stat animalsBred Выведено животных
armorCleaned Очищено брони
aviateOneCm Преодолено на элитрах
bannerCleaned Очищено флагов
beaconInteraction Взаимодействий с маяком
boatOneCm Преодолено на лодке
brewingstandInteraction Взаимодействий с зельеваркой
cakeSlicesEaten Съедено кусков торта
cauldronFilled Наполнено котлов
cauldronUsed Взято воды из котла
chestOpened Открыто сундуков
climbOneCm Преодолено взбираясь
craftingTableInteraction Взаимодействий с верстаком
crouchOneCm Преодолено крадучись
damageDealt Нанесено урона
damageTaken Получено урона
deaths Число смертей
dispenserInspected Взаимодействий с раздатчиками
diveOneCm Преодолено под водой
dropperInspected Взаимодействий с выбрасывателем
enderchestOpened Открыто сундуков Края
fallOneCm Преодолено в падении
fishCaught Поймано рыбы
flowerPotted Высажено растений в горшки
flyOneCm Преодолено в полёте
furnaceInteraction Взаимодействий с печью
hopperInspected Взаимодействий с загрузочной воронкой
horseOneCm Преодолено верхом на лошади
itemEnchanted Зачаровано предметов
jump Прыжков
leaveGame Выходов из игры
minecartOneCm Преодолено в вагонетке
mobKills Убито существ
noteblockPlayed Воспроизведено нотных блоков
noteblockTuned Настроено нотных блоков
pigOneCm Преодолено верхом на свинье
playOneMinute Проведено в игре
playerKills Убито игроков
recordPlayed Проиграно пластинок
shulkerBoxOpened Открыто шалкеровых ящиков
sleepInBed Выспался в кровати
sneakTime Крался
sprintOneCm Преодолено бегом
swimOneCm Преодолено вплавь
talkedToVillager Разговоров с крестьянами
timeSinceDeath После последней смерти
tradedWithVillager Сделок с крестьянами
trappedChestTriggered Активировано сундуков-ловушек
walkOneCm Преодолено пешком
breakItem Смотрите ниже.
craftItem
drop
entityKilledBy
killEntity
mineBlock
pickup
useItem
stat.craftItem Числовой/именной ID блока/предмета, который возможно создать/выплавить. Счёт игрока увеличивается с созданием блока/предмета, который достался из печи или слота создания в верстаке/инвентаре.
stat.useItem Числовой/именной ID блока/предмета. Большинство ID доступны, за исключением некоторых. Счёт игрока увеличивается с использованием блока/предмета. «Использованием» является следующее:

В других случаях счёт игрока не увеличивается.

stat.breakItem Числовой/именной ID предмета, имеющего прочность. Счёт игрока увеличивается с поломкой предмета.
stat.mineBlock Числовой/именной ID блока. Большинство ID доступны, за исключением ID нерушимых или технических блоков. Счёт игрока увеличивается с добычей блока. Если игрок в творческом режиме, счёт не увеличивается.
stat.killEntity Моб. Счёт игрока увеличивается с убийством указанного моба.
stat.pickup Числовой/именной ID блока/предмета. Счёт игрока увеличивается с подбиранием выброшенного предмета с указанным ID.
stat.drop Числовой/именной ID блока/предмета. Счёт игрока увеличивается с выбрасыванием предмета с указанным ID.
stat.entityKilledBy Моб. Счёт игрока увеличивается, когда его убивает указанный моб.
teamkill Цвет команды. Счёт игрока увеличивается с убийством игрока из команды с указанным цветом.
killedByTeam Цвет команды. Счёт игрока увеличивается, когда его убивает игрок из команды с указанным цветом.

Слоты отображения[править | править вики-текст]

Различное отображение задач: задача, отслеживающая здоровье, установлена в слоте отображения «list»; задача «Преодолено пешком» — в слоте отображения «sidebar»; задача «Смертей» — в «belowName».

С помощью команды /scoreboard objectives setdisplay, счёт различных сущностей в указанной задаче может быть отображён в определённом слоте отображения. Слоты отображения могут отображать только одну задачу.

Слот Описание
list Отображает счёт игрока в виде жёлтого числа после его имени в списке игроков. Если отображаемая задача с типом «health», тогда она будет отображаться в виде сердечек.
sidebar Отображает счёт сущностей на боковой панели. Заголовок панели — отображаемое имя отображаемой задачи. Максимальное количество записей на панели — 15. Записи с бо́льшим счётом отображаются выше. Записи, начинающиеся на знак решётки («#»), не отображаются на панели.
sidebar.team.цвет Отображает счёт так же, как sidebar, но только игроку, состоящему в команде с указанным цветом (например, «sidebar.team.green» отобразит панель только игрокам зелёной команды).
belowName Отображает счёт игрока под его именем в виде «счёт_игрока отображаемое_имя_задачи». Скрывается, если игрок находится примерно в 10-ти блоках от наблюдателя или крадётся.

Метки[править | править вики-текст]

Метки — список слов, которые хранятся непосредственно в теге данных сущности. Метки чувствительны к регистру.

Чтобы проверить наличие метки у сущности, можно использовать селекторы. Например: /testfor @p[tag=!банан].
Чтобы проверить наличие нескольких меток у сущности, можно использовать тег данных «Tags:[]». Например: /testfor @p {Tags:["банан","яблоко"]}.

Команды[править | править вики-текст]

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

Название используется внутри команд в качестве ссылки. Должно быть одним словом.
Отображаемое название используется при отображении на экране. В отличие от названия, отображаемое название может быть неуникальным и состоять из нескольких слов.
Название и отображаемое название чувствительны к регистру.
Приставка и окончание ставятся до и после записей, состоящих в команде соответственно. Без использования внешних программ приставками могут быть только коды форматирования для цветов команды, а окончанием может быть только §r. Данные параметры добавляются к следующему: к именам игроков в чате и в списке игроков, к именам над сущностями, к записям на боковой панели

Каждая отдельная сущность может находится только в одной команде.

Чтобы проверить состоит ли сущность в команде, можно использовать селекторы. Например: /testfor @e[team=red], /testfor @e[team=!red], /testfor @e[team=!], /testfor @e[team=].

Помощь по командам[править | править вики-текст]

Управление задачами[править | править вики-текст]

Команда Описание Условия выполнения
scoreboard objectives list Показывает список существующих задач вместе с их критериями и отображаемыми именами. Существует как минимум одна задача.
scoreboard objectives add <название> <критерий> [отображаемое имя...] Создаёт новую задачу с указанным названием, критерием и отображаемым именем. Если отображаемое имя не указано, его заменит название. Задача с указанным названием не существует. Название не более 16 символов длиной. Критерий — допустимый тип критерия. Отображаемое имя не более 32 символов длиной.
scoreboard objectives remove <название> Удаляет задачу с указанным названием. Задача с указанным названием существует.
scoreboard objectives setdisplay <слот> [задача] Отображает счёт для задачи в указанном слоте. Если задача не указана, задачи в указанном слоте будут очищены. Указанный тип слота существует. Задача существует.

Управление счётом[править | править вики-текст]

Команда Описание Условия выполнения
scoreboard players list [сущность] Отображает все задачи и их счёт у указанной сущности. Если сущность не указана, отображает всех отслеживаемых системой сущностей. Существует как минимум одна отслеживаемая сущность. Сущность отслеживается системой.
scoreboard players set <сущность> <задача> <значение> [тегДанных] Заменяет значение счёта сущности в задаче указанным значением. Задача существует и может изменяться командами. Значение — целое число от -2 147 483 648 до 2 147 483 647. Если сущность существует и тег данных указан, то тег данных сущности соответствует указанному тегу данных.
scoreboard players add <сущность> <задача> <кол-во> [тегДанных] Увеличивает счёт сущности в задаче на указанное кол-во. Задача существует и может изменятся командами. Кол-во — целое число от 0 до 2 147 483 647. Если сущность существует и тег данных указан, то тег данных сущности соответствует указанному тегу данных.
scoreboard players remove <сущность> <задача> <кол-во> [тегДанных] Уменьшает счёт сущности в задаче на указанное кол-во.
scoreboard players reset <сущность> [задача] Удаляет счёт сущности у всех задач. Если задача указана, то удаляет только у неё. Всегда выполняется.
scoreboard players enable <сущность> <триггер> Включает сущности возможность использовать команду /trigger с указанной задачей-триггером. После использования этой команды такая возможность отключается. Триггер — задача с критерием типа «trigger».
scoreboard players test <сущность> <задача> <мин> [макс] Выполняется, если счёт сущности в задаче находится в указанном диапазоне минмакс. Если на месте мин или макс указан символ звёздочки (*), тогда будет использоваться самое минимальное или максимальное значение соответственно. Задача существует. Счёт сущности в задаче находится в диапазоне минмакс. Мин и макс — целые числа от -2 147 483 648 до 2 147 483 647.
scoreboard players operation <цель> <задача-цель> <операция> <селектор> <задача> Применяет арифметическую операцию, изменяющую счёт цели в задаче-цели, используя счёт селектора в задаче в качестве входа.

Возможные арифметические операции:

  • += Сложение: добавляет счёт селектора к счёту цели
  • -= Вычитание: вычитает счёт селектора из счёта цели
  • *= Умножение: умножает счёт цели на счёт селектора
  • /= Деление: устанавливает счёт цели на неполное частное от деления нацело счёта цели на счёт селектора
  • %= Остаток от деления: устанавливает счёт цели на остаток от деления нацело счёта цели на счёт селектора
  • = Присваивание: устанавливает счёт цели на счёт селектора
  • < Если счёт селектора меньше счёта цели, то устанавливает счёт цели на счёт селектора
  • > Если счёт селектора больше счёта цели, то устанавливает счёт цели на счёт селектора
  • >< Меняет значениями счёт селектора со счётом цели
Задача и задача-цель существуют. Задача-цель может изменяться командами. У цели и селектора определены счёты в указанных для них задач. Символ звёздочки (*) указан только один раз.

Управление метками[править | править вики-текст]

Команда Описание Условия выполнения
scoreboard players tag <сущность> add <метка> [тегДанных] Назначает метку для сущности. Сущность существует. Если тег данных указан, то тег данных сущности соответствует указанному тегу данных.
scoreboard players tag <сущность> remove <метка> [тегДанных] Убирает метку с сущности. Сущность существует. Метка на указанной сущности существует. Если тег данных указан, то тег данных сущности соответствует указанному тегу данных.
scoreboard players tag <сущность> list Показывает список всех меток, которые имеет сущность. Сущность существует.

Управление командами[править | править вики-текст]

Команда Описание Условия выполнения
scoreboard teams list [команда] Показывает список сущностей в указанной команде. Если команда не указана, показывает список существующих команд вместе с их отображаемыми именами и количеством участников. Существует как минимум одна команда. Команда существует.
scoreboard teams add <название> [отображаемое название...] Создаёт команду с заданным названием и отображаемым именем. Если отображаемое название не указано, его заменит название. Команда с указанным названием не существует. Название не более 16 символов длиной. Отображаемое название не более 32 символов длиной.
scoreboard teams remove <название> Удаляет команду с указанным названием. Команда с указанным названием существует.
scoreboard teams empty <команда> Удаляет всех сущностей из указанной команды. Команда существует и имеет как минимум одного участника.
scoreboard teams join <команда> [сущности ...] Добавляет указанные сущности в команду. Если сущности не указаны, добавляет исполнителя команды в указанную команду. Команда существует.
scoreboard teams leave [сущности...][заметка 1] Удаляет указанные сущности из своих команд. Если сущности не указаны, удаляет исполнителя команды из своей команды. Возможно получить и выполнение, и невыполнение.
scoreboard teams option <команда> color <значение> Перекрашивает имена сущностей команды в заданный цвет. Также изменяет цвет подсветки сущности. Команда существует, указано допустимое значение.
scoreboard teams option <команда> friendlyfire <true|false> true — участники указанной команды могут наносить урон друг другу, false — нет. По умолчанию true. Нанесением урона считается: рукопашная атака, выстрел из лука, урон от зелий мгновенного урона. Параметр не влияет на сущностей, которые не являются игроками. Команда существует, указано допустимое значение (true или false).
scoreboard teams option <команда> seeFriendlyInvisibles <true|false> true — игроки указанной команды способны видеть невидимых союзников (и самих себя), false — нет. По умолчанию true. Команда существует, указано допустимое значение (true или false).
scoreboard teams option <команда> nametagVisibility <never|hideForOtherTeams|hideForOwnTeam|always> Управляет видимостью имени над головой участника команды. never — никто не видит имя, hideForOtherTeams — видят только союзники, hideForOwnTeam — видят все, кроме союзников, always — видят все. По умолчанию always. команда существует, указано допустимое значение (never, hideForOtherTeams, hideForOwnTeam или always).
scoreboard teams option <команда> deathMessageVisibility <never|hideForOtherTeams|hideForOwnTeam|always> Управляет видимостью сообщений о смерти игроков команды. never — никто не видит сообщение, hideForOtherTeams — видят только союзники, hideForOwnTeam — видят все, кроме союзников, always — видят все. По умолчанию always. Команда существует, указано допустимое значение (never, hideForOtherTeams, hideForOwnTeam или always).
scoreboard teams option <команда> collisionRule <never|pushOwnTeam|pushOtherTeams|always> Управляет столкновением участника команды. never — никто не может толкать. pushOwnTeam — могут толкать только союзники. pushOtherTeams — могут толкать все, кроме союзников, always — могут толкать все. По умолчанию always. Команда существует, указано допустимое значение (never, pushOwnTeam, pushOtherTeams или always).
  1. Если вы указываете несколько целей, то первая цель должна быть доступна (т.е. не должна быть селектором, который ничего не найдёт), иначе следующие цели не покинут свои команды. См. MC-106681

Формат NBT[править | править вики-текст]

Файл scoreboard.dat, находящийся в папка_мира\data, хранит данные о ССИС данного мира. Является сжатым GZip файлом.


  • Корневой тег.

    •  data: Данные ССИС.

      •  Objectives: Список составных тегов, хранящих данные о задачах.


          •  CriteriaName: Критерий задачи.

          •  DisplayName: Отображаемое имя задачи.

          •  Name: Название задачи.

          •  RenderType: Тип хранящихся данных. По умолчанию «integer».

      •  PlayerScores: Список составных тегов, хранящих данные о счётах сущностей.


          •  Score: Счёт.

          •  Name: UUID сущности или имя игрока.

          •  Objective: Задача, в которой всё это хранится.

          •  Locked: 1 — задача выключена, 0 — включена (только для задач-триггеров).

      •  Teams: Список составных тегов, хранящих данные о командах.


          •  AllowFriendlyFire: 1 — участники команды могут наносить урон друг другу, 0 — нет.

          •  SeeFriendlyInvisibles: 1 — участник команды способен видеть невидимых союзников. 0 — нет.

          •  NameTagVisibility: Значение параметра «nametagVisibility»: never, hideForOtherTeams, hideForOwnTeam или always.

          •  DeathMessageVisibility: Значение параметра «deathMessageVisibility»: never, hideForOtherTeams, hideForOwnTeam или always.

          •  CollisionRule: Значение параметра «collisionrule»: always, pushOwnTeam, never или pushOtherTeams.

          •  DisplayName: Отображаемое название команды.

          •  Name: Название команды.

          •  Prefix: Приставка перед именами участников команды. Обычно это код форматирования.

          •  Suffix: Окончание после имён участников команды. Обычно это «§r».

          •  TeamColor: Цвет, использующийся для слотов отображения «sidebar.team.цвет», задач с критерием «killedByTeam.цвет» и «teamkill.цвет», цвета подсветки участника и для прочего.

          •  Players: Список участников команды.

            • Участник команды.

      •  DisplaySlots: Слоты, отображающие определённые задачи.

        •  slot_0: Название задачи, отображаемой в слоте «list».

        •  slot_1: Название задачи, отображаемой в слоте «sidebar».

        •  slot_2: Название задачи, отображаемой в слоте «belowName».

        •  slot_3: Название задачи, отображаемой в слоте «sidebar.team.black».

        •  slot_4: Название задачи, отображаемой в слоте «sidebar.team.dark_blue».

        •  slot_5: Название задачи, отображаемой в слоте «sidebar.team.dark_green».

        •  slot_6: Название задачи, отображаемой в слоте «sidebar.team.dark_aqua».

        •  slot_7: Название задачи, отображаемой в слоте «sidebar.team.dark_red».

        •  slot_8: Название задачи, отображаемой в слоте «sidebar.team.dark_purple».

        •  slot_9: Название задачи, отображаемой в слоте «sidebar.team.gold».

        •  slot_10: Название задачи, отображаемой в слоте «sidebar.team.gray».

        •  slot_11: Название задачи, отображаемой в слоте «sidebar.team.dark_gray».

        •  slot_12: Название задачи, отображаемой в слоте «sidebar.team.blue».

        •  slot_13: Название задачи, отображаемой в слоте «sidebar.team.green».

        •  slot_14: Название задачи, отображаемой в слоте «sidebar.team.aqua».

        •  slot_15: Название задачи, отображаемой в слоте «sidebar.team.red».

        •  slot_16: Название задачи, отображаемой в слоте «sidebar.team.light_purple».

        •  slot_17: Название задачи, отображаемой в слоте «sidebar.team.yellow».

        •  slot_18: Название задачи, отображаемой в слоте «sidebar.team.white».

История[править | править вики-текст]

Релиз
1.513w04aДобавлена команда /scoreboard.
13w05aДобавлено управление командами.
1.7.213w36aДобавлены критерии, основанные на статистике.
1.814w02aПомимо игроков в ССИС становится возможным включать сущности.
14w06aНовые критерии: trigger, killedByTeam.цвет и teamkill.цвет.
Добавлена команда /scoreboard players enable.
Становится возможным использование * в качестве имени игрока, чтобы указать всех отслеживаемых сущностей.
Новый аргумент [задача] у команды /scoreboard players reset.
Критерии, основанные на статистике, используют именные ID вместо числовых.
Добавлен критерий achievement.overpowered.
14w07aДобавлены: /scoreboard players operation и /scoreboard players test.
Счёт игроков, имена которых начинаются на # не отображаются на боковой панели.
Добавлены слоты отображения: sidebar.team.цвет.
Добавлен параметр команд nametagVisibility.
14w10aДобавлен параметр команд deathMessageVisibility.
Новый аргумент [тегДанных] у команд /scoreboard players set, /scoreboard players add и /scoreboard players remove.
Добавлены критерии: stat.crouchOneCm, stat.sprintOneCm и stat.timeSinceDeath
14w25aДобавлены арифметические операции: =, < и >.
14w29aЗаписи на боковой панели вторично сортируются по алфавиту.
14w30aДобавлены критерии: stat.talkedToVillager и stat.tradedWithVillager
Добавлена арифметическая операция ><.
1.8.2Добавлены критерии: cauldronFilled, stat.cauldronUsed, stat.armorCleaned, stat.bannerCleaned, stat.brewingstandInteraction, stat.beaconInteraction, stat.dropperInspected, stat.hopperInspected, stat.dispenserInspected, stat.noteblockPlayed, stat.noteblockTuned, stat.flowerPotted, stat.trappedChestTriggered, stat.enderchestOpened, stat.itemEnchanted, stat.recordPlayed, stat.furnaceInteraction, stat.craftingTableInteraction и stat.chestOpened.
1.915w32aДобавлен критерий stat.sneakTime.
15w32bДобавлена команда /scoreboard players tag.
Добавлены критерии: xp, food и air.
15w33aДобавлены критерии: stat.pickup, stat.drop, armor и level.
Добавлены критерии: armor и level.
15w36aДобавлен параметр команд collisionRule.
15w49aДобавлен критерий stat.aviateOneCm.

Проблемы с объектом[править | править вики-текст]

Вопросы, касающиеся «Система счёта игровых событий», ведутся в хранилище отчётов об ошибках. Отчёты о проблемах следует оставлять там.

См. также[править | править вики-текст]

Примечания[править | править вики-текст]