Мутаторы и UnrealScript

Создание первого мутатора

Несложная пошаговая инструкция по созданию самого простого мутатора.

Браузер Actor Classes в KF Editor Браузер Actor Classes в KF Editor показывает UnrealScript-классы из загруженных пакетов.

1. Прежде всего создайте в папке игры подпапку с именем будущего мутатора, а в ней папку Classes. Например, может получиться такая структура:

C:\Games\KF\NewMut\Classes

2. Далее в папке Classes создайте файл с расширением .uc, например Mut1.uc

3. Откройте в блокноте файл killingfloor.ini в подпапке System папки игры. Найдите строчку [Editor.EditorEngine] и добавьте после нее строку

EditPackages=ИмяПапкиСВашимМутатором

то есть в нашем случае

EditPackages=NewMut

4. Откройте в блокноте файл, созданный на шаге 2, и вставьте туда фрагмент кода

class Mut1 extends Mutator;
defaultproperties
{
GroupName="KFNewMut"
FriendlyName="Новый мутатор"
Description="Простой мутатор"
}

Обратите внимание на то, что после слова class должно стоять тоже имя, что и у файла, созданного на шаге 2. Так же имя, присваиваемое свойству GroupName всегда должно начинаться с букв KF. Сохраните файл.

5. Скомпилируйте мутатор. Для этого в подпапке System папки игры создайте файл с расширением .bat, например make.bat, и вставьте в него с помощью блокнота текст:

del NewMut.u
ucc make
del steam_appid.txt

Пояснения по коду. Первой строчкой мы удаляем наш скомпилированный мутатор, если он уже есть, так как если этого не сделать, то при внесении изменений в код мутатора после первой компиляции, они не вступят в силу. Второй строчкой мы заставляем утилиту ucc (файл ucc.exe должен быть в подпапке System установленной игры) скомпилировать все мутаторы killing floor, в том числе и наш. Третьей строкой мы удаляем файл, созданный ucc после компиляции, который мешает запуску игры.

6. Сохраните и запустите файл, созданный на шаге 5. Теперь в подпапке System папки игры у вас должно появиться два файла:

NewMut.u
NewMut.ucl

это сам мутатор и файл его описания.

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

Изучив unreal script, вы сможете написать уже функциональный мутатор. Начать изучение можно отсюда

Ошибка «Redefinition of function ... differs from original»

В обсуждении темы «Как создать мутатор для Killing Floor» на форуме killingfloor.ru при пересборке ServerPerks встречалась ошибка:

Error, Redefinition of 'function AddKill' differs from original in KFSteamStatsAndAchievements

Freddy объяснял её так: функция AddKill переопределена неправильно. При переопределении функции её интерфейс должен совпадать с оригиналом: тип и число параметров и тип возвращаемого значения. Найдите функцию AddKill в классе KFSteamStatsAndAchievements и сверьте с ней своё объявление.

Подробнее о сборке через ucc make: Компиляция пакетов через ucc make.