Доброго утра, недавно добрые люди подкинули мне вариант как создавать пресеты экипировки в меню респауна, прямо как в компании из DLC APEX. Скрины:
И так, первое что нам надо это пройти в наш файл description.ext , а если его нет — то создать или вытащить из любой чужой миссии, и переписать под себя.
Кстати, тут его полное описание на официальном сайте BIS.
Но не не все пункты обязательны, хотя чем точнее миссия сделана — тем лучше она работает и больше возможностей имеет.
В файле description.ext пишем следующее:
respawnTemplates[] = {"MenuInventory","MenuPosition"};
Где MenuPosition — это Меню выбора точек респауна, как раз в котором и есть меню выбора пресетов оружия, а уже MenuInventory — это само меню выбора пресетов оружия.
Что бы работало меню выбора точек респауна, нам понадобится как минимум один маркер (можно «Система» → «Пусто». Более традиционный вариант.) с именем (это будет его переменная) respawn_ИМЯСТОРОНЫ .
Полное описание респауна сторон на официальном сайте BIS.
Теперь открываем тот же description.ext и внизу пишем вот что (это только пример, там экипировка из мода ACE 3):
class CfgRespawnInventory { class p1_eng { displayName = "Страшный дядька"; icon = "iconManEXP"; weapons[] = { "srifle_EBR_F", "launch_RPG32_F", "hgun_ACPC2_F", "ACE_VectorDay" }; magazines[] = { "MiniGrenade", "MiniGrenade", "MiniGrenade", "MiniGrenade", "HandGrenade", "HandGrenade", "HandGrenade", "HandGrenade", "SmokeShellGreen", "SmokeShellGreen", "SmokeShellGreen", "SmokeShellGreen", "20Rnd_762x51_Mag", "20Rnd_762x51_Mag", "20Rnd_762x51_Mag", "20Rnd_762x51_Mag", "20Rnd_762x51_Mag", "20Rnd_762x51_Mag", "20Rnd_762x51_Mag", "20Rnd_762x51_Mag", "20Rnd_762x51_Mag", "20Rnd_762x51_Mag", "20Rnd_762x51_Mag", "20Rnd_762x51_Mag", "RPG32_F", "RPG32_F", "RPG32_HE_F", "RPG32_HE_F", "RPG32_HE_F", "9Rnd_45ACP_Mag", "9Rnd_45ACP_Mag" }; items[] = { "ACE_EarPlugs", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_microDAGR", "ACE_Clacker", "ACE_MapTools" }; linkedItems[] = { "ItemMap", "ItemCompass", "ItemWatch", "ItemRadio", "I_UavTerminal", "NVGoggles_INDEP", "muzzle_snds_B", "ACE_acc_pointer_green", "optic_Arco", "bipod_01_F_blk", "ACE_muzzle_mzls_smg_01", "acc_flashlight_pistol", "optic_MRD", "H_HelmetIA", "V_PlateCarrierIA2_dgtl" }; uniformClass = "U_I_CombatUniform"; backpack = "B_Carryall_oli"; }; class p2_mgunner { displayName = "Пулемётчик лёгкий"; icon = "iconMan"; weapons[] = { "LMG_Mk200_F", "hgun_ACPC2_F", "Rangefinder" }; magazines[] = { "MiniGrenade", "MiniGrenade", "MiniGrenade", "MiniGrenade", "MiniGrenade", "MiniGrenade", "HandGrenade", "HandGrenade", "HandGrenade", "HandGrenade", "SmokeShellGreen", "SmokeShellGreen", "SmokeShellGreen", "SmokeShellGreen", "SmokeShellGreen", "SmokeShellGreen", "200Rnd_65x39_cased_Box_Tracer", "200Rnd_65x39_cased_Box_Tracer", "200Rnd_65x39_cased_Box_Tracer", "200Rnd_65x39_cased_Box_Tracer", "9Rnd_45ACP_Mag", "9Rnd_45ACP_Mag" }; items[] = { "ACE_EarPlugs", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_morphine", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_fieldDressing", "ACE_microDAGR", "ACE_MapTools", "ACE_Clacker", "APERSMine_Range_Mag", "APERSMine_Range_Mag" }; linkedItems[] = { "ItemMap", "ItemCompass", "ItemWatch", "ItemRadio", "I_UavTerminal", "NVGoggles_INDEP", "muzzle_snds_H", "ACE_acc_pointer_green", "optic_Hamr", "bipod_03_F_blk", "H_HelmetIA", "V_PlateCarrierIA2_dgtl" }; uniformClass = "U_I_CombatUniform"; backpack = "B_Kitbag_rgr"; Headgear = "H_HelmetIA"; Vest = "V_PlateCarrierIA2_dgtl"; }; };
Кстати, можно писать не в description.ext а в cfgRespawnInventory.hpp (не забывая создать его) , только тогда не забываем прописать в наш description.ext вот такую строчку:
#include "cfgRespawnInventory.hpp"
Здесь все класснеймы экипировки на официальном сайте BIS.
Важные моменты по коду экипировки:
class p1_eng — название нашего класса, соответственно, другой набор экипировки = другое название.
displayName = «Сапёр/Инженер»; — название что увидит игрок.
icon = «iconManEXP»; — иконка, наличие не принципиально.
Все прицелы и прочие приспособления для оружия что должны на нём висеть — заносятся в linkedItems .
Кроме того, каска и бронежилет тоже заносятся в linkedItems .
Сколько штук надо — столько раз и пишем строчку с нужным предметом.
При перечислении нужных предметов, важно что бы в последней строчке не было запятой — так как она последняя в контейнере!
После этого лезем в initPlayerLocal.sqf и пишем в нём:
Если нам надо персонально по классам, но с разными пресетами, то:
Код в чистом виде:
private _typeOfPlayer = typeOf player; switch _typeOfPlayer do { case "I_engineer_F" : { [player,"p1_eng"] call BIS_fnc_addRespawnInventory; [player,"p2_mgunner"] call BIS_fnc_addRespawnInventory; }; case "I_soldier_F" : { [player,"p3_recon"] call BIS_fnc_addRespawnInventory; }; };
Код с расшифровкой:
// Вызов лоудаутов private _typeOfPlayer = typeOf player; switch _typeOfPlayer do { case "I_engineer_F" : { //Если это данный класс, то [player,"p1_eng"] call BIS_fnc_addRespawnInventory; // первый вариант экипировки [player,"p2_mgunner"] call BIS_fnc_addRespawnInventory; // Второй вариант экипировки }; case "I_soldier_F" : { //Если это данный класс, то [player,"p3_recon"] call BIS_fnc_addRespawnInventory; //вариант экипировки }; };
или на всю сторону игрока (тут можно и через initServer.sqf)
Код в чистом виде:
[west, "Rifleman1"] call BIS_fnc_addRespawnInventory; [west, "Grenadier1"] call BIS_fnc_addRespawnInventory; [west, "Marksman1"] call BIS_fnc_addRespawnInventory;
Код с расшифровкой:
[west, "Rifleman1"] call BIS_fnc_addRespawnInventory; //сторона, тип экипировки [west, "Grenadier1"] call BIS_fnc_addRespawnInventory; //сторона, тип экипировки [west, "Marksman1"] call BIS_fnc_addRespawnInventory; //сторона, тип экипировки
Обсудить этот метод можно в нашем Discord канале