Jump to content
DAYZ-CODE.RU - Создай свой игровой сервер
Уважаемый пользователь сайта DAYZ-CODE.RU Уделите одну минуту перед любой приватной сделкой! ОБЯЗАТЕЛЬНО! Перед сделкой сверьте контакты пользователя, скопируйте логин из мессенджера и сверьте с тем, что указан в профиле. Не лишним будет проверить пользователя через личные сообщения на форуме, написав: "Привет, это ты мне пишешь в Telegram или Discord? Или иной месседжер!".

Vostok

Members
  • Posts

    40
  • Joined

  • Last visited

  • Days Won

    1
  • Отзыв

    0%

Vostok last won the day on November 4 2025

Vostok had the most liked content!

1 Follower

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Vostok's Achievements

  1. @ZEFIR001 Пусть человек попробует) бессмысленно отговаривать и пытаться понять логику в этом. Каждый учится на своих ошибках.
  2. @_winter_cat_ В настройки зайди там все клавиши прописаны управления техникой. Обычно выстрел это "пробел" поворот башен 1-3
  3. @Kappa Что игра что сериал топ. Хотя кому то и не зашел сам сериал но мне прям норм. Еще ща доги выкатят вторую чать игры на пк и можно в стратосферу лететь.
  4. @Fred Не удается загрузить входные данные (inputs) из указанного файла: Ошибка Cannot load inputs default "" и Failed to load MODDED inputs - file name/ path invalid? указывают на то, что игра не может найти или загрузить файл ввода (inputs) по указанному пути. Это может быть вызвано отсутствием файла, ошибкой в пути, либо повреждением файла. Ошибка парсера при чтении конфигурационного файла: Сообщение Cannot read inputs cfg "profiles\Users\Survivor\Server.core.xml", parser error говорит о том, что конфигурационный файл Server.core.xml содержит ошибку синтаксиса или поврежден, что мешает его загрузке. Не удается загрузить пресет ввода: Ошибка Cannot load input preset "#STR_USER", file does not exist указывает на то, что игра не может найти указанный пресет ввода. Возможно, этот пресет не существует, либо путь к нему неверен. Возможные решения: Проверка наличия и целостности файлов: Убедитесь, что все упомянутые файлы существуют по указанным путям и не повреждены. Если файлы отсутствуют, попробуйте их восстановить из резервной копии или переустановить соответствующие моды. Проверка модов: Некоторые из этих ошибок могут быть вызваны конфликтами модов, например, BBP_keybind и VPPAdminTools. Попробуйте отключить моды по одному, чтобы выяснить, какой из них вызывает проблему. Пересоздание файла конфигурации: Если файл Server.core.xml поврежден, вы можете попробовать удалить его, чтобы игра создала новый файл с дефолтными настройками. Но перед удалением убедитесь, что у вас есть резервная копия на случай, если возникнут другие проблемы. Переустановка игры или модов: В крайнем случае, если вышеуказанные шаги не помогли, попробуйте переустановить игру или конкретные моды, которые могут вызывать проблему. Проблемы с загрузкой файлов ввода могут повлиять на функциональность игры, поэтому важно устранить их как можно скорее.
  5. @MrDok Тут покопайся C:\DayZServer\dta\scripts\4_World\Classes\TransmissionAgents\Agents C:\DayZServer\dta\scripts\4_World\Classes\PlayerModifiers\Modifiers\diseases C:\DayZServer\dta\scripts\4_World\Classes\UserActionsComponent\Actions\Continuous\Medical
  6. @Esgerson Это выделенный сервер на ксюхе у тебя или вдска?
  7. @SantaHlamus хм а такой вообще есть оО
  8. Основы Блоки кода Блок кода заключен в фигурные скобки и определяет область действия. Переменные, определенные внутри области действия, доступны только изнутри нее. Пример области действия Вложенная область видимости Заявления о сфере применения Структура программы Принудительный скрипт состоит из классов и функций. Весь код должен быть объявлен внутри функции. Переменные Переменные определяются по типу и имени. Функции Функции являются основной функцией скрипта Enforce. Объявление функции состоит из типа возвращаемого значения, имени функции и списка параметров. Функции могут быть объявлены в глобальной области видимости или внутри объявления класса Параметры функции фиксированы и типизированы (не могут быть изменены во время выполнения, без переменных параметров). Функции могут быть перегружены Ключевое слово "out" перед объявлением параметра гарантирует, что параметр передается по ссылке (таким образом, вы можете передавать более одного значения из функции, его можно использовать только в собственных функциях) Скрипт Enforce поддерживает параметр по умолчанию Комментарии Константы Константы похожи на переменные, но доступны только для чтения. Они объявляются с помощью ключевого слова const. Операторы Приоритет оператора: Приоритет операторов аналогичен языку C, подробнее. Символ операции Добавить / Add + Вычитать / Subtract - Умножать / Multiply * Делить / Divide / По модулю / Modulo % Assignments Символ операции Присвоить значение переменной / Assign value to variable = Увеличить переменную на значение / Increment variable by value += Уменьшить переменную на значение / Decrement variable by value -= Умножить переменную на значение / Multiply variable by value *= Разделить переменную на значение / Divide variable by value /= Побитово-ИЛИ на значение / Bitwise-OR by value |= Побитово- И на значение & / Bitwise-AND by value &= Сдвигаем переменную влево по значению / Left-shift variable by value <<= Сдвигаем переменную вправо по значению / Right-shift variable by value >>= Увеличиваем переменную на 1 / Increment variable by 1 ++ Уменьшаем переменную на 1 / Decrement variable by 1 -- Относительный (условный) Символ операции Больше значения / More than value > Меньше значения / Less than value < Больше или равно значению / More or equal to the value >= Меньше или равно значению / Less or equal to the value <= Равно / Equal == Не равно / Not equal != Другие Операторы категорий Логические / Logical &&, || Побитовые / Bitwise &, |, ~, ^ Строка / String + Сдвиг / Shift <<, >> Присваивание / Assignment = Индексация / Indexing [ ] Отрицание / Negation ! Переопределение скрипта Оператор Index Переопределение оператора index может быть достигнуто с помощью методов Set и Get. Вы можете использовать любое количество перегрузок, при условии, что в типах нет неоднозначности. Примечание: Если вы хотите присвоить предварительно обработанному вектору значение instance[index] = "1 1 1", то установщик должен принять строку в качестве параметра _value и преобразовать ее явно с помощью _value.ToVector() перед присваиванием. Ключевые слова Модификаторы функций/методов Описание ключевого private - Метод может быть вызван только изнутри метода того же класса protected - Метод может быть вызван только изнутри класса method или методов его расширенных классов static - Метод может быть вызван без указателя на объект, только с помощью className.methodName() , доступ изнутри статического метода возможен только к статическим членам того же класса override - Компилятор проверяет, присутствует ли метод в базовом классе и совпадает ли сигнатура метода proto - Создание прототипа внутренней функции (на стороне C++) native - Собственное соглашение о вызове внутренней функции (на стороне C++) Модификаторы переменных private - Доступ к переменной возможен только изнутри методов класса. Взаимоисключающие значения с "защищенным" protected - Доступ к переменной возможен только изнутри методов класса или методов его расширенных классов. Взаимоисключающие функции с "private" static - К переменной можно получить доступ без указателя на объект, используя className.variable autoptr - Модификатор для переменных типа указатель класса. Целевой указатель будет автоматически уничтожен по истечении срока действия переменной (конец области видимости или удаление класса, который его содержит). proto - Создание прототипа внутренней функции (на стороне C++) ref - Переменная - это строгая ссылка const - Постоянный, не может быть изменен out - Модификатор для параметров функции, переменная будет изменена при вызове функции inout - Модификатор для параметров функции, переменная будет использоваться, а затем изменяться вызовом функции Модификаторы классов modded - Поведение, подобное наследованию, для моддинга Другие ключевые слова new - Создайте новый экземпляр объекта delete - Уничтожить экземпляр объекта class - Объявление класса extends - Наследование классов typedef - Определение типа return - Завершает функцию и возвращает значение (если указано) null - нулевое значение this - Адрес объекта, для которого вызывается функция-член super - Ссылается на базовый класс для запрашиваемой переменной/функции thread - Объявленный перед вызовом функции, запускает функцию в новом потоке Типы Примитивные типы int from −2,147,483,648 to +2,147,483,647 0 float from ±1.401298E−45 to ±3.402823E+38 0.0 bool true or false false string - "" (empty string) vector see float (0.0,0.0,0.0) void - - Class - null typename - null Струнные Строки передаются по значению, как и примитивные типы Их можно объединить с помощью оператора + Строки инициализируются и уничтожаются автоматически Строки могут содержать стандартные escape-последовательности. Поддерживаются следующие варианты: \n \r \t \\" Векторы Векторы передаются по значению, как примитивные типы Значения векторов доступны с помощью оператора [, ], как статические массивы Векторы инициализируются и уничтожаются автоматически Вектор может быть инициализирован тремя числовыми значениями в двойных кавычках, например "10 22 13". Объекты Объекты в enforce script являются ссылками и передаются по ссылке Все функции-члены и переменные по умолчанию являются общедоступными. Используйте ключевое слово 'private', чтобы сделать их закрытыми, ключевое слово 'autoptr' перед объявлением объектной переменной гарантирует, что компилятор автоматически уничтожит объект при завершении области видимости (например, при завершении вызова функции). Пример this & super: Перечисления Перечислители - это набор именованных константных идентификаторов. перечисления имеют тип int, значение enumitem может быть присвоено в определении, в противном случае оно вычисляется автоматически (предыдущее значение элемента плюс единица) , перечисление может наследоваться от другого перечисления (значение элемента продолжается от последнего значения родительского элемента). имя перечисления, используемое в качестве типа, ведет себя как обычный int (при назначении не проверяется значение перечисления) Шаблоны Скрипт Enforce Script имеет функцию шаблонирования, аналогичную шаблонам C++, которая позволяет классам работать с универсальными типами. Объявление универсального типа помещается внутри операторов <, > (например, "class Template Class<class GenericType>" ) после идентификатора имени шаблонного класса. Enforce Script поддерживает любое количество универсальных типов для каждого шаблонного класса Массивы Статические массивы Массивы индексируются с 0 Массивы передаются по ссылке, как объекты Статические массивы инициализируются и уничтожаются автоматически Размер статических массивов можно задать только во время компиляции Элементы доступны с помощью оператора доступа к массиву [ ] Динамические массивы Динамические массивы поддерживают изменение размера во время выполнения путем вставки/удаления элементов массива Динамические массивы предоставляются через шаблонный класс 'array' Динамические массивы передаются по ссылке Динамические массивы являются объектами, и поэтому их необходимо создавать и уничтожать как объекты, поэтому не забудьте использовать "autoptr" или оператор удаления! Элементы доступны с помощью функции "Get" или оператора доступа к массиву [ ] Для массивов примитивных типов уже определены определения типов: array<string> = Stringarray array<float> = TFloatArray array<int> = TIntArray array<class> = TClassArray array<vector> = TVectorArray Автоматическое определение типа Тип переменной будет определен автоматически во время компиляции, если в качестве заполнителя используется ключевое слово auto. Управляющие структуры Управляющие структуры работают очень похоже на языки C# или C/C++. Условные структуры Оператор If Оператор Switch Оператор Switch поддерживает переключение с помощью чисел, констант и строк. Итерационные структуры Для Цикл for состоит из трех частей: объявления, условия и приращения. Инструкция foreach Более простая и удобная версия for loop. Пока Особенности объектно-ориентированного программирования По умолчанию все функции-члены и переменные являются общедоступными. Для управления доступом можно использовать ключевое слово "private" или "protected" Функции-члены класса являются виртуальными и могут быть переопределены дочерним классом Используйте ключевое слово override для переопределения методов базового класса (чтобы избежать случайного переопределения) Класс может наследоваться от одного родительского класса, используя ключевое слово "extends" Объекты не инициализируются и не уничтожаются автоматически, используйте "new" и "delete" (или функцию "autoptr"). При создании переменные класса сбрасываются до значений по умолчанию Наследование Конструктор и деструктор Конструктор и деструктор - это специальные функции-члены У каждого класса может быть один конструктор и один деструктор Конструктор - это функция, вызываемая при создании объекта (с помощью 'new') и имеющая то же имя, что и класс (например, 'void className()'). Деструктор вызывается, когда объект должен быть уничтожен (с помощью 'delete'/'autoptr'), и имеет то же имя, что и класс, с символом тильды в начале (например, 'void ~className()') Конструктор может иметь параметры инициализации, деструктор не может иметь никаких параметров Как конструктор, так и деструктор не возвращают никакого значения (возвращает void) Конструктор и деструктор вызываются даже при создании или уничтожении объекта из C++ Если конструктор не имеет никаких параметров, при использовании оператора 'new' скобки опускаются Безопасность управляемых классов и указателей Поскольку скрипт не выполняет автоматическую сборку мусора, все простые указатели считаются небезопасными Все классы, унаследованные от управляемого класса, используют программные ссылки вместо простых указателей. Программная ссылка - это слабая ссылка, которая не поддерживает объект в рабочем состоянии и обнуляется при уничтожении, поэтому они никогда не становятся недействительными Все объекты, доступные в игровом модуле, должны быть управляемыми, поэтому по умолчанию для них должны использоваться программные ссылки (все они наследуются от управляемого класса). Автоматический подсчет ссылок Enforce Script поддерживает автоматический подсчет ссылок. В целях обеспечения гибкости вы можете выбрать, следует или не следует управлять вашим классом, выбрав наследование от управляемого класса. Простые классы, подобные C++, по-прежнему подходят для высокопроизводительных, но менее безопасных сценариев объекты, на которые ссылаются простые указатели C , не имеют автоматического управления памятью, владелец должен удалить их Для обычных игровых скриптов/модов и т.д. существуют управляемые объекты, которые являются немного медленнее (из-за косвенного доступа к объекту со слабым указателем) внутренне пересчитываемые и автоматически удаляемые, когда ненужные объекты, на которые ссылаются слабые указатели (указатель всегда действителен или равен нулю, никогда не указывает на удаленную память и т.д.) Сильные и слабые ссылки сильная ссылка увеличивает количество ссылок - сохраняет объект живым , слабая ссылка просто указывает на объект, но не увеличивает количество ссылок В приведенном выше коде в конце функции main объект "a" имеет нулевые строгие ссылки, поэтому удаляется, деструктор освобождает m_child, и поэтому объект "b" также имеет нулевые строгие ссылки и удаляется. Использование ключевого слова ref В скрипте Enforce по умолчанию все переменные являются слабыми ссылками, ключевое слово ref указывает, что переменная является сильной ссылкой. В некоторых особых случаях переменные по умолчанию являются сильными ссылками локальные переменные внутри функций возвращают значение и освобождаются после завершения их области видимости. Пока объект хранится по крайней мере в одной строгой ссылке, он остается активным. Когда последняя строгая ссылка уничтожается или перезаписывается, объект уничтожается, а все остальные ссылки (остаются только слабые ссылки) обнуляются. Когда объект удаляется вручную с помощью команды delete (например, 'delete a;'), он удаляется немедленно, игнорируя количество ссылок, и все ссылки (слабые и сильные) устанавливаются в NULL. Оптимальное использование ссылок в скрипте Enforce заключается в том, чтобы на каждый объект была ровно одна строгая ссылка, помещаемая в объект "владелец", который его создает. Такой способ использования обеспечивает отсутствие циклических ссылок на правильный порядок уничтожения объекта - объект уничтожается при уничтожении его "создателя". Примеры: Моддинг Модифицированный класс Модифицированный класс используется для встраивания унаследованного класса в иерархию классов без изменения других скриптов, что требуется для правильного моддинга: Модифицированный класс ведет себя как класс, унаследованный от исходного класса (вы можете использовать super для доступа к исходному классу). Когда объявляется модифицированный класс, его экземпляры будут создаваться вместо исходного класса повсюду в скрипте Когда несколько модифицированных классов модифицируют один и тот же класс vanilla, следующий модифицированный класс будет наследовать последний модифицированный класс, что обеспечивает совместимость с модами Измененные константы Константы могут быть переопределены при компиляции последним загруженным модом (обратите внимание на порядок загрузки модов) Позволяет нескольким модам изменять разные константы в одном классе Модифицированные закрытые члены Несмотря на то, что модифицированный класс ведет себя так же, как унаследованный, он все равно может обращаться к закрытым членам класса vanilla
  9. Используя диагностическую версию исполняемого файла игры (DayZDiag_x64.exe), можно подключить Workbench tool к запущенному экземпляру игрового клиента/сервера для отладки скриптов из игры и ваших модов Предпосылки Если вы загружаете мод, в этом руководстве предполагается, что ваш мод настроен в соответствии со структурой, описанной в "Основах моддинга". Вам потребуются официальные инструменты DayZ, в которых находится Workbench. В "Основах моддинга" вы извлекли Project Drive следующим образом, настроив Project Drive. Настройка Мы можем разрешить прямое изменение и быструю загрузку игровых скриптов прямо с диска Project Drive в игру. Для этого нам нужно создать символическую ссылку. Как и в DayZ Modding Basics, при подготовке к исправлению файлов мы должны запустить команду в окне командной строки. Перейдите в свою установочную папку DayZ. Она будет находиться в папке steamapps по адресу "common/DayZ". Удалите все папки с названием "scripts", если они существуют. Скопируйте полный путь. Откройте окно командной строки и выполните следующую команду, заменив "DayZInstallationFolder" на путь, который вы скопировали ранее. mklink /J "DayZInstallationFolder\scripts" "P:\scripts" Вернитесь к папке установки DayZ, теперь вы должны увидеть там "scripts". Введите папку, и вы увидите "Scripts" и файлы внутри нее, как на рабочем диске. Настройка рабочего стола Запустите Workbench через инструменты DayZ или перейдите к "common/Dayz Tools/Bin/Workbench/" в вашей папке steam. В строке меню выберите "Workbench", а затем в выпадающем списке выберите "Параметры". На вкладке "Workbench" нажмите на "...", соответствующий каталогу исходных данных, и выберите диск "P:\" или на котором вы извлекли содержимое игры. Нажмите "Ок", а затем, когда будет предложено перезагрузить компьютер, разрешите это. После перезагрузки вы сможете увидеть структуру проекта в браузере ресурсов Workbench в том виде, в каком она отображается на вашем Project Drive Загрузка модов Предполагая, что вы настроили свой мод в соответствии с основами моддинга, workbench сможет работать с вашим модом так, как если бы это был простой скрипт. Откройте окно командной строки и выполните следующую команду, заменив "WorkbenchInstallationFolder" на путь, по которому установлен Workbench. start /D "WorkbenchInstallationFolder" workbenchApp.exe "-mod=P:\FirstMod" Дополнительные моды можно добавлять, разделяя их точкой с запятой. Например: -mod=P:\FirstMod;P:\SecondMod. Подключение Workbench к DayZ Программа DayZDiag_x64.exe может работать как клиент или как сервер (с добавлением параметра командной строки -server). Она принимает все остальные параметры, аналогичные базовому исполняемому файлу. Запустив workbench, откройте модуль редактора сценариев. У него есть собственный браузер ресурсов, но вы можете открыть файлы .c из базового браузера ресурсов, дважды щелкнув по ним, что автоматически откроет редактор скриптов и загрузит выбранный файл. Когда и диагностический исполняемый файл, и редактор сценариев запущены, они должны быть автоматически подключены, о чем будет сообщено коротким всплывающим окном в правой нижней части экрана. Теперь вы сможете увидеть текстовый вывод, который диагностический исполняемый файл выводит для целей отладки, а также отладить свой код, вставив точки останова и пошагово выполнив выполнение. Примечание: Если вы хотите видеть только консольный вывод, то извлечение и загрузка PBO не требуется, редактор сценариев должен подключаться к исполняемому файлу диагностики без них, но тогда доступен только консольный вывод. Точки останова скрипта Вы можете приостановить выполнение скрипта, когда он достигнет определенной строки в скрипте, вставив точку останова - найдите интересующую вас строку, а затем, нажав клавишу F9, слева должна появиться красная точка, указывающая на то, что выполнение остановится, как только оно достигнет этой строки. Если вместо этого появляется желтый восклицательный знак в красном круге, это означает, что эта строка кода на самом деле никогда не будет выполнена и скрипт на этом не остановится. Когда скрипт достигнет указанной строки, он приостановит свое выполнение и покажет вам, где именно, желтой стрелкой. Основные элементы управления и то, что вы можете сделать сейчас, отображаются в верхнем меню в разделе "Отладка". Здесь вам также необходимо переключиться на параметр "Сервер отладки", если вы хотите отладить скрипт, запущенный на сервере. Примечание: Вы также можете добавлять и удалять точки останова, щелкая левой кнопкой мыши в том месте, где появляются красные точки. Щелчок правой кнопкой мыши добавляет синюю закладку - у них нет какой-либо встроенной функции, кроме как отмечать скриптом интересные места, чтобы вы могли легко перейти к ним. Расширенная конфигурация Дополнительные параметры настройки доступны с помощью файла dayz.proj в каталоге Workbench. Файловая система позволяет указать путь, по которому workbench ищет данные, необходимые для просмотра файлов и создания путей к модулю сценариев. Это каталог исходных данных, который вы задаете в параметрах workbench, поэтому указывать путь к вашему P: не обязательно, если вы задали его там. Помните о префиксах! При запуске Workbench с параметром -mod=YourUnpackedMod для автоматической установки путей к модулю сценариев FileSystemPath используется как часть конечного пути. Это означает, что если ваша папка с модами находится в P:\OtherMods\MyMod и ее путь к модулю сценариев в config.cpp равен MyMod/scripts/etc , то ваша файловая система должна указывать на P:\OtherMods ИЛИ путь в config.cpp должен быть обновлен до OtherMods/MyMod/scripts/etc чтобы создать правильный полный путь (FileSystemPath+ScriptModulePath), который будет работать в редакторе скриптов ( Script Editor). FileSystem { FileSystemPathClass { // This is usually set in Workbench -> Options -> Source data directory instead Name "Project Drive" Directory "P:" } FileSystemPathClass { // Custom Dir for Mods Name "Mods folder" Directory "P:\OtherMods" } FileSystemPathClass { // Game dir Name "Steam folder" Directory "D:\SteamGames\steamapps\common\DayZ" } Модули скриптов - это пути, необходимые для работы редактора скриптов. Они автоматически устанавливаются при запуске Workbench с параметром -mod=YourUnpackedMod, устанавливайте их только в том случае, если вам требуется пользовательская настройка
  10. Мы создадим простой мод, который будет выводить сообщение в журнал скрипта всякий раз, когда игрок совершает прыжок. Для этого нам нужно создать структуру папок мода, а затем упаковать ее в 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
  11. @TETRIS C:\DayZServer\addons\weapons_explosives\config.cpp все тут
×
×
  • Create New...