Search the Community
Showing results for tags 'основы моддинга'.
-
Мы создадим простой мод, который будет выводить сообщение в журнал скрипта всякий раз, когда игрок совершает прыжок. Для этого нам нужно создать структуру папок мода, а затем упаковать ее в pbo-файл. Мод может содержать несколько pbo-файлов, но большинству небольших модов понадобится только один. Требования Steam-версия DayZ SA Инструменты DayZ (доступны через steam) Понимание базового синтаксиса скрипта Enforce Понимание структуры PBO Настройка диска проекта Создайте Project Drive для хранения представления файловой системы DayZ и всех ее файлов. Запустите DayZ Tools в Steam, выбрав "Play DayZ Tools" В строке меню нажмите "Settings". Измените путь к диску Project, сняв флажок Default, а затем выбрав путь, на котором на диске должно быть не менее 20 Гб свободного места. В раскрывающемся списке, указывающем букву диска, выберите ее. Обязательно укажите, какую букву вы выбрали. Рекомендуется использовать "P:\". Нажмите "Применить" В строке меню перейдите в "Tools" и выберите "Extract Game Data". Дождитесь завершения процесса. Структура папок и config.cpp Начните с создания папки, в которой будет находиться одноименный мод. Иначе это называется корневым префиксом мода. В этом примере мы создадим папку на нашем диске 'P:\' под названием First Mod. В этой папке давайте создадим еще одну папку с именем Scripts, а затем в этой папке создадим еще одну папку с именем 4_World. Давайте сначала создадим конфигурацию мода. В папке Scripts создадим новый файл с именем config.cpp а затем скопируем следующий образец: class CfgPatches { class FirstMod { requiredAddons[] = { // "" }; }; }; class CfgMods { class FirstMod { type = "mod"; class defs { class worldScriptModule { value = ""; files[] = { "FirstMod/Scripts/4_World" }; }; }; }; Ознакомьтесь со структурой config.cpp CfgMods В DayZ standalone есть 5 скриптовых модулей, которые можно модифицировать. Для того, чтобы они загружались, это "engineScriptModule", "gamelibScriptModule", "gameScriptModule", "worldScriptModule" и "missionScriptModule". Использование правильного скриптового модуля очень важно! Упаковка мода Хотя мы еще не готовы к тестированию, давайте запакуем мод. Это необходимо для того, чтобы мы могли создавать и редактировать скрипты с помощью исправления файлов. При упаковке мода убедитесь, что в папке "Дополнения" (и "ключи") указаны строчные буквы и что файлы в "дополнениях" также написаны строчными буквами. Это необходимо для того, чтобы ваш мод работал с двоичными файлами сервера DayZ Linux. Для начала давайте создадим папку, в которую мы поместим все наши упакованные моды. На вашем рабочем диске создайте новую папку под названием Mods. В этой папке давайте создадим папку, в которой будет наш первый мод. Назовем ее @FirstMod. Для всех модов требуется папка с дополнениями, поэтому давайте также создадим ее в папке с модами. Запустите DayZ Tools в Steam, выбрав "Play DayZ Tools". Нажмите "Addon Builder" Укажите каталог исходного кода дополнения, в нашем случае это будет P:\FirstMod\Scripts' Укажите имя конечного файла, в нашем случае это будет P:\Mods\@FirstMod\addons\ В левой нижней части окна выберите "Параметры" и укажите путь к папке проекта на вашем рабочем диске. Нажмите "Упаковать" и подождите (если этот процесс завершится неудачей, установите флажок "Включить расширенное ведение журнала", чтобы узнать причину, или снимите флажок "Бинаризировать"). Подготовка к внесению исправлений в файлы Перейдите в свою установочную папку DayZ. Она будет находиться в папке steamapps по адресу "steamapps/common/DayZ". Скопируйте полный путь. Откройте окно командной строки и выполните следующую команду, заменив "DayZInstallationFolder" на путь, который вы скопировали ранее. mklink /J "DayZInstallationFolder\FirstMod" "P:\FirstMod" Вернитесь к папке установки DayZ, теперь вы должны увидеть там "FirstMod". Введите папку, и вы увидите "Scripts" и файлы внутри нее, как на рабочем диске. Создаем наш первый скрипт Давайте создадим скрипт внутри модуля world script, который будет выводить данные в журнал скриптов при каждом переходе. Для начала перейдите в созданную ранее папку "4_World". Если вы работаете или когда-либо хотели бы работать с workbench, выполните следующие действия. Создайте новую папку под названием "Первый мод". Это связано с тем, что "Workbench" не различает файлы и папки, из какого мода они взяты, и был ли это вообще мод. Давайте создадим скрипт, который будет "модифицировать" существующий класс. Давайте сначала создадим файл "Player Base.c" в текущей папке. Для этого мы добавим ключевое слово "modded" в объявление класса. В рамках этого нового класса давайте переопределим метод, чтобы добавить наше собственное поведение, в данном случае это будет печать в журнал скрипта. modded class PlayerBase // modded keyword for modding an existing class { override void OnJumpStart() // overriding an existing method { super.OnJumpStart(); // call the original jump callback method so we don't break stuff Print("My first mod, yay!"); // our modded print } } Тестирование мода Одиночная игра Давайте сначала создадим простую одиночную миссию, в которой при загрузке игры в chernarus появится игровой персонаж. Если в вашей установочной папке DayZ ее нет, создайте новую папку с именем "миссии". Укажите ее. Создайте новую папку с именем "firstMission".ChernarusPlus. Обратите внимание, что "firstMission" - это название миссии, а "ChernarusPlus" - название мира, как указано в "CfgWorlds". В рамках только что созданной миссии создайте скрипт точки входа "init.c" и вставьте следующий скрипт появления игрока Mission CreateCustomMission(string path) { return new MissionGameplay(); } void main() { PlayerBase player; ItemBase item; // Create player player = PlayerBase.Cast( GetGame().CreatePlayer(NULL, "SurvivorF_Linda", "2200 10 2200", 0, "NONE") ); // Spawn a black t-shirt item = player.GetInventory().CreateInInventory("TShirt_Black"); // Spawn a green short jeans item = player.GetInventory().CreateInInventory("ShortJeans_Green"); // Spawn a brown working boots item = player.GetInventory().CreateInInventory("WorkingBoots_Brown"); // Spawn an apple in the t-shirt, don't redefine 'item' so we can still spawn other items in the t-shirt item.GetInventory().CreateInInventory("Apple"); // Select player the client will be controlling GetGame().SelectPlayer(NULL, player); } Откройте окно командной строки и выполните следующую команду, заменив "DayZInstallationFolder" на патч, в котором установлен dayz. start /D "DayZInstallationFolder" DayZDiag_x64.exe "-mod=P:\Mods\@FirstMod" "-mission=./missions/firstMission.ChernarusPlus" -filePatching Дополнительные моды можно добавлять, разделяя их точкой с запятой. Например: -mod=P:\Mods\@FirstMod;P:\Mods\@SecondMod. Мы используем одиночную миссию, созданную ранее. Если вы используете редактор сценариев в Workbench, теперь вы будете видеть пользовательское сообщение в разделе вывода при каждом переходе. Если это не так, перейдите в папку "Ваши профили" (по умолчанию: "%localappdata%/DayZ" ) и откройте самый последний файл, начинающийся с script. В нем будет содержаться сообщение. Мультиплеер Откройте окно командной строки и выполните следующую команду, заменив "DayZInstallationFolder" на патч, в котором установлен dayz. start /D "DayZInstallationFolder" DayZDiag_x64.exe "-mod=P:\Mods\@FirstMod" -filePatching -server -config=serverDZ.cfg где файл servers.cfg можно скопировать из серверного дистрибутива DayZ в Steam. По умолчанию загружается миссия "dayzOffline.Чернорусплюс". В конфигурации сервера вам потребуется изменить следующие параметры BattlEye = 0; // turn off BE since diag exe does not run with it verifySignatures = 0; // if testing mods which aren't properly signed yet allowFilePatching = 1; // allow clients with unpacked data to join Затем вы можете подключиться к серверу, используя следующую команду: start /D "DayZInstallationFolder" DayZDiag_x64.exe "-mod=P:\Mods\@FirstMod" -filePatching -connect=127.0.0.1 -port=2302 Издание Перед публикацией отключите исправление файлов, удалив параметр запуска, и снова упакуйте все файлы .pbo. Убедитесь, что все работает без включенного исправления файлов. Дополнительные шаги, которые вам необходимо выполнить, если вы хотите поделиться модом со всем миром через steam workshop: Используйте утилиты DS (DayZ Tools), чтобы создать приватный и общедоступный байк и использовать его для подписи вашего pbo, а также включить общедоступный байк в свой мод Используйте Publisher (DayZ Tools) для загрузки в Steam Workshop