Добро пожаловать Гость, Вы в разделе: Вход

Энциклопедия по редактору Arma, Arma 2, Arma 3 и Operation Flashpoint

VKRSSRSS
На главную

Навигация


Искать в энциклопедии:
»


Важная информация




Сайт управляется

Учебник по написанию скриптов
Изображение



Учебник по созданию роликов


Изображение




Наши партнеры



ArmA 3, ArmA 2 news Russian community, SARMAT community

Введение

101 способ как настроить оружие в Arma 3.


Прошу помнить о лицензии моддинга в Arma 3: ЛИЦЕНЗИЯ


Новые возможности по сравнению с A2/OA

  • Возможность добавлять в слоты приспособления, тем самым совершенствуя оружие
  • Стандартные анимации перезарядки
  • Сменяющийся прицел
  • Подводное оружие
  • Возможность поварачивать дуло
  • Защита от взрыва

Требования к модели {p3d}



  • прокси для сменных приспособлений
    • Модификации для ствола оружия следует разместить в прокси \A3\data_f\proxies\weapon_slots\MUZZLE
    • Оптический прицел разместить в прокси \A3\data_f\proxies\weapon_slots\TOP
    • Боковые кронштейны (side accessory) следует разместить в прокси \A3\data_f\proxies\weapon_slots\SIDE

Все эти прокси могут быть определены повторно при помощи cfgWeapons >> Weapon >> WeaponSlotsInfo >> XXX >> linkProxy параметра, где XXX - имя слота


  • Для складного механического прицельного приспособления
    • Вам необходимо создать выборные элементы (selections) и оси для механического прицела, если вы хотите, чтобы он складывался, как только оптический прицел будет установлен на оружие
    • Переднюю часть нужно назвать ForeSight с ForeSight_axis во внутренней памяти LOD (возможно, LOD - уровень детализации)
    • Заднюю часть нужно назвать BackSight с BackSight_axis во внутренней памяти LOD

  • Сменяющийся прицел для реактивных гранатометов
    • Необходимо наличие выборного элемента, который можно было бы вращать ( в случае с коллиматорными прицелами), по умолчанию имеющий название OP
    • Данный элемент должен иметь ось во внутренней памяти lod, по умолчанию имеющий название OP_axis
    • Необходимо наличие точки фокусировки, наилучшее место - это красное пятнышко на каллиматоре, с запоминающей точкой, по умолчанию, OP_look и несколькими точками для просмотра - обычно это OP_eyeX, где X - это количество точек. Опыт показывает, что лучшего всего их разместить на одинакавом расстоянии от точки фокусировки.


Изменения конфигурации модели {model.cfg}

  • стандартные анимации перезарядки прекрасным образом используют новый добавленный параметр unHideValue для скрытого типа анимаций - теперь, вы можете создать асимметричные анимации, скажем для того чтобы скрыть магазин оружия:

 {model.cfg}
 			class magazine_hide
 			{
 				type = "hide";
 				source = "reloadMagazine";
 				selection = "magazine";
 				minValue = 0.000000;
 				maxValue = 1.00000;
 				hideValue = 0.220;
 				unhideValue = 0.550;
 			};

  • Складываемые механические прицелы используют контроллер hasOptics


{model.cfg}
 			class BackSight_optic
 			{
 				type = "rotation";
 				source = "hasOptics";
 				selection = "BackSight";
 				axis = "BackSight_axis";
 				memory = 1;
 				minValue = 0.0000000;
 				maxValue = 1.0000000;
 				angle0 = 0.000000;
 				angle1 = (rad 90);
 			};


  • Новые контроллеры анимации zeroing и zeroing2 берут значения из discreteDistance[] первого и второго ствола оружия. Значение - это индекс числа текущего zeroing в массиве, который начинает с 0 ( это значит, что первое значение равно 0, второе - 1, последнее - это число дискретной дистанции (discreteDistance) + 1).Можно использовать для механических прицелов ( мушек) оружия, но лучше всего для поворта коллиматорных прицелов UGL:


 {model.cfg}
 			class OP_ROT
 			{
 				type="rotation";
 				source="zeroing2";            //использует zeroing  второго ствола для вращения
 				sourceAddress="loop";     // цикл (loop), когда выходит за границы
 				selection="OP";       // выбранный элемент, который мы хотим повернуть 
 				axis="OP_axis";                  // имет свою собственную ось
 				minValue=0;
 				maxValue=3;   // данное оружие имеет массив с 4 дистанциями
 				angle0="rad 0";
 				angle1="rad 65";
 			};


  • поворот дула выполняется при помощи новой анимации ammoRandom, которое меняет значение каждый раз, когда из оружия стреляют.Степень вращения может быть задана путем использования надлежащей формы дула и minValue maxValue

{model.cfg}
 			class MuzzleFlashROT
 			{
 				type="rotationX";
 				source="ammoRandom";            //использует расчет боеприпасов, как этап анимации
 				sourceAddress="loop";     //цикл (loop), когда выходит за границы
 				selection="zasleh";       //выбранный элемент, который мы хотим повернуть
 				axis="";                  //нет собственной оси -  центр вращения вычисляется из выбранного элемента
 				centerFirstVertex=true;   //принимает  первую вершину выбранного эдемента за центр вращения
 				minValue=0;
 				maxValue=4;               //угл вращения будет 360/4 = 90 градусов
 				angle0="rad 0";
 				angle1="rad 360";
 			};


Новые параметры конфигурации {config.cpp}

Оружие добавляемое в слоты

  • Доступные слоты заданы для каждого отдельного вида оружия, но обычно они наследуются от родительского оружия. Они хранятся в виде классов в WeaponSlotsInfo, который содержит информацию о слотах и параметрах для инвентаря.
    • Mass - это новая единица применяемая для описания веса и объема используемого объекта.
    • allowedSlots[] - это массив числа слотов,в которые вы можете положить оружие. 701 для бронежилета, 801 - для унифеормы, 901 - для рюкзака.
    • каждый слот под оружие - это отдельный подкласс в WeaponSlotsInfo
      • параметр linkProxy определяет прокси в оружейной модели для вышеупомянутого слота
      • параметр displayName описывает имя в слоте при наведении курсора на предмет
      • массив compatibleItems[] перечисляет возможные приспособления для оружия, которая можно разместить в данный слот. Большинство оружия способно иметь любое RIS оборудование, но допустим модификации для ствола зависят от типа калибра.
    • внешние классы CowsSlot и PointerSlot используются для стандартных оптических прицелов и боковых кронштейнов (side accessory). Т.е эти классы не входят в cfgWeapons и их изменение распространяется на все виды оружия.

 class SlotInfo;
 class CowsSlot : SlotInfo
 {
 	// Указываем прокси
 	linkProxy = "\A3\data_f\proxies\weapon_slots\TOP";
 
 	// Отображаемое имя
 	displayName = $STR_A3_CowsSlot0;
 
 	// название классов с указанием модификаций, который поддерживает оружие
 	compatibleItems[] = {"optic_Arco","optic_aco", "optic_ACO_grn","optic_hamr","optic_Holosight"};
 }; 
 class PointerSlot : SlotInfo
 {
 	//Указываем прокси
 	linkProxy = "\A3\data_f\proxies\weapon_slots\SIDE";
 
 	//Отображаемое имя
 	displayName = $STR_A3_PointerSlot0;
 
 	//название классов с указанием модификаций, который поддерживает оружие
 	compatibleItems[] = {"acc_flashlight","acc_pointer_IR"}; 
 };
 
 class cfgWeapons
 {  
 	class myWeapon
 	{
 		class WeaponSlotsInfo
 		{
 			mass = 4; /// default mass of a weapon
 			class MuzzleSlot : SlotInfo
 			{
 			  //Указываем прокси
 			  linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
 
 			  // Отображаемое имя
 			  displayName = "Muzzle Slot";
 
 			  //название классов с указанием модификаций, который поддерживает оружие
 			  compatibleItems[] = {}; // распространяется на все виды оружия
 			};
 			class CowsSlot: CowsSlot {};
 			class PointerSlot: PointerSlot {};
 			allowedSlots[] = {901}; // поскольку, вы просто не сможете засунуть это в ваши штаны 
 		};
 	};
 };


Модификация ствола (muzzle)

  • Устройство для подавления шума ( глушители) рассматривается,как оружие наследующее некоторые признаки из класса ItemCore
  • Сам класс состоит только из прицела, отображаемого имени, картинки и модели, существует отдельный подкласс ItemInfo со всеми требуемыми параметрами
    • Так же есть подкласс MagazineCoef внутри класса ItemInfo с параметром initSpeed - это лишь множитель initSpeed магазина оружия
    • подкласс AmmoCoef класса ItemInfo обладает большим числом параметров для используемых боеприпасов при стрельбе через глушитель:
      • hit - это коэффициент повреждения, наносимого стандартными боеприпасами
      • visibleFire, audibleFire, visibleFireTime и audibleFireTime - коэффициенты обнаружения при стрельбе из оружия
      • Чем выше коэффициент cost, тем больше внимания ИИ будут обращать на звук, возникающий при стрельбе через глушитель
      • Коэффициенты typicalSpeed и airFriction изменяют баллистические характеристики боеприпасов.
    • Непосредственно внутри класса ItemInfo существуют альтернативные коэффициента muzzleEnd и alternativeFire, которые позволяют задать различные эффекты при стрельбе из оружия ( например, дульного пламени)
    • Вы можете задать конкретные режимы огня - modes[] для оружия с устройством для подавления шума, непосредственно через класс ItemInfo

class Mode_SemiAuto;
 class cfgWeapons
 {
 	class ItemCore;
 	class InventoryMuzzleItem_Base_F;	
 	class myMuzzleAccessory
 	{
 		scope = 2;
 		displayName="My Muzzle Accessory";
 
 		picture="\A3\weapons_F\Data\UI\myMuzzleAccessory_CA.paa";
 		model = "\A3\weapons_f\acc\myMuzzleAccessory";	
 		
 		class ItemInfo: InventoryMuzzleItem_Base_F
 		{	
 			class MagazineCoef
 			{
 				initSpeed = 0.8;
 			};
 
 			class AmmoCoef
 			{
 				hit=0.8;
 				visibleFire=0.3;
 				audibleFire=0.8;
 				visibleFireTime=0.5;
 				audibleFireTime=1.0;
 				cost = 1.0;
 				typicalSpeed= 0.8;
 				airFriction = 1.0;      
 			}; 
 
 			muzzleEnd = "zaslehPoint"; // точка запоминания в модели глушителя 
 			alternativeFire = "Zasleh2";  // класс в  cfgWeapons с моделью дульного пламя
 
 			modes[] = {"Single"};
 
 			class Single: Mode_SemiAuto
 			{
 				begin1[]={"A3\sounds_f\weapons\silenced\silent-25.wav", db0, 1,600};
 				begin2[]={"A3\sounds_f\weapons\silenced\silent-26.wav", db0, 1,600};
 				soundBegin[]={begin1,0.5, begin2,0.5};
 
 				closure1[]={"A3\sounds_f\weapons\closure\closure_rifle_2.wav", db0, 1,300};
 				closure2[]={"A3\sounds_f\weapons\closure\closure_rifle_3.wav", db0, 1,300};
 				soundClosure[]={closure1,0.5, closure2,0.5};
 
 				weaponSoundEffect  = "DefaultRifle";
 			};
 		};
 	};
 };


Оптический прицел

  • Помимо стандартных параметров, упомянутых в классе модификации ствола, еще существует weaponInfoType, который позволяет выбрать соотвествующий ресурс для данных оружия прямо внутри класса optic
    • Существует схожий ItemInfo подкласс, но уже с другими параметрами
      • Не забывайте о том,если вы в друг решили переименовать точки запоминания ( memory points), что подкласс ItemInfo наследует части параметров из InventoryOpticsItem_Base_F ( такие как, muzzlePos и muzzleEnd)
    • Параметр opticType применяется для установления баланса между оптиескими устройствами и конкретными режимами ведения огня
    • modelOptics - это двухмерная модель для выбранной оптики
    • Подкласс OpticsModes работает так же, как и в A2/OA

 class cfgWeapons
 {
 	class ItemCore;
 	class InventoryOpticsItem_Base_F;	
 	class myOpticsAccessory
 	{
 		scope = 2;
 		displayName="My Optics Accessory";
 
 		picture="\A3\weapons_F\Data\UI\myOpticsAccessory_CA.paa";
 		model = "\A3\weapons_f\acc\myOpticsAccessory";	
 		weaponInfoType = "RscOptics_myOptics"; 
 		
 		class ItemInfo: InventoryOpticsItem_Base_F
 		{	
 			mass = 7;
 			modelOptics="\A3\Weapons_f\acc\reticle_MyOptics_F"; 
 			class OpticsModes
 			{
 				class MyOptics
 				{
 					opticsID = 1;
 					useModelOptics = true;
 					opticsPPEffects[]={"OpticsCHAbera1","OpticsBlur1"};
 					opticsZoomMin = 0.0555;
 					opticsZoomMax = 0.1300;
 					opticsZoomInit= 0.1300;
 					discreteDistance[] = {100,300,400,500,600,700,800,900,1000};
 					discreteDistanceInitIndex = 1;	
 					distanceZoomMin = 100;
 					distanceZoomMax = 1000;	
 					nFovLimit = 0.07;
 					discretefov[] = {0.1300,0.0555};
 					discreteInitIndex = 0;						
 					modelOptics[] = {"\A3\Weapons_f\acc\reticle_MyOptics_F", "\A3\Weapons_f\acc\reticle_MyOptics_z_F"}; 
 					memoryPointCamera = "opticView";
 					visionMode[] = {"Normal","NVG"};
 					opticsFlare = true;
 					opticsDisablePeripherialVision = true;
 					cameraDir = "";
 				};
 				class IronOnTopOfMyOptics: MyOptics
 				{
 					opticsID = 2;
 					useModelOptics = false;
 					opticsFlare = false;
 					opticsDisablePeripherialVision = false;
 					opticsZoomMin=0.375; 
 					opticsZoomMax=1.1;  
 					opticsZoomInit=0.75;
 					memoryPointCamera = "eye";
 					visionMode[] = {};
 					discretefov[] = {};
 				};	
 			};
 		};
 	};
 };

Боковой кронштейн

Две колонки
О нас
SunHorizon Wiki версия 1.0.2.17.
© 2013-2014 SUNHORIZON.INFO.Все права сохранены.
В проекте использованы изображения FamFamFam
Связь с нами
Изображение
Правила сайта
Изображение

Авторские права
Изображение