Начну с того что любая жидкость это константа, в этом убедиться можно открыв файл constants.c в dta\scripts\3_Game
Для того чтобы новая жидкость была надо добавить ее константу для этого и модифицируем constants.c оставив в файле просто
const int LIQUID_Названиежидкость = ее число в 2 двоичной системе. Последняя константа жидкости будет: LIQUID_SOLUTION = 65536 о чем в файле есть такой комментарий от разработчиков. Вот это число и умножаем на 2 и получаем что новая константа жидкости будет иметь число 131072 и так далее. Для каждой новой константы мы всегда умножаем предыдущее число на 2 и будем получать число в двоичной системе.
// BEWARE ALL INDIVIDUAL LIQUID TYPES ARE ALSO REPRESENTED CONFIG-SIDE AND MUST MATCH(all changes must be made on both sides)
// NOTE ANY NUMBER HERE MUST BE A 0 OR ANY POWER OF TWO, THERE IS A MAXIMUM OF 32 INDIVIDUAL LIQUID TYPES POSSIBLE
Получаем интересующий нас результат и сохраняем файл constants.c
const int LIQUID_CONIAC = 131072;
Далее жидкость надо определить в классе. Добавлять класс можно куда угодно в config.cpp:
class CfgLiquidDefinitions {
class Coniac {
type = 131072;
displayName = "$STR_cfgLiquidDefinitions_Coniac0";
flammability = 0;
class Nutrition {
fullnessIndex = 1;
energy = -15;
water = 25;
nutritionalIndex = 75;
toxicity = 0.00007;
digestibility = 2;
};
};
};
После чего в файле stringtable.csv где делается перевод предметов нужно добавить следующее:
"Language","original","english","czech","german","russian","polish","hungarian","italian","spanish","french","chinese","japanese","portuguese","chinesesimp",
"str_cfgliquiddefinitions_coniac0","$UNT$Coniac","$UNT$Coniac","$UNT$Coniac","$UNT$Coniac","$UNT$Coniac","$UNT$Coniac","$UNT$Coniac",
"str_cfgliquidtypes_Coniac0","$UNT$Coniac","$UNT$Coniac","$UNT$Coniac","$UNT$Coniac","$UNT$Coniac","$UNT$Coniac","$UNT$Coniac",
"inv_inspect_coniac","CONIAC","CONIAC","CONIAC","CONIAC","КОНЬЯК","Coniac","CONIAC",
Таким образом в файле перевода у нас есть определение данной жидкости что это Коньяк, а не вода или что-то еще.
Последним завершающим шагом будет модифицирование InspectMenuNew.c целиком отдельные функции нельзя оверайдить да и так будет лучше, который храниться тут dta\scripts\5_Mission\GUI
ищем такую строчку в файле:
case LIQUID_SALINE:
{
WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "#inv_inspect_saline", Colors.COLOR_LIQUID);
break;
}
Копируем эту же строчку ниже и изменяем на свои данные и получаем следующее:
case LIQUID_CONIAC:
{
WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "#inv_inspect_coniac", Colors.BROWN);
break;
}
Сохраняем файл.
Также нам надо добавить новый класс предмета обозначающего что в нем храниться данная жидкость и ничего более
class CfgVehicles {
class Bottle_Base;// External class reference
class ConiacBottle : Bottle_Base {
scope = 2;
displayName = "$STR_CfgVehicles_ConiacBottle0";
descriptionShort = "$STR_CfgVehicles_ConiacBottle1";
model = "\dz\gear\drinks\VodkaBottles.p3d";
weight = 450;
itemSize[] = {1, 3};
destroyOnEmpty = 0;
varQuantityDestroyOnMin = 0;
varLiquidTypeInit = 131072;
liquidContainerType = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024 + 2048 + 4096 + 8192 + 16384 + 32768 + 65536 + 131072 - (1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256);
varQuantityInit = 500.0;
varQuantityMin = 0.0;
varQuantityMax = 500.0;
};
};
Получилась бутылка коньяка на базе водочной бутылки, но теперь в ней не Водка, а Коньяк. Перевод предмета можно добавить в stringtable.csv для этого ниже что у вас в файле последним написано добавляем
"STR_CfgVehicles_ConiacBottle0","Coniac Bottle","Coniac Bottle","","","Бутылка коньяка","","",
"STR_CfgVehicles_ConiacBottle1","Описание на английском","Описание на английском","Описание на Чешском","На Немецком","На Русском","На Польском","На Венгерском",
Помимо этого в скриптах dta\scripts\4_World\Entities\ItemBase\Gear\Drinks\ нужно добавить маленький скрипт. Такой путь используется если моддите прям на сервере тогда в батнике нужно указывать параметр -FilePatching чтобы читалось из распакованной папки скриптов
Ну а если мод то указывать в config.cpp пути до папок 4_World и 5_Mission
Запаковываем это всё в мод, подгружаем обновленные данные на сервер и клиент и радуемся, что добавили новую жидкость.
ConiacBottle.rar