Ролевая система распределения оружия



Описание:
Скрипт ролевой системы распределения оружия. Скрипт специально для серверных миссий.
Суть: у каждого игрока на карте создается локальный ящик с тем вооружением, которое должно быть у бойца его профессии, т.е. у снайпера будет только снайперское оружие, а у спецназовца только специальное оружие и т.д.
На данный момент сделано четыре класса: танкист, боец, спецназовец, снайпер. В дальнейшем можно легко редактировать и создавать бесконечное количество вариаций классов: пулеметчики, разведчики, саперы и т.п.

Достоинства этой системы:
-Минимальная нагрузка на сервер
-Простота редактирования
-Система не требует от игрока каких-либо действий

Весь скрипт лежит в init.sqf с подробными пояснениями.

Как протестировать в редакторе:
-Выбираем из четырех юнитов игрока
-Запустить миссию

Init.sqf:
Код:
//--- Настройки классов оружия (Переменная WepnBox)
WepnBox = [
["AKS_74_U","Makarov"], /* Номер 0; Оружие танкистов/пилотов, т.е. Wepn = 0 */
["AK_74","AKS_74","AKS_74_pso","AK_47_M","FN_FAL"], /* Номер 1; Оружие солдата, т.е. Wepn = 1 */
["AKS_74_GOSHAWK","M16A2","Binocular_Vector","SCAR_L_CQC"], /* Номер 2; Оружие спецов, т.е. Wepn = 2 */
["SVD","M24_des_EP1"] /* Номер 3; Оружие снайпера, т.е. Wepn = 3 */
];

//--- Настройки боеприпасов к оружию (Переменная WepnMagBox)
WepnMagBox = [
["30Rnd_545x39_AK","8Rnd_9x18_Makarov"], /* Номер 0 */
["30Rnd_545x39_AK","HandGrenade_East","30Rnd_762x39_AK47","20Rnd_762x51_FNFAL"], /* Номер 1 */
["30Rnd_545x39_AK","HandGrenade_East","30Rnd_556x45_Stanag"], /* Номер 2 */
["10Rnd_762x54_SVD","5Rnd_762x51_M24"] /* Номер 3 */
];

//--- Настройки гранатометов (Переменная RPGBox)
RPGBox = [
[], /* У танкистов и снайперов нет гранатометов (RPG = 0) */
["RPG18","RPG7V"], /* Гранатометы солдата, т.е. RPG = 1 */
["MetisLauncher"] /* Гранатометы спецов, т.е. RPG = 2 */
];

//--- Настройки боеприпасов к гранатометам (Переменная RPGMagBox)
RPGMagBox = [
[],
["RPG18","PG7V","PG7VL","PG7VR","OG7"],
["AT13"]
];

Play_Box = "TKBasicWeapons_EP1" createVehicleLocal (getMarkerPos "Boxs"); //--- Создаем локальный (Local) ящик на маркере 'Boxs'
Play_Box setPos (getMarkerPos "Boxs");

clearWeaponCargo Play_Box; //--- Очищаем ящик от боеприпасов
clearMagazineCargo Play_Box;

if (player == crewman) then {Wepn = 0;RPG = 0;}; //--- Танкист получает всё оружие под номером 0 из переменной WepnBox
if (player == soldier) then {Wepn = 1;RPG = 1;}; //--- Солдат получает всё оружие под номером 1 из переменной WepnBox и все гранатометы под номером 1 из переменной RPGBox
if (player == spetsnaz) then {Wepn = 2;RPG = 2;}; //--- Cпец получает всё оружие под номером 2 из переменной WepnBox и все гранатометы под номером 2 из переменной RPGBox
if (player == sniper) then {Wepn = 3;RPG = 0;}; //--- Снайпер получает всё оружие под номером 3 из переменной WepnBox и все гранатометы под номером 3 из переменной RPGBox

{Play_Box addWeaponCargo [_x,1]} forEach (WepnBox select Wepn);
{Play_Box addMagazineCargo [_x,25]} forEach (WepnMagBox select Wepn);
{Play_Box addWeaponCargo [_x,1]} forEach (RPGBox select RPG);
{Play_Box addMagazineCargo [_x,25]} forEach (RPGMagBox select RPG);