Jump to content


Photo

Стая орлов


  • Please log in to reply
No replies to this topic

#1 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 01 August 2014 - 18:26

 

fn_Eagles.sqf

//scriptName "fn_crows.sqf";
scriptName "fn_Eagles.sqf";
/*
	Author: Karel Moricky

	Description:
	Spawns flock of crows circling the area.

	Parameter(s):
	_this select 0: ARRAY - Position of flock
	_this select 1 (Optional): NUMBER - area size
	_this select 2 (Optional): NUMBER - number of crows

	Returns:
	ARRAY - list of all spawned crows
	----------------------------------------------------
	
	Modified SteelRat
*/
private ["_flockPos","_flockArea","_flockCount","_wp0","_wp1","_wp2","_wp3","_wps","_crowList","_crow","_isWater"];

_flockPos = _this select 0;
_flockArea = if (count _this > 1) then {_this select 1} else {50};
_flockCount = if (count _this > 2) then {_this select 2} else {_flockArea / 5};
_flockHeight = if (count _this > 3) then {_this select 3} else {30 + random 10};

if (typename _flockPos == typename objnull) then {_flockPos = position _flockPos};
if (typename _flockPos == typename "") then {_flockPos = markerpos _flockPos};

_isWater = surfaceIsWater _flockPos;

_flockPos set [2,_flockHeight];
_wp0 = [_flockPos, _flockArea, 00] call BIS_fnc_relPos;
_wp1 = [_flockPos, _flockArea, 090] call BIS_fnc_relPos;
_wp2 = [_flockPos, _flockArea, 180] call BIS_fnc_relPos;
_wp3 = [_flockPos, _flockArea, 270] call BIS_fnc_relPos;
_wps = [_wp0,_wp1,_wp2,_wp3];

_crowList = [];
for "_i" from 1 to _flockCount do {
/*
	_crow = "crow" camcreate [
		(_flockPos select 0) - _flockArea + (random _flockArea)*2,
		(_flockPos select 1) - _flockArea + (random _flockArea)*2,
		_flockHeight
	];
*/
	_pos  = [
		(_flockPos select 0) - _flockArea + (random _flockArea)*2,
		(_flockPos select 1) - _flockArea + (random _flockArea)*2,
		_flockHeight
	];
	_crow = createVehicle ["Eagle_F", [0,0,0], [], 0, "NONE"];
	
	if (_isWater) then {
		_crow setPosASL (ATLtoASL _pos);
	} else {
		_crow setPosATL _pos;
	};
		
	[_crow,_wp0,_wp1,_wp2,_wp3,_flockArea] execfsm "A3\Functions_F\Environment\fn_crows.fsm";
	_crowList = _crowList + [_crow];
};

_crowList;

Вызов

[player, 20, 8, 60] execVM "\RootDirectory\Functions\Environment\fn_Eagles.sqf";

Дефолтная конфигурация орла

class cfgNonAiVehicles {
	class Bird;
	
	class Eagle_F : Bird {
		model = "\a3\Data_F_Curator\Eagle\eagle.p3d";
		singSound[] = {"A3\data_f_curator\sound\cfgNonAiVehicles\eagle_f_3", db0, 1, 300};
		canBeShot = false;
		minHeight = 60;
		avgHeight = 70;
		maxHeight = 80;
		minSPeed = 5;
		maxSpeed = 25;	// max speed on level road, km/h
		acceleration = 5;
		turning = 0.5;
	};
};

Параметры вполне интуитивно понятны, значит можно создать своего орла с каждому подходящими параметрами

class cfgNonAiVehicles {
	class Eagle_F;
	
	class My_Eagle_F : Eagle_F {
		canBeShot = true;  // я хочу иметь возможность убить орла)
		minHeight = 5;     // мин высота полёта
		avgHeight = 50;    // средняя высота полёта
		maxHeight = 100;   // макс высота полёта
                /*
                    Те параметры которые не собираетесь менять, перечислять по новому не надо
                */
	};
};

Прокатит ли конфигурация в description.ext миссии, я хз, кто попробует расскажете, я так думаю. Ну а если не прокатит, то аддон, без вариантов.


  • 1




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