Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe

Recommended Posts

Новая миссия для Черноруссии - с поисковыми фонарями против ночных атак

Banko%20dia_zpshxbf1xci.png

ArmA2OA%202015-01-24%2022-09-32-38_zpsel

1. Открываем dayz_server.pbo. Заходим в папку compile.
Создаем файл bankomat.sqf и вставляем следующий код:

 

//=====================
//SPAWN BANKO BUILDINGS
//=====================

diag_log "[HC_ON] Bankai script init!";
_vehicle = createVehicle ['Land_aif_hotel_bio', [4114.26,8427.27,0.786], [], 0, 'CAN_COLLIDE']; _vehicle setDir 295; _vehicle setPosATL [4114.26,8427.27,0.786]; _vehicle = nil;
_vehicle = createVehicle ['Land_aif_sara_domek05', [4132.75,8466.39,0.208], [], 0, 'CAN_COLLIDE']; _vehicle setDir 204; _vehicle setPosATL [4132.75,8466.39,0.208]; _vehicle = nil;
_vehicle = createVehicle ['Land_aif_strazni_vez', [4143.78,8420.04,0.031], [], 0, 'CAN_COLLIDE']; _vehicle setDir 27; _vehicle setPosATL [4143.78,8420.04,0.031]; _vehicle = nil;
_vehicle = createVehicle ['Land_aif_strazni_vez', [4081.05,8420.35,0.045], [], 0, 'CAN_COLLIDE']; _vehicle setDir 197; _vehicle setPosATL [4081.05,8420.35,0.045]; _vehicle = nil;
_vehicle = createVehicle ['Land_aif_watertower1', [4099.88,8468.16,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 238; _vehicle setPosATL [4099.88,8468.16,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Fort_Watchtower_EP1', [4153.9,8441.02,0.201], [], 0, 'CAN_COLLIDE']; _vehicle setDir 208; _vehicle setPosATL [4153.9,8441.02,0.201]; _vehicle = nil;
_vehicle = createVehicle ['Land_HBarrier_large', [4139.34,8411.09,0.208], [], 0, 'CAN_COLLIDE']; _vehicle setDir 209; _vehicle setPosATL [4139.34,8411.09,0.208]; _vehicle = nil;
_vehicle = createVehicle ['Land_HBarrier_large', [4147.37,8427.39,0.134], [], 0, 'CAN_COLLIDE']; _vehicle setDir 205; _vehicle setPosATL [4147.37,8427.39,0.134]; _vehicle = nil;
_vehicle = createVehicle ['Land_HBarrier_large', [4088.21,8443.52,0.07], [], 0, 'CAN_COLLIDE']; _vehicle setDir 115; _vehicle setPosATL [4088.21,8443.52,0.07]; _vehicle = nil;
_vehicle = createVehicle ['Land_HBarrier_large', [4084.74,8428.5,0.006], [], 0, 'CAN_COLLIDE']; _vehicle setDir 31; _vehicle setPosATL [4084.74,8428.5,0.006]; _vehicle = nil;
_vehicle = createVehicle ['Land_HBarrier1', [4118.59,8427.83,0.852], [], 0, 'CAN_COLLIDE']; _vehicle setDir 26; _vehicle setPosATL [4118.59,8427.83,0.852]; _vehicle = nil;
_vehicle = createVehicle ['Land_HBarrier1', [4118.11,8425.17,8.666], [], 0, 'CAN_COLLIDE']; _vehicle setDir 118; _vehicle setPosATL [4118.11,8425.17,8.666]; _vehicle = nil;
_vehicle = createVehicle ['Land_HBarrier1', [4117.45,8424.18,8.739], [], 0, 'CAN_COLLIDE']; _vehicle setDir 118; _vehicle setPosATL [4117.45,8424.18,8.739]; _vehicle = nil;
_vehicle = createVehicle ['Land_HBarrier1', [4116.9,8423,8.758], [], 0, 'CAN_COLLIDE']; _vehicle setDir 118; _vehicle setPosATL [4116.9,8423,8.758]; _vehicle = nil;
_vehicle = createVehicle ['Land_HBarrier1', [4117.97,8420.85,16.449], [], 0, 'CAN_COLLIDE']; _vehicle setDir 206; _vehicle setPosATL [4117.97,8420.85,16.449]; _vehicle = nil;
_vehicle = createVehicle ['Land_HBarrier1', [4119.53,8425.8,4.676], [], 0, 'CAN_COLLIDE']; _vehicle setDir 295; _vehicle setPosATL [4119.53,8425.8,4.676]; _vehicle = nil;
_vehicle = createVehicle ['Land_HBarrier1', [4117.98,8426.2,12.546], [], 0, 'CAN_COLLIDE']; _vehicle setDir 24; _vehicle setPosATL [4117.98,8426.2,12.546]; _vehicle = nil;
_vehicle = createVehicle ['Land_HBarrier1_DZ', [4117.29,8428.54,0.894], [], 0, 'CAN_COLLIDE']; _vehicle setDir 26; _vehicle setPosATL [4117.29,8428.54,0.894]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4150.6,8415.99,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 204; _vehicle setPosATL [4150.6,8415.99,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4152.98,8421.65,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 204; _vehicle setPosATL [4152.98,8421.65,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4157.9,8432.65,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 206; _vehicle setPosATL [4157.9,8432.65,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4133.87,8482.61,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 119; _vehicle setPosATL [4133.87,8482.61,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4146.1,8476.31,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 116; _vehicle setPosATL [4146.1,8476.31,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4157.12,8471.42,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 110; _vehicle setPosATL [4157.12,8471.42,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4161.43,8467.38,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 172; _vehicle setPosATL [4161.43,8467.38,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4162.45,8461.18,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 169; _vehicle setPosATL [4162.45,8461.18,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4163.93,8449.02,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 173; _vehicle setPosATL [4163.93,8449.02,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4160.66,8438.1,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 205; _vehicle setPosATL [4160.66,8438.1,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4128.85,8485.35,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 116; _vehicle setPosATL [4128.85,8485.35,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4111.36,8486.18,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 74; _vehicle setPosATL [4111.36,8486.18,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4117.27,8487.94,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 78; _vehicle setPosATL [4117.27,8487.94,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4092.97,8473.57,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 29; _vehicle setPosATL [4092.97,8473.57,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4095.59,8479.02,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 26; _vehicle setPosATL [4095.59,8479.02,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4099.47,8483.08,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 72; _vehicle setPosATL [4099.47,8483.08,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4140.67,8393.56,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 29; _vehicle setPosATL [4140.67,8393.56,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4145.54,8404.69,0.031], [], 0, 'CAN_COLLIDE']; _vehicle setDir 207; _vehicle setPosATL [4145.54,8404.69,0.031]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4123.67,8382.52,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 113; _vehicle setPosATL [4123.67,8382.52,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4129.79,8380.7,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 84; _vehicle setPosATL [4129.79,8380.7,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4137.82,8388.09,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 37; _vehicle setPosATL [4137.82,8388.09,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4112.73,8388.01,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 116; _vehicle setPosATL [4112.73,8388.01,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4107.15,8390.11,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 113; _vehicle setPosATL [4107.15,8390.11,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4083.19,8451.31,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 23; _vehicle setPosATL [4083.19,8451.31,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4085.84,8456.92,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 25; _vehicle setPosATL [4085.84,8456.92,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4076.64,8433.82,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 26; _vehicle setPosATL [4076.64,8433.82,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4078.64,8439.86,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 21; _vehicle setPosATL [4078.64,8439.86,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4074.56,8428.3,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 18; _vehicle setPosATL [4074.56,8428.3,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4071.13,8416.68,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 14; _vehicle setPosATL [4071.13,8416.68,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4069.86,8410.93,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 11; _vehicle setPosATL [4069.86,8410.93,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4073.03,8403.15,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 109; _vehicle setPosATL [4073.03,8403.15,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4078.88,8401.09,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 111; _vehicle setPosATL [4078.88,8401.09,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4090.17,8396.69,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 113; _vehicle setPosATL [4090.17,8396.69,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_Cargo2E_EP1', [4095.93,8394.93,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 112; _vehicle setPosATL [4095.93,8394.93,0]; _vehicle = nil;
_vehicle = createVehicle ['Land_Misc_ConcBox_EP1', [4096.36,8461.04,0], [], 0, 'CAN_COLLIDE']; _vehicle setDir 34; _vehicle setPosATL [4096.36,8461.04,0]; _vehicle = nil;
_vehicle = createVehicle ['RampConcrete', [4103.19,8402.95,-0.56], [], 0, 'CAN_COLLIDE']; _vehicle setDir 205; _vehicle setPosATL [4103.19,8402.95,-0.56]; _vehicle = nil;
_vehicle = createVehicle ['RampConcrete', [4137.88,8473.67,-1.354], [], 0, 'CAN_COLLIDE']; _vehicle setDir 24; _vehicle setPosATL [4137.88,8473.67,-1.354]; _vehicle = nil;
_vehicle = createVehicle ['RampConcrete', [4130.67,8457.81,-1.042], [], 0, 'CAN_COLLIDE']; _vehicle setDir 205; _vehicle setPosATL [4130.67,8457.81,-1.042]; _vehicle = nil;
_vehicle = createVehicle ['RampConcrete', [4125.4,8451.55,-1.153], [], 0, 'CAN_COLLIDE']; _vehicle setDir 23; _vehicle setPosATL [4125.4,8451.55,-1.153]; _vehicle = nil;

//=============================
//SPAWN BOTS, TURRETS, VEHICLES
//=============================

//Killed Function
donn_killed = {
	_unit = _this select 0;
	_player = _this select 1;
	if (isPlayer _player) then {
		{
			if (((position _x) distance (position _unit)) <= 300) then {
				_x reveal [_player, 4.0];
			}
		} forEach allUnits;
		
	};
	if ("RPG7V" in (weapons _unit)) then {
		_unit removeWeapon "RPG7V";
		_unit removeMagazines "PG7V";
	};
};

//Spawn AI Function
bank_aiSpawn = {
	private ["_radSpawn","_position","_unitcount","_skill","_unitGroup","_aiskin","_unit","_weapon","_magazine","_secWayPoints","_wp","_wpMain"];
	_position = _this select 0;
	_unitcount = _this select 1;
	_skill = _this select 2;
	_radSpawn = _this select 3;
	_wayPoints = _this select 4;
	_combatMode = _this select 5;
	_unitGroup = createGroup east;
	for "_x" from 1 to _unitcount do {
		_aiskin = [
			"GUE_Commander_DZ",
			"GUE_Soldier_2_DZ",
			"GUE_Soldier_CO_DZ",
			"GUE_Soldier_Crew_DZ",
			"GUE_Soldier_MG_DZ",
			"GUE_Soldier_Sniper_DZ"
		] call BIS_fnc_selectRandom;
		_unit = _unitGroup createUnit [_aiskin, _position, [], _radSpawn, "PRIVATE"];
		[_unit] joinSilent _unitGroup;
		_unit enableAI "TARGET";
		_unit enableAI "AUTOTARGET";
		_unit enableAI "MOVE";
		_unit enableAI "ANIM";
		_unit enableAI "FSM";
		_unit setCombatMode _combatMode;
		_unit setBehaviour "COMBAT";
		removeAllWeapons _unit;
		removeAllItems _unit;
		_weapon = [
			"FN_FAL",
			"FN_FAL_ANPVS4",
			"Mk_48_DZ",
			"M249_DZ",
			"BAF_L85A2_RIS_Holo",
			"G36C",
			"G36C_camo",
			"G36A_camo",
			"G36K_camo",
			"AK_47_M",
			"AKS_74_U",
			"M14_EP1",
			"bizon_silenced",
			"DMR_DZ",
			"RPK_74"
		] call BIS_fnc_selectRandom;
		_magazines = getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines");
		_magazine = _magazines call BIS_fnc_selectRandom;
		for "_i" from 1 to 6 do {
			_unit addMagazine _magazine;
		};
		_unit addWeapon _weapon;
		_unit selectWeapon _weapon;
		_unit addBackpack "DZ_Backpack_EP1";
		{_unit addMagazine _x} forEach ["ItemBandage","ItemBandage","ItemPainkiller"];
		{_unit addWeapon _x} forEach ["ItemKnife","ItemFlashlight"];
		_unit setSkill 1;
		_unit addEventHandler ["Killed",{_this call donn_killed;}];
	};
	_unit addWeapon "RPG7V";
	_unit addMagazine "PG7V";
	_unit addMagazine "PG7V";
	_unit addMagazine "PG7V";
	_unit addMagazine "PG7V";
	_secWayPoints = [];
	{
		if ((_position select 0) != (_x select 0) || (_position select 1) != (_x select 1) || (_position select 2) != (_x select 2)) then {
			_secWayPoints = _secWayPoints + [_x];
		};
	} forEach _wayPoints;
	{_wp = _unitGroup addWaypoint [_x, _radSpawn]; _wp setWaypointType "MOVE";} forEach _secWayPoints;
	_wpMain = _unitGroup addWaypoint [_position, _radSpawn];
	_wpMain setWaypointType "CYCLE";
	diag_log text format["[BANKO]: %1 AI Spawned.",count (units _unitGroup)];
};

//Populate Turret Function
turret_unitGroup = createGroup east;
donn_popTurret = {
	_aiSkill = _this select 0;
	{
		_unit = turret_unitGroup createUnit ["GUE_Commander_DZ", [0,0,0], [], 5, "PRIVATE"];
		[_unit] joinSilent turret_unitGroup;
		_unit setCombatMode "YELLOW";
		_unit setBehaviour "COMBAT";
		removeAllWeapons _unit;
		removeAllItems _unit;
		_unit setSkill _aiSkill;
		_unit addEventHandler ["Killed",{_this call donn_killed;}];
		_unit moveInGunner _x;
		_x spawn {
			while {true} do {
				_this setVehicleAmmo 1;
				sleep 180;
			};
		};
	} forEach (_this select 1);
};

//Anti Aereo
//_zu_1 = createVehicle ["ZU23_Ins", [4117,8427,20.1], [], 0, "CAN_COLLIDE"];
//_zu_2 = createVehicle ["ZU23_Ins", [4113,8431,20.2], [], 0, "CAN_COLLIDE"];
_zu_1 = createVehicle ["KORD_high", [4117,8427,20.1], [], 0, "CAN_COLLIDE"];
_zu_2 = createVehicle ["KORD_high", [4113,8431,20.2], [], 0, "CAN_COLLIDE"];
sleep 0.2;
_zu_1 setPosATL [4117,8427,20.1];
_zu_2 setPosATL [4113,8431,20.2];
sleep 0.2;
_zu_1 setDir 160;
_zu_2 setDir 340;

//KORD High 0.50
_kd_1 = createVehicle ["KORD_high", [4155.0,8443.0,5.00], [], 0, "CAN_COLLIDE"];
_kd_2 = createVehicle ["KORD_high", [4152.0,8419.0,5.20], [], 0, "CAN_COLLIDE"];
_kd_3 = createVehicle ["KORD_high", [4077.0,8434.0,5.10], [], 0, "CAN_COLLIDE"];
_kd_4 = createVehicle ["KORD_high", [4091.3,8396.3,5.10], [], 0, "CAN_COLLIDE"];
_kd_5 = createVehicle ["KORD_high", [4145.4,8476.7,5.10], [], 0, "CAN_COLLIDE"];
_kd_6 = createVehicle ["KORD_high", [4083.6,8429.6,2.35], [], 0, "CAN_COLLIDE"];
sleep 0.2;
_kd_1 setPosATL [4155.0,8443.0,5.00];
_kd_2 setPosATL [4152.0,8419.0,5.20];
_kd_3 setPosATL [4077.0,8434.0,5.10];
_kd_4 setPosATL [4091.3,8396.3,5.10];
_kd_5 setPosATL [4145.4,8476.7,5.10];
_kd_6 setPosATL [4083.6,8429.6,2.35];
sleep 0.2;
_kd_1 setDir 53;
_kd_2 setDir 112;
_kd_3 setDir 297;
_kd_4 setDir 186;
_kd_5 setDir 13;
_kd_6 setDir 30;

//KORD High 0.50 Intern
_kdi_1 = createVehicle ["KORD_high", [4115.55,8430.11, 0.86], [], 0, "CAN_COLLIDE"];
_kdi_2 = createVehicle ["KORD_high", [4128.80,8430.00, 0.48], [], 0, "CAN_COLLIDE"];
_kdi_3 = createVehicle ["KORD_high", [4105.70,8431.00, 1.14], [], 0, "CAN_COLLIDE"];
_kdi_4 = createVehicle ["KORD_high", [4099.00,8437.60, 1.29], [], 0, "CAN_COLLIDE"];
_kdi_5 = createVehicle ["KORD_high", [4119.00,8436.00, 4.58], [], 0, "CAN_COLLIDE"];
_kdi_6 = createVehicle ["KORD_high", [4133.37,8429.00,11.88], [], 0, "CAN_COLLIDE"];
_kdi_7 = createVehicle ["KORD_high", [4130.00,8440.00,11.94], [], 0, "CAN_COLLIDE"];
_kdi_8 = createVehicle ["KORD_high", [4103.00,8443.50,12.70], [], 0, "CAN_COLLIDE"];
sleep 0.2;
_kdi_1 setPosATL [4115.55,8430.11, 0.86];
_kdi_2 setPosATL [4128.80,8430.00, 0.48];
_kdi_3 setPosATL [4105.70,8431.00, 1.14];
_kdi_4 setPosATL [4099.00,8437.60, 1.29];
_kdi_5 setPosATL [4119.00,8436.00, 4.58];
_kdi_6 setPosATL [4133.37,8429.00,11.88];
_kdi_7 setPosATL [4130.00,8440.00,11.94];
_kdi_8 setPosATL [4103.00,8443.50,12.70];
sleep 0.2;
_kdi_1 setDir 320;
_kdi_2 setDir 336;
_kdi_3 setDir 203;
_kdi_4 setDir 78;
_kdi_5 setDir 295;
_kdi_6 setDir 295;
_kdi_7 setDir 206;
_kdi_8 setDir 115;


//Populate Turrets
_turrets = [_zu_1,_zu_2,_kd_1,_kd_2,_kd_3,_kd_4,_kd_5,_kd_6,_kdi_1,_kdi_2,_kdi_3,_kdi_4,_kdi_5,_kdi_6,_kdi_7,_kdi_8];
[1, _turrets] call donn_popTurret;

//Vehicles - Locked
_btr_1 = createVehicle ["BTR40_MG_TK_GUE_EP1", [4150,8457,0], [], 0, "CAN_COLLIDE"];
_btr_2 = createVehicle ["BTR40_MG_TK_GUE_EP1", [4133,8398,0], [], 0, "CAN_COLLIDE"];
_btr_3 = createVehicle ["BTR40_MG_TK_GUE_EP1", [4090,8410,0], [], 0, "CAN_COLLIDE"];
_btr_1 lock true;
_btr_2 lock true;
_btr_3 lock true;
_btr_1 setDir 231;
_btr_2 setDir 233;
_btr_3 setDir 210;

//Helis - Locked
_heli_1 = createVehicle ["Mi24_D_TK_EP1", [4130.00,8364.00,0.00], [], 0, "CAN_COLLIDE"];
_heli_2 = createVehicle ["Ka52", [4109.00,8504.00,0.00], [], 0, "CAN_COLLIDE"];
_heli_1 lock true;
_heli_2 lock true;
_heli_1 setPosATL [4130.00,8364.00,0.00];
_heli_2 setPosATL [4109.00,8504.00,0.00];
_heli_1 setDir 255;
_heli_2 setDir 75;

//Areas
_patrol_1_interno = [
	[4148,8456,0],
	[4128,8390,0],
	[4102,8401,0]
];
_patrol_2_interno = [
	[4081,8409,0],
	[4114,8474,0],
	[4130,8453,0]
];
_patrol_1_externo = [
	[4098,8503,0],
	[4174,8480,0],
	[4135,8361,0],
	[4056,8400,0]
];
_patrol_teto = [
	[4131,8437,16.0],
	[4120,8411,16.3],
	[4098,8421,17.0],
	[4107,8446,17.0]
];
_patrol_all = [
	[8,3,_patrol_1_interno,_patrol_1_interno,"YELLOW"],
	[8,4,_patrol_2_interno,_patrol_2_interno,"YELLOW"],
	[8,3,_patrol_1_externo,_patrol_1_externo,"RED"],
	[8,4,_patrol_1_externo,_patrol_1_externo,"RED"]
//	[0,1,_patrol_teto,_patrol_teto,"YELLOW"]
];

//Spawn AI Call Func
{
	_rad = _x select 0;
	_qty = _x select 1;
	_patrolPoints = _x select 3;
	_combatMode = _x select 4;
	{
		[_x,_qty,3,_rad,_patrolPoints,_combatMode] call bank_aiSpawn;
	} forEach (_x select 2);
} forEach _patrol_all;

//Banko Loot
_lootPos = [4135.34,8435.4,11.9];
if ((random 100) <= 50) then {_lootPos = [4107.84,8448.80,12.64];};
_loot = createVehicle ["RULaunchersBox", _lootPos, [], 0, "CAN_COLLIDE"];
clearweaponcargoGlobal _loot;
clearmagazinecargoGlobal _loot;
_loot addWeaponCargoGlobal ["M107_DZ",2];
_loot addmagazineCargoGlobal ["10Rnd_127x99_m107",5];
_qtyBC = 4 + ([1,2,3] call BIS_fnc_selectRandom);
_loot addmagazineCargoGlobal ["ItemBriefcase100oz",_qtyBC];
_loot addmagazineCargoGlobal ["ItemSodaRabbit",50];
_loot setVariable ["permaLoot",true,true];
_loot setPosATL _lootPos;
[_loot, _lootpos] spawn {
	_loot = _this select 0;
	_lootPos = _this select 1;
	while {true} do {
		waitUntil {sleep 0.001; ((getPosATL _loot) select 2) > 15};
		_loot setPosATL _lootPos;
	};
};

//===============================================
//SPAWN SEARCHLIGHTS WITH SPECIAL BOT UTILIZATION
//===============================================

donn_vecDir = {
	private ["_pnt1","_pnt2","_vec","_vecX","_vecY","_magnitude","_asin1","_asin2","_acos1","_acos2","_asin1r","_asin2r","_acos1r","_acos2r","_calcDir"];
	_pnt1 = _this select 0;
	_pnt2 = _this select 1;
	_vec = [(_pnt2 select 0) - (_pnt1 select 0), (_pnt2 select 1) - (_pnt1 select 1)];
	_vecX = _vec select 0;
	_vecY = _vec select 1;
	_magnitude = sqrt(_vecX^2 + _vecY^2);

	_asin1 = asin (_vecX/_magnitude);
	_asin2 = 180 - _asin1;
	_acos1 = acos (_vecY/_magnitude);
	_acos2 = -_acos1;
	
	_asin1 = (_asin1 + 360) mod 360;
	_asin2 = (_asin2 + 360) mod 360;
	_acos1 = (_acos1 + 360) mod 360;
	_acos2 = (_acos2 + 360) mod 360;
	
	_asin1r = (round (_asin1 * 100))/100;
	_asin2r = (round (_asin2 * 100))/100;
	_acos1r = (round (_acos1 * 100))/100;
	_acos2r = (round (_acos2 * 100))/100;

	_calcDir = 0;
	if (_asin1r == _acos1r) then {_calcDir = _asin1};
	if (_asin1r == _acos2r) then {_calcDir = _asin1};
	if (_asin2r == _acos1r) then {_calcDir = _asin2};
	if (_asin2r == _acos2r) then {_calcDir = _asin2};
	_calcDir = _calcDir mod 360;
	_calcDir
};
donn_angleOnPos = {
	private ["_orig","_false","_origWatch","_origPos","_falsePos","_posFix","_newWatch"];
	_orig = _this select 0;
	_false = _this select 1;
	_origWatch = _this select 2;
	_origPos = getPos _orig;
	_falsePos = getPos _false;
	_posFix = [
		(_falsePos select 0) - (_origPos select 0),
		(_falsePos select 1) - (_origPos select 1)
	];
	_newWatch = [
		(_origWatch select 0) + (_posFix select 0),
		(_origWatch select 1) + (_posFix select 1),
		0
	];
	_newWatch
};
donn_angleInside = {
	//Angles must be from 0 to 360
	private ["_angle","_left","_right","_dif","_angleOk"];
	_angle = _this select 0;
	_left = _this select 1;
	_right = _this select 2;
	_dif = abs (_left - _right);
	_angleOk = false;
	if (_dif <= 180) then {
		if (_angle <= _right && _angle >= _left) then {_angleOk = true;};
		if (_angle <= _left && _angle >= _right) then {_angleOk = true;};
	} else {
		if ((_angle >= _right || _angle <= _left) && _right > _left) then {_angleOk = true;};
		if ((_angle >= _left || _angle <= _right) && _left > _right) then {_angleOk = true;};
	};
	_angleOk
};
donn_difAngles = {
	//Angles must be from 0 to 360
	private ["_initAngle","_endAngle","_difGeral","_difAngles","_difAbs"];
	_initAngle = _this select 0;
	_endAngle = _this select 1;
	_difGeral = _endAngle - _initAngle;
	if ((abs _difGeral) < 180) then {
		_difAngles = _difGeral;
	} else {
		_difAbs = 360 - (abs _difGeral);
		if (_endAngle > _initAngle) then {
			_difAngles	= -_difAbs;
		} else {
			_difAngles	= _difAbs;
		};
	};
	_difAngles
};

donn_unitDir = [];
donn_oneRun = [];
donn_justrun = [];

donn_dirChange = {
	_unit = _this select 0;
	_posWatch = _this select 1;
	_unitId = _this select 2;
	donn_oneRun set [_unitId, (donn_oneRun select _unitId) + 1];
	_oneRun = donn_oneRun select _unitId;
	waitUntil {(donn_justRun select _unitId) == (_oneRun - 1)};
	_unitPos = getPosATL _unit;
	_newAngle = [_unitPos, _posWatch] call donn_vecDir;
	donn_newAngle = _newAngle;
	_oldAngle = donn_unitDir select _unitId;
	_difAngles = [_oldAngle, _newAngle] call donn_difAngles;
	_timeChange = abs ((_difAngles/360) * 7.5);
	_speed = 0;
	if (_timeChange > 0) then {_speed = _difAngles/_timeChange;};
	_start = diag_tickTime;
	_timePassed = 0;
	while {_timePassed < _timeChange && (donn_oneRun select _unitId) == _oneRun} do {
		sleep 0.001;
		_timePassed = diag_tickTime - _start;
		donn_unitDir set [_unitId, _oldAngle + (_timePassed/_timeChange) * _difAngles];
	};
	donn_unitDir set [_unitId, _newAngle];
	donn_justrun set [_unitId, _oneRun];
};

//Check for Invasors
donn_BNK_invasors = [];
[] spawn {
	while {true} do {
		private ["_invasors"];
		_invasors = [];
		{
			if (([4113,8424,16] distance _x) < 300) then {
				_invasors = _invasors + [_x];
			};
		} forEach playableUnits;
		donn_BNK_invasors = _invasors;
		systemChat (str donn_BNK_invasors);
		sleep 10;
	};
};

donn_BNK_invasors_del = [];
donn_onLight = [];
donn_knowNoOne = [];

donn_holo = {
	_unit = _this select 0;
	_range = _this select 1;
	_vehicle = _this select 2;
	_unitId = _this select 3;
	_initDir = getDir _vehicle;
	
	//Max & Min Angles
	_right = (_initDir + 360 + _range/2) mod 360;
	_left = (_initDir + 360 - _range/2) mod 360;
	
	//diag_log format ["[D-SL] INIT - _left: %1 / _initDir: %2 / _right: %3 / range: %4", _left, _initDir, _right, _range];
	
	//Generate Watch Dir List
	_watchDirList = [];
	for "_x" from 0 to 4 do {
		_watchDirList = _watchDirList + [(_left + (_x * (_range/4))) mod 360];
	};
	
	//diag_log format ["[D-SL] INIT - _watchDirList: %1", _watchDirList];
	
	//Global Status
	donn_knowNoOne set [_unitId, true];
	donn_unitDir set [_unitId, _initDir];	
	
	// Start scanning 
	[_unit, _watchDirList, _unitId] spawn {
		private ["_unit","_watchDirList","_unitId"];
		_unit = _this select 0;
		_watchDirList = _this select 1;
		_unitId = _this select 2;
		while {alive _unit} do {
			waitUntil {donn_knowNoOne select _unitId};
			_watchDir = _watchDirList call BIS_fnc_selectRandom;
			donn_watchDir = _watchDir;
			_posUnit = getPosATL _unit;
			_posWatch = [(_posUnit select 0) + 150 * (sin _watchDir), (_posUnit select 1) + 150 * (cos _watchDir), 0];
			_unit doWatch _posWatch;
			[_unit, _posWatch, _unitId] spawn donn_dirChange;
			//diag_log ("[D-SL] - Mandou unit " + str _unitId + " olhar!");
			sleep 3.75;
		};
	};

	//Engage on Player
	[_unit, _left, _right, _vehicle, _unitId] spawn {
		private ["_unit","_left","_right","_vehicle","_invasor","_invasorPos","_unitPos","_angleOk","_angleOk2","_unitDir","_visionLeft","_visionRight","_invAngle","_onLightOthers"];
		_unit = _this select 0;
		_left = _this select 1;
		_right = _this select 2;
		_vehicle = _this select 3;
		_unitId = _this select 4;
		_unitId spawn {
			_unitId = _this;
			while {true} do {
				waitUntil {sleep 0.001; (count donn_BNK_invasors) > 0};
				donn_BNK_invasors_del set [_unitId, donn_BNK_invasors];
				waitUntil {sleep 0.001; (count (donn_BNK_invasors_del select _unitId)) == 0};
			};
		};
		while {true} do {
			while {(count donn_BNK_invasors) > 0} do {
				waitUntil {sleep 0.001; (count (donn_BNK_invasors_del select _unitId)) > 0};
				_invasor = (donn_BNK_invasors_del select _unitId) select 0;
				_invasorPos = getPosATL _invasor;
				_unitPos = getPosATL _unit;
				
				//Calculate Distances
				_maxDist = 200;
				_minDist = 45;

				//Calculate Angle to Enlight and light limit angles
				_unitDir = donn_unitDir select _unitId;
				_invAngle = [_unitPos, _invasorPos] call donn_vecDir;
				_visionLeft = (_unitDir + 360 - 18.5) mod 360;
				_visionRight = (_unitDir + 360 + 18.5) mod 360; 
				
				//Angles are ok? 
				_invOnLight = [_invAngle,_visionLeft,_visionRight] call donn_angleInside;
				_invOnRange = [_invAngle,_left,_right] call donn_angleInside;
				_angleOk = [_unitDir,_left,_right] call donn_angleInside;
				
				//Distance Invasor
				_invasorDist = _invasor distance _unit;

				//Do Action
				_onLightOthers = _invasor in (donn_onLight - [donn_onLight select _unitId]);
				if (_angleOk && _invOnLight && _invOnRange && (_invasorDist < _maxDist) && (_invasorDist > _minDist) && (alive _invasor) && (alive _unit) && ((vehicle _unit) == _vehicle) && !_onLightOthers) then {
					donn_knowNoOne set [_unitId, false];
					donn_onLight set [_unitId, _invasor];
					_unit doWatch _invasorPos;
					[_unit, _invasorPos, _unitId] spawn donn_dirChange;
					sleep 0.25;
				} else {
					donn_knowNoOne set [_unitId, true];
					donn_onLight set [_unitId, ObjNull];
					donn_BNK_invasors_del set [_unitId, (donn_BNK_invasors_del select _unitId) - [_invasor]];
					sleep 0.001;
				};
			};
			sleep 2;
		};
	};
};

light_unitGroup = createGroup east;
donn_popLight = {
	{
		_searchLight = _x select 0;
		_unitId = _x select 1;
		donn_BNK_invasors_del set [_unitId, []];
		donn_onLight set [_unitID, ObjNull];
		donn_oneRun set [_unitID, 0];
		donn_justrun set [_unitID, 0];
		_unit = light_unitGroup createUnit ["GUE_Commander_DZ", [0,0,0], [], 0, "PRIVATE"];
		[_unit] joinSilent light_unitGroup;
		_unit removeAllEventHandlers "handleDamage";
		_unit addEventHandler ["handleDamage", {0}];
		_unit setVariable ["donn_noDel",true,true];
		_unit disableAI "TARGET";
		_unit disableAI "AUTOTARGET";
		_unit disableAI "MOVE";
		_unit disableAI "ANIM";
		_unit disableAI "FSM";
		_unit setBehaviour "CARELESS";
		_unit setCombatMode "BLUE";
		_unit setSkill 1;
		removeAllWeapons _unit;
		removeAllItems _unit;
		_unit moveInGunner _searchLight;
		_unit setUnitPos "UP";
		[_unit, 120, _searchLight, _unitId] spawn donn_holo;
	} forEach _this;
};

//Search Light
_sl_1 = createVehicle ["SearchLight", [4120.63,8399.37,12.38], [], 0, "CAN_COLLIDE"];
_sl_2 = createVehicle ["SearchLight", [4087.35,8418.23,13.16], [], 0, "CAN_COLLIDE"];
_sl_3 = createVehicle ["SearchLight", [4141.12,8436.15,11.61], [], 0, "CAN_COLLIDE"];
_sl_4 = createVehicle ["SearchLight", [4099.50,8466.90,20.25], [], 0, "CAN_COLLIDE"];
_sl_1 setPosATL [4120.63,8399.37,12.38];
_sl_2 setPosATL [4087.35,8418.23,13.16];
_sl_3 setPosATL [4141.12,8436.15,11.61];
_sl_4 setPosATL [4099.50,8466.90,20.25];
_sl_1 setDir 207;
_sl_2 setDir 295;
_sl_3 setDir 114;
_sl_4 setDir 340;

//Populate Search Lights
_lights = [[_sl_1,0],[_sl_2,1],[_sl_3,2],[_sl_4,3]];
_lights call donn_popLight;

//=================
//SHOW ICON ON MAP
//=================

[] spawn {
	while {true} do {
		_don_marker_put = createMarker ["Don_Banko_1", [4114, 8447]];
		_don_marker_put setMarkerShape "Icon";
		_don_marker_put setMarkerType "Flag1";
		_don_marker_put setMarkerText "Banko Mat Mission";
		_don_marker_put setMarkerColor "ColorBlack";
		sleep 10;
		deleteMarker "Don_Banko_1";
	};
};

 


2. Открываем server_functions.sqf.
В самый низ вставляем:

execVM "\z\addons\dayz_server\compile\bankomat.sqf";

Share this post


Link to post
Share on other sites



что то не так с оформлением наверно, при копирывании выше предложенного всё сбивается в одну строку и никак не изменяется



еще вопрос в том месте от куда вы взяли эту миссиию указано о добавлении исключения в аддоны файла миссии, почему же здесь его нет?

Edited by frankcadilack (see edit history)

Share this post


Link to post
Share on other sites

скопировать текст не получается :dry: не могбы файлик выложить?

Share this post


Link to post
Share on other sites

миссия хорошая ,....НО....НЕЛЬЗЯ сесть в технику....как сделать так ,чтобы техника была открытой?

Share this post


Link to post
Share on other sites

Скрипт добавлял в server_monitor.sqf, т.к. в указанном варианте у меня не заработало.

Share this post


Link to post
Share on other sites

Скрипт добавлял в server_monitor.sqf, т.к. в указанном варианте у меня не заработало.

Вообще он подключается в файле server_functions.sqf в самом низу, этой строкой:

execVM "\z\addons\dayz_server\compile\bankomat.sqf";

Share this post


Link to post
Share on other sites

 

Вообще он подключается в файле server_functions.sqf в самом низу, этой строкой:

execVM "\z\addons\dayz_server\compile\bankomat.sqf";

у меня не заработал в данном исполнении.

Share this post


Link to post
Share on other sites

Спасибо за скрипт! Установил - всё работает  :smiling:

Share this post


Link to post
Share on other sites

У меня логи спамят 

12:48:49   Error Zero divisor
12:48:49 File z\addons\dayz_server\init\banko_mat.sqf, line 511
12:48:49 Error in expression <e _unit} do {
waitUntil {donn_knowNoOne select _unitId};
_watchDir = _watchDirLi>
12:48:49   Error position: <select _unitId};
_watchDir = _watchDirLi>
 
строчка 511 
waitUntil {donn_knowNoOne select _unitId};
 
в коде: 
    // Start scanning 
    [_unit, _watchDirList, _unitId] spawn {
        private ["_unit","_watchDirList","_unitId"];
        _unit = _this select 0;
        _watchDirList = _this select 1;
        _unitId = _this select 2;
        while {alive _unit} do {
            waitUntil {donn_knowNoOne select _unitId};
            _watchDir = _watchDirList call BIS_fnc_selectRandom;
            donn_watchDir = _watchDir;
            _posUnit = getPosATL _unit;
            _posWatch = [(_posUnit select 0) + 150 * (sin _watchDir), (_posUnit select 1) + 150 * (cos _watchDir), 0];
            _unit doWatch _posWatch;
            [_unit, _posWatch, _unitId] spawn donn_dirChange;
            //diag_log ("[D-SL] - Mandou unit " + str _unitId + " olhar!");
            sleep 3.75;
        };
    };

 

 

Что ему не нравится ? 

Share this post


Link to post
Share on other sites

А как сделать чтобы за убийства бота начислялась хумка  

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Я решил как, убрал этих ботов и подключил ботов WAI.

Share this post


Link to post
Share on other sites

У меня возникла проблемка,поставил миссию, все работает но игроки не видят коробки,прошу помощи

Share this post


Link to post
Share on other sites

У меня возникла проблемка,поставил миссию, все работает но игроки не видят коробки,прошу помощи

ящики появляются рондомно, могут быть и на втором этаже или на третьем

Share this post


Link to post
Share on other sites

ящики появляются рондомно, могут быть и на втором этаже или на третьем

я знаю,так в том то и дело,что я вижу а другие игроки нет

Share this post


Link to post
Share on other sites

я знаю,так в том то и дело,что я вижу а другие игроки нет

Хмм. Может инфи блокирует. У меня с этим нет проблем. Попробуй сам ящик сменить

Share this post


Link to post
Share on other sites

Хмм. Может инфи блокирует. У меня с этим нет проблем. Попробуй сам ящик сменить

пробывал,не помогает,но все равно,спасибо за отзывчивость

Edited by biofylf (see edit history)

Share this post


Link to post
Share on other sites

 

пробывал,не помогает,но все равно,спасибо за отзывчивость

попробуй найти ид ящика в инфи и удалить его, может поможет.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Апну вопрос выше, так как они засранцы бегают и шевеляться, хотя игроки далеко.

Share this post


Link to post
Share on other sites

Взрывается сразу же.
Как в неё садятся люди.

Что делать ??

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By 123new
      И так, ребятки, вот вам небольшая 'полезняшка' от меня, и совершенно бесплатно!
       
      Описание:

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      или создать их самим со следующим содержанием:
      Script.c
      /* Описание: Скрипт выдачи индивидуального стартового лута, скина игрока и точек спавна Автор: 123new Установка: 1. По пути: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\ создать папку 'CustomSpawnPlayerConfig' и поместить в нее 3 файла скрипта: Script.c Sets.c init_mod.c 2. В файле: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.c в самом верху файла добавить: #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\init_mod.c" 3. В папке, обозначенной параметром запуска сервера '-profile=', поместить файл с именем CustomSpawnPlayerConfig.txt и заполнить его данными по следующему формату: UID|Skin_player|sets_numbers|points_spawns где UID - это steam64id от профиля игрока в steam Skin_player - точный id скина игрока (можно указать 0 для отключения опции) sets_numbers - номер сета со стартовым лутом (можно указать несколько через ';', указать один всего, либо указать 0 для отключения опции) points_spawns - координаты спавна игрока на карте в формате 'x y z' (можно указать несколько через ';', указать всего одну точку, либо указать 0 для отключения опции) Пример: 76561198141889254|SurvivorM_Oliver|1|12955.091797 16.115206 7993.588379 76561198141889256|SurvivorM_Oliver|1;2|14791.965820 76.481781 14041.661133;12029.079102 196.356125 7274.689941 76561198141889253|SurvivorM_Oliver|0|0 4. В файле Sets.c в папке: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\ настроить стартовый лут для ваших игроков и написать собственные сеты ВАЖНО: количество сетов можно делать любое, номера сетов брать от 1 и выше (не должно быть -1, либо 0, только от 1 и выше) Все что укажете в блоке default будет применено для всех игроков при респавне в случае, если им не выдан никакой сет! P.S. Прикрепить к соспавненному оружию магазин не получится, рабочего кода я не смог найти!! Если у вас папка активной миссии сервера отличается от dayzOffline.chernarusplus то переименуйте ее в строке, вписываемой в: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.c {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\init_mod.c */ class CustomSpawnPlayerConfig { private string Location_Directory_config = "$profile:"; // Расположение папки с конфигом скрипта private string Location_filename_config = "CustomSpawnPlayerConfig.txt"; // имя файла с конфигом скрипта private string default_log_block_name = "[CustomSpawnPlayerConfig] "; // Стандартный блок скрипта для идентификации с script.log private string disable_read_parameter = "0"; // Стандартное значение (без кавычек) для обозначения в файле конфига скрипта неиспользование параметра private string block_split_parameters_config = "|"; // Символ, обозначающий разделение параметров при чтении файла конфига private string block_split_multi_parameters_config = ";"; // Символ, обозначающий перечисление в одной ячейке параметра нескольких параметров при чтении файла конфига private bool enabled_loading_custom_spawnpoints = true; // Параметр, включающий и отключающий возможность использования приватной точки спавна для каждого игрока. В случае отключения кастомная точка спавна будет отключена для всех поумолчанию, вне зависимости от данных в конфиге! private bool enabled_loading_custom_sets = true; // Параметр, включающий и отключающий возможность использования приватного сета для каждого игроков. В случае отключения выдача сетов будет отключена для всех поумолчанию, вне зависимости от данных в конфиге, будет выдаваться только сет для всех игроков! private bool enabled_loading_custom_skins = true; // Параметр, включающий и отключающий возможность использования индивидуального стартового скина игрока для каждого игрока. В случае отключения эта возможность будет отключена для всех поумолчанию, вне зависимости от данных в конфиге! // ------------------------------------------------------------ // ---------------- NEXT CODE DON'T EDIT ----------------- // ------------------------------------------------------------ ref map<string, ref array<vector>> players_spawnpoints = new map<string, ref array<vector> >; ref map<string, ref array<int>> players_sets = new map<string, ref array<int> >; ref map<string, string> players_skins = new map<string, string>; private bool enabled_loaded_successfull_config = false; string Log_CustomSpawnPlayerConfig_GetDateTime() { private int year, month, day, hour, minute, second; GetYearMonthDay(year, month, day); GetHourMinuteSecond(hour, minute, second); string returned_message = "[" + day.ToStringLen(2) + "." + month.ToStringLen(2) + "." + year.ToStringLen(2) + " - " + hour.ToStringLen(2) + "." + minute.ToStringLen(2) + "." + second.ToStringLen(2) + "] "; return returned_message; } bool Check_coords_disable(vector coord) { private bool ret_zn = false; private float pos_x = coord[0]; private float pos_y = coord[1]; private float pos_z = coord[2]; if ((pos_x == 0.0) & (pos_y == 0.0) & (pos_z == 0.0)) { ret_zn = true; } return ret_zn; } vector Set_Read_coords_disable() { return Vector(0.0, 0.0, 0.0); } void CustomSpawnPlayerConfig() { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + "CustomSpawnPlayerConfig initialize start!"); Read_Update_Config(); } void ~CustomSpawnPlayerConfig() { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + "CustomSpawnPlayerConfig work end, class closed!"); } void Read_Update_Config() { private string name_block_work = "[ReadAndUpdateSettings] "; Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + " Started Reading config!"); private array<string> readed_lines_config = ReadFileConfig(); private bool check_normal_read = AnaliseFileConfig(readed_lines_config); if (check_normal_read) { LoadFileConfig(readed_lines_config); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "config readed successfull!"); enabled_loaded_successfull_config = true; } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "config read failed, work script disabled for players!"); enabled_loaded_successfull_config = false; } } array<string> ReadFileConfig() { private string name_block_work = "[ReadFileConfig] "; private array<string> readed_lines_config = new array<string>; readed_lines_config.Clear(); if (FileExist ( (Location_Directory_config + Location_filename_config) ) ) { private string line_content; FileHandle file = OpenFile((Location_Directory_config + Location_filename_config), FileMode.READ); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Open file config: " + (Location_Directory_config + Location_filename_config)); if (file != 0) { while ( FGets( file, line_content ) > 0 ) { readed_lines_config.Insert( line_content); } CloseFile(file); } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! CAN'T OPEN FILE CONFIG : " + (Location_Directory_config + Location_filename_config)); } //readed_lines_config.Debug(); } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! CAN'T FOUND FILE CONFIG OR DIRECTORY: " + (Location_Directory_config + Location_filename_config)); } return readed_lines_config; } bool AnaliseFileConfig(array<string> readed_lines_config) { private bool return_zn = true; private string name_block_work = "[AnaliseFileConfig] "; if (readed_lines_config.Count() > 0) { foreach (string line : readed_lines_config) { if (line.Contains(block_split_parameters_config)) { private array<string> splited_line = new array<string>; line.Split( block_split_parameters_config, splited_line ); if (splited_line.Count() == 4) { private string UID_player = splited_line.Get(0); private string default_skin_player = splited_line.Get(1); private string sets_numbers_player = splited_line.Get(2); private string points_spawn_player = splited_line.Get(3); if ((UID_player == "") || (default_skin_player == "") || (sets_numbers_player == "") || (points_spawn_player == "")) { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! Lines in Readed file is not correct, please, fix your config script!"); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Line checking: " + line); return_zn = false; break; } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! Readed file is have incorrect count parameters with a tag '" + block_split_parameters_config + "', please, fix your config script!"); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Line checking: " + line); return_zn = false; break; } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! Readed file can't have a tag '" + block_split_parameters_config + "', please, fix your config script!"); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Line checking: " + line); return_zn = false; break; } } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! Config file is empty, fix your config script!"); return_zn = false; } return return_zn; } void LoadFileConfig(array<string> readed_lines_config) { private string name_block_work = "[LoadFileConfig] "; players_spawnpoints.Clear(); players_sets.Clear(); players_skins.Clear(); foreach (string line : readed_lines_config) { private array<string> splited_line = new array<string>; splited_line.Clear(); line.Split( block_split_parameters_config, splited_line ); private string UID_player = splited_line.Get(0); private string default_skin_player = splited_line.Get(1); private string sets_numbers_player = splited_line.Get(2); private string points_spawn_player = splited_line.Get(3); private array<vector> temp_players_spawnpoints = new array<vector>; temp_players_spawnpoints.Clear(); array<int> temp_players_sets = new array<int>; temp_players_sets.Clear(); array<string> temp_players_spawnpoints_string = new array<string>; temp_players_spawnpoints_string.Clear(); array<string> temp_players_sets_string = new array<string>; temp_players_sets_string.Clear(); if (points_spawn_player.Contains(block_split_multi_parameters_config)) { points_spawn_player.Split( block_split_multi_parameters_config, temp_players_spawnpoints_string ); } else { temp_players_spawnpoints_string.Insert(points_spawn_player); } foreach (string line_spawnpoint : temp_players_spawnpoints_string) { if (line_spawnpoint == disable_read_parameter) { temp_players_spawnpoints.Insert(Set_Read_coords_disable()); } else { temp_players_spawnpoints.Insert(line_spawnpoint.ToVector()); } } Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Generated massive for " + UID_player + " with " + temp_players_spawnpoints.Count().ToString() + " spawnpoints."); if (sets_numbers_player.Contains(block_split_multi_parameters_config)) { sets_numbers_player.Split( block_split_multi_parameters_config, temp_players_sets_string ); } else { temp_players_sets_string.Insert(sets_numbers_player); } foreach (string line_set : temp_players_sets_string) { if (line_set == disable_read_parameter) { temp_players_sets.Insert(0); } else { temp_players_sets.Insert(line_set.ToInt()); } } if (default_skin_player == disable_read_parameter) { default_skin_player = "0"; } Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Generated massive for " + UID_player + " with " + temp_players_sets.Count().ToString() + " sets."); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Detected for " + UID_player + " skin " + default_skin_player); players_spawnpoints.Insert(UID_player,temp_players_spawnpoints); players_sets.Insert(UID_player,temp_players_sets); players_skins.Insert(UID_player,default_skin_player); } } vector Load_And_Check_Spawnpoints(PlayerIdentity identity, vector pos_default) { private string name_block_work = "[Load_And_Check_Spawnpoints] "; private vector retun_pos = pos_default; if(identity) { private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string Game_UID_P = identity.GetId(); private string Game_ID_P = identity.GetPlayerId().ToString(); if (enabled_loading_custom_spawnpoints) { if ((players_spawnpoints.Count() > 0) && (enabled_loaded_successfull_config)) { if (players_spawnpoints.Contains(UID_P)) { private array<vector> readed_lines_config = new array<vector>; readed_lines_config = players_spawnpoints.Get(UID_P); private vector retun_pos_check = readed_lines_config.GetRandomElement(); if (Check_coords_disable(retun_pos_check)) { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") disabled loading private spawn point. Will be used default spawn point!"); } else { retun_pos = retun_pos_check; Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") setuped private spawn point: " + retun_pos.ToString()); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Can't founded private spawnpoint for player " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Config script is incorrect, checking private spawnpoints is disabled! Player: " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "disabled loading personal spawnpoints from config file script!"); } } Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") will be used spawn point: " + retun_pos.ToString()); return retun_pos; } string Load_And_Check_SpawnSkin_Player(PlayerIdentity identity, string characterName) { private string name_block_work = "[SelectStartSkinPlayer] "; private string retun_skin = characterName; if(identity) { private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string Game_UID_P = identity.GetId(); private string Game_ID_P = identity.GetPlayerId().ToString(); if (enabled_loading_custom_skins) { if (players_skins.Count() > 0) { if (players_skins.Contains(UID_P)) { private string readed_skin = players_skins.Get(UID_P); if (readed_skin == "0") { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") disabled loading private skin setting, will be used default setting game!"); } else { retun_skin = readed_skin; Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") setuped private skin setting: " + retun_skin); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Can't founded private skin setting for player " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Config script is incorrect, checking private skin setting is disabled! Player: " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "disabled loading personal skin player settings from config file script!"); } } Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") will be used skin: " + retun_skin); return retun_skin; } void Load_And_Check_StartLoadout(PlayerBase player) { private string name_block_work = "[SelectStartSetPlayer] "; private int use_set_id = -1; private PlayerIdentity identity = player.GetIdentity(); if(identity) { private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string Game_UID_P = identity.GetId(); private string Game_ID_P = identity.GetPlayerId().ToString(); if (enabled_loading_custom_sets) { if ((players_sets.Count() > 0) && (enabled_loaded_successfull_config)) { if (players_sets.Contains(UID_P)) { private array<int> readed_lines_config = new array<int>; readed_lines_config.Clear(); readed_lines_config = players_sets.Get(UID_P); private int chek_use_set_id = readed_lines_config.GetRandomElement(); if (chek_use_set_id == 0) { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") disabled loading private set numbers. Will be used default set player! "); } else { use_set_id = chek_use_set_id; Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") setuped private set number is: " + use_set_id.ToString()); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Can't founded private sets for player " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Config script is incorrect, checking private sets is disabled! Player: " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "disabled loading personal loadout sets player settings from config file script! Will be used default loadout!"); } if (use_set_id >= 0) { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") will be used spawn set with number is: " + use_set_id.ToString()); } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") will be used spawn default start set without number. "); } StartSetsPlayers.StartSetsPlayer(player, use_set_id); } } private array<EntityAI> GetItemListinobject(PlayerBase player,EntityAI item, bool check_player) { array<EntityAI> EntityAI_list_items = new array<EntityAI>; EntityAI_list_items.Clear(); int attIdx = 0; int attCount = 0; EntityAI item_in_object; if ((player) && (check_player)) { attCount = player.GetInventory().AttachmentCount(); for (attIdx = 0; attIdx < attCount; attIdx++) { item_in_object = player.GetInventory().GetAttachmentFromIndex(attIdx); if ( item_in_object.IsItemBase() ) { EntityAI_list_items.Insert(item_in_object); } } } if ((item) && !check_player) { attCount = item.GetInventory().AttachmentCount(); for (attIdx = 0; attIdx < attCount; attIdx++) { item_in_object = item.GetInventory().GetAttachmentFromIndex(attIdx); if ( item_in_object.IsItemBase() ) { EntityAI_list_items.Insert(item_in_object); } } } return EntityAI_list_items; } void RemoveAllItems (PlayerBase player) { private array<EntityAI> ItemListPlayer = new array<EntityAI>; private array<EntityAI> ItemsForDelete = new array<EntityAI>; private EntityAI itemInHands_player = player.GetHumanInventory().GetEntityInHands(); if (itemInHands_player != NULL) { if (player.CanDropEntity(itemInHands_player) && player.GetHumanInventory().CanRemoveEntityInHands()) { // Print("ItemForDelete: " + itemInHands_player.ToString()); ItemsForDelete.Insert(itemInHands_player); } } ItemListPlayer = GetItemListinobject(player,NULL,true); if (ItemListPlayer.Count() > 0) { foreach(EntityAI ItemPlayer: ItemListPlayer) { private array<EntityAI> ItemInItemInInventory = GetItemListinobject(NULL,ItemPlayer,false); private CargoBase cargo = ItemPlayer.GetInventory().GetCargo(); if(cargo) { if (cargo.GetItemCount() > 0) { for (int f = 0; f < cargo.GetItemCount(); f++) { if(cargo.GetItem(f)) { ItemsForDelete.Insert(cargo.GetItem(f)); } } } } if (ItemInItemInInventory.Count() > 0) { foreach(EntityAI items_temp: ItemInItemInInventory) { if(items_temp) { ItemsForDelete.Insert(items_temp); } } } if(ItemPlayer) { ItemsForDelete.Insert(ItemPlayer); } } } if (ItemsForDelete.Count() > 0) { foreach(EntityAI item_temp: ItemsForDelete) { if(item_temp) { GetGame().ObjectDelete(item_temp); } } } } }; Sets.c
      class StartSetsPlayersConfig { void StartSetsPlayer(PlayerBase player,int use_set_id) { EntityAI itemCreated = NULL; EntityAI itemCreated1 = NULL; ItemBase itemCasted = NULL; switch( use_set_id ) //Раздаем лут (можно использовать значения от 1 и выше, только не 0 и не -1) { case 1: //Set with number 1 (Сет с номером 1) { My_Custom_Spawn_Parameters.RemoveAllItems(player); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку itemCreated = player.GetInventory().CreateInInventory("CoyoteBag_Green"); // Выдаем рюкзак и записываем в переменную itemCreated if (itemCreated) // Проверяем, создался ли рюкзак. Если он создался, переменная itemCreated будет не пуста и проверка пройдет { SetRandomHealthItem(itemCreated); // Выдаем рюкзаку рандомное качество itemCreated1 = itemCreated.GetInventory().CreateInInventory("Apple"); // Добавляем в инвентарь созданного рюкзака яблоко и записываем в переменную itemCreated1 if (itemCreated1) // Проверяем, создалось ли яблоко в рюкзаке, яблоко у нас с переменной itemCreated1 { SetRandomHealthItem(itemCreated1); // Выдаем яблоку рандомное качество } itemCreated1 = NULL; // Обнуляем значение переменной после работы с ней, чтобы следующая проверка прошла корректно itemCreated1 = itemCreated.GetInventory().CreateInInventory("Rag"); // Выдаем игроку бинты в рюкзак и записываем в переменную itemCreated1 if (itemCreated1) // Проверяем, создались ли бинты в рюкзаке, они у нас с переменной itemCreated1 { itemCasted = ItemBase.Cast(itemCreated1); // Выполняем преобразование в другой класс для работы с нужной нам функцией, поскольку в классе EntityAI нет нужной нам функции SetQuantity, а в подклассе ItemBase она есть. Предмет при этом так и остается один и тот же! itemCasted.SetQuantity(4); // Определяем количество для созданных бинтов как 4 штуки SetRandomHealthItem(itemCreated); // Выдаем бинтам рандомное качество, функция работает с классом EntityAI (см. в конфе файла) } } // переменную itemCreated не обнуляем далее, поскольку мы ее не используем в проверке ниже. itemCreated = player.GetInventory().CreateInInventory("TTSKOPants"); // Выдаем игроку штаны itemCreated = player.GetInventory().CreateInInventory("TTsKOJacket_Camo"); // Выдаем игроку куртку itemCreated = player.GetInventory().CreateInInventory("CombatBoots_Black"); // Выдаем игроку обувь //itemCasted = ItemBase.Cast(itemCreated); // Строка не нужна, закоментирована. используется для изменения класса EntityAI в ItemBase (чтобы нужные операции были доступны) itemCreated = player.GetInventory().CreateInInventory("CombatKnife"); // Выдаем игроку ножик в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("FNX45"); // Выдаем игроку FNX в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"); // Выдаем игроку магазины к FNX в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"); // Выдаем игроку магазины к FNX в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("Mag_AKM_30Rnd"); // Выдаем игроку магазины к AKM в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("Mag_AKM_30Rnd"); // Выдаем игроку магазины к AKM в любой свободный слот в инвентаре itemCreated = NULL; // Обнуляем значение переменной после работы с ней, нужно если мы будем использовать ее далее itemCreated = player.GetHumanInventory().CreateInHands("akm"); // Выдаем игроку AKM в руки if (itemCreated) // Проверяем, создался ли АКМ { itemCreated.GetInventory().CreateAttachment( "PSO11Optic" ); // Выдаем игроку на AKM оптику ПСО 11 и крепим itemCreated.GetInventory().CreateAttachment( "AK_WoodBttstck" ); // Выдаем игроку на AKM цевье, приклад и глушитель, и крепим itemCreated.GetInventory().CreateAttachment( "AK_WoodHndgrd" ); // Выдаем игроку на AKM цевье, приклад и глушитель, и крепим itemCreated.GetInventory().CreateAttachment( "AK_Suppressor" ); // Выдаем игроку на AKM цевье, приклад и глушитель, и крепим } break; } case 2: //Set with number 2 (Сет с номером 2) { break; } case 3: //Set with number 3 (Сет с номером 3) { break; } case 4: //Set with number 4 (Сет с номером 4) { break; } case 5: //Set with number 5 (Сет с номером 5) { break; } case 6: //Set with number 6 (Сет с номером 6) { break; } default: //Default starting spawn set (Сет поумолчанию для всех игроков, если хотите назначить - добавляйте здесь!) { //My_Custom_Spawn_Parameters.RemoveAllItems(player); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку DefaultSets(player); // Для выдачи своих сетов по рандому всем игрокам, не прописанным в скрипте, раскомментировать эту строку break; } } } void SetRandomHealthItem(EntityAI itemCreated) // Функция генерирует и применяет для предмета рандомное значение здоровья! { if ( itemCreated ) { private int rndHlt = Math.RandomInt(55,6); itemCreated.SetHealth("","",rndHlt); } } void DefaultSets(PlayerBase player) // Функция выдает сеты игрокам, не прописанным в конфигурации скрипта!!! { EntityAI itemCreated = NULL; EntityAI itemCreated1 = NULL; ItemBase itemCasted = NULL; // ниже пример, если вам нужно задать свои точки спавна для всех игроков. Этот код можно также использовать и для каждого сета индивидуально! // Код закомментирован, если это надо - раскомментируйте! // начало кода точек спавна игрока /* private array <vector> spawnpoints = {"7500 0 7500", "7500 0 7500","7500 0 7500", "7500 0 7500"}; private vector selected_spawnpoint = spawnpoints.GetRandomElement(); player.SetPosition(selected_spawnpoint); */ // конец кода точек спавна игрока private int random_set_number = Math.RandomIntInclusive(1,6); // генерируем рандом номер сета от 1 до 6 включительно (по значениям блоков case ниже) switch( random_set_number ) //Раздаем лут (можно использовать значения от 1 и выше, только не 0 и не -1) { case 1: //Set with number 1 (Сет с номером 1) { break; } case 2: //Set with number 2 (Сет с номером 2) { break; } case 3: //Set with number 3 (Сет с номером 3) { break; } case 4: //Set with number 4 (Сет с номером 4) { break; } case 5: //Set with number 5 (Сет с номером 5) { break; } case 6: //Set with number 6 (Сет с номером 6) { break; } default: //Default starting spawn set (Сет поумолчанию для всех игроков, в случае если ни один из сетов выше не выпал. { //My_Custom_Spawn_Parameters.RemoveAllItems(player); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку break; } } } } init_mod.c
      #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\Script.c" #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\Sets.c" ref CustomSpawnPlayerConfig My_Custom_Spawn_Parameters = new CustomSpawnPlayerConfig(); ref StartSetsPlayersConfig StartSetsPlayers = new StartSetsPlayersConfig(); modded class CustomMission { override void OnInit () { super.OnInit(); GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(My_Custom_Spawn_Parameters.Read_Update_Config, 120000, true); // Обновление настроек скрипта кастомных спавнов, 1 минута = 60000 } override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName) { pos = My_Custom_Spawn_Parameters.Load_And_Check_Spawnpoints(identity, pos); characterName = My_Custom_Spawn_Parameters.Load_And_Check_SpawnSkin_Player(identity, characterName); super.CreateCharacter(identity, pos, ctx, characterName); return m_player; } override void StartingEquipSetup(PlayerBase player, bool clothesChosen) { super.StartingEquipSetup(player, clothesChosen); My_Custom_Spawn_Parameters.Load_And_Check_StartLoadout(player); } }  

       
      2. В файле:
      {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.c в самом верху файла добавить:
      #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\init_mod.c" Чтобы получилось примерно так

       
      3. В папке, обозначенной параметром запуска сервера '-profile=', поместить файл с именем CustomSpawnPlayerConfig.txt
      и заполнить его данными по следующему формату:
      UID|Skin_player|sets_numbers|points_spawns где UID - это steam64id от профиля игрока в steam
      Skin_player - точный id скина игрока (можно указать 0 для отключения опции)
      sets_numbers - номер сета со стартовым лутом (можно указать несколько через ';', указать один всего, либо указать 0 для отключения опции)
      points_spawns - координаты спавна игрока на карте в формате 'x y z' (можно указать несколько через ';', указать всего одну точку, либо указать 0 для отключения опции)
      Пример:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      76561198141889254|SurvivorM_Oliver|1|12955.091797 16.115206 7993.588379 76561198141889256|SurvivorM_Oliver|1;2|14791.965820 76.481781 14041.661133;12029.079102 196.356125 7274.689941 76561198141889253|SurvivorM_Oliver|0|0  
      4. В файле Sets.c в папке:
      {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\ настроить стартовый лут для ваших игроков и написать собственные сеты
      ВАЖНО: количество сетов можно делать любое, номера сетов брать от 1 и выше (не должно быть -1, либо 0, только от 1 и выше)
      Все что укажете в блоке default будет применено для всех игроков при респавне в случае, если им не выдан никакой сет!
      Поумолчанию в функции default вызывается функция DefaultSets, позволяющая рандомно выбирать любой из сетов для игроков, которым сет не задан в конфигурации скрипта. Принцип составления сетов такой же, как и выше. Если будете пользоваться этим, обратите вниманием на строку:
      private int random_set_number = Math.RandomIntInclusive(1,6); Эта функция генерирует число от 1 до 6 включительно. Соответственно если сетов будет больше 6, то число надо корректировать и тут тоже!
       
      P.S. Прикрепить к соспавненному оружию магазин не получится, рабочего кода я не смог найти!!
       
      Если у вас папка активной миссии сервера отличается от dayzOffline.chernarusplus то переименуйте ее в строке, вписываемой в:
              {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.c
              {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\init_mod.c
       
      Благодарности: Товарищу Mizev за его первоначальные гайды в группе VK при появлении в сети серверной части игры
       
       
    • By vitacite
      Квест на аномалии. Участники - любые игроки. 3 НПС, 3 Анимированных аномалии (пока без дамага), 3 квестовых предмета - детектор аномалий, карта сокровищь и журнал с девчонками 🙂
      Выглядит это так...
       

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
       
       
      Мануаль по установке тут....
      Обновление от 19.01.2016
      https://github.com/olkeakavitacite/EQP_Anomaly/
      Так же находится описание, как и чего делать.
       
    • By DrTauren
      DZAI создана простой, легко настраиваемой, лёгкой в установке системой. Она создана для работы с любыми DayZ-модами и картами.

      Особенности системы:
      Статичный спавн ботов - в городах, деревнях, на военных базах Динамический спавн ботов - спавнятся рандомно по всей карте. Могут появиться где угодно и когда угодно Патрули на воздушной технике - патрули также появляются рандомно. Пешие игроки имеют маленький шанс быть обнаруженными, но игрокам на какой-либо технике повезло гораздо меньше  Сухопутные патрули на технике - появляются так же рандомно, курсируют по дорогам между городами и деревнями Собственноручно настраиваемые патрули - спавните ботов и различные патрули в нужных вам местах. Например на ваших кастомных военных базах Боты используют только лутабельное оружие - вы можете подобрать любое оружие с убитого бота без каких-либо проблем, т.к. их лут генерируется с учётоб таблиц лута вашего мода. Чем реже лут у бота, тем он опасней (автор имеет ввиду скилл бота) Система жизней - боты имеют столько же жизней, как игрок. Точно так же могут упасть без сознания. Так что лучше стрелять по головам  
       
      Установка:
      1) Качаем архив: 
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      2) Распаковываем наш dayz_server.pbo, затем открываем файл server_monitor.sqf
      3) Находим строку:
      allowConnection = true; и добавляем над ней эту:
      [] call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZAI\init\dzai_initserver.sqf"; 4) Копируем папку DZAI из скаченного архива в корень нашего dayz_server
      5) Настроить работу системы под себя вы можете в этом файле: DZAI\init\dzai_config.sqf
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.