Нужна помощь?
Создайте тему в соответствующем разделе
Не нужно писать всё в чат!Загляните на торговую площадку
Там вы можете купить
всё что касается игровых серверовНе хотите бан?
Пожалуйста, ознакомьтесь с нашими правилами
Не нарушайте порядок!Продаёте или покупаете?
Пользуйтесь услугами гаранта
Мы сделаем вашу сделку безопасной
Поиск по сайту
Результаты поиска по тегам 'scripts'.
Найдено 8 результатов
-
Всех приветствую! Господа, подскажите пожалуйста, хочу исправить некоторые ошибки Мода. В файле -profiles/script*.log имеются строки: SCRIPT (W): @"CodeLock/scripts/3_game/dayzgame.c,13": FIX-ME: Method argument can't be strong reference SCRIPT (W): @"CodeLock/scripts/4_world/entities\codelock.c,308": FIX-ME: Method argument can't be strong reference SCRIPT (W): @"CodeLock/scripts/4_world/gui\setcodemenu.c,31": FIX-ME: Overriding function 'CheckState' but not marked as 'override' SCRIPT (W): @"CodeLock/scripts/4_world/pluginmanager\pluginbase\permissions\codelockpermissionmanager.c,46": FIX-ME: Method argument can't be strong reference SCRIPT (W): @"CodeLock/scripts/4_world/gui\guestcodemenu.c,29": FIX-ME: Overriding function 'SendRPC' but not marked as 'override' SCRIPT (W): @"CodeLock/scripts/4_world/gui\claimcodemenu.c,27": FIX-ME: Overriding function 'SendRPC' but not marked as 'override' SCRIPT (W): @"CodeLock/scripts/4_world/gui\entercodemenu.c,37": FIX-ME: Overriding function 'SendRPC' but not marked as 'override' SCRIPT (W): @"CodeLock/scripts/4_world/actions\continuous\actiondestroycodelockontent.c,73": Possible variable name conflict '_Health' SCRIPT (W): @"CodeLock/scripts/4_world/actions\continuous\actiondestroycodelockonfence.c,67": Possible variable name conflict '_Health' Создал свой pbo. Создал файл config.cpp: class CfgPatches { class CodeLock { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"CodeLock"}; }; }; class CfgMods { class FixMod_CodeLock { dir = "FixMod_CodeLock"; picture = ""; action = ""; hideName = 1; hidePicture = 1; name = "FixMod_CodeLock"; overview = "FixMod_CodeLock"; credits = ""; author = ""; authorID = "0"; version = "1.0"; extra = 0; type = "mod"; dependencies[] = {"World"}; class defs { class worldScriptModule { value = ""; files[] = {"FixMod_CodeLock/scripts/4_world"}; }; }; }; }; Далее по пути FixMod_CodeLock\scripts\4_world\Entities создал файл CodeLock.c: modded class CodeLock : ItemBase { void SynchLock(string owner, array<string> guests) { if (GetGame().IsServer() || !GetGame().IsClient()) { return; } ownerId = owner; arrayGuests = guests; } } Но ошибка не пропадает. Хочу без перепаковки исправить код и подключить свой FixMod_CodeLock чтобы он поверх работал и исправлял эти ошибки. Подскажите ПОЖАЛУЙСТА как правильно это сделать для скриптов и остальных файлов .c (если можно подробнее) Надеюсь решение поможет и остальным для правки ошибок без нарушения прав перепаковок на своих серверах при наличии ошибок! FixMod_CodeLock.rar
-
Что вы узнаете в этом руководстве: - Установка и настройка Workbench с нуля - Установка инструментариев Dayz Tolls, Mikera tools - Создание своего первого мода - Отладка этого мода в игре - Изменение мода без перезагрузки Что нужно для начала работ: 1. Установленная игра DayZ - https://store.steampowered.com/agecheck/app/221100/ 2. Установленный сервер DayZ - https://store.steampowered.com/agecheck/app/221100/ 3. Установленный DayZ Tools - https://store.steampowered.com/app/830640/DayZ_Tools/ 4. Установленный Visual Studio Code или Notepad ++(советую первый вариант, бонус в конце статьи) 5. Установить пакет инструментов от Mikera (галочками отмечено в спойлере) - https://mikero.bytex.digital/Downloads Если все вышеперечисленные пункты выполнены приступим к настройке: 1. Создание диска Р и распаковка файлов игры 2. Создание первого мода 3. Упаковка в PBO На данном этапе мы забываем окончательно о существовании Addon Builder встроенного в DayZ Tools. Используйте pboProject для запаковки модов - он показывает абсолютно все допущенные ошибки, кроме ошибок в скриптах. 4. Подготовка к Filepatching 5. Тестирование в одиночной игре/оффлайн режим. (DayZDiag_x64 - client) 6. Тестирование в многопользовательском режиме. (DayZDiag_x64 - server + client) 7. Настройка и работа в Workbench ПРОБЛЕМЫ: (С большинством модов сервер просто не стартует ругается на отсутствующий override скрипта в этом моде.) Решено - добавить в bat файл -newErrorsAreWarnings=1 Создание нового bool на лету и любых других переменных и функций не подтягивает - перезапуск сервера. 8. Visual Studio Code entities.zip
-
Всем привет, я заметил что некоторые люди не до конца понимают что такое регистрация анимаций для предметов в руках, как ее правильно делать и для чего она нужна? Для чего это нужно? Допустим вы добавляете предмет в игру и не привязываете его ни к какому объекту (создаете полностью с нуля, задаете свойства) и сталкиваетесь с тем что ваш объект без привязки не имеет должной анимации. А имеет стандартную анимацию банки консервы (в том числе и для предметов которые должны держаться в 2 руках), ну или вовсе предмет находиться в ногах у персонажа (примеры прикрепил скриншоты). Именно для этого и нужно привязывать анимацию положения объекта в руках через скрипт. На момент написания этого поста я знаю 3 вида регистрации анимаций для предметов в руках: 1. PlayerBase 2. JMAnimRegister 3. ModItemRegisterCallbacks До создания последних 2 способов все использовали PlayerBase : modded class PlayerBase { override void Init() { DayzPlayerItemBehaviorCfg fireArmsItemBehaviour = new DayzPlayerItemBehaviorCfg; fireArmsItemBehaviour.SetFirearms(); GetDayZPlayerType().AddItemInHandsProfileIK("MyModdedWeapon", "dz/anims/workspaces/player/player_main/weapons/player_main_cz527.asi", fireArmsItemBehaviour, "dz/anims/anm/player/ik/weapons/cz527.anm", "dz/anims/anm/player/reloads/cz527/w_CZ527_states.anm"); super.Init(); } } Но у этого способа есть очень большой минус, это очень нестабильная штука. Нередко крашила сервера и имела ограничения на кол-во регистрации анимаций. С такими большими минусами, мододеллы начали искать решения как можно сделать это более стабильно и оптимизированно. И такой способ нашли. DayZPlayerTypeRegisterItems(DayZPlayerType Type) вот наше спасение, но тут тоже не все так просто, полумолчание это функция внутри класса, а для поставленной задачи (иметь возможность безопасно и стабильно вносить новую регистрацию предметов) это не подходит. Тогда разработчики мода CF создали кастомный класс с использованием схожих функций для регистрации анимаций положений предметов в руках. Этим классом является JMAnimRegister. Стабильная и оптимизированная функция, которой очень просто пользоваться. Разумеется использовать вы сможете этот класс только при наличии в своей сборке CF . Как им пользоваться? modded class JMAnimRegister { override void OnRegisterFireArms( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) { super.OnRegisterFireArms( pType, pBehavior ); pType..AddItemInHandsProfileIK("MyModdedWeapon", "dz/anims/workspaces/player/player_main/weapons/player_main_cz527.asi", pBehavior, "dz/anims/anm/player/ik/weapons/cz527.anm", "dz/anims/anm/player/reloads/cz527/w_CZ527_states.anm"); } }; Как самый простой пример. И так можно задавать любому количеству предметов положение в руках : modded class JMAnimRegister { override void OnRegisterFireArms( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) { super.OnRegisterFireArms( pType, pBehavior ); pType..AddItemInHandsProfileIK("MyModdedWeapon", "dz/anims/workspaces/player/player_main/weapons/player_main_cz527.asi", pBehavior, "dz/anims/anm/player/ik/weapons/cz527.anm", "dz/anims/anm/player/reloads/cz527/w_CZ527_states.anm"); pType..AddItemInHandsProfileIK("MyModdedWeapon2", "dz/anims/workspaces/player/player_main/weapons/player_main_cz527.asi", pBehavior, "dz/anims/anm/player/ik/weapons/cz527.anm", "dz/anims/anm/player/reloads/cz527/w_CZ527_states.anm"); } }; Прошу обратить внимание, что мы используем modded, мы модифицируем уже существующий класс внутри мода CF . Как изначально и playerbase JMAnimRegister находиться в директории 4_World. Позже класс был доработан и добавлены более тонкие настройки : void OnRegisterEmptyHanded( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ){} void OnRegisterTwoHanded( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) {} void OnRegisterOneHanded( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) {} void OnRegisterRestrained( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) {} void OnRegisterSurrender( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) {} void OnRegisterHeavy( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) {} void OnRegisterPistol( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) {} void OnRegisterFireArms( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) {} void OnRegisterArcheryItem( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) {} void OnRegisterLauncher( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) {} void OnBoneRemapping( DayZPlayerType pType ) {} Думаю комментировать не нужно и так понятно что за что отвечает! Тогда для чего нужен класс ModItemRegisterCallbacks ? Это класс, который был добавлен в v1.08, следовательно, он работает без любых модификаций, на чистом DayZ. modded class ModItemRegisterCallbacks { void RegisterEmptyHanded(DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior); void RegisterOneHanded(DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior); void RegisterTwoHanded(DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior); void RegisterRestrained(DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior); void RegisterSurrender(DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior); void RegisterHeavy(DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior); void RegisterPistol(DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior); void RegisterFireArms(DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior); void RegisterArcheryItem(DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior); void RegisterLauncher(DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior); void RegisterCustom(DayZPlayerType pType); void CustomBoneRemapping(DayZPlayerType pType); } Пример использования : modded class ModItemRegisterCallbacks { override void RegisterOneHanded(DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior) { super.RegisterOneHanded(pType, pBehavior); pType.AddItemInHandsProfileIK("твой предмет", "dz/anims/workspaces/player/player_main/props/player_main_1h_matchbox.asi", pBehavior, "dz/anims/anm/player/ik/gear/book.anm"); pType.AddItemInHandsProfileIK("твой предмет 2", "dz/anims/workspaces/player/player_main/props/player_main_1h_matchbox.asi", pBehavior, "dz/anims/anm/player/ik/gear/book.anm"); } } "dz/anims/workspaces/player/player_main/props/player_main_1h_matchbox.asi" "dz/anims/anm/player/ik/gear/book.anm" это пути до анимаций, почему 2? Одна для положения предмета в руке, вторая для анимации самой кисти персонажа. И в заключении : какой из способов наиболее эффективен? Это зависит от вас, используйте то что удобно для вас (главное не через playerbase).
-
Всем привет. Помогите пожалуйста со скриптом. Суть. Я пытаюсь сделать синхранизацию сервера с клиентом передавая c конфига время разделки животного. В родных скриптах есть class UATimeSpent с константами и там есть константа SKIN. Мне нужно её перезаписать на своё значение и мне выдаёт ошибку: Trying to modify write protected variable 'SKIN' в переводе на Русский Попытка изменить защищенную от записи переменную «SKIN». Функция скрипта: Когда игрок запускает клиент, идёт запрос на серверную часть и получает в ответ время разделки. Задача: Нужно перезаписать константу SKIN на новое значение и всё. Сам скрипт. class timeToComplete extends UATimeSpent { protected ref UATimeSpent m_UATimeSpent; void timeToComplete() { GetDayZGame().Event_OnRPC.Insert(OnRPC); CheckUATimeSpent(); } void ~timeToComplete() { GetDayZGame().Event_OnRPC.Remove(OnRPC); } void CheckUATimeSpent() { GetGame().RPCSingleParam(NULL, SOC_TIME_RPCs.SOC_GT, NULL, true); } void OnRPC(PlayerIdentity sender, Object target, int rpc_type, ParamsReadContext ctx) { if (rpc_type == SOC_TIME_RPCs.SOC_RT) { Param1<float> soc_srt; if (ctx.Read(soc_srt)) { if (soc_srt.param1!= 0) { m_UATimeSpent.SKIN = soc_srt.param1; Print("Пришёл ответ от сервера в m_UATimeSpent.SKIN - " + m_UATimeSpent.SKIN) } } } } };
-
Помогите. Скрипт на подсоединение JSON конфига в созданный Action
alex_good_kaban опубликовал вопрос в Помощь
Пытаюсь создать Action который будет принимать данные из созданного JSON конфига на стороне сервера. Пример: Создаем конфиг Json получается в таком формате: В Action добавляю просто для проверки void GetProxyBuilder() и проверяю его работоспособность На стороне клиента я получаю NULL (если добавляю исключение if !=NULL то функция вообще не отрабатывает. На стороне сервера значения из конфига получаются, но так как функция z_childNameRPC обрабатывается на стороне клиента то выполнения этого условия не происходит. Если не использовать JSON конфиг, а создать массив с данными внутри Action то все отрабатывает нормально. Вопрос как возможно использовать данные из конфига JSON -
Пытаюсь изменить состояние еды из состояние ROTTEN (Гнилого) в состояние RAW (Сырое). Использую команду Edible_Base food = Edible_Base.Cast(ingredients); food.ChangeFoodStage( FoodStageType.RAW ); Состояние изменяется на RAW секунд на 20, после опять возвращается в состояние ROTTEN. Как зафиксировать данное состояние у еды, я так понимаю есть определенный таймер у еды который тоже нужно сбросить. Подскажите как?
-
Нужно что бы объект двигался от лица игрока по прямой. Использовал функцию SetVelocity(this, Vector(1, 0.1, 0)); где this это сам объект (extended class house) но вектор движения задается по кордам карты x, y, z
