Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
vitacite

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

Рекомендованные сообщения

Обвязка для 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) являются глобальными. Т.е. вы можете вызывать их из других своих скриптов. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
MagicByte MagicByte MagicByte

Script Restriction error #21

 

script.log

 

 

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

 

 

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

 

 

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

 

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Затруднит  т.к. я не пользуюсь 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/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем oxmo (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Он работает в том случае если вы за рулем автомобиля, либо за рулем вертолета. Это прописано в условия аддакшен. Т.е. если вы подошли пешком, менюшки техобслуживание не появится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Он работает в том случае если вы за рулем автомобиля, либо за рулем вертолета. Это прописано в условия аддакшен. Т.е. если вы подошли пешком, менюшки техобслуживание не появится.

Я не до такой степени дурак) Спасибо, разобрался. Там надо скрипт подправить просто.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что-то видео не показывает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Script Restriction error #21

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

В файле 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 (Звуки стрельбы)

};

};

};

 

Изменено пользователем Irk38 (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Спасибо 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

hE6iQYYCjQg.jpg

 

u4U7ZlQsPac.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

hE6iQYYCjQg.jpg

 

u4U7ZlQsPac.jpg

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обвязка для 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:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

  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).

Изменено пользователем zxButchxz (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

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

×
×
  • Создать...

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

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.

Поддержка