Привет
Суть попробую изложить
Предположим у тебя есть вещь какая-нибудь, пусть это будет шмотка из мода WeaponExpansion . Предположим ACR. Допустим стоит задача сделать его меньше в габаритах в инвентаре, чтобы он занимал не 8x3 клеток, а 6x3.
Первое, что тебе надо понять-вообще всё содержимое игры находится в .pbo, хоть ванильное, хоть модовое. Тут тебе надо изучать самые основы модостроения. Не устану рекомендовать плейлист от @Warcat06 на Youtube, очень доходчиво и постепенно. https://www.youtube.com/@Kramtsov
После того как с этим разберешься будет более менее понятно то, что будет написано ниже.
Открываем PBO любым удобным тебе способом, ищем ACR, ищем конфиг, разбинариваем с помощью cfgConvert, открываем через Notepad++ или чем удобнее.
Предстает следующая картина
{
class WE_ACR
{
units[]={};
weapons[]=
{
"WE_ACR"
};
requiredVersion=0.1;
requiredAddons[]=
{
"DZ_Data",
"DZ_Weapons_Firearms",
"DZ_Weapons_Ammunition",
"DZ_Weapons_Magazines",
"DZ_Weapons_Muzzles",
"DZ_Weapons_Optics",
"AmmunitionExpansion"
};
};
};
///код-код-код
class WE_ACR: WE_ACR_Base
{
scope=2;
displayName="ACR";
descriptionShort="The Bushmaster Adaptive Combat Rifle (Bushmaster ACR) is a modular selective-fire rifle designed by Magpul Industries. Chambered in .300 Blackout rounds.";
model="WeaponExpansion\Rifles\ACR\ACR.p3d";
attachments[]=
{
"weaponOptics",
"weaponWrap",
"weaponMuzzleM4",
"weaponBayonet"
};
hiddenSelectionsTextures[]=
{
"WeaponExpansion\Rifles\ACR\data\ACR_co.paa",
"WeaponExpansion\Rifles\ACR\data\ACR_co.paa"
};
hiddenSelectionsMaterials[]=
{
"WeaponExpansion\Rifles\ACR\data\ACRMetal.rvmat",
"WeaponExpansion\Rifles\ACR\data\ACRPlastic.rvmat"
};
itemSize[]={8,3};
class DamageSystem
{
class GlobalHealth
{
class Health
{
hitpoints=200;
healthLevels[]=
{
{
1,
{
"WeaponExpansion\Rifles\ACR\data\ACRMetal.rvmat",
"WeaponExpansion\Rifles\ACR\data\ACRPlastic.rvmat"
}
},
{
0.69999999,
{
"WeaponExpansion\Rifles\ACR\data\ACRMetal.rvmat",
"WeaponExpansion\Rifles\ACR\data\ACRPlastic.rvmat"
}
},
{
0.5,
{
"WeaponExpansion\Rifles\ACR\data\ACRMetal_damage.rvmat",
"WeaponExpansion\Rifles\ACR\data\ACRPlastic_damage.rvmat"
}
},
{
0.30000001,
{
"WeaponExpansion\Rifles\ACR\data\ACRMetal_damage.rvmat",
"WeaponExpansion\Rifles\ACR\data\ACRPlastic_damage.rvmat"
}
},
{
0,
{
"WeaponExpansion\Rifles\ACR\data\ACRMetal_destruct.rvmat",
"WeaponExpansion\Rifles\ACR\data\ACRPlastic_destruct.rvmat"
}
}
};
};
};
};
};
};
Нас интересует
itemSize[]={8,3};
Править напрямую в этом pbo мы не можем, поэтому нам нужно создать свой мод, который будет перезаписывать параметр, заданный в этом pbo.
Создаем папку для будущего мода, делаем иерархию папок как нам удобно, желательно под каждую категорию объектов и/или сами объекты делать отдельную папочку, так хоть не запутаешься.
Например вот так
Создаем текстовый файл, переименовываем в config.cpp, открываем
Не уверен, что правильно делать как я сейчас опишу, но у меня пока проблем не возникало:
Копируем верхушку cfgPatches с родительского конфига (тот, что в оригинальном моде), вставляем в наш новый config.cpp, переименовываем "WE_ACR" во что-то свое, например в "WE_ACR_Recfg"
Добавляем все классы, объявленные до cfgWeapons
Далее открываем cfgWeapons. Так как мы делаем не новое оружие, а лишь перезаписываем конфигурацию уже существующего нам не нужно полностью расписывать конфиг этого оружия, нам достаточно только указать перезаписываемые параметры. Объявляем WE_ACR_Base
class cfgWeapons
{
class WE_ACR_Base;
};
Объявляем WE_ACR, которая наследует параметры от базовой версии, открываем фигурные скобки, закрываем. Вписываем интересующие нас параметры, в нашем случае это itemSize
class cfgWeapons
{
class WE_ACR_Base;
class WE_ACR: WE_ACR_Base
{
itemSize[]={6,3};
};
};
Почти готово. Теперь, чтобы всё 100% работало нужно сделать так, чтобы наш измененный (хоть и частичный) конфиг загружался после родительского, чтобы перезапись сработала правильно. Для этого в графе
requiredAddons[]= мы добавляем родительский pbo. В нашем случае оружие хранится в PBO с названием "WE_Rifles":
requiredAddons[]=
{
"DZ_Data",
"DZ_Weapons_Firearms",
"DZ_Weapons_Ammunition",
"DZ_Weapons_Magazines",
"DZ_Weapons_Muzzles",
"DZ_Weapons_Optics",
"AmmunitionExpansion",
"WE_Rifles"
};
};
Итого весь конфиг для этой винтовки будет выглядеть примерно так:
class CfgPatches
{
class WE_ACR_Recfg
{
units[]={};
weapons[]=
{
"WE_ACR"
};
requiredVersion=0.1;
requiredAddons[]=
{
"DZ_Data",
"DZ_Weapons_Firearms",
"DZ_Weapons_Ammunition",
"DZ_Weapons_Magazines",
"DZ_Weapons_Muzzles",
"DZ_Weapons_Optics",
"AmmunitionExpansion",
"WE_Rifles"
};
};
};
class Mode_Safe;
class Mode_SemiAuto;
class Mode_Burst;
class Mode_FullAuto;
class OpticsInfoRifle;
class cfgWeapons
{
class WE_ACR_Base;
class WE_ACR: WE_ACR_Base
{
itemSize[]={8,3};
};
};
Сохраняем, катаем pbo, делаем мод, подключаем на сервер, заходим на сервер, проверяем.
Очень примечательно, что фактическое и "именное" название pbo спокойно могут не совпадать. Например, в моде что мы только что ковыряли через проводник pbo называется Rifles, в то время как по факту название "WE_Rifles". Как узнать действительное название pbo'шки, которое кушает игра:
В любой pbo есть её генеральный конфиг. Открываем этот конфиг, читаем. Интересует объявленный в cfgMods класс, в нашем случае это :
class CfgMods
{
class WE_Rifles
Как-то так. Объяснил максимально на пальцах, надеюсь помог