-
Posts
31 -
Joined
-
Last visited
-
Отзыв
0%
Content Type
Profiles
Forums
Servers
DayZ Wiki
Updates
Downloads
Store
Joint Purchases
Posts posted by Abra
-
-
Которые не требуют модов нету, большинство таких локаций используют мод BuilderItems который добавляет свыше 1к объектов которые можно разместить с помощью Dayz Editor.
Ну и Dayz Editor Loader который загружает маппинг на сервер.
В теории можно загружать маппинг без клиентских модов, но это нужно разбираться.
@CaptainЯ так понимаю ты хочешь создать ванильный сервер без модов?
-
Привет, анимации в Dayz работают в формате .anm. Принцип прост, ты создаёшь анимацию в любом удобном для тебя редакторе после чего переводишь эту анимацию в формат .txa, а после Workbench переводит его в формат .anm что бы движок мог прочитать анимацию в игре. Но там жёсткая привязка по костям, так что нужно использовать скелет который используется в игре. Я с анимацией особо не работал, но у меня получилось кастомное использование предметов в игре путём подменой стандартных анимаций. У меня остались примеры и файлы, так что если интересно, пиши.@ARGT
На самом деле не так уж и сложно если опустить сам факт анимирования, у меня с этим плохо.В 15.05.2025 в 22:26, SkylineMods сказал:Он поддерживает FBX, но удачи вам в попытках заставить работать все, что с ним связано, - это очень сложно.
-
Привет, в целом лучше пособие это сама игра, делай по примеру. По поводу переменных если создатель мода продумал этот момент, то можно, а если нет, то придётся делать через костыли. Ты можешь создать свой мод который перезаписывает что-то в другом моде или создать свой.
Вот простенький скрипт который я юзал года 3 назадclass SCI_Container extends DeployableContainer_Base{void SCI_Container(){}override bool CanPutIntoHands(EntityAI parent){if (super.CanPutIntoHands(parent)){return false; // Здесь мы возвращаем false, чтобы не разрешить брать в руки}return false;}}Если есть вопросы, задавай в лс, попробую ответить.
О, ну и пособие по скриптам:
https://dayzexplorer.zeroy.com/
@VClown -
Замапить карту очень легко, например через DayzEditor. Со своей картой чуть сложнее, но в целом тоже ничего сложного если разобраться, главное много времени и ещё больше терпения. Насчёт динамических локаций можно сделать на основе ванильных ивентов, по поводу пособий не подскажу, тут уж как-то сам, в инете их много. Если интересует что-то конкретное, то спрашивай, попробую ответить.
-
1
-
-
Всё очень просто: выдели нужные вершины и нажми Ctrl + H, чтобы скрыть их. Если они понадобятся снова, выбери кость, связанную с этими вершинами, и нажми Ctrl + Shift + H.
@kepanso -
Там в целом ничего сложного, создаешь папку, в ней создаёшь файл config.cpp и пихаешь в него это:
Спойлерclass CfgPatches{class HP_Psevdo{units[] = {};weapons[] = {};requiredVersion = 0.1;requiredAddons[] = {"PseudoGiant_Scripts"};};};class CfgMods{class HP_Psevdo{dir = "dir_name_you_mod";hideName = 1;hidePicture = 1;name = "";credits = "";author = "";authorID = "0";version = "1.0";extra = 0;type = "mod";dependencies[] = {"World", "Game"};class defs{class worldScriptModule{value = "";files[] = {"dir_name_you_mod/scripts/4_World"}; // скрипты если есть};class gameScriptModule{value = "";files[] = {"dir_name_you_mod/scripts/3_Game"};};};};};class CfgVehicles{class ZombieMaleBase;class PseudoGiant_Base: ZombieMaleBase{class DamageSystem{class GlobalHealth{class Health{hitpoints=3500;}}class DamageZones{class Zone_Head{class Health{hitpoints=3500;}}class Zone_Torso: Zone_Head{class Health{hitpoints=3500;}}class Zone_Upperlimbs: Zone_Head{class Health{hitpoints=3500;}}class Zone_Lowerlimbs: Zone_Head{class Health{hitpoints=3500;}}}}};};Потом через Addon builder создаешь pbo и подключаешь как мод, главное что бы была правильная архитектура папок на выходе PBO.
@Name_You_Mod ==> Addons ==> Тут лежит твоё PBO
А в целом лучше посмотри как это всё сделано в ванильных файлах Dayz, а так же посмотри гайды, может быть в них даже объяснят что за что отвечает
@ɪɢʀᴏᴋ
-
weight это просто вес предмета в игре, а прописать модификатор для кастомного эпинифрина не так муторно как описали выше.
Для начала в скриптах тебе нужно создать свой класс Модификатора который исходит из EpinephrineMdfr как то так:
Спойлерclass CutsomEpinephrineMdfr: EpinephrineMdfr{override void Init(){m_ID = eModifiers.MDF_CUSTOMEPINEPHRINE; // Уникальный индификатор.}override bool DeactivateCondition(PlayerBase player){float attached_time = GetAttachedTime();if( attached_time >= 600) // Через сколько действие адреналина закончится.{return true;}else{return false;}}}После чего модифицируешь ModifiersManager:
Спойлерmodded class ModifiersManager{override void Init(){super.Init();AddModifier(new CutsomEpinephrineMdfr); // Сюда пишешь класс твоего модификатора}}Создаешь свой enum в котором указываешь уникальный ID для модификатора что бы он не пересекался с ванильными:
Спойлерenum eModifiersExtended : eModifiers{MDF_CUSTOMEPINEPHRINE= 560,};И в заключении создаешь в скриптах класс твоего эпинефрина, самое главное что бы у твоего класс имя было одинаковое из Config.cpp
Если в Config.cpp адреналин называется SuperAdrenalin, то и в скриптах он должен называется так же.Спойлерclass SuperAdrenalin: Inventory_Base{override void SetActions(){super.SetActions();AddAction(ActionInjectEpinephrineTarget);AddAction(ActionInjectEpinephrineSelf);}override void OnApply(PlayerBase player){if (!player)return;if( player.GetModifiersManager().IsModifierActive(eModifiersExtended.MDF_CUSTOMEPINEPHRINE ) ) // eModifiersExtended откуда мы берём ID модификатора.{player.GetModifiersManager().DeactivateModifier( eModifiersExtended.MDF_CUSTOMEPINEPHRINE ); // MDF_CUSTOMEPINEPHRINE название применяемого модификатора.}player.GetModifiersManager().ActivateModifier( eModifiersExtended.MDF_CUSTOMEPINEPHRINE );}};
Ну вроде бы всё, будут вопросы, пиши. -
Ты же распаковал чужой мод, скорее всего в нём файлы anm и p3d забинарены движком Dayz для его чтения из за чего ты и не можешь повторно запаковать мод. Если бы перепаковать было так просто, это делали бы все.
В файлах которые ты пытаешься перепаковать примерно такая каша:
СпойлерFORM .'ANIMSET6 .FPS HEAD w Ђ? Ђ? ‚ Scene_Root{™ Ѕ#-&?‡SYѕP?яяЗB А7‚ hipuЦЅМв>Щ€%їВ ?юяЗB 8‚ headяР¬ѕRў>Vў'Ѕгx„?эяЗB @8‚ jawъ№±ѕ81ш>а:-ѕnК‘?юяЗB 8‚ leftbrowІQ‘ѕQЈМ>rѕё’?юяЗB 8‚ lefteyeT№’ѕг/>Bбѕь(’?ьяЗB `8‚ righteye›Еьѕ›Еь>Ѕ7†µ Ђ?эяЗB @8‚ pin_lookatњ°зѕ«rК>HCW>h?Я>яяЗB 7‚ leftsholderПYїПY?ѕјUЂ?ьяЗB А7‚ leftarm rыѕ±rы>ЖљЧѕЄ?ыяЗB 8‚ leftforearm‡kї‡k?pтљѕИ,–?ъяЗB 8‚ lefthand чЁѕCK>1В®ѕ;ў?щяЗB 8‚ leftindexю’®Ѕ“®==Ї]p?чяЗB @8‚ leftindex1¬MёЅ¬Mё= §gz?чяЗB `8‚ leftindex2Т\’ѕНо ты можешь создать свой мод который будет переопределять хп уже существующего ПсевдоГиганта, это самый простой и быстрый способ:
В конфиг пишем это и ставим нужное хп в строке hitpoints
Спойлерclass CfgPatches { class Custom_PseudoGiant_Scripts { requiredAddons[]= { "PseudoGiant_Scripts" }; }; }; class CfgVehicles { class ZombieMaleBase; class PseudoGiant_Base: ZombieMaleBase { class DamageSystem { class GlobalHealth { class Health { hitpoints=3500; } } class DamageZones { class Zone_Head { class Health { hitpoints=3500; } } class Zone_Torso: Zone_Head { class Health { hitpoints=3500; } } class Zone_Upperlimbs: Zone_Head { class Health { hitpoints=3500; } } class Zone_Lowerlimbs: Zone_Head { class Health { hitpoints=3500; } } } } }; };
Как-то так. Если что, спрашивай.
-
Скорее всего ты что-то не правильно прописал в ProxyAttachment, посмотри что бы класс прокси был назван так же как название модели у тебя в папках.
class ProxyName_You_Model: ProxyAttachment { scope = 0; inventorySlot = ""; model = ""; };скинь что ты сделал, так более понятно будет в чём конкретно проблема.
-
Если ты распаковал файлы игры через Dayz Tools, то все конфиги находятся в папке DZ, всё что связанно с одеждой в characters
Создаешь свой мод на подобии ванили, главное что бы класс совпадал с ванильными иначе работать не будет
В config.cpp в классе CfgVehicles пишешьclass Clothing; class Sweater_ColorBase: Clothing { itemSize[] = {3,2}; // Размер предмета в инвентаре itemsCargoSize[] = {3,3}; // Размер инвентаря в предмете };Таким образом все свитеры будут иметь твой кастомный размер слотов.
Как создавать свой мод гайдов полно тут и на ютубе, если нужны подробности пиши в лс. @KPOHOC -
Нашёл мод за 15 секунд в мастерской, чаще пользуйся поиском, не просто так придуман.
Мод который наносит случайный дамаг огнестрельному оружию которое находится у игрока в руках и на плече в момент смерти. Если это не устраивает, мод можно полностью перепаковать и изменить как тебе нужно что бы он полностью уничтожал предмет. -
@Sergey7717_ Используй Eliteness от Mikero, он покажет кости в забинареной модели.
-
@mikki03123 можешь сделать по аналогии аттачментов, в куртке есть специальный слот под футболку
-
@Расстрел Злодеев напиши в личку, может могу с чем неплохо помочь
-
Урон в Dayz работает от пуль, их перезаписать можно следующем образом:
class CfgPatches { class DZ_Custom_Weapons_Projectiles { units[]={}; weapons[]={}; requiredVersion=0.1; requiredAddons[]= { "DZ_Weapons_Projectiles" }; }; }; class CfgAmmo { class Bullet_556x45: Bullet_Base { class DamageApplied { defaultDamageOverride[]= { {0.87,1} }; class Health { damage=110; }; class Blood { damage=100; }; class Shock { damage=110; }; }; }; };
В данном случае мы перезаписываем урон у калибра 556x45
Class Health это урон по хп.
Class Blood это урон по крови.
Class Shock это урон по шоку.
Если не будет работать напиши, давно не практиковался в написании модов.
@_winter_cat_ -
@Kirill57rus Скорее всего один из модов изменяет хп топорику, самый лучший способ это узнать от какого мода ноги растут и там править или можно попытаться вправить топорик самим
Спойлерclass CfgPatches { class Sample { units[]={}; weapons[]={}; requiredVersion=0.1; requiredAddons[]= { "DZ_Weapons_Melee", "DZ_Weapons_Melee_Blade" }; }; }; class CfgVehicles { class Inventory_Base; class Hatchet: Inventory_Base { class DamageSystem { class GlobalHealth { class Health { hitpoints=150; // Желаемое кол-во хп топорика }; }; }; }; };
Если узнаешь какой мод меняет хп топорику, то в requiredAddons нужно добавить класс мода что бы наш мод на изменение хп топорика загружался последним и перезаписывал ему хп-
1
-
-
@R0cky Значит ты где-то накосячил, если ещё не исправил опиши что ты именно сделал.
-
1
-
-
Самое простое можно сделать без кассеты добавив объекту звук и зациклить его через PlaySoundSetLoop в скрипте.
Например можно сделать несколько треков в одной звуковой дорожке минут на 40 и они будут постоянно повторяться, но перед этим нужно создать soundShaders который мы и будем использовать как повторяющийся звук.
СпойлерP.S. Дайте знать если нужен будет гайд как создавать статичные звуки, мб напишу в скором времени.
-
4
-
-
@R0cky Тогда можно сделать подругому,
Спойлер
modded class ActionSkinningCB : ActionContinuousBaseCB { override void CreateActionComponent() { m_ActionData.m_ActionComponent = new CAContinuousTime( GetDefaultTime() ); } float GetDefaultTime() { string item_type = m_ActionData.m_MainItem.GetType(); switch(item_type) { case "CombatKnife": return 15.0; break; case "HuntingKnife": return 12.0; break; case "Sample": return 5; break; default: return UATimeSpent.SKIN; break } return -1; } };
Здесь мы так же перезаписываем класс ActionSkinningCB, но добавляем float GetDefaultTime() этот метод определяет продолжительность выполнения действия, так мы сможем назначить количество времени в секундах для определённых ножей.
-
1
-
-
@R0cky В папке Scripts/4_World ты должен создать текстовый документ с форматом .c и в нём прописать этот код
Спойлер
modded class ActionSkinningCB { override void CreateActionComponent() { m_ActionData.m_ActionComponent = new CAContinuousTime(5); } };
Только этот код изменит время резки на всех ножах.
Так же если в моде ранее небыли прописанны скрипты, то нужно в config.cpp дописать что бы DayZ видел код
Вот пример:Спойлер
class CfgMods { class sample { dir = "sample"; picture = ""; action = ""; hideName = 1; hidePicture = 1; name = "sample"; credits = ; author = ; authorID = "0"; version = 1.0; extra = 0; type = "mod"; dependencies[] = {"Game", "World", "Mission"}; class defs { class gameScriptModule { value = ""; files[] = {"sample/scripts/3_Game"}; }; class worldScriptModule { value = ""; files[] = {"sample/scripts/4_World"}; }; class missionScriptModule { value = ""; files[] = {"sample/scripts/5_Mission"}; }; }; }; };
Надеюсь я ответил на твой вопрос.
-
1
-
-
-
В 18.09.2023 в 18:47, immortal сказал:
Нужно установить диск /P: и распаковать гейм дату, так же если не настроено, то нужно установить в настройках Object Builder путь для текстур
Спойлер
Текстуры должны быть в формате ppa и если все условия соблюдены, то текстуры будут подгружаться из диска /P: прямиком в бульдозер.
-
1
-
-
@Sobranskiy Можно и не прописывать, я лишь указал это как пример.
-
1
-
-
Приветствую всех, в этом гайде я постараюсь максимально просто и без воды описать процесс создания своего оружия, если я где-то ошибся или у вас есть вопросы не стесняйтесь высказывать своё мнение.
Сразу прошу простить меня за оформление, это мой первый гайд и опыт по его написанию у меня не очень большой.
1.Импорт модели
Для начала нам нужно что? правильно модель, создадите вы сами или позаимствуете её с какой-нибудь игры это не важно, нам подойдёт любая, я для пример возьму ак-74 из игры сталкер.
Заходим в File>Import>Obj(в зависимости от формата вашей модели) и выбирайте свою модельВот наша модель с которой мы будем работать, обязательно проверьте не отзеркалена ли модель при импорте(такое бывает)
В данном примере модель отзеркалена от чего и вывернуты полигоны, для корректного отображения мы отразим её по координате X

Далее избавимся от ненужных деталей что бы у нас остался только один автомат Калашникова
Наложим текстуры на наш автомат, для этого выделяем всю модель и нажимаем кнопку У русскую или Е английскую, после чего в сплывающем окне во вкладке Texture вписывайте путь до текстуры AK74_Sample\Data\ak74_co.paa
Если после наложение текстуры она отображается неправильно, отразите так же UV развёртку.


Настроим кости что бы анимации автомата корректно отображались
В первую очередь назовём всю модель zbytek для того что бы в будущем накладывать ретекстур на автомат
bolt - так называем затвор для того что бы он отдёргивался при стрельбе и зарядке патрона/магазинаfiremode - для отображение смена режима огня
mag_release - для отображения скобы магазина
trigger - для анимирования спускания курка при стрельбе
magazine для визуального отображения заряжания магазина, но указывать надо прокси магазина, к ним мы как раз сейчас перейдём.
2.Позиционирование и Прокси
Начнём с правильного позиционирования что бы автомат правильно лежал в руках игрока, для этого создадим прокси автомата 74 из DayzСпойлер
В окне нажимаем на Browse и идём по пути \DZ\weapons\firearms\ak101\ak101, для этого у вас должна быть распакована Data Dayz в диске /P
Спойлер
Создался вот такой треугольник, это и есть прокси, не беспокойтесь в игре будет выглядеть нормально.
Теперь мы должны зайти в наш Buldozer.
При запуске мы увидим такую картину, нужно будет поправить положение нашей модели в Object Builder что бы они стояли в друг другеПримерно вот так
После того как выставили оружие правильно прокси автомата можно удалить, оно нам больше не понадобиться.
Создаём новый прокси магазина, я возьму прокси магазина от ак74 \DZ\weapons\attachments\magazine\magazine_ak74_30rnd
Выставим с помощью Object Builder его правильно двигая треугольник и сравнивая с Buldozer
Должно выглядеть примерно так
3.Лоды
С 1 по 4 лод это визуальные лоды, чем выше цифра тем дальше будет отображаться модель, на первом лоде ставим оригинальную модель, а дальше уменьшаем количество полигонов с помощью merge near что бы снизить нагрузку прогрузки оружия на дальних расстояниях для этого нужно перейти во вкладку Point>Merge near, нажимаем Detect, Object Builder сам вычислит правильное уменьшение полигонов и вершин, хотя в некоторых случаях он может определять неправильно и придаться поиграться со значениями самомуСпойлер
View-Pilot - это визуальный лод от первого лица, вставляйте в него модель оружия из первого лода.
Geometry - лод геометрии, от него зависит как будет вести себя оружие когда его кидают, вставляем сюда наиболее простую модель.
Создаём квадрат и подстраиваем его грани под нашу модельСпойлер
Нажимаем ОК
Спойлер
Появляется квадрат, его и подстраиваем под нашу модель
Спойлер
Обязательно в окне Named Properties создаём новое свойство, вписываем в Name autocenter, а в Value 0, тем самым мы отключаем авто центровку и наша модель будет всегда там где мы её оставили.
Далее укажем квадрат как компонент через инструмент Topology, для этого переходим в Structure>Topology>Find component.
View Geometry - нужна для возможности подобрать автомат через наведение на него курсора, вставляем туда квадрат из Geomtry lod.
Fire Geometry - это лод для того что бы пули не пролетали свкозь модель, а попадали в наше оружие, желательно в нём указать более подробную геометрию автомата, но в нашем примере сойдёт геометрия которую мы создали, вставляем ёё так же.
Memory - точки памяти которые игра использует для для воспроизведения некоторых функций, очень обширная тема и я попробую максимально сжато объяснить как это работает
boundingbox_max и boundingbox_min указывают границы нашей модели при спавне нашей модели в мире.
ce_center - указывает центр модели.
ce_radius - предотвращает спавн модели в стене или под столом, устанавливать её нужно чучуть за boundingbox_max и boundingbox_min
eye - куда будет прицеливаться игрок при штатном прицеле.
invview - откуда будет вестись обзор на модель в инвентаре.
konec hlavne и usti hlavne должны быть на одной оси для правильного вектора вылита пули, если поставить их неправильно, то оружие будет косить при выстреле
konec hlavne - начало вылета пули.
usti hlavne место откуда будет выходить Muzzle эффект или же эффект выстрела
nabojnicestart - место начала вылита пустых гильз
nabojniceend - сторона и расстояние куда гильзы будут отлетать
Из за ограничение по изображением постараюсь максимально информативно указать местоположение точек
4. Конфиги и скрипты.
Для начала настроим основной config.cppСпойлерclass CfgPatches // CfgPatches - это заголовочный класс аддона. Размещается в Config.cpp и содержит информацию о требованиях, содержимом и метаданных, описывающих аддон. Если конфиг не содержит CfgPatches, то он игнорируется при загрузке аддонов при запуске игры. { class MyAddon { // Информация для редактора units[] = {}; weapons[] = {"AK74_Custom"}; requiredVersion = 0.1; // Минимальная совместимая версия. Если версия игры ниже, то при запуске игры будет появляться всплывающее предупреждение. requiredAddons[] = {"DZ_Data","DZ_Scripts"}; // Необходимые аддоны, используемые для установки порядка загрузки. Если какой-либо из аддонов отсутствует, при запуске игры появится всплывающее предупреждение. }; }; class CfgMods { class MyAddon { dir = "AK74"; hideName = 1; hidePicture = 1; name = "For the guide"; // Имя вашего мода credits = "For the guide"; author = "For the guide"; authorID = "0"; version = "1.0"; extra = 0; type = "mod"; dependencies[] = {"World"}; class defs { class worldScriptModule { value = ""; files[] = {"AK74_Sample\Script\4_World"}; //Путь для скриптов World }; }; }; }; class Mode_Safe; class Mode_SemiAuto; class Mode_Burst; class Mode_FullAuto; class OpticsInfoRifle; class cfgWeapons { class Rifle_Base; //База которую мы подгружаем class AK74_Custom: Rifle_Base //Class нашего оружия, так он будет называться в админ меню при спавне { scope = 2; // Будет ли он доступен для спавна, если указать 0, то заспаванить в ручную его не получиться. displayName = "AK 74"; // название оружия в игре descriptionShort = "5,45-мм автомат Калашникова образца 1974 года"; // Описание автомата model = "AK74_Sample\Data\AK74.p3d"; // Здесь указываем путь к модели иначе оружие будет невидимым и не будет срелять. PPDOFProperties[]={1,0.5,50,160,4,10}; // Настройки размытия attachments[] = {}; // Аттачменты которые будут на оружии, мы их не выставляли, так что пропустит данный код itemSize[] = {7,3}; // Размер в инвентаре weight = 1600; // Вес оружия absorbency = 0; // Будет ли оружие намокать, 0 значит что не убдет repairableWithKits[] = {1}; // Можно ли починить оружие repairCosts[] = {25}; // Сколько будет стоить починка WeaponLength=0.56; barrelArmor=2.743; chamberSize = 1; // Сколько вмещает оружие без магазина chamberedRound = ""; chamberableFrom[]= // Какими патронами будет стрелять оружие { "Ammo_545x39", "Ammo_545x39Tracer" }; magazines[]= // Какие магазины подходят для оружия { "Mag_AK74_30Rnd", "Mag_AK74_30Rnd_Black", "Mag_AK74_30Rnd_Green", "Mag_AK74_45Rnd" }; magazineSwitchTime=0.2; ejectType = 1; recoilModifier[]={1,1,1}; swayModifier[]={2.2,2.2,1.2}; hiddenSelections[] = {"zbytek","camo","bolt"}; hiddenSelectionsTextures[] = { "AK74_Sample\Data\ak74_co.paa", "AK74_Sample\Data\ak74_co.paa", "AK74_Sample\Data\ak74_co.paa" }; modes[] = {"FullAuto","SemiAuto"}; // Указываем режимы огня, описывать подробно в данном гайде всё я не буду, дальше без коментариев class SemiAuto: Mode_SemiAuto { soundSetShot[] = {"AK_Shot_SoundSet","AK_Tail_SoundSet","AK_InteriorTail_SoundSet"}; soundSetShotExt[] = {{"AK_silencer_SoundSet","AK_silencerTail_SoundSet","AK_silencerInteriorTail_SoundSet"}}; reloadTime=0.12; recoil="recoil_AK74"; recoilProne="recoil_AK74_prone"; dispersion=0.0020000001; magazineSlot="magazine"; }; class FullAuto: Mode_FullAuto { soundSetShot[] = {"AK_Shot_SoundSet","AK_Tail_SoundSet","AK_InteriorTail_SoundSet"}; soundSetShotExt[] = {{"AK_silencer_SoundSet","AK_silencerTail_SoundSet","AK_silencerInteriorTail_SoundSet"}}; reloadTime=0.097999997; recoil="recoil_AK74"; recoilProne="recoil_AK74_prone"; dispersion=0.0020000001; magazineSlot="magazine"; }; class Particles { class OnFire { class SmokeCloud { overrideParticle = "weapon_shot_winded_smoke"; }; class MuzzleFlash { overrideParticle = "weapon_shot_ak74_01"; ignoreIfSuppressed = 1; illuminateWorld = 1; positionOffset[]={0,0,0}; }; class ChamberSmokeBurst { overrideParticle = "weapon_shot_chamber_smoke"; overridePoint = "Nabojnicestart"; overrideDirectionPoint = "Nabojniceend"; }; }; class OnOverheating { maxOverheatingValue=60; shotsToStartOverheating=25; overheatingDecayInterval=1; class SmokingBarrel1 { overrideParticle = "smoking_barrel_small"; onlyWithinOverheatLimits[]={0,0.5}; positionOffset[]={0.1,0,0}; onlyWithinRainLimits[]={0,0.2}; }; class SmokingBarrelHotSteam { overrideParticle = "smoking_barrel_steam"; onlyWithinOverheatLimits[]={0.5,0.80000001}; positionOffset[]={0.1,0,0}; onlyWithinRainLimits[]={0,0.2}; }; class SmokingBarrelHotSteamSmall { overrideParticle = "smoking_barrel_steam_small"; positionOffset[]={0.30000001,0,0}; onlyWithinRainLimits[]={0.5,1}; }; class OpenChamberSmoke { onlyIfBoltIsOpen = 1; overrideParticle = "smoking_barrel_small"; overridePoint = "Nabojnicestart"; }; }; class OnBulletCasingEject { class ChamberSmokeRaise { overrideParticle = "weapon_shot_chamber_smoke_raise"; overridePoint = "Nabojnicestart"; }; }; }; class OpticsInfo: OpticsInfoRifle { memoryPointCamera = "eye"; discreteDistance[] = {50,100,150,200,250,300}; discreteDistanceInitIndex = 0; modelOptics = "-"; distanceZoomMin = 50; distanceZoomMax = 300; }; class DamageSystem { class GlobalHealth { class Health { hitpoints = 250; healthLevels[] = { {1.0,{""}}, {0.7,{""}}, {0.5,{""}}, }; }; }; class GlobalArmor { class Projectile { class Health { damage = 0.1; }; }; }; }; }; };
Рядом с моделью создаём текстовый файл Model.cfg где указываем нужные кости которые мы указывали в самой модели, это нужно для правильной работы анимации оружия
Спойлерclass cfgSkeletons { class AK74 { skeletonInherit = ""; isDiscrete = 1; SkeletonBones[]= { "zbytek" ,"", "magazine" ,"", "trigger" ,"", "bolt" ,"", "firemode" ,"", "mag_release" ,"" }; }; }; class CfgModels { class Default { sections[] = {}; sectionsInherit=""; skeletonName = ""; }; class AK74:Default { skeletonName="AK74"; sections[]= { "zbytek" ,"", "magazine" ,"", "trigger" ,"", "bolt" ,"", "firemode" ,"", "mag_release" ,"" }; } }
После настройки нам нужно создать скрипт для разброса, анимации нашего оружия, создаём папки как в class defs, Script>4_World и там создаём наши скрипты формата .c
Animation.c - Указываем анимацию для нашего оружияСпойлерmodded class ModItemRegisterCallbacks // тут мы модифицируем класс ModItemRegisterCallbacks, важно использовать именно его ведь если использовать PlayerBase анимации будут очень нестабильными { override void RegisterFireArms( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) // Регистрируем анимацию { super.RegisterFireArms( pType, pBehavior ); pType.AddItemInHandsProfileIK("AK74_Custom",/*Тут указываем класс который мы указали в config.cpp*/ "dz/anims/workspaces/player/player_main/weapons/player_main_ak101.asi", pBehavior, "dz/anims/anm/player/ik/weapons/ak101.anm","dz/anims/anm/player/reloads/AK101/w_AK101_states.anm"); } };
Recoil_AK74.c - Тут мы указываем разброс оружия.
Спойлерclass AK74_Custom : RifleBoltFree_Base { override RecoilBase SpawnRecoilObject() { return new Ak74Recoil(this); } }; // Простенький код для указания наследования разброса оружия от Ak74Recoil
5. Заключение.
Спасибо за внимание, надеюсь гайд вам помог и вы поддержите меня для написания новых гайдов.
Для подробного изучения я выложи пример который вы сможете более подробно рассмотреть и разобрать > тык.-
6
-
2
-







windows не удаётся получить доступ к указанному устройству
in HELP with any questions
Posted
Я в своё время тоже столкнулся с такой ошибкой на WIN11, мне помог запуск запрета general (ALT5). Спустя какое-то время ошибка сама исчезла.
@TTO3EP