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
vitacite

GREENZONE VER 0.3 + DONAT + обвязка

Recommended Posts

Обвязка для SAFEZONE с донатом. Конечный результат будет выглядеть так :

 

 

 

Что реализовано:

 

1) SAFEZONE без дамага.

2) Визуализация

3) Сообщение о вхождение - выхождении из SAFE ZONE

4) Для донаторов починка техники, заправка, перезарядка оружия в SAFEZONE.

5) Loadout на старте.

 

Итак:

Шаг №1:  модификация mission.sqf ищем следующий код:

		class Item99 {
			side = CIV;
			
			class Vehicles {
				items = 1;
				
				class Item0 {
					position[] = {23605.1, 3.19, 17998.1};
					azimut = 130.016;
					special = NONE;
					id = 99;
					side = CIV;
					vehicle = "VirtualMan_EPOCH";
					player = "PLAY CDG";
					leader = 1;
					skill = 0.6;
				};
			};
		};
	};

обратите внимание на последнюю 4-ю скобку закрывающую блок спавна!!! Если ее не поставить сервер работать не будет.

После этого блока вставляем следующее:

	//TODO Реализация возможностей для донаторов (начальный лут и станция тех обслуживания)
	class Vehicles
	{
		items=4;
		class Item0
		{
			position[]={23599.836,3.1900001,18000.484};
			azimut=153.62447;
			id=102;
			side="EMPTY";
			vehicle="O_supplyCrate_F";
			skill=0.60000002;
			init="clearMagazineCargoGlobal this;  clearWeaponCargoGlobal this;  clearItemCargoGlobal this; clearAllItemsFromBackpack this; clearBackpackCargoGlobal this; this addAction[""<t color='#D11313'>Экипировка</t>"", ""addons\loadoutfrombox.sqf""];";
		};
		class Item1
		{
			position[]={13279.555,2.4851172,14563.375};
			azimut=330;
			id=103;
			side="EMPTY";
			vehicle = "Land_CarService_F";
			skill = 0.6;
			init = "this addAction [""Тех.обслуживание"", ""addons\devs_land.sqf"", [5,1], 50, true, true, """", ""vehicle _this isKindOf 'LandVehicle'""];";
		};
		class Item2
		{
			position[]={13292.752,2.3035169,14549.961};
			azimut=140;
			id=104;
			side="EMPTY";
			vehicle="Land_MobileLandingPlatform_01_F";
			skill=0.60000002;
		};
		class Item3
		{
			position[]={13286.655,2.2886071,14545.61};
			azimut=140;
			id=105;
			side="EMPTY";
			vehicle="Land_JetEngineStarter_01_F";
			init = "this addAction [""Heli-Service"", ""addons\devs_air.sqf"", [5,1], 50, true, true, """", ""vehicle _this isKindOf 'Air'""];";
			skill=0.60000002;
		};
	};
	class Sensors
	{
		items=3;
		class Item0
		{
			position[]={13330.902,2.2880001,14528.784};
			a=75;
			b=75;
			angle=-88.355904;
			activationBy="ANY";
			repeating=1;
			interruptable=1;
			type="SWITCH";
			age="UNKNOWN";
			expCond="this && (local player) && (vehicle player in thisList)";
			expActiv="hint parseText format[""<t align='center' size='1.8' color='#d8bc00'> ТОРГОВАЯ ЗОНА::</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Любое насилие запрещено! <br/> За убийство или воровство в пределах круга <br/> последует немедленное наказание <br/>""];player allowDamage false;";
			expDesactiv="hint parseText format[""<t align='center' size='1.8' color='#ff0000'> ВНИМАНИЕ !</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Вы покинули торговую зону <br/> Ваша жизнь находится в потенциальной опасности.  <br/>""]; player allowDamage true;";
			class Effects
			{
				soundDet="BattlefieldFirefight"; // play ambient sound
			};
		};
		class Item1
		{
			position[]={6195.0264,88.872307,16855.523};
			a=75;
			b=75;
			angle=-88.355904;
			activationBy="ANY";
			repeating=1;
			interruptable=1;
			type="SWITCH";
			age="UNKNOWN";
			expCond="this && (local player) && (vehicle player in thisList)";
			expActiv="hint parseText format[""<t align='center' size='1.8' color='#d8bc00'>ТОРГОВАЯ ЗОНА::</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Любое насилие запрещено! <br/> За убийство или воровство в пределах круга <br/> последует немедленное наказание <br/>""];player allowDamage false;";
			expDesactiv="hint parseText format[""<t align='center' size='1.8' color='#ff0000'> ВНИМАНИЕ !</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Вы покинули торговую зону <br/> Ваша жизнь находится в потенциальной опасности.  <br/>""]; player allowDamage true;";
			class Effects
			{
				soundDet="BattlefieldFirefight"; // play ambient sound
			};
		};
		class Item2
		{
			position[]={18474.422,24.701738,14291.331};
			a=75;
			b=75;
			angle=-88.355904;
			activationBy="ANY";
			repeating=1;
			interruptable=1;
			type="SWITCH";
			age="UNKNOWN";
			expCond="this && (local player) && (vehicle player in thisList)";
			expActiv="hint parseText format[""<t align='center' size='1.8' color='#d8bc00'>ТОРГОВАЯ ЗОНА::</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Любое насилие запрещено! <br/> За убийство или воровство в пределах круга <br/> последует немедленное наказание <br/>""];player allowDamage false;";
			expDesactiv="hint parseText format[""<t align='center' size='1.8' color='#ff0000'> ВНИМАНИЕ !</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Вы покинули торговую зону <br/> Ваша жизнь находится в потенциальной опасности.  <br/>""]; player allowDamage true;";
			class Effects
			{
				soundDet="BattlefieldFirefight"; // play ambient sound
			};
		};
	};

Не забудьте, что текст отображается на русском только в случае кодировки UTF 8///

Что сделано в данном блоке? в новом разделе Vehiсle добавлен в фабрике по клонированию Алтис объект O_supplyCrate_F который будет выдавать начальный лут для обычных игроков и для донаторов.

В на центральном спавне установлен автосервис и передвижная вертолетная площадка которая будет чинить, заправлять и перевооружать (за крипто) технику у донаторов.

В разделе сенсоров прописаны звуки боя при нахождении в SAFEZONE, граница локаций визуализирована яркими утопленными в землю оранжевыми шарами (может меняться). Damage убран.

 

PS: помните что mission.sqf чувствителен к пробелам!! не допускайте лишнее редактируйте в notepad++ либо FAR чтобы контролировать правильность открытия закрытия скобок и знаков препинания.

 

Шаг № 2: Скрипт конфигурации

создаем в папке с миссией папку cfg, в этой папке создаем файл olkecfg.sqf

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TODO:Файл конфигураций для S-PLATOON
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TODO:Настройка SAFE ZONE
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TODO: Дополненная реальность для Epoch, скрипт обозначения SAFE ZONE Включить выключить: USE_GREENZONE = true / false
USE_GREENZONE = true;
//TODO: Использовать или нет маркеры на карте SET_MARKER = true / false
SET_MARKER = true;
//TODO: SET_ZONECOORD =  координаты GREENZONE для AltisEpoch для других карт используйте свои формат [[_center],_radius,_name,_string,_lSign],[[_center],_radius,_name,_string,_lSign]];
SET_ZONECOORD =
[
	[[13325,14515,0],75, 'Center', true],  // Center GreenZone
	[[6192.46,16834,0],75, 'West', true],  // West GreenZone
	[[18451.9,14278.1,0],75, 'East', true] // East GreenZone
];

SET_SIGNS = 'Sign_Sphere200cm_F';

//TODO: Рисуем круг заполняем круг моделью виртуального указателя. Можно и не виртуального, со своей текстурой (пока в разработке) варианты указателя:

//TODO: Sign_Sphere200cm_F - большая оранжевая сфера
//TODO: Sign_Arrow_Green_F - большая зеленая стрела острием направленная вниз
//TODO: Sign_Arrow_Direction_Green_F - зеленая стрела направленная на центральную точку GREENZONE

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TODO: Настройки для донаторов
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SET_DONATOR = [
	'ID641','ID642','ID643'
];
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TODO: Настройки рапторов в случае использования мода
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
rup_raptor_dam = 0.5;
rup_raptor_dam_AI = 0.4;
rup_raptor_dam_maul = 0.2;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TODO: Настройка цветовой гаммы на сервере
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
"ColorCorrections" ppEffectEnable true;
"ColorCorrections" ppEffectAdjust [0.9, 0.9, 0, [0, 0.1, 0.25, -0.14], [1, 1, 1, 1.26], [0.15, 0.09, 0.09, 0.0]];
"ColorCorrections" ppEffectCommit 0;

PS: В массив SET_DONATORS вносим через запятую 64 битный STEAM ID, после последнего запятая не ставится!

 

TODO подкрашивает в FAR комментарии желтым. 

 

Шаг № 3. Идем в ваш init.sqf в корне с миссией и подключаем в нем наш olkecfg.sqf (если нет Init.sqf - надо его создать)

В саааамом верху пишем 

#include "cfg\olkecfg.sqf"

(внимание строка не закрыта ; т.к. после include она не закрывается)

 

Шаг № 4. Ставим донаторские объекты в центральной safezone

Создаем папку Addons в ней создаем два файла.  

mpmission/epoch.Altis/addons/devs_air.sqf
mpmission/epoch.Altis/addons/devs_land.sqf

 

devs_air.sqf

/*
Скрипт для донаторов. Обслуживание вертолетов
*/


private ["_user", "_veh", "_title", "_htext"];
    
_user = (_this select 1);
_veh = vehicle _user;
_title  = "<t color='#ff0000' size='1.2' shadow='1' shadowColor='#000000' align='center'>ЦЕНТР ТЕХ.ОБСЛУЖИВАНИЯ:</t><br/><t color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>";

// if (getPlayerUID player in SET_DONATOR) then {
		if (EPOCH_playerCrypto >= 500) then {

            //--> text: welcome-messages    

			_htext   = "Обнаружен премиум аккаунт. Вам доступно обслуживание коптера. Внимание до завершение обслуживания не двигайтесь с места и не покидайте транспорт иначе деньги спишутся без оказания услуги.";
			hint parseText ( _title + _htext);
                        uisleep 5;
            //--> action: remove crypto
                       EPOCH_playerCrypto = EPOCH_playerCrypto - 500 ;
			_htext   = "Списание 500 Crypto со счета.";
			hint parseText ( _title + _htext);
                        uisleep 3;        
			_htext   = "Оперативный ремонт техники.";
			hint parseText ( _title + _htext);
                        _veh setDamage 0;
                        uisleep 3;
			_htext   = "Заливаем керосин. Не двигайтесь";
			hint parseText ( _title + _htext);
                        _veh setFuel 1;
                        uisleep 3;
			_htext   = "Еще немного.....";
			hint parseText ( _title + _htext);
                        uisleep 5;
			_htext   = "Перезаряжаем турели";
			hint parseText ( _title + _htext);
                        _veh setVehicleAmmo 1;
                        uisleep 0.1;
                        _veh setAmmoCargo 1;
                        uisleep 7;
			_htext   = "Ваша птичка готова лететь дальше.";
			hint parseText ( _title + _htext);

} else {    
			_htext   = "Недостаточно CRYPTO на вашем счете";
			hint parseText ( _title + _htext);
};

/* } else {    
            //--> text: only driver can do this
			_htext   = "Услуга доступна только премиум аккаунту";
			hint parseText ( _title + _htext);
};*/

и devs_land.sqf

/*
Скрипт для донаторов. Обслуживание техники.
*/

private ["_user", "_veh", "_title", "_htext"];
    
_user = (_this select 1);
_veh = vehicle _user;
_title  = "<t color='#ff0000' size='1.2' shadow='1' shadowColor='#000000' align='center'>ЦЕНТР ТЕХ.ОБСЛУЖИВАНИЯ:</t><br/><t color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>";


if (! isnull (driver _veh))    then {                            
//	if (getPlayerUID player in SET_DONATOR) then {
		if (EPOCH_playerCrypto >= 500) then {


            //--> text: welcome-messages    

			_htext   = "Обнаружен премиум аккаунт. Вам доступно обслуживание техники. Внимание до завершение обслуживания не двигайтесь с места и не покидайте транспорт иначе деньги спишутся без оказания услуги.";
			hint parseText ( _title + _htext);
                        uisleep 10;
                        
            //--> action: remove crypto
                        EPOCH_playerCrypto = EPOCH_playerCrypto - 500 ;            
			_htext   = "Удерживается оплата да тех.обслуживание.";
			hint parseText ( _title + _htext);
                        uisleep 3;
            //--> action: repair vehicle                
                        _veh setDamage 0;
			_htext   = "Ремонт произведен в полном объеме.";
			hint parseText ( _title + _htext);
                        uisleep 3;
			_htext   = "Заливаем первоклассный бензин.";
			hint parseText ( _title + _htext);
                        uisleep 3;
            //--> action: refuel Vehicle
                        _veh setFuel 1;
			_htext   = "До полного.....";
			hint parseText ( _title + _htext);
            //--> action: ReAmmo Guns
			_htext   = "Смазываем пушки.";
			hint parseText ( _title + _htext);
            //--> action: move player to gunnerposition to rearm ALL magazines, otherwise only the actual magazine will be reloaded
                        player action ["moveToGunner", _veh];
                        uisleep 5;
			_htext   = "Перезарядка...";
			hint parseText ( _title + _htext);
                        _veh setVehicleAmmo 1;
                        uisleep 0.1;
                        _veh setAmmoCargo 1;
                        uisleep 0.1;
            //--> action: bring player back to driverposition
                        uisleep 0.1;
                        player action ["moveToDriver", _veh];
                        uisleep 5;
			_htext   = "Ваша машина, как новенькая. Можно ехать!!!";
			hint parseText ( _title + _htext);
} else {
            //--> text: not enough crypto    
			_htext   = "Недостаточно средств на счете..";
			hint parseText ( _title + _htext);
};
/*} else {    
            //--> text: only driver can do this
			_htext   = "Услуга доступна только премиум аккаунту";
			hint parseText ( _title + _htext);
};*/
} else {    
			_htext   = "Вы должны находиться за рулем и без пассажиров...";
			hint parseText ( _title + _htext);
};

оба скрипта взяты на форуме dayzepoch, перевод и доработка для доната - мой.

 

Шаг № 5. Создаем файл greenzone.sqf (визуализация safezone и маркеры)

mpmission/epoch.Altis/greenzone/greenzone.sqf

greenzone.sqf

if (isServer) exitWith 
{
	if (USE_GREENZONE) then // проверка, что используется оформление GREENZONE
	{
		{
			_center = _x select 0;
			_radius = _x select 1;
			_name = _x select 2;	
			_lsign = _x select 3;

			if (_lSign) then // проверка, что оформляем конкретную SAFEZONE (true/false в координатах)
			{
				for '_i' from 0 to 360 step (270 / _radius)*2 do
				{
					_location = [(_center select 0) + ((cos _i) * _radius), (_center select 1) + ((sin _i) * _radius),0];
					_dir = ((_center select 0) - (_location select 0)) atan2 ((_center select 1) - (_location select 1));
					_object = createVehicle [ SET_SIGNS , _location, [], 0, 'CAN_COLLIDE'];  // Изменяем модель указателя тут....
					_object setDir _dir;
				};

			if (SET_MARKER) then { // проверка, что наносим метки с SAFEZONE на карту

				_marker = createMarker [format["GreenZone:%1", _name], _center];
				_marker setMarkerShapeLocal "Icon";
				_marker setMarkerType "mil_circle";
//				_marker setMarkerType "selector_selectedMission";
				_marker setMarkerText " Безопасная торговая зона";
				_marker setMarkerColor "ColorGUER";
				_marker = createMarker [format["GreenZone1:%1", _name], _center];
				_marker setMarkerShapeLocal "ELLIPSE";
				_marker setMarkerTypeLocal  "Empty";
				_marker setMarkerColorLocal "ColorGUER";
				_marker setMarkerBrushLocal "Solid";
				_marker setMarkerSize [_radius, _radius];
			};
		};
	 } forEach SET_ZONECOORD ; 
    };                                                                                       
};

Шаг № 6. В уже созданной нами папке addons - создаем loadout для донаторов. loadoutfrombox.sqf

 

mpmission/epoch.Altis/addons/loadoutfrombox.sqf
if (getPlayerUID player in SET_DONATOR) then {
						hint "Выдан премиум набор";
						RemoveAllItems player;
					      	RemoveAllWeapons player;
						Removeallcontainers player;
						player addItem "NVGoggles";
						player addBackpack "B_BergenG";
						player addItem "H_Shemag_khk";
						player assignitem "H_Shemag_khk";
//						player addItem "NVGoggles";
//						player addMagazine "handgrenade";
//						player addMagazine "handgrenade";
//						player addMagazine "handgrenade";
						player addVest "V_Chestrig_rgr";
						player addWeapon "hgun_Pistol_heavy_01_F";
						player addMagazine "11Rnd_45ACP_Mag";
						player addMagazine "11Rnd_45ACP_Mag";
						player addWeapon "SMG_02_ACO_F";
						player selectWeapon "SMG_02_ACO_F";
						player addMagazine "30Rnd_9x21_Mag";
						player addMagazine "30Rnd_9x21_Mag";
						player addMagazine "30Rnd_9x21_Mag";
						player addWeapon "EpochRadio0";
						player addWeapon "ItemMap";
//						EPOCH_playerCrypto = 100;

						_modelMale = (typeOF player == "Epoch_Male_F");
						_modelFemale = (typeOF player == "Epoch_Female_F");

					if (_modelFemale) then
								{
								player forceAddUniform "U_BasicBodyFemale";
								};
					if (_modelMale) then
								{
								player forceAddUniform "U_OG_Guerilla2_1";
								};
					newPlayer = false;
				} else {
					hint "Выдан стандартный набор";
					RemoveAllItems player;
				      	RemoveAllWeapons player;
					Removeallcontainers player;
					player addWeapon "EpochRadio0";
					player addWeapon "ItemMap";
					player addWeapon "hgun_Pistol_heavy_01_F";
					player addMagazine "11Rnd_45ACP_Mag";
//					EPOCH_playerCrypto = 100;
				};
	};
};

Шаг № 7:

 

Подцепляем визуализацию greenzone из init.sqf  в саамом низу вашего init.sqf пишем

 

[] execVM "greenzone\greenzone.sqf";

 

Шаг № 8. 

Убираем дамаг в Safezone. Идем в файл Arma3/@epochhive/addons/server_settings.pbo. С помощью pbo манагера вскрываем содержимое. Находим файл 

/configs/maps/altis.h  и в нем ищем раздел связанный с трейдзонами ...  добавляем туда следующий код сразу после 

 

 

propsPos[] = {
 

 

 

	
//phones olke path
			{ "Land_PhoneBooth_02_F", { 13351, 14515.4, 0.0014267 }, 38.3472 },
			{ "Land_PhoneBooth_02_F", { 18467.5, 14263.8, 0.0297527 }, 38.3472 },
			{ "Land_PhoneBooth_02_F", { 6196.38, 16849.9, 0.00205231 }, 63.7064 },
//protection zone by olke central 3x3 25m radius circle
			{ "ProtectionZone_Invisible_F", { 13351.1, 14540.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13351.1, 14515.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13351.1, 14490.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13326.1, 14540.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13326.1, 14515.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13326.1, 14490.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13301.1, 14540.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13301.1, 14515.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13301.1, 14490.1, 0.0110912 }, 359.768 },
//protection zone by olke east 3x3 25m radius circle
			{ "ProtectionZone_Invisible_F", { 18492.5, 14288.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18492.5, 14263.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18492.5, 14238.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18467.5, 14288.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18467.5, 14263.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18467.5, 14238.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18442.5, 14288.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18442.5, 14263.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18442.5, 14238.8, 0.0297527 }, 359.768 },
//protection zone by olke west 3x3 25m radius circle
			{ "ProtectionZone_Invisible_F", { 6221.38, 16874.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6221.38, 16849.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6221.38, 16824.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6196.38, 16874.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6196.38, 16849.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6196.38, 16824.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6171.38, 16874.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6171.38, 16849.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6171.38, 16824.9, 0.00205231 }, 63.7064  },
 

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

//116:			{ "ProtectionZone_Invisible_F", { 13344.1, 14483.7, 0.00191855 }, 359.768 },
//180:			{ "Land_ToiletBox_F", { 13351, 14515.4, 0.0014267 }, 38.3472 },
//283:			{ "Oil_Spill_F", { 18467.5, 14263.8, 0.0297527 }, 0.257763 },

 

Взято с работающего сервера. Видео, как это все выглядит будет чуть позже.

 

PS: переменная SET_DONATOR - (как и остальные в olkecfg.sqf) являются глобальными. Т.е. вы можете вызывать их из других своих скриптов. 

Share this post


Link to post
Share on other sites



Script Restriction error #21

 

script.log

 

 

#21 " немедленное наказание <br/>"];player allowDamage false;"
 

 

 

Вначале думал что проблема в пробеле между текстом и player, но поставив пробел получаю ту же ошибку.

 

 

#21 "немедленное наказание <br/>"]; player allowDamage false;"
 

 

 

 

Где может быть проблема?

Share this post


Link to post
Share on other sites

В инфистаре необходимо отключить чек маркеров, и нотификацию.. Тоже самое в Battleye. Battleye за дырявостью отключаю. А проблема скорее всего в некорректной обработке AllowDamage и маркерах на карте.

Share this post


Link to post
Share on other sites

В инфистаре необходимо отключить чек маркеров, и нотификацию.. Тоже самое в Battleye. Battleye за дырявостью отключаю. А проблема скорее всего в некорректной обработке AllowDamage и маркерах на карте.

Если не затруднит, то для чайников можно тыкнуть мордочкой что и где поменять в Battleye?

Share this post


Link to post
Share on other sites

Затруднит  т.к. я не пользуюсь Battleye. Попробуйте попросить помощи по Battleye в соответствующем разделе. На вскидку это script.txt и setvariableval.txt как минимум + смотрите по логам все выскакивающие ошибки и ограничения.

 

http://s-platoon.ru/index.php?/topic/2414-bec-obviazka/

http://s-platoon.ru/index.php?/topic/2183-nastroika-filtrov-battleye-pod-sobstvennye-nuzhdy/

Share this post


Link to post
Share on other sites

Добрый вечер. Красивая, хорошая сейв зона получается, очень понравилась. Только не работает донат на тех обслуживание и Heli. При спавне ящик с лутом донат работает хорошо. Не подскажите где может быть ошибка? Все проверил вроде бы все правильно сделал, может в самом скрипте где ошибка есть? Заранее спасибо.

Edited by oxmo (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

 

Script Restriction error #21

Необходимо добавить фильтры в Scripts.txt. Судя по сообщению это 21 строка файла, где нужно добавить 

!"player allowDamage false;" !"player allowDamage true;"

Share this post


Link to post
Share on other sites

Подскажите пожалуйста, при ремонте в табличке не показывает текст а одни знаки вопросов, а сначала все вроде нормально было 

Share this post


Link to post
Share on other sites

Подскажите пожалуйста, при ремонте в табличке не показывает текст а одни знаки вопросов, а сначала все вроде нормально было 

Не забудьте, что текст отображается на русском только в случае кодировки UTF 8/// При создания или редактирования файлов sqf.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

а все разобрался, только теперь под надписью ТЕХ ОБСЛУЖИВАНИЕ и над остальным текстом остались знаки вопросов, я так понял там линии должны быть (кодировку UTF без BOM поставил)

Share this post


Link to post
Share on other sites

как отключить на сейф зонах звуки стрельбы?

Share this post


Link to post
Share on other sites

как отключить на сейф зонах звуки стрельбы?

В файле mission.sqf удалаешь "BattlefieldFirefight" ("оставить пустым")

 

 

 

//TODO Реализация возможностей для донаторов (начальный лут и станция тех обслуживания)

class Vehicles

{

items=4;

class Item0

{

position[]={23599.836,3.1900001,18000.484};

azimut=153.62447;

id=102;

side="EMPTY";

vehicle="O_supplyCrate_F";

skill=0.60000002;

init="clearMagazineCargoGlobal this; clearWeaponCargoGlobal this; clearItemCargoGlobal this; clearAllItemsFromBackpack this; clearBackpackCargoGlobal this; this addAction[""Экипировка"", ""addons\loadoutfrombox.sqf""];";

};

class Item1

{

position[]={13279.555,2.4851172,14563.375};

azimut=330;

id=103;

side="EMPTY";

vehicle = "Land_CarService_F";

skill = 0.6;

init = "this addAction [""Тех.обслуживание"", ""addons\devs_land.sqf"", [5,1], 50, true, true, """", ""vehicle _this isKindOf 'LandVehicle'""];";

};

class Item2

{

position[]={13292.752,2.3035169,14549.961};

azimut=140;

id=104;

side="EMPTY";

vehicle="Land_MobileLandingPlatform_01_F";

skill=0.60000002;

};

class Item3

{

position[]={13286.655,2.2886071,14545.61};

azimut=140;

id=105;

side="EMPTY";

vehicle="Land_JetEngineStarter_01_F";

init = "this addAction [""Heli-Service"", ""addons\devs_air.sqf"", [5,1], 50, true, true, """", ""vehicle _this isKindOf 'Air'""];";

skill=0.60000002;

};

};

class Sensors

{

items=3;

class Item0

{

position[]={13330.902,2.2880001,14528.784};

a=75;

b=75;

angle=-88.355904;

activationBy="ANY";

repeating=1;

interruptable=1;

type="SWITCH";

age="UNKNOWN";

expCond="this && (local player) && (vehicle player in thisList)";

expActiv="hint parseText format["" ТОРГОВАЯ ЗОНА::

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Любое насилие запрещено!

За убийство или воровство в пределах круга

последует немедленное наказание

""];player allowDamage false;";

expDesactiv="hint parseText format["" ВНИМАНИЕ !

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Вы покинули торговую зону

Ваша жизнь находится в потенциальной опасности.

""]; player allowDamage true;";

class Effects

{

soundDet="BattlefieldFirefight"; // play ambient sound (Звуки стрельбы)

};

};

};

class Item1

{

position[]={6195.0264,88.872307,16855.523};

a=75;

b=75;

angle=-88.355904;

activationBy="ANY";

repeating=1;

interruptable=1;

type="SWITCH";

age="UNKNOWN";

expCond="this && (local player) && (vehicle player in thisList)";

expActiv="hint parseText format[""ТОРГОВАЯ ЗОНА::

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Любое насилие запрещено!

За убийство или воровство в пределах круга

последует немедленное наказание

""];player allowDamage false;";

expDesactiv="hint parseText format["" ВНИМАНИЕ !

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Вы покинули торговую зону

Ваша жизнь находится в потенциальной опасности.

""]; player allowDamage true;";

class Effects

{

soundDet="BattlefieldFirefight"; // play ambient sound (Звуки стрельбы)

};

};

};

class Item2

{

position[]={18474.422,24.701738,14291.331};

a=75;

b=75;

angle=-88.355904;

activationBy="ANY";

repeating=1;

interruptable=1;

type="SWITCH";

age="UNKNOWN";

expCond="this && (local player) && (vehicle player in thisList)";

expActiv="hint parseText format[""ТОРГОВАЯ ЗОНА::

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Любое насилие запрещено!

За убийство или воровство в пределах круга

последует немедленное наказание

""];player allowDamage false;";

expDesactiv="hint parseText format["" ВНИМАНИЕ !

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Вы покинули торговую зону

Ваша жизнь находится в потенциальной опасности.

""]; player allowDamage true;";

class Effects

{

soundDet="BattlefieldFirefight"; // play ambient sound (Звуки стрельбы)

};

};

};

 

Edited by Irk38 (see edit history)

Share this post


Link to post
Share on other sites

В файле mission.sqf удалаешь "BattlefieldFirefight" ("оставить пустим")

Спасибо 

Share this post


Link to post
Share on other sites

Итак, запустил серв, потестил- все норм. Ящик работает, починка, перезарядка... Заходит 3 друга (донатера, как вы поняли :), и не могут починить/ перезарядить технику. Хотя у меня все норм. У них просто не появляется надпись "Тех. обслуживвание", хотя лут из ящика (донатерский) они брать могут, что говорит о том что UID`ы прописаны правильно.

Share this post


Link to post
Share on other sites

Все поставил, но столкнулся с проблемой, фото прикреплю.

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

Может кто сможет подсказать как решить эту проблему.

hE6iQYYCjQg.jpg

 

u4U7ZlQsPac.jpg

Share this post


Link to post
Share on other sites

Все поставил, но столкнулся с проблемой, фото прикреплю.

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

Может кто сможет подсказать как решить эту проблему.

hE6iQYYCjQg.jpg

 

u4U7ZlQsPac.jpg

UTF -8 без BOM преобразуйте -_-

Share this post


Link to post
Share on other sites

UTF -8 без BOM преобразуйте -_-

Это что надо поменять в скрипте?

Share this post


Link to post
Share on other sites

Какой параметр отвечает за то, чтобы технику в гринзоне не могли дамажить?

Share this post


Link to post
Share on other sites

Обвязка для SAFEZONE с донатом. Конечный результат будет выглядеть так :

 

 

 

Что реализовано:

 

1) SAFEZONE без дамага.

2) Визуализация

3) Сообщение о вхождение - выхождении из SAFE ZONE

4) Для донаторов починка техники, заправка, перезарядка оружия в SAFEZONE.

5) Loadout на старте.

 

Итак:

Шаг №1:  модификация mission.sqf ищем следующий код:

		class Item99 {
			side = CIV;
			
			class Vehicles {
				items = 1;
				
				class Item0 {
					position[] = {23605.1, 3.19, 17998.1};
					azimut = 130.016;
					special = NONE;
					id = 99;
					side = CIV;
					vehicle = "VirtualMan_EPOCH";
					player = "PLAY CDG";
					leader = 1;
					skill = 0.6;
				};
			};
		};
	};

обратите внимание на последнюю 4-ю скобку закрывающую блок спавна!!! Если ее не поставить сервер работать не будет.

После этого блока вставляем следующее:

	//TODO Реализация возможностей для донаторов (начальный лут и станция тех обслуживания)
	class Vehicles
	{
		items=4;
		class Item0
		{
			position[]={23599.836,3.1900001,18000.484};
			azimut=153.62447;
			id=102;
			side="EMPTY";
			vehicle="O_supplyCrate_F";
			skill=0.60000002;
			init="clearMagazineCargoGlobal this;  clearWeaponCargoGlobal this;  clearItemCargoGlobal this; clearAllItemsFromBackpack this; clearBackpackCargoGlobal this; this addAction[""<t color='#D11313'>Экипировка</t>"", ""addons\loadoutfrombox.sqf""];";
		};
		class Item1
		{
			position[]={13279.555,2.4851172,14563.375};
			azimut=330;
			id=103;
			side="EMPTY";
			vehicle = "Land_CarService_F";
			skill = 0.6;
			init = "this addAction [""Тех.обслуживание"", ""addons\devs_land.sqf"", [5,1], 50, true, true, """", ""vehicle _this isKindOf 'LandVehicle'""];";
		};
		class Item2
		{
			position[]={13292.752,2.3035169,14549.961};
			azimut=140;
			id=104;
			side="EMPTY";
			vehicle="Land_MobileLandingPlatform_01_F";
			skill=0.60000002;
		};
		class Item3
		{
			position[]={13286.655,2.2886071,14545.61};
			azimut=140;
			id=105;
			side="EMPTY";
			vehicle="Land_JetEngineStarter_01_F";
			init = "this addAction [""Heli-Service"", ""addons\devs_air.sqf"", [5,1], 50, true, true, """", ""vehicle _this isKindOf 'Air'""];";
			skill=0.60000002;
		};
	};
	class Sensors
	{
		items=3;
		class Item0
		{
			position[]={13330.902,2.2880001,14528.784};
			a=75;
			b=75;
			angle=-88.355904;
			activationBy="ANY";
			repeating=1;
			interruptable=1;
			type="SWITCH";
			age="UNKNOWN";
			expCond="this && (local player) && (vehicle player in thisList)";
			expActiv="hint parseText format[""<t align='center' size='1.8' color='#d8bc00'> ТОРГОВАЯ ЗОНА::</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Любое насилие запрещено! <br/> За убийство или воровство в пределах круга <br/> последует немедленное наказание <br/>""];player allowDamage false;";
			expDesactiv="hint parseText format[""<t align='center' size='1.8' color='#ff0000'> ВНИМАНИЕ !</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Вы покинули торговую зону <br/> Ваша жизнь находится в потенциальной опасности.  <br/>""]; player allowDamage true;";
			class Effects
			{
				soundDet="BattlefieldFirefight"; // play ambient sound
			};
		};
		class Item1
		{
			position[]={6195.0264,88.872307,16855.523};
			a=75;
			b=75;
			angle=-88.355904;
			activationBy="ANY";
			repeating=1;
			interruptable=1;
			type="SWITCH";
			age="UNKNOWN";
			expCond="this && (local player) && (vehicle player in thisList)";
			expActiv="hint parseText format[""<t align='center' size='1.8' color='#d8bc00'>ТОРГОВАЯ ЗОНА::</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Любое насилие запрещено! <br/> За убийство или воровство в пределах круга <br/> последует немедленное наказание <br/>""];player allowDamage false;";
			expDesactiv="hint parseText format[""<t align='center' size='1.8' color='#ff0000'> ВНИМАНИЕ !</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Вы покинули торговую зону <br/> Ваша жизнь находится в потенциальной опасности.  <br/>""]; player allowDamage true;";
			class Effects
			{
				soundDet="BattlefieldFirefight"; // play ambient sound
			};
		};
		class Item2
		{
			position[]={18474.422,24.701738,14291.331};
			a=75;
			b=75;
			angle=-88.355904;
			activationBy="ANY";
			repeating=1;
			interruptable=1;
			type="SWITCH";
			age="UNKNOWN";
			expCond="this && (local player) && (vehicle player in thisList)";
			expActiv="hint parseText format[""<t align='center' size='1.8' color='#d8bc00'>ТОРГОВАЯ ЗОНА::</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Любое насилие запрещено! <br/> За убийство или воровство в пределах круга <br/> последует немедленное наказание <br/>""];player allowDamage false;";
			expDesactiv="hint parseText format[""<t align='center' size='1.8' color='#ff0000'> ВНИМАНИЕ !</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Вы покинули торговую зону <br/> Ваша жизнь находится в потенциальной опасности.  <br/>""]; player allowDamage true;";
			class Effects
			{
				soundDet="BattlefieldFirefight"; // play ambient sound
			};
		};
	};

Не забудьте, что текст отображается на русском только в случае кодировки UTF 8///

Что сделано в данном блоке? в новом разделе Vehiсle добавлен в фабрике по клонированию Алтис объект O_supplyCrate_F который будет выдавать начальный лут для обычных игроков и для донаторов.

В на центральном спавне установлен автосервис и передвижная вертолетная площадка которая будет чинить, заправлять и перевооружать (за крипто) технику у донаторов.

В разделе сенсоров прописаны звуки боя при нахождении в SAFEZONE, граница локаций визуализирована яркими утопленными в землю оранжевыми шарами (может меняться). Damage убран.

 

PS: помните что mission.sqf чувствителен к пробелам!! не допускайте лишнее редактируйте в notepad++ либо FAR чтобы контролировать правильность открытия закрытия скобок и знаков препинания.

 

Шаг № 2: Скрипт конфигурации

создаем в папке с миссией папку cfg, в этой папке создаем файл olkecfg.sqf

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TODO:Файл конфигураций для S-PLATOON
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TODO:Настройка SAFE ZONE
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TODO: Дополненная реальность для Epoch, скрипт обозначения SAFE ZONE Включить выключить: USE_GREENZONE = true / false
USE_GREENZONE = true;
//TODO: Использовать или нет маркеры на карте SET_MARKER = true / false
SET_MARKER = true;
//TODO: SET_ZONECOORD =  координаты GREENZONE для AltisEpoch для других карт используйте свои формат [[_center],_radius,_name,_string,_lSign],[[_center],_radius,_name,_string,_lSign]];
SET_ZONECOORD =
[
	[[13325,14515,0],75, 'Center', true],  // Center GreenZone
	[[6192.46,16834,0],75, 'West', true],  // West GreenZone
	[[18451.9,14278.1,0],75, 'East', true] // East GreenZone
];

SET_SIGNS = 'Sign_Sphere200cm_F';

//TODO: Рисуем круг заполняем круг моделью виртуального указателя. Можно и не виртуального, со своей текстурой (пока в разработке) варианты указателя:

//TODO: Sign_Sphere200cm_F - большая оранжевая сфера
//TODO: Sign_Arrow_Green_F - большая зеленая стрела острием направленная вниз
//TODO: Sign_Arrow_Direction_Green_F - зеленая стрела направленная на центральную точку GREENZONE

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TODO: Настройки для донаторов
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SET_DONATOR = [
	'ID641','ID642','ID643'
];
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TODO: Настройки рапторов в случае использования мода
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
rup_raptor_dam = 0.5;
rup_raptor_dam_AI = 0.4;
rup_raptor_dam_maul = 0.2;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TODO: Настройка цветовой гаммы на сервере
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
"ColorCorrections" ppEffectEnable true;
"ColorCorrections" ppEffectAdjust [0.9, 0.9, 0, [0, 0.1, 0.25, -0.14], [1, 1, 1, 1.26], [0.15, 0.09, 0.09, 0.0]];
"ColorCorrections" ppEffectCommit 0;

PS: В массив SET_DONATORS вносим через запятую 64 битный STEAM ID, после последнего запятая не ставится!

 

TODO подкрашивает в FAR комментарии желтым. 

 

Шаг № 3. Идем в ваш init.sqf в корне с миссией и подключаем в нем наш olkecfg.sqf (если нет Init.sqf - надо его создать)

В саааамом верху пишем 

#include "cfg\olkecfg.sqf"

(внимание строка не закрыта ; т.к. после include она не закрывается)

 

Шаг № 4. Ставим донаторские объекты в центральной safezone

Создаем папку Addons в ней создаем два файла.  

mpmission/epoch.Altis/addons/devs_air.sqf
mpmission/epoch.Altis/addons/devs_land.sqf

 

devs_air.sqf

/*
Скрипт для донаторов. Обслуживание вертолетов
*/


private ["_user", "_veh", "_title", "_htext"];
    
_user = (_this select 1);
_veh = vehicle _user;
_title  = "<t color='#ff0000' size='1.2' shadow='1' shadowColor='#000000' align='center'>ЦЕНТР ТЕХ.ОБСЛУЖИВАНИЯ:</t><br/><t color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>";

// if (getPlayerUID player in SET_DONATOR) then {
		if (EPOCH_playerCrypto >= 500) then {

            //--> text: welcome-messages    

			_htext   = "Обнаружен премиум аккаунт. Вам доступно обслуживание коптера. Внимание до завершение обслуживания не двигайтесь с места и не покидайте транспорт иначе деньги спишутся без оказания услуги.";
			hint parseText ( _title + _htext);
                        uisleep 5;
            //--> action: remove crypto
                       EPOCH_playerCrypto = EPOCH_playerCrypto - 500 ;
			_htext   = "Списание 500 Crypto со счета.";
			hint parseText ( _title + _htext);
                        uisleep 3;        
			_htext   = "Оперативный ремонт техники.";
			hint parseText ( _title + _htext);
                        _veh setDamage 0;
                        uisleep 3;
			_htext   = "Заливаем керосин. Не двигайтесь";
			hint parseText ( _title + _htext);
                        _veh setFuel 1;
                        uisleep 3;
			_htext   = "Еще немного.....";
			hint parseText ( _title + _htext);
                        uisleep 5;
			_htext   = "Перезаряжаем турели";
			hint parseText ( _title + _htext);
                        _veh setVehicleAmmo 1;
                        uisleep 0.1;
                        _veh setAmmoCargo 1;
                        uisleep 7;
			_htext   = "Ваша птичка готова лететь дальше.";
			hint parseText ( _title + _htext);

} else {    
			_htext   = "Недостаточно CRYPTO на вашем счете";
			hint parseText ( _title + _htext);
};

/* } else {    
            //--> text: only driver can do this
			_htext   = "Услуга доступна только премиум аккаунту";
			hint parseText ( _title + _htext);
};*/

и devs_land.sqf

/*
Скрипт для донаторов. Обслуживание техники.
*/

private ["_user", "_veh", "_title", "_htext"];
    
_user = (_this select 1);
_veh = vehicle _user;
_title  = "<t color='#ff0000' size='1.2' shadow='1' shadowColor='#000000' align='center'>ЦЕНТР ТЕХ.ОБСЛУЖИВАНИЯ:</t><br/><t color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>";


if (! isnull (driver _veh))    then {                            
//	if (getPlayerUID player in SET_DONATOR) then {
		if (EPOCH_playerCrypto >= 500) then {


            //--> text: welcome-messages    

			_htext   = "Обнаружен премиум аккаунт. Вам доступно обслуживание техники. Внимание до завершение обслуживания не двигайтесь с места и не покидайте транспорт иначе деньги спишутся без оказания услуги.";
			hint parseText ( _title + _htext);
                        uisleep 10;
                        
            //--> action: remove crypto
                        EPOCH_playerCrypto = EPOCH_playerCrypto - 500 ;            
			_htext   = "Удерживается оплата да тех.обслуживание.";
			hint parseText ( _title + _htext);
                        uisleep 3;
            //--> action: repair vehicle                
                        _veh setDamage 0;
			_htext   = "Ремонт произведен в полном объеме.";
			hint parseText ( _title + _htext);
                        uisleep 3;
			_htext   = "Заливаем первоклассный бензин.";
			hint parseText ( _title + _htext);
                        uisleep 3;
            //--> action: refuel Vehicle
                        _veh setFuel 1;
			_htext   = "До полного.....";
			hint parseText ( _title + _htext);
            //--> action: ReAmmo Guns
			_htext   = "Смазываем пушки.";
			hint parseText ( _title + _htext);
            //--> action: move player to gunnerposition to rearm ALL magazines, otherwise only the actual magazine will be reloaded
                        player action ["moveToGunner", _veh];
                        uisleep 5;
			_htext   = "Перезарядка...";
			hint parseText ( _title + _htext);
                        _veh setVehicleAmmo 1;
                        uisleep 0.1;
                        _veh setAmmoCargo 1;
                        uisleep 0.1;
            //--> action: bring player back to driverposition
                        uisleep 0.1;
                        player action ["moveToDriver", _veh];
                        uisleep 5;
			_htext   = "Ваша машина, как новенькая. Можно ехать!!!";
			hint parseText ( _title + _htext);
} else {
            //--> text: not enough crypto    
			_htext   = "Недостаточно средств на счете..";
			hint parseText ( _title + _htext);
};
/*} else {    
            //--> text: only driver can do this
			_htext   = "Услуга доступна только премиум аккаунту";
			hint parseText ( _title + _htext);
};*/
} else {    
			_htext   = "Вы должны находиться за рулем и без пассажиров...";
			hint parseText ( _title + _htext);
};

оба скрипта взяты на форуме dayzepoch, перевод и доработка для доната - мой.

 

Шаг № 5. Создаем файл greenzone.sqf (визуализация safezone и маркеры)

mpmission/epoch.Altis/greenzone/greenzone.sqf

greenzone.sqf

if (isServer) exitWith 
{
	if (USE_GREENZONE) then // проверка, что используется оформление GREENZONE
	{
		{
			_center = _x select 0;
			_radius = _x select 1;
			_name = _x select 2;	
			_lsign = _x select 3;

			if (_lSign) then // проверка, что оформляем конкретную SAFEZONE (true/false в координатах)
			{
				for '_i' from 0 to 360 step (270 / _radius)*2 do
				{
					_location = [(_center select 0) + ((cos _i) * _radius), (_center select 1) + ((sin _i) * _radius),0];
					_dir = ((_center select 0) - (_location select 0)) atan2 ((_center select 1) - (_location select 1));
					_object = createVehicle [ SET_SIGNS , _location, [], 0, 'CAN_COLLIDE'];  // Изменяем модель указателя тут....
					_object setDir _dir;
				};

			if (SET_MARKER) then { // проверка, что наносим метки с SAFEZONE на карту

				_marker = createMarker [format["GreenZone:%1", _name], _center];
				_marker setMarkerShapeLocal "Icon";
				_marker setMarkerType "mil_circle";
//				_marker setMarkerType "selector_selectedMission";
				_marker setMarkerText " Безопасная торговая зона";
				_marker setMarkerColor "ColorGUER";
				_marker = createMarker [format["GreenZone1:%1", _name], _center];
				_marker setMarkerShapeLocal "ELLIPSE";
				_marker setMarkerTypeLocal  "Empty";
				_marker setMarkerColorLocal "ColorGUER";
				_marker setMarkerBrushLocal "Solid";
				_marker setMarkerSize [_radius, _radius];
			};
		};
	 } forEach SET_ZONECOORD ; 
    };                                                                                       
};

Шаг № 6. В уже созданной нами папке addons - создаем loadout для донаторов. loadoutfrombox.sqf

 

mpmission/epoch.Altis/addons/loadoutfrombox.sqf
if (getPlayerUID player in SET_DONATOR) then {
						hint "Выдан премиум набор";
						RemoveAllItems player;
					      	RemoveAllWeapons player;
						Removeallcontainers player;
						player addItem "NVGoggles";
						player addBackpack "B_BergenG";
						player addItem "H_Shemag_khk";
						player assignitem "H_Shemag_khk";
//						player addItem "NVGoggles";
//						player addMagazine "handgrenade";
//						player addMagazine "handgrenade";
//						player addMagazine "handgrenade";
						player addVest "V_Chestrig_rgr";
						player addWeapon "hgun_Pistol_heavy_01_F";
						player addMagazine "11Rnd_45ACP_Mag";
						player addMagazine "11Rnd_45ACP_Mag";
						player addWeapon "SMG_02_ACO_F";
						player selectWeapon "SMG_02_ACO_F";
						player addMagazine "30Rnd_9x21_Mag";
						player addMagazine "30Rnd_9x21_Mag";
						player addMagazine "30Rnd_9x21_Mag";
						player addWeapon "EpochRadio0";
						player addWeapon "ItemMap";
//						EPOCH_playerCrypto = 100;

						_modelMale = (typeOF player == "Epoch_Male_F");
						_modelFemale = (typeOF player == "Epoch_Female_F");

					if (_modelFemale) then
								{
								player forceAddUniform "U_BasicBodyFemale";
								};
					if (_modelMale) then
								{
								player forceAddUniform "U_OG_Guerilla2_1";
								};
					newPlayer = false;
				} else {
					hint "Выдан стандартный набор";
					RemoveAllItems player;
				      	RemoveAllWeapons player;
					Removeallcontainers player;
					player addWeapon "EpochRadio0";
					player addWeapon "ItemMap";
					player addWeapon "hgun_Pistol_heavy_01_F";
					player addMagazine "11Rnd_45ACP_Mag";
//					EPOCH_playerCrypto = 100;
				};
	};
};

Шаг № 7:

 

Подцепляем визуализацию greenzone из init.sqf  в саамом низу вашего init.sqf пишем

 

[] execVM "greenzone\greenzone.sqf";

 

Шаг № 8. 

Убираем дамаг в Safezone. Идем в файл Arma3/@epochhive/addons/server_settings.pbo. С помощью pbo манагера вскрываем содержимое. Находим файл 

/configs/maps/altis.h  и в нем ищем раздел связанный с трейдзонами ...  добавляем туда следующий код сразу после 

 

 

propsPos[] = {
 

 

 

	
//phones olke path
			{ "Land_PhoneBooth_02_F", { 13351, 14515.4, 0.0014267 }, 38.3472 },
			{ "Land_PhoneBooth_02_F", { 18467.5, 14263.8, 0.0297527 }, 38.3472 },
			{ "Land_PhoneBooth_02_F", { 6196.38, 16849.9, 0.00205231 }, 63.7064 },
//protection zone by olke central 3x3 25m radius circle
			{ "ProtectionZone_Invisible_F", { 13351.1, 14540.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13351.1, 14515.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13351.1, 14490.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13326.1, 14540.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13326.1, 14515.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13326.1, 14490.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13301.1, 14540.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13301.1, 14515.1, 0.0110912 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 13301.1, 14490.1, 0.0110912 }, 359.768 },
//protection zone by olke east 3x3 25m radius circle
			{ "ProtectionZone_Invisible_F", { 18492.5, 14288.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18492.5, 14263.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18492.5, 14238.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18467.5, 14288.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18467.5, 14263.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18467.5, 14238.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18442.5, 14288.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18442.5, 14263.8, 0.0297527 }, 359.768 },
			{ "ProtectionZone_Invisible_F", { 18442.5, 14238.8, 0.0297527 }, 359.768 },
//protection zone by olke west 3x3 25m radius circle
			{ "ProtectionZone_Invisible_F", { 6221.38, 16874.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6221.38, 16849.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6221.38, 16824.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6196.38, 16874.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6196.38, 16849.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6196.38, 16824.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6171.38, 16874.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6171.38, 16849.9, 0.00205231 }, 63.7064  },
			{ "ProtectionZone_Invisible_F", { 6171.38, 16824.9, 0.00205231 }, 63.7064  },
 

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

//116:			{ "ProtectionZone_Invisible_F", { 13344.1, 14483.7, 0.00191855 }, 359.768 },
//180:			{ "Land_ToiletBox_F", { 13351, 14515.4, 0.0014267 }, 38.3472 },
//283:			{ "Oil_Spill_F", { 18467.5, 14263.8, 0.0297527 }, 0.257763 },

 

Взято с работающего сервера. Видео, как это все выглядит будет чуть позже.

 

PS: переменная SET_DONATOR - (как и остальные в olkecfg.sqf) являются глобальными. Т.е. вы можете вызывать их из других своих скриптов. 

 

 

 

 

Спасибо, за прекрасные зоны!

Й меня один вопрос!

Как это исправить

 

 IDJZH4shTI0.jpg

 

 

 

В каком файле? я уже везде кодировку на 8 без бом поставил  :sad:

Share this post


Link to post
Share on other sites

Это пунктирная линия.

  1. _title = "<t color='#ff0000' size='1.2' shadow='1' shadowColor='#000000' align='center'>ЦЕНТР ТЕХ.ОБСЛУЖИВАНИЯ:</t><br/><t color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>";

Исправь ее кодировку в каждом файле: для авиации (devs_air.sqf) и для наземной техники (devs_land.sqf).

Edited by zxButchxz (see edit history)

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 Makliion
      Всем добрый вечер..
      У меня такой вопрос где найти или заказать скрипт для обыска зомбей & игроков 
      что-бы каждую вещь снимать через действие а не тупо через таб
      Шлем отдельно
      Рюкзак отдельно
      ну и на все остальные слоты
      искал долго не нашёл ничего
      есть мод на обыск но он просто открывает  инвентарь и все 
       
    • By Troy1
      Всем привет. Подскжите ну или помогите пожалуйста решить вопрос.
      Вопрос звучит так. На сервере есть трейдер зоны и базы игроков. 
      Если в течение определённого времени, на пример 1 - 2 часа с машиной не кто не взаимодействует и машина не находится в зоне трейдера или на теретории базы, то машина отлетает в гараж или на штраф стоянку.
      На сервере используется TraderPlus.
       
      Есть такие решения у кого?
      За ранние благодарю.
    • By Troy1
      Всем привет. Подскжите ну или помогите пожалуйста решить вопрос.
      Вопрос звучит так. Нужно сделать так, что бы на всей карте был запрет на строительство. 
      Если нужно построить например базу с палатками, то нужно установить верстак или флаг, который установит зону для строительства с радиусом примерно 20-25 метров от центра и желательно что бы зона была квадратной.
      Есть такие решения у кого?
      За ранние благодарю.
    • By BR0wi
      Подскажите где найти людей, которые делаю моды на заказ. К кому вообще обращаться? Или что бы реализовать свои идеи нужно самому "год" сидеть и изучать все механики модинга?
    • By CubeIn
      Приветствую господа, хочу создать новый проект, уникальный, но для этого нужен маппер.
      Я оставлю здесь свой дискрод, напишите в лс, кто готов взяться за крупный проект.
      4me#4542
  • 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.