Christmas Patriarch

Шаблон мутатора

Рассмотрим минимальный шаблон любого мутатора:

class TestMut extends Mutator;

defaultproperties
{
    GroupName="KF-TestMut"
    FriendlyName="TestMut"
    Description="Тестовый мутатор. Базовый шаблон"
}

Параметр GroupName

Итак,
В общем то уже из комментария к описанию переменной в классе Engine.Mutator

var() cache string   GroupName; // Will only allow one mutator with this tag to be selected.

становится ясно, что данная переменная используется, чтобы дать возможность заблокировать добавление мутаторов одной и той же группы.
При желании можно посмотреть и реализацию этого механизма в Engine.GameInfo.AddMutator - не буду копировать сюда код, любознательные сами глянут, остальным это и не надо)

Использование:
1. Страховка от добавления мутаторов реализующих одно и то же (или идейно близкие вещи)
2. Страховка от добавления конфликтующих мутаторов
3. Я особо этим никогда не пользовался - жду от вас идеи, как это можно использовать

Важное замечание:
В KF есть страничка добавления мутаторов в игру - KFGui.KFMutatorPage
И если мы внимательно поглядим на функцию SetCurrentGame, то мы увидим такой вот код:

// ...
for (i = 0; i < MutatorList.Length; i++)
{
    if (Left(MutatorList[i].GroupName, 2) == "KF")
        lb_Avail.List.Add(MutatorList[i].FriendlyName,, MutatorList[i].Description);
}

Который означает, что в списке доступных мутаторов будут отображаться только мутаторы GroupName которых начинается на “KF”
Поэтому не забывайте писать GroupName=“KFчтототам”, если хотите, чтобы ваш мутатор был доступен в этой менюшке
Общепринятый подход: GroupName = “KF-НазваниеМутатора”

Параметр FriendlyName

Ну тут вроде всё просто - это название мутатора, которое отображается в окошке выбора мутаторов.
Название переменной намекает нам на дружелюбие. Вот есть понятие дружелюбного пользовательского интерфейса.
Так и тут - сам класс мутатора может называться как угодно неудобоваримо, а в этой переменной стоит написать лаконичное и понятное название, в идеале, чтобы даже описание Description не понадобилось для среднестатистического игрока.

Вы можете писать название мутатора и кириллицей (только не забывайте переключиться в кодировку Little Endian), например

FriendlyName="Тестовый мутатор"

Более того, вы можете раскрасить название мутатора, если вам уж совсем нехрен делать)
Общепринятый для анриала способ “окраски” описан тут, например.
Сделаем слово “Тестовый” красного цвета, а “мутатор” зелёного.

Вы можете воспользоваться программкой ServerColor, я же воспользуюсь HEX редактором (я люблю редактор Hex Editor Neo).
Итак, я возьму не чистые цвета, а просто те, что мне приглянулись.

Префикс для красного цвета получится 1B D1 60 60
Префикс для зелёного цвета получится 1B 3D B7 74
Загоним эти значения в HEX редактор и получим С“ для красного цвета и =·t для зелёного.

FriendlyName="С``Тестовый =·tмутатор"

Параметр Description

Это описание мутатора. Опять же можно сделать на русском и цветным.
Сделаем его синим
Префикс: X“П

Description="X“ПТестовый мутатор. Базовый шаблон"

Результат

В итоге получили такой вот мутатор:

class TestMut extends Mutator;

defaultproperties
{
    GroupName="KF-TestMut"
    FriendlyName="С``Тестовый =·tмутатор"
    Description="X“ПТестовый мутатор. Базовый шаблон"
}

[Изображение: Bs4cx3u.png]

Автор статьи: Команда 2/5