-
Posts
40 -
Joined
-
Last visited
-
Days Won
1 -
Отзыв
0%
Content Type
Profiles
Forums
Servers
DayZ Wiki
Updates
Downloads
Store
Joint Purchases
Everything posted by Vostok
-
Вот готовый вариант тык
-
@_winter_cat_ В настройки зайди там все клавиши прописаны управления техникой. Обычно выстрел это "пробел" поворот башен 1-3
-
@Kappa Что игра что сериал топ. Хотя кому то и не зашел сам сериал но мне прям норм. Еще ща доги выкатят вторую чать игры на пк и можно в стратосферу лететь.
-
@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 поврежден, вы можете попробовать удалить его, чтобы игра создала новый файл с дефолтными настройками. Но перед удалением убедитесь, что у вас есть резервная копия на случай, если возникнут другие проблемы. Переустановка игры или модов: В крайнем случае, если вышеуказанные шаги не помогли, попробуйте переустановить игру или конкретные моды, которые могут вызывать проблему. Проблемы с загрузкой файлов ввода могут повлиять на функциональность игры, поэтому важно устранить их как можно скорее.
-
@ȚŖÖĴÄŅ.ËXË да
-
@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
-
серверный fps Серверный FPS и как увеличить производительность.
Vostok replied to
Vendetta's topic in Useful software
@Esgerson Это выделенный сервер на ксюхе у тебя или вдска? -
@SantaHlamus хм а такой вообще есть оО
-
@老刘 в config
-
Основы Блоки кода Блок кода заключен в фигурные скобки и определяет область действия. Переменные, определенные внутри области действия, доступны только изнутри нее. Пример области действия Вложенная область видимости Заявления о сфере применения Структура программы Принудительный скрипт состоит из классов и функций. Весь код должен быть объявлен внутри функции. Переменные Переменные определяются по типу и имени. Функции Функции являются основной функцией скрипта 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
-
Используя диагностическую версию исполняемого файла игры (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, устанавливайте их только в том случае, если вам требуется пользовательская настройка
- 1 reply
-
- 2
-
-
-
Мы создадим простой мод, который будет выводить сообщение в журнал скрипта всякий раз, когда игрок совершает прыжок. Для этого нам нужно создать структуру папок мода, а затем упаковать ее в 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
-
@Takashi Suarez http://craftmakerdayz.ru/
-
урон Урон от взрыва гранаты мины взрывчатка
Vostok replied to TETRIS's topic in HELP with any questions
@TETRIS C:\DayZServer\addons\weapons_explosives\config.cpp все тут -
vip комплект VIP комплект [Персональная точка спавна]
Vostok replied to
Vendetta's topic in For beginners
@DESERRTIK Скинь файл как ты прописал спавн ? -
cfggameplay.json Все настройки игрового процесса (cfggameplay.json)
Vostok replied to Vostok's topic in For beginners
@Ginnes Новые люди не знаю про такие туториалы и переводом пользоваться зачастую не умеют. Так что это полезно пусть будет тут. -
Каковы настройки игрового процесса? Моддинг и настройка файла миссии (init.c) являются очень мощными инструментами для администраторов серверов, однако они не очень удобны в использовании и доступны не всем. Настройки игрового процесса предоставляют администраторам сервера возможность настраивать поведение игры, просто изменяя значения в JSON-файле настроек игрового процесса. Первоначальная настройка Настройки игрового процесса находятся в DZ\worlds\chernarusplus\ce\cfg gameplay.json, прежде чем вы сможете начать его использовать, вам необходимо скопировать этот файл в папку вашей миссии. Оказавшись там, вы можете свободно изменять любое из значений внутри. Чтобы разрешить использование файла, вам также необходимо добавить новый параметр "enableCfgGameplayFile = 1;" в ваш файл server.cfg. С этого момента всякий раз, когда вы запускаете сервер, файл cfggameplay.json будет загружаться и использоваться игрой. Параметры Общие (General) Type Parameter Details Default int version Внутренний параметр для отслеживания версии файла current version, e.g. "119" string array spawnGearPresetFiles Если не пусто, позволяет загружать и обрабатывать конфигурационные файлы Player Gear Spawn в формате JSON [] string array objectSpawnersArr Имена файлов JSON, содержащих данные spawner (см. Object Spawner ) [] bool disableRespawnDialog Отключите диалоговое окно пользовательского интерфейса, в котором игрок выбирает тип возрождения, который он хочет выполнить, после нажатия кнопки возрождения 0/false bool disableRespawnInUnconsciousness Отключает кнопку "Возрождение", доступную в меню паузы (Esc), когда игрок находится без сознания, запрещая ему возрождаться 0/false bool disablePersonalLight Отключает вездесущую персональную подсветку, освещающую объекты рядом с игроком в ночное время 0/false int lightingConfig Какой тип освещения будет использоваться в ночное время (0 = яркое, 1 = темное) 1 float array wetnessWeightModifiers Значения для изменения веса изделия в зависимости от уровня влажности изделия. Значения слева направо: [СУХОЙ, ВЛАЖНЫЙ, МОКРЫЙ, ПРОПИТАННЫЙ, ПРОМОКШИЙ НАСКВОЗЬ] {1.0, 1.0, 1.33, 1.66, 2.0}; Повреждение объекта базового здания (Base building object damage) Type Parameter Details Default bool disableBaseDamage Ущерб от сооружений, возведенных в результате строительства фундамента 0/false bool disableContainerDamage Отключите урон от таких предметов, как палатки и бочки 0/false Выносливость (Stamina) Type Parameter Details Default float sprintStaminaModifierErc Изменяет скорость, с которой расходуется выносливость во время спринта 1.0 float sprintStaminaModifierCro Изменяет скорость, с которой расходуется выносливость во время спринта на корточках 1.0 float staminaWeightLimitThreshold Это количество очков выносливости (деленное на 1000) не будет учитываться при вычете веса выносливости 6000.0 float staminaMax Максимальная выносливость (установка значения 0 может привести к неожиданным результатам) 100.0 float staminaKgToStaminaPercentPenalty Множитель, используемый при расчете очков выносливости, вычитаемых из максимальной выносливости с учетом нагрузки игрока 1.75 float staminaMinCap Минимальный размер ограничения выносливости (установка значения 0 может привести к неожиданным результатам) 5.0 float sprintSwimmingStaminaModifier Изменяет скорость, с которой расходуется выносливость во время быстрого плавания 1.0 float sprintLadderStaminaModifier Изменяет скорость, с которой расходуется выносливость при быстром подъеме по лестнице 1.0 float meleeStaminaModifier Изменяет количество потребляемой выносливости при выполнении тяжелых атак ближнего боя и уклонении 1.0 float obstacleTraversalStaminaModifier Изменяет количество потребляемой выносливости при выполнении прыжков, лазания и опорных прыжков с шестом 1.0 float holdBreathStaminaModifier Изменяет скорость, с которой расходуется выносливость при задержке дыхания 1.0 Шок (Shock) Type Parameter Details Default float shockRefillSpeedConscious Восстановление значения шока, пока игрок находится в сознании (в секунду) 5.0 float shockRefillSpeedUnconscious Восстановление значения шока, пока игрок находится без сознания (в секунду) 1.0 bool allowRefillSpeedModifier Разрешить/запретить модификатор восстановления ударной силы в зависимости от настроек типа боеприпаса (обычно более быстрое пробуждение после выстрела) 1/true Инерция (Inertia) Type Parameter Details Default float timeToStrafeJog Время для смешивания стрейфинга (диагонального движения) во время бега трусцой (минимальное возможное значение 0,01) 0.1 float rotationSpeedJog Скорость вращения персонажа во время бега трусцой (минимальное возможное значение 0.01) 0.3 float timeToSprint Время перехода от пробежки к спринту (минимальное возможное значение 0,01) 0.45 float timeToStrafeSprint Время для смешивания страйфинга (диагонального перемещения) во время спринта (минимальное возможное значение 0,01) 0.3 float rotationSpeedSprint Скорость вращения персонажа во время бега (минимальное возможное значение 0.01) 0.15 bool allowStaminaAffectInertia Когда включено, позволяет значению выносливости влиять на инерцию игрока 1/true Ограничения по размещению объектов и застройке (Object placement and building restrictions) Type Parameter Details Default bool disableIsCollidingBBoxCheck Позволяет размещать голограмму при столкновении с объектами окружающего мира 0/false bool disableIsCollidingPlayerCheck Позволяет размещать голограмму при столкновении с игроком 0/false bool disableIsClippingRoofCheck Допускает размещение там, где размещение привело бы к зацеплению с крышей 0/false bool disableIsBaseViableCheck Позволяет размещать на динамических объектах и другой несовместимой в остальном базе 0/false bool disableIsCollidingGPlotCheck Позволяет размещать садовые участки, несмотря на несовместимый тип поверхности 0/false bool disableIsCollidingAngleCheck Допускает размещение, несмотря на превышение пределов крена/тангажа/рыскания 0/false bool disableIsPlacementPermittedCheck Разрешает событие размещения, когда это не разрешено элементарными проверками 0/false bool disableHeightPlacementCheck Позволяет размещать с ограниченным пространством по высоте 0/false bool disableIsUnderwaterCheck Позволяет размещать под водой 0/false bool disableIsInTerrainCheck Позволяет размещать при обрезке с учетом рельефа 0/false bool disablePerformRoofCheck Позволяет выполнять конструкцию при соединении с крышей 0/false bool disableIsCollidingCheck Позволяет строить при столкновении с объектами в окружающем мире 0/false bool disableDistanceCheck Предотвращает строительство, когда игрок опускается ниже указанного диапазона 0/false string set disallowedTypesInUnderground Предотвращает строительство объектов этих типов (включая унаследованные) в подземных помещениях ["FenceKit","TerritoryFlagKit","WatchtowerKit"] Индикатор попадания (Hit indicator) Type Parameter Details Default bool hitDirectionOverrideEnabled Решает, будут ли использоваться значения или нет. Поскольку все неопределенное в классе 'HitIndicationData' (или любом классе в файле json) считается равным нулю, это позволяет нам определить, что были загружены некоторые допустимые данные. 0/false int hitDirectionBehaviour Определяет общее поведение индикатора попадания. 0 == Disabled, 1 == Static, 2 == Dynamic (перемещение при отображении, WIP) 1 int hitDirectionStyle Определяет, какой тип индикатора будет использоваться. Набор изображений и расчетов положения. 0 == "splash", 1 == "spike", 2 == "arrow" 0 string hitDirectionIndicatorColorStr Цвет виджета индикатора в формате ARGB. Цвет записывается в виде строки (""). Для получения дополнительной информации о формате ARGB смотрите раздел ниже. "0xffbb0a1e" float hitDirectionMaxDuration Максимальная продолжительность действия индикатора попадания. Фактическая продолжительность составляет от 0,6 до 1,0 от заданного значения, в зависимости от тяжести попадания (что обычно означает более тяжелые попадания == более длительное указание) 2.0 float hitDirectionBreakPointRelative Доля фактической продолжительности, после которой индикатор начинает уменьшаться (в настоящее время только затухание), 0.0 = затухает с самого начала, 0.5 == затухает по истечении 50% продолжительности, 1.0 == затухания нет 0.2 float hitDirectionScatter Величина разброса, приводящая к неточности показаний. Фактический разброс рандомизируется на количество градусов в обоих направлениях (значение +-, таким образом, значение od 10 дает потенциальный разброс в 20 градусов). 10.0 bool hitIndicationPostProcessEnabled Позволяет отключить эффект старого попадания (красная вспышка) 1/true Навигация (Navigation) Type Parameter Details Default bool use3DMap Позволяет использовать только 3D-карту (отключает наложение 2d-карты по умолчанию) 0/false bool ignoreMapOwnership Игрок может открыть карту (и только карту), используя специальный ввод ("M"), даже без карты в инвентаре игрока. 0/false bool ignoreNavItemsOwnership Компас и/или GPS-приемник не нужны для отображения помощников на 2D-карте. 0/false bool displayPlayerPosition Показывает красный маркер на карте, на позиции игрока. Он также отображает направление на маркере. 0/false bool displayNavInfo Полностью скройте пользовательский интерфейс GPS и компаса из легенды карты (даже если у игрока есть эти предметы в инвентаре). 1/true Затопление (Drowning) Type Parameter Details Default float staminaDepletionSpeed Выносливость истощается за секунду при погружении 10.0 float healthDepletionSpeed Здоровье истощается за секунду во время утопления 10.0 float shockDepletionSpeed Шок уменьшается в секунду при утоплении 10.0 Окружающая среда (Environment) Type Parameter Details Default float array environmentMinTemps Список минимальных температур (ровно 12 значений) [-3, -2, 0, 4, 9, 14, 18, 17, 12, 7, 4, 0] float array environmentMaxTemps Список максимальных температур (ровно 12 значений) [3, 5, 7, 14, 19, 24, 26, 25, 21, 16, 10, 5] Формат ARGB ARGB, используемый в игровом процессе cfg.json читается как строка из-за ограничений, присущих формату файла. Он состоит из: Шестнадцатеричной записи: 0x Буквенного значения в шестнадцатеричном формате: 00 – FF Значение красного цвета в шестнадцатеричном формате: 00 – FF Значение зеленого цвета в шестнадцатеричном формате: 00 – FF Значение синего цвета в шестнадцатеричном формате: 00-FF Результирующая строка выглядит как "0xFFFF0000" (красный). Значение не чувствительно к регистру, поэтому оно может быть записано в любом регистре или их комбинации.
- 15 replies
-
- 12
-
-
-
-
Структура мода Мод загружается с помощью параметра -mod= launch -mod=C:\MyMods\TestMod Типичная папка с модом, загруженная из steam workshop, будет содержать: Папка Addons, содержащая файлы .pbo мода Папка Keys, содержит public .bike, используемый для подписи файлов .pbo (требуется для проверки подписи клиент-сервер) meta.cpp файл, содержащий метаданные семинара (будет автоматически создан при публикации мода) mod.cpp дополнительный конфигурационный файл, содержащий информацию для представления мода Структура PBO Единственной необходимой частью файла .pbo является config.cpp: class CfgPatches // требуемый { class TestMod { requiredAddons[]= { "DZ_Data", // зависимость от дополнения }; }; }; class CfgMods // требуется в pbo, которые добавляют / изменяют скрипты или входные данные { class TestMod { type = "mod"; // требуемый inputs = "mods\testmod\inputs\my_new_inputs.xml"; // необязательно, при использовании пользовательских входных данных skeletonDefinitions = "mods\testmod\skeleton\skeletons.xml"; // необязательно, при использовании пользовательского skeletons.anim.xml dependencies[]={"Game"}; // необязательно, когда вам нужно установить зависимость от класса class defs { // необязательно: вы можете добавить пользовательские наборы изображений, подобные этому class imageSets { files[]={"mods/testmod/gui/imagesets/mod1.imageset", "mods/testmod/gui/imagesets/mod2.imageset" }; }; // необязательно: вы можете добавить пользовательские стили виджетов, подобные этому class widgetStyles { files[]={"mods/testmod/gui/looknfeel/mod1.styles", "mods/testmod/gui/looknfeel/mod2.styles"}; }; class engineScriptModule { value=""; // когда значение пусто, используется функция ввода по умолчанию files[]={"mods/testmod/scripts/1_Core"}; // вы можете добавить любое количество файлов или каталогов, и они будут скомпилированы вместе с оригинальными скриптами игрового модуля }; /* классы конфигурации модуля скрипта необязательны, определяйте только то, что вы хотите модифицировать класс gameLibScriptModule { value=""; files[]={"mods/testmod/scripts/2_GameLib"}; };*/ class gameScriptModule { value="CreateGameMod"; // когда значение заполнено, имя функции ввода модуля скрипта по умолчанию перезаписывается им files[]={"mods/testmod/scripts/3_Game"}; }; class worldScriptModule { value=""; files[]={"mods/testmod/scripts/4_World"}; }; class missionScriptModule { value=""; files[]={"mods/testmod/scripts/5_Mission"}; }; }; }; }; Внутренняя структура в значительной степени зависит от самих моддеров, например, в случае файлов скриптов не имеет значения, где они размещены, пока они находятся в соответствующем модуле скрипта и пути к ним заданы правильно. Презентация мода Сконфигурированный с помощью mod.cpp в корневой папке мода, используемой для представления мода в главном меню игры: name = "Mod name"; // имя picture = "Mods/TestMod/modpic.tga"; // изображение в расширенном описании logoSmall = "Mods/TestMod/modlogosmall.tga"; // значок рядом с названием мода, когда описание не развернуто logo = "Mods/TestMod/modlogo.tga"; // логотип под игровым меню logoOver = "Mods/TestMod/modlogohover.tga"; // при наведении курсора мыши на логотип tooltip = "tooltip"; // всплывающая подсказка при наведении курсора мыши overview = "Bestest mod"; // обзор action = "https://dayz.com/"; // ссылка author = "modguy"; // автор version = "1.5"; // версия
-
По сути, это инструмент для расчета продолжительности дня. Без изменений обычный день в DayZ эквивалентен обычному дню (продолжительность 24 часа). Но с помощью этого инструмента мы можем получить конкретную продолжительность из часов, минут и секунд и преобразовать эту продолжительность в умножение. Дневной и ночной временные циклы также могут быть ускорены или замедлены. Файлы: DayZ-DayTimeCalculator-master.zip
-
шивроны DayZone Chevron Retexture / Ретекстур шевронов DayZone
Vostok replied to Vostok's topic in Scripts, mods
@Sergey7717_ Обновил -
Просмотр файла 12 new conserves / 12 новых консерв Модификация добавляет на ваш сервер 12 новых консервированных продуктов! The modification adds 12 new canned foods to your server! Добавил Vostok Добавлено 03.12.2022 Категория Скрипты, моды
-
шивроны DayZone Chevron Retexture / Ретекстур шевронов DayZone
Vostok posted a topic in Scripts, mods
Просмотр файла DayZone Chevron Retexture / Ретекстур шевронов DayZone Шевроны ванильных группировок и более. Всего вариаций шевронов 23 шт. Ключ ставите свой, если нужна будет помощь, пишите в Discord: ᴍᴇʟ#3249 Для работы требуется бесплатный мод Day Zone Mod: Шевроны ванильных группировок и более. Всего вариаций шевронов 23 шт. Ключ ставите свой, если нужна будет помощь, пишите в Раздор: ᴍᴇʟ#3249 Для работы требуется бесплатный мод Мод дневной зоны: Добавил Vostok Добавлено 03.12.2022 Категория Скрипты, моды -
- 1 review
-
- 69
-
-
