Jump to content


Photo

Экипировка юнитов


  • Please log in to reply
80 replies to this topic

#81 OFFLINE   VeryScary

VeryScary

    Рядовой

  • Пользователи
  • 14 posts

Posted 21 March 2017 - 05:47

И снова, Здравствуйте!

Тему сегодняшнего извращения мне подкинул один пост на этом форуме.

 

И так, коллеги, давайте реализуем такую фишку, загрузим инвентарём униформу, разгрузку и мешок, лежащие ну например в вапон боксе, тоже самое будет применительно к инвентарю техники, или  к классу WeaponHolder, лежащему на земле и содержащему в себе интересующие нас предметы.

 

Начнём

 

Создайте в папке с миссией папку

functions

если у вас её ещё нет

 

В этой папке создайте текстовый файл с названием

fn_loadWeaponHolder.sqf

И скопируйте в этот файл код

/*
	Загрузка инвентаря в униформы, разгрузки и мешки лежащие в вапон боксах и технике.
	
	Пример вызова:
	[_box, (missionConfigFile/"CfgLoadWeaponHolder")] execVM "Functions\fn_loadWeaponHolder.sqf";
	
	created by SteelRat
*/

_holder 	= _this select 0;				//	Объект контейнер
if (isNull _holder) exitWith {};			//	Если объект не существует завершаем работу функции
_config		= _this select 1;				//	Конфигурационный файл с данными для загрузки
if !(isClass _config) exitWith {};			//	Если конфиг не существует завершаем работу функции

{
	_contClass	= _x select 0;	//	Класс контейнера, который будем загружать инвентарём
	_contObj	= _x select 1;	//	Объект контейнер, с которым будем работать
	
	{
		_item = _x;
		if (typename _item == typename []) then {_contObj addWeaponCargoGlobal _item};
	} foreach (getarray (_config/_contClass/"weapons"));
	
	{
		_item = _x;
		if (typename _item == typename []) then {_contObj addMagazineCargoGlobal _item};
	} foreach (getarray (_config/_contClass/"magazines"));
	
	{
		_item = _x;
		if (typename _item == typename []) then {_contObj addItemCargoGlobal _item};
	} foreach (getarray (_config/_contClass/"items"));
	
} foreach (everyContainer _holder);

Далее, я уверен, многими самое обожаемое), конфиг, в папке с миссией создайте текстовый файл с названием

CfgLoadWeaponHolder.hpp

И скопируйте в него это

class CfgLoadWeaponHolder {
	
	//	В этой части можно определить базовое содержимое для всех перечисленных классов конкретного типа
	class Uniform_Base {
		items[] = {{"FirstAidKit", 1}};
	};
	
	class Vest_Base {
	
	};
	
	class Backpack_Base {
	
	};

	//	Далее описываете какой класс что будет содержать в себе
	class U_B_CombatUniform_mcam: Uniform_Base {
		magazines[] = {{"SmokeShell", 1}};
	};
	
	class V_PlateCarrier1_rgr: Vest_Base {
		weapons[] = {{"hgun_P07_F", 1}};
		magazines[] = {{"16Rnd_9x21_Mag", 5}, {"HandGrenade", 3}};
		items[] = {{"ItemWatch", 1}};
	};
	
	class B_Carryall_cbr: Backpack_Base {
		weapons[] = {{"arifle_MX_ACO_F", 1}};
		magazines[] = {{"30Rnd_65x39_caseless_mag", 5}, {"Chemlight_green", 3}};
		items[] = {{"NVGoggles", 1}, {"ItemCompass", 1}};
	};
};

В файл description.ext добавьте это

#include "CfgLoadWeaponHolder.hpp"

Ну и на десерт код, для практических упражнений

_box = createVehicle ["Box_NATO_Wps_F", [0,0,0], [], 0, "NONE"];

clearBackpackCargoGlobal _box;
clearItemCargoGlobal _box;
clearMagazineCargoGlobal _box;
clearWeaponCargoGlobal _box;

_box addBackpackCargoGlobal ["B_Carryall_cbr",1];
_box addItemCargoGlobal ["U_B_CombatUniform_mcam",1];
_box addItemCargoGlobal ["V_PlateCarrier1_rgr",1];

[_box, (missionConfigFile/"CfgLoadWeaponHolder")] execVM "Functions\fn_loadWeaponHolder.sqf";

_box setPosATL (player modelToWorld [0,2,0]);

Приятного аппетита, коллеги, и как всегда не стесняемся задавать вопросы, если таковые будут.

а в игре что и куда потом прописать, что бы это заработало?


  • 0




Яндекс.Метрика