ГОТОВЫЙ ВАРИАНТ РЕШЕНИЯ ПРОБЛЕМЫ ПО ДАННОЙ ТЕМЕ
Чтобы всем видно было))
Итак, в init.sqf следующий код кидаем (ещё раз спасибо SteelRat):
#include "bis_fnc_saveInventory_data.inc"
_unitsClass = ["B_recon_F", "B_Soldier_SL_F", "B_soldier_M_F","B_soldier_LAT_F","B_medic_F"]; // тут те классы, экипировку которых заменяем
_replace = [];
{
_replace set [count _replace, toLower(_x)];
} foreach _unitsClass;
_unitsClass = _replace;
if(!isDedicated) then
{
waitUntil {!isNull player}; // обязательно ждем подключения игрока, иначе будет куча недоразумений при его подключении в середине матча
if (toLower(typeOf player) in _unitsClass) then {
player call compile format["[_this, [missionnamespace, '%1']] call BIS_fnc_loadInventory", typeOf player];
player addEventHandler ["Respawn",{
(_this select 1) removeAllEventHandlers "Respawn";
(_this select 0) call compile format["[_this, [missionnamespace, '%1']] call BIS_fnc_loadInventory", typeOf (_this select 0)];
}];
};
0 = [] execVM "InArsenal.sqf"; //в этом файле будет проверка на тот факт, октрыт виртуальный арсенал у игрока или нет
};
файл bis_fnc_saveInventory_data.inc:
bis_fnc_saveInventory_data = [
"B_recon_F",
[
["U_I_G_resistanceLeader_F", ["FirstAidKit"]],
["V_Rangemaster_belt", ["30Rnd_65x39_caseless_mag", "30Rnd_65x39_caseless_mag"]],
["B_Carryall_khk", ["HandGrenade"]],
"",
"",
"Binocular",
["arifle_MX_ACO_pointer_F", ["30Rnd_65x39_caseless_mag"]],
["", []],
["", []],
[]
],
"B_Soldier_SL_F",
[
// сообразите что тут
]
];
Про вышеописанное SteelRat писал тут
Файл InArsenal.sqf:
if(!isDedicated) then // возможно, это уже не нужно, но мне лень было проверить
{
while {true} do
{
waituntil { !isNull ( uiNamespace getVariable [ "BIS_fnc_arsenal_cam", objNull ] )};
player sidechat "Я в виртуальном арсенале";
waituntil { isNull ( uiNamespace getVariable [ "BIS_fnc_arsenal_cam", objNull ] )};
player sidechat "Я закончил менять снаряжение";
[player, [player, "inv"]] call BIS_fnc_saveInventory;
player removeAllEventHandlers "Respawn"; // возможно, тут легче вставить то, что в ините было,
// но мне проще было по моему
};
};
И ещё пара мелочей:
в description.ext
class CfgRespawnTemplates
{
class m_Respawn
{
onPlayerRespawn = "AfterPlayerRespawn.sqf";
};
};
respawnTemplates[] = {"m_Respawn"};
и в AfterPlayerRespawn.sqf ещё одну строчку:
loadout = [player, [player, "inv"]] call BIS_fnc_loadInventory;
Немного потестил, вроде всё работает как надо - та снаряга, которую Вы выбрали в ВА, будет с вами и после респа, ну и при первом респе с вами будет снаряга соответствующего класса из bis_fnc_saveInventory_data.inc
P.S. Конечно, все это дело можно упростить, но мне как то было так проще, да и переделывать уже лень))
Сообщение отредактировал shaman33: 28 April 2015 - 14:08