maxpayne25

[Гайд]Как добавить сэйв-зоны (год-мод, запрет стрельбы, нет агра зомби, скоростной лимит)

35 сообщений в этой теме

1. Скачиваем архив с файлами и распаковываем его. Ссылка: https://dl.dropboxusercontent.com/u/135243/dayz_epoch/safezone.zip

 

2. Папку safezone из архива кидаем в папку с вашей миссией (рядом с init.sqf)

 

3. Добавляем данный код в самый низ init.sqf

_nil = [] execVM "safezone\init.sqf";

4. Если хотите добавить сэйв-зону в какое-либо другое место (по умолчанию сэйв-зоны расположены в Старом Соборе, Клене, Баше), открываем добавленную папку safezone, в ней находим и открываем файл init.sqf. Там мы видим данный код:

_safezones = [
[[11447.91,11364.536],100, "Klen"], // Klen
[[4064.2258,11665.938],100, "Bash"], // Bash
[[6325.6772,7807.7412],100, "Stary"] // Stary
];

Чтобы добавить сэйв-зону, например, к бандит-трейдеру, копируем предпоследнюю строчку со Старым Собором, вставляем под нее же, не забывая поставить запятую после квадратных скобок в строке со Старым Собором и в каждой добавленной вами зоне, за исключением последних координат. Далее правим добавленную строку под себя. В первых квадратных скобках располагаются координаты трейдера в формате [x,y], которые можно узнать в файле mission.sqm в разделе // sensors.

Один нюанс: в файле mission.sqm координаты заданы в формате [x,y,z], где y означает высоту над уровнем моря. В нашем файле с сэйв-зонами нам высота не нужна, так что мы просто удаляем центральное значение при переносе координат. 

Далее, после квадратных скобок идет число 100, которое означает радиус безопасной зоны. Можете исправить под себя, если считаете зону слишком маленькой или большой.

В кавычках указываете название сэйв-зоны, которое возникает на экране при входе в нее. После знаков // можете ничего не указывать. Здесь названия для удобства редактирования кода. 

Для наглядности добавляю этот же код с уже добавленным бандит-трейдером.

Так выглядят координаты бандит-трейдера в файле mission.sqm на Чернарусии

class Item3
		{
			position[]={1606.6443,289.70795,7803.5156};
			a=100;
			b=100;
			activationBy="WEST";
			repeating=1;
			interruptable=1;
			age="UNKNOWN";
			name="zonebandit";
			expCond="(player distance zonebandit) < 100;";
			expActiv="canbuild = false; inTraderCity = ""Bandit Trader"";";
			expDesactiv="canbuild = true; inTraderCity = ""Any"";";
			class Effects
			{
			};

Из строки position[]= я забираю координаты, удаляю центральное значение и переношу в файл с сейв-зонами, который будет выглядеть так:

_safezones = [
[[11447.91,11364.536],100, "Klen"], // Klen
[[4064.2258,11665.938],100, "Bash"], // Bash
[[6325.6772,7807.7412],100, "Stary", // Stary
[[1606.6443,7803.5156],100, "Bandit"] // Bandit Trader
];

Данный метод пригоден для любой карты на моде Epoch. Просто мы меняем значения координат на координаты трейдеров из mission.sqm другой карты.

_________________________________________________________________________________________________________________

 

Также можно добавить защиту от воровства из рюкзаков.

Для этого мы копируем файл fn_gearMenuChecks.sqf отсюда:

/@Dayz_Epoch/addons/dayz_code/compile/fn_gearMenuChecks.sqf

в папку custom (создайте, если отсутствует) в папке с вашей миссией (рядом с init.sqf).

Добавьте данный код в самый низ скопированного файла:

if (!canbuild and _cTarget isKindOf "Man" and alive _cTarget and (((vehicle player) distance _cTarget) < 12)) then {
titleText["\n\nYou may only access your own gear in this area.", "PLAIN DOWN",0];
_display closeDisplay 1;
};

Далее, если у вас есть кастомный файл compiles.sqf, копируете данный код в конец секции с if (!isDedicated), над символами };

fn_gearMenuChecks =    compile preprocessFileLineNumbers "custom\fn_gearMenuChecks.sqf";

Если у вас нет кастомного файла compiles.sqf, то в папке custom создаем файл compiles.sqf и внутрь добавляем этот код:

if (!isDedicated) then { fn_gearMenuChecks =    compile preprocessFileLineNumbers "custom\fn_gearMenuChecks.sqf"; };

Далее в init.sqf добавляем под этой строкой

call compile preprocessFileLineNumbers "server_traders.sqf";

данный код 

call compile preprocessFileLineNumbers "custom\compiles.sqf";
Изменено пользователем maxpayne25 (история изменений)

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


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


Я добавлял вручную и Красно, и хиро, и бандита. Прекрасно работало все. И на Пантере тоже.

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


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

А запрет кражи из рюкзаков, мм? :wink:

 

Так в гайде же описывается как. )))

 

Лучше подскажите как убрать сетчатый маркер над трейдами.

А то с миссиями он путается....

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


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

 

/@Dayz_Epoch/addons/dayz_code/compile/fn_menuGearCheck.sqf

 

Поправь на  fn_gearMenuChecks, а то замучаются искать )))

 

Спасибо, исправил.

 

 

А запрет кражи из рюкзаков, мм? :wink:

 

Так в гайде же описывается как. )))

 

Лучше подскажите как убрать сетчатый маркер над трейдами.

А то с миссиями он путается....

 

Там в скрипте со строчкой _setMarkers похимичить надо

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


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

Сетчатый маркер зарыт в init.sqf сейфзоны

 

} else {
		_trigger setTriggerStatements ["(vehicle player) in thisList", "call SafeZoneEnable", "call SafeZoneDisable"];

		_marker = createMarkerLocal [format["Safezone%1", _name], _pos];
		_marker setMarkerTextLocal format["Safezone%1", _name];
		_marker setMarkerShapeLocal "ELLIPSE";
		_marker setMarkerTypeLocal "Empty";
		_marker setMarkerColorLocal "ColorRed";
		_marker setMarkerBrushLocal "Grid";
		_marker setMarkerSizeLocal [_radius, _radius];
	};

 

Подозреваю что удалить весь этот кусок то маркеров и не будет...

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


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

Сетчатый маркер зарыт в init.sqf сейфзоны

 

} else {
		_trigger setTriggerStatements ["(vehicle player) in thisList", "call SafeZoneEnable", "call SafeZoneDisable"];

		_marker = createMarkerLocal [format["Safezone%1", _name], _pos];
		_marker setMarkerTextLocal format["Safezone%1", _name];
		_marker setMarkerShapeLocal "ELLIPSE";
		_marker setMarkerTypeLocal "Empty";
		_marker setMarkerColorLocal "ColorRed";
		_marker setMarkerBrushLocal "Grid";
		_marker setMarkerSizeLocal [_radius, _radius];
	};

 

Подозреваю что удалить весь этот кусок то маркеров и не будет...

Удалял! Защита перестает работать!

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


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

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

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


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

это цвет маркера wdtmarker setMarkerColorLocal "ColorRed";

что бы убрать сетку,удалите эту строку  _marker setMarkerBrushLocal "Grid";

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


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

Отличные сейвы, только вот год мода нет на них. Игрок не находящийся в сейв зоне может убить игрока находящегося в ней. Это так и должно быть или у меня руки кривоваты?

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


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

Отличные сейвы, только вот год мода нет на них. Игрок не находящийся в сейв зоне может убить игрока находящегося в ней. Это так и должно быть или у меня руки кривоваты?

Кстати да, присоединяюсь к вопросу. Пробовал добавлять вот такую строку в SafeZoneEnable :

{_x allowdamage false } foreach (nearestObjects [player,['building','LandVehicle','Air'], 400]);

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

Та строка взята отсюда:

http://epochmod.com/forum/index.php?/topic/4691-even-better-safezones/page-5

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


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

люди а что за скрипт где пишет типо agn no firing vehicles gun enabled?

а то тут таблички мешают(

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


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

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

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

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

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


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

Войти

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


Войти сейчас