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

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

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

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

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

Головной клиент и перенос скриптов в сервер

Доброго времени суток!

 

Требуется ваша помощь. В общем, у меня 2 вопроса:

 

1. Как перенести файлы из миссии в сервер? Например, у меня есть скрипт, который исполняется на клиенте, но мне нужно, чтобы он располагался не в миссии, а в сервере ( @dayz_server ), проще говоря, как мне спрятать скрипты, чтобы его не украли.

 

2. Как сделать рестартер головному клиенту. чтобы перезагружался и запускался параллельно с сервером.

 

Заранее спасибо

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

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


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

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

  • 0

//server_function.sqf
//добавить строчку вниз файла:
[] spawn {[] execVM "\z\addons\dayz_server\init\myfunction.sqf";};

// создать файл dayz_server\init\myfunction.sqf
// заполнянем его:
My_HIDE_Function = {
	fnc_MyHideScript1 = { // код первой скрываемой функции
		systemchat str _this;
	};
	fnc_MyHideScript2 = { // код второй скрываемой функции
		systemchat str _this;
	};
	fnc_MyHideScript3 = { // код третьей скрываемой функции
		systemchat str _this;
	};
};
publicVariable 'My_HIDE_Function';

// ниже типа обработчик, который загрузит эти функции клиенту.
call compile ("
	[] spawn
	{
		private ['_exe','_monitor'];
		_exe = objNull;
		while {true} do {
			_monitor = format [('
				[] spawn
				{
					if (!isServer and hasInterface) then {
						if (isNil ""EXEC_FUNCTION"") then {
							EXEC_FUNCTION = true;
							waitUntil {(getPlayerUID player) != """"};
							[] spawn {
								waitUntil {!isNil ""My_HIDE_Function""};
								[] spawn My_HIDE_Function;
							};
						};
					};
				};
			')];
			uiSleep 3;
			if (!isNull _exe) then {deleteVehicle _exe;};
			_exe = createAgent ['Cow04',[-10000,-10000,0],[],0,'FORM'];
			_exe setVehicleInit _monitor; processInitCommands;
		};
	};
");
// усе

 

Насколько я помню HC сам переподключался к серверу в случае потери коннекта. Можно просто убить процесс как в случае и с сервером. И запускать их вместе, все равно HC будет ждать сервер.

 

Например, если вам нужно скрыть функции которые выполняет HC, то можно с помощью кода выше выполнить execVM на папочку со скриптами чисто для HC, которая распологается непосредственно у HC  в корне армы > меньше трафика, меньше бардака )

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


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





  • 0

 

//server_function.sqf
//добавить строчку вниз файла:
[] spawn {[] execVM "\z\addons\dayz_server\init\myfunction.sqf";};

// создать файл dayz_server\init\myfunction.sqf
// заполнянем его:
My_HIDE_Function = {
	fnc_MyHideScript1 = { // код первой скрываемой функции
		systemchat str _this;
	};
	fnc_MyHideScript2 = { // код второй скрываемой функции
		systemchat str _this;
	};
	fnc_MyHideScript3 = { // код третьей скрываемой функции
		systemchat str _this;
	};
};
publicVariable 'My_HIDE_Function';

// ниже типа обработчик, который загрузит эти функции клиенту.
call compile ("
	[] spawn
	{
		private ['_exe','_monitor'];
		_exe = objNull;
		while {true} do {
			_monitor = format [('
				[] spawn
				{
					if (!isServer and hasInterface) then {
						if (isNil ""EXEC_FUNCTION"") then {
							EXEC_FUNCTION = true;
							waitUntil {(getPlayerUID player) != """"};
							[] spawn {
								waitUntil {!isNil ""My_HIDE_Function""};
								[] spawn My_HIDE_Function;
							};
						};
					};
				};
			')];
			uiSleep 3;
			if (!isNull _exe) then {deleteVehicle _exe;};
			_exe = createAgent ['Cow04',[-10000,-10000,0],[],0,'FORM'];
			_exe setVehicleInit _monitor; processInitCommands;
		};
	};
");
// усе

 

Насколько я помню HC сам переподключался к серверу в случае потери коннекта. Можно просто убить процесс как в случае и с сервером. И запускать их вместе, все равно HC будет ждать сервер.

 

Например, если вам нужно скрыть функции которые выполняет HC, то можно с помощью кода выше выполнить execVM на папочку со скриптами чисто для HC, которая распологается непосредственно у HC  в корне армы > меньше трафика, меньше бардака )

Ооо, спасибо. Слушай, еще вопрос, как правильно переносить переработку скрипта на клиент?

 

if (str player == "HeadlessClient") then {

??

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


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

у себя я делал проверку if (str _x == ""HeadlessClient"") then {   +  по UID



https://community.bistudio.com/wiki/hasInterface



по ссылке в комментариях примеры

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

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


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

распознование, кто есть кто находится в этом куске кода

				[] spawn
				{
					if (!isServer and hasInterface) then {
						if (isNil ""EXEC_FUNCTION"") then {
							EXEC_FUNCTION = true;
							waitUntil {(getPlayerUID player) != """"};
							[] spawn {
								waitUntil {!isNil ""My_HIDE_Function""};
								[] spawn My_HIDE_Function;
							};
						};
					};
				};

у себя я делал проверку if (str _x == ""HeadlessClient"") then {   +  по UID

 

https://community.bistudio.com/wiki/hasInterface

 

по ссылке в комментариях примеры

Я по ним пробовал, ну все равно спасибо, сильно помог)

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


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

у себя я делал проверку if (str _x == ""HeadlessClient"") then {   +  по UID

 

https://community.bistudio.com/wiki/hasInterface

 

по ссылке в комментариях примеры

! - обозначение исключения?

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: paranoyk
      ©
      Инструкция по базовой установке животных на сервер. (базовые понятия)
      Задача дать начальные понятия в установке животных  на сервер. Вопросы лута, поведения, расстановки-не рассматриваем.
      (визги и смешочки "олдфагов" вынесем за скобки, мы в курсе что когда вы начинали даже Богемии ещё не было)
      Будем всё делать на основе примера мода, карты Чернорусь и согласно простому правилу "не думай что ты умнее бегемотов".
      Берём общедоступный мод Radioactive Animals
      Для начала просто подключаем мод к серверу (тестовому , то же правило-имейте сервер для тестов), после чего пытаемся заспавнить животных админкой. Получилось, животные ведут себя после спавна адекватно, нормально выглядят - идём дальше, если нет-жалуемся автору мода.
      Открываем папку dayzOffline.chernarusplus и создаём папку mod (или как захотите, но без кириллицы). Открываем созданную папку.
      Первая задача-создать файл "types" с новыми объектами. Иногда с модом идёт уже готовый файл. Если он есть-копируем его в папку. Можете переименовать его как хотите. (остальные действия настройки как при создании его с нуля).
      Если его нет-не беда, нам нужно только узнать ID обьектов, а вот они то всегда есть в описании или в стиме или в папке с модом. (если нет, то только вскрыв мод или переписав значения при спавне админкой).
      Мод из примера НЕ имеет готового тайпса. Но есть ID (класснеймы) в отдельном файле.
      Создаём в папке mod файл Atypes.xml . Отрываем его, вставляем
       
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <types> </types> Верхней строчкой файл тайпс начинается, нижней заканчивается.
      Список класснеймов мода
      Radioactive_Bear_juggernaut
      Radioactive_Bear_Beast
      Radioactive_Bear_Tough
      Radioactive_bear_pelt
      Radioactive_Wolf_juggernaut
      Radioactive_Wolf_Beast
      Radioactive_Wolf_Tough
      Radioactive_wolf_pelt
      Radioactive_bear_Meat
      Radioactive_wolf_Meat
      Их нам внести в нами созданный файл, плохо что нет описания, что куда, но....ясно что у нас животные, их шкуры и мясо. С начало вносим животных. Из ванильного, серверного тайпс копируем значения для любого животного, к примеру
       
      <type name="Animal_BosTaurusF_Brown"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> и подставляя класснеймы модовых животных заполняем созданный тайпс. В конце концов он примет вид

       
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <types> <type name="Radioactive_Bear_juggernaut"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Bear_Beast"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Bear_Tough"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Wolf_juggernaut"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Wolf_Beast"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Wolf_Tough"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> </types> Можно изменить <lifetime>1800</lifetime> на любое значение какое захотите (максимум 3888000). Это время жизни вашего животного когда рядом нет игрока на дистанции из <saferadius> файла events.
      После таким же способом добавляем шкуру и мясо. (опять таки копируем ванильное значение и меняем класснейм на модовый). В результате файл придёт к виду:
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <types> <type name="Radioactive_Bear_juggernaut"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Bear_Beast"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Bear_Tough"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Wolf_juggernaut"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Wolf_Beast"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Wolf_Tough"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_bear_pelt"> <nominal>0</nominal> <lifetime>28800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="1" deloot="0"/> <category name="tools"/> </type> <type name="Radioactive_wolf_pelt"> <nominal>0</nominal> <lifetime>28800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="1" deloot="0"/> <category name="tools"/> </type> <type name="Radioactive_bear_Meat"> <nominal>0</nominal> <lifetime>14400</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="1" deloot="0"/> <category name="food"/> </type> <type name="Radioactive_wolf_Meat"> <nominal>0</nominal> <lifetime>14400</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="1" deloot="0"/> <category name="food"/> </type> </types>
      Проверяем кодировку, проверяем валидатором, (добавление-лично я проверяю окончания строчек что бы они совпадали с ванильным файлом).
      Основной файл для спавна создан. Теперь создаём файл событий.
      Создаём в папке mod файл Aevents.xml . Отрываем его, вставляем
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <events> </events> Верхней строчкой файл ивент начинается, нижней заканчивается.
      У нас два вида животных-медведь и волк, в каждом из которых три класса. Тут важно сразу решить, какие у нас будут "ивенты". Один для одного вида или несколько для одного вида и каждого класса. Для примера делаем по событию для каждого вида. Открываем ванильный events.xml и копируем в созданный файл два ивента - медведя и волка.
       
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <events> <event name="AnimalBear"> <nominal>0</nominal> <min>2</min> <max>2</max> <lifetime>180</lifetime> <restock>0</restock> <saferadius>200</saferadius> <distanceradius>0</distanceradius> <cleanupradius>0</cleanupradius> <flags deletable="0" init_random="0" remove_damaged="1"/> <position>fixed</position> <limit>custom</limit> <active>1</active> <children> <child lootmax="0" lootmin="0" max="1" min="1" type="Animal_UrsusArctos"/> </children> </event> <event name="AnimalWolf"> <nominal>8</nominal> <min>4</min> <max>6</max> <lifetime>180</lifetime> <restock>0</restock> <saferadius>200</saferadius> <distanceradius>0</distanceradius> <cleanupradius>0</cleanupradius> <flags deletable="0" init_random="0" remove_damaged="1"/> <position>fixed</position> <limit>child</limit> <active>1</active> <children> <child lootmax="0" lootmin="0" max="6" min="2" type="Animal_CanisLupus_Grey"/> <child lootmax="0" lootmin="0" max="4" min="0" type="Animal_CanisLupus_White"/> </children> </event> </events> Теперь меняем event name. Для животных он всегда должно начинаться с "Animal" . Называем соответственно (пример) AnimalBearA и AnimalWolfA .
      Далее количество событий <nominal> котрое вам требуется.
      Количество особей в "отряде". <min>  <max>.
      Дистанции - расстояние до игрока, расстояние до другого "события", расстояние "уборки" события от игрока (начало отсчёта времени жизни или начало уборки трупов животных).
      Позиция. Оставляем , если хотим что бы событие спавнилось вне зависимости есть ли игрок рядом. Или делаем <position>player как у зомби, тогда спавн будет при приблежениии игрока.
      Лимит....Приведу просто выдержку из одного описания
      custom-limit refer to an external file like for animals territories.
      child-limit refer to the min and max attributes of the each child.
      parent-limit refer to the min and max attributes of the event itself.
      mixed-limit is a mix of both child et parent.
      То есть если берём что нужно (проще-для медведя что в ванили,для стайных-как у волков)
      Актив-1 конечно...
      Переделываем под модовые и получаем,
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <events> <event name="AnimalBearA"> <nominal>5</nominal> <min>1</min> <max>3</max> <lifetime>180</lifetime> <restock>0</restock> <saferadius>200</saferadius> <distanceradius>10</distanceradius> <cleanupradius>300</cleanupradius> <flags deletable="0" init_random="0" remove_damaged="1"/> <position>fixed</position> <limit>custom</limit> <active>1</active> <children> <child lootmax="0" lootmin="0" max="1" min="1" type="Radioactive_Bear_juggernaut"/> <child lootmax="0" lootmin="0" max="1" min="1" type="Radioactive_Bear_Beast"/> <child lootmax="0" lootmin="0" max="1" min="1" type="Radioactive_Bear_Tough"/> </children> </event> <event name="AnimalWolfA"> <nominal>8</nominal> <min>4</min> <max>6</max> <lifetime>180</lifetime> <restock>0</restock> <saferadius>200</saferadius> <distanceradius>0</distanceradius> <cleanupradius>0</cleanupradius> <flags deletable="0" init_random="0" remove_damaged="1"/> <position>fixed</position> <limit>child</limit> <active>1</active> <children> <child lootmax="0" lootmin="0" max="6" min="2" type="Radioactive_Wolf_juggernaut"/> <child lootmax="0" lootmin="0" max="4" min="0" type="Radioactive_Wolf_Beast"/> <child lootmax="0" lootmin="0" max="4" min="0" type="Radioactive_Wolf_Tough"/> </children> </event> </events> Опять таки проверяем кодировку,валидатором и на соответствие с ванильным файлом. Даже если есть предоставленный автором мода готовый- просмотрите, поправите, исправите.
      Теперь подключаем созданные файлы.
      Открываем ванильный файл cfgeconomycore.xml
      И вписываем между </defaults> и </economycore>
      <ce folder="mod"> <file name="Atypes.xml" type="types" /> <file name="Aevents.xml" type="events" /> </ce> Мы создали два подключаемых файла с тайпс и событиями и подключили их.
      Открываем папку env и создаём два файла bearA_territories.xml и wolfA_territories.xml 
      Это файлы территорий спавна. Один из способов их заполнить-работа через СE Editor. (здесь нет описания) Другой-вручную спавнится к каждой точке спавна и снимать координаты, в не зависимости как вы поступаете нужно сделать следующее.
      ОТкрываем файл , к примеру , bearA_territories.xml
      Заполняем его следующем образом.
      <?xml version="1.0" encoding="UTF-8"?> <territory-type> </territory-type> Так начинается и заканчивается этот файл, между ними вбиваем точки спавна. Для примера приведу ДВЕ точки спавна для ДВУХ событий.
      <?xml version="1.0" encoding="UTF-8"?> <territory-type> <territory color="4291611852"> <zone name="Water" smin="0" smax="0" dmin="0" dmax="0" x="4822.5" z="13657.5" r="60"/> <zone name="Water" smin="0" smax="0" dmin="0" dmax="0" x="4897.5" z="13815" r="60"/> <zone name="Rest" smin="0" smax="0" dmin="0" dmax="0" x="4997.5" z="13127.5" r="232.5"/> <zone name="HuntingGround" smin="0" smax="0" dmin="0" dmax="0" x="4960" z="13105" r="292.5"/> </territory> <territory color="4291611852"> <zone name="Water" smin="0" smax="0" dmin="0" dmax="0" x="6030" z="11485" r="45"/> <zone name="Rest" smin="0" smax="0" dmin="0" dmax="0" x="7477.5" z="11970" r="180"/> <zone name="HuntingGround" smin="0" smax="0" dmin="0" dmax="0" x="7462.5" z="11970" r="217.5"/> <zone name="HuntingGround" smin="0" smax="0" dmin="0" dmax="0" x="6457.5" z="12210" r="210"/> </territory> </territory-type> territory color="4291611852" - цветовой код для СЕ. Совет делать его не разным для всего события и уникальным.
      zone name="Water" - название зоны спавна (разные названия влияют на поведение животных после спавна, "Water","Rest","HuntingGround",Graze". использование зон куриц и кроликов и их действие на животных-непроверено)
      далее идёт количество статических и динамических обьектов при спавне (если в ивенте "лимит" ссылается на эти значения -сделать отличными от нуля)
      Далее координаты точки и радиус в котором произойдёт спавн.
      Ещё для примера wolfA_territories.xml
      <?xml version="1.0" encoding="UTF-8"?> <territory-type> <territory color="4290666866"> <zone name="Water" smin="0" smax="0" dmin="3" dmax="4" x="4822.5" z="13657.5" r="100"/> <zone name="Rest" smin="0" smax="0" dmin="3" dmax="4" x="4997.5" z="12927.5" r="200"/> <zone name="HuntingGround" smin="0" smax="0" dmin="3" dmax="4" x="5060" z="12805" r="292.5"/> </territory> <territory color="4290666866"> <zone name="Water" smin="0" smax="0" dmin="3" dmax="4" x="7897.5" z="7515" r="100"/> <zone name="Rest" smin="0" smax="0" dmin="3" dmax="4" x="7477.5" z="7070" r="150"/> <zone name="HuntingGround" smin="0" smax="0" dmin="3" dmax="4" x="7560" z="7105" r="250.5"/> </territory> </territory-type> Опять всё проверяем,кодировка, проверка, схожесть, проверяем, сохраняем
      (не делайте ошибки по типу 
      <?xml version="1.0" encoding="UTF-8"?> <territory-type> <territory color="4291611852"> <zone name="Water" smin="0" smax="0" dmin="3" dmax="4" x="4822.5" z="13657.5" r="60"/> <zone name="Water" smin="0" smax="0" dmin="3" dmax="4" x="4897.5" z="13815" r="60"/> <zone name="Water" smin="0" smax="0" dmin="3" dmax="4" x="6030" z="13485" r="45"/> <zone name="Rest" smin="0" smax="0" dmin="3" dmax="4" x="6997.5" z="12127.5" r="232.5"/> <zone name="Rest" smin="0" smax="0" dmin="3" dmax="4" x="7477.5" z="11970" r="180"/> <zone name="HuntingGround" smin="0" smax="0" dmin="3" dmax="4" x="6960" z="12105" r="292.5"/> <zone name="HuntingGround" smin="0" smax="0" dmin="3" dmax="4" x="7462.5" z="11970" r="217.5"/> <zone name="HuntingGround" smin="0" smax="0" dmin="3" dmax="4" x="6457.5" z="12210" r="210"/> </territory> </territory-type> в таком виде это блок точек для ОДНОГО события. Но если у вас в планах именно так, то....почему и нет?)))
      Теперь подключаем наши события из файла инит
      Открываем ванильный файл cfgeventspawns.xml
      И между <event name="AnimalRoeDeer" /> и <event name="AnimalWolf" /> вписываем
          <event name="AnimalBearA" />
          <event name="AnimalWolfA" />
      Названия для ивента взяты из созданного нами файла Aevents.xml
      (кодировка, проверка, схожесть, проверяем, сохраняем)
      Открываем ванильный файл cfgenvironment.xml
      В блок file path
      <file path="env/wolfA_territories.xml" /> <file path="env/bearA_territories.xml" /> Мы указали на путь к файлам с точками спавна.
      В блок с territory type вписываем
      <territory type="Herd" name="WolfA" behavior="DZWolfGroupBeh"> <file usable="wolfA_territories" /> </territory> <territory type="Herd" name="BearA" behavior="BlissBearGroupBeh"> <file usable="bearA_territories"/> </territory> Где
      name= - общее имя для территорий животного (использую всегда окончание названия ивента -подобие ваниле ибо там так)
      behavior="DZWolfGroupBeh" - подключение поведения. должен совпадать с установками в самом моде. Да, можно попробовать волкам прописать модель поведения коровы.Не проверял.
      file usable="bearA_territories подключение файла территории.
      Проверяем, сохраняем, вайпаем сервер.
       Далее.....Всё. Быстрее сделать чем рассказать.

      Почему файлы тайпс и ивент создаём сами и подключаем отдельно.
      Одна цитата от "богемии"
      because of a limit on xml file-size
      Да и проще работать когда всё разложено по полкам.
      Кому не удобно и просто лень-мешайте в одну кучу.


      Все права принадлежат на публикацию данного материала принадлежат и автору  ©





       
    • Автор: alexe1ch
      Вообщем проблема такая, перешел с панельки на выделенный сервер, все настроил, но появлиась проблема. Часто показывает красную цепь у игроков. Пинг скачет и аномально как то высок. Связывался с хостом, обновлял дрова на сервере, но все мимо. Кто нибудь сталкивался и знает как фиксить?
    • Автор: fedotovyasha
      Есть ли возможность сгенерировать и отобразить в ui qr код? Если да, то как?
    • Автор: paranoyk
      Как, создать ивент по типу StaticPoliceSituation, StaticTrain леГко как сделать если есть две штуки-желание и хотение. (мозги-опционально).
      А)....Создаём ивент в events.xml (далее все примеры это примеры из примеров примерно от багемии)
      <event name="StaticBoy"> <nominal>3</nominal> <min>1</min> <max>0</max> <lifetime>5400</lifetime> <restock>0</restock> <saferadius>500</saferadius> <distanceradius>1000</distanceradius> <cleanupradius>1000</cleanupradius> <secondary>InfectedIndustrial</secondary> <flags deletable="1" init_random="0" remove_damaged="0"/> <position>fixed</position> <limit>child</limit> <active>1</active> <children/> </event> -создано динамическое событие без объектов (спавн зомби вынесем за скобки пока)
      Б) в файле cfgeventspawns.xml задаём что это ивент -"группа объектов" и точки спавна ивента. Так как это "группа обьектов"- точки спавна это ТОЧКИ ОТСЧЕТА ДЛЯ ВСЕЙ ГРУППЫ.
      <event name="StaticBoy"> <zone smin="0" smax="0" dmin="1" dmax="2" r="20" /> <pos x="5587.466" z="2063.353" a="0" y="7.75" group="Boy_1"/> <pos x="3678.228" z="2328.108" a="0" y="6.7" group="Boy_2"/> <pos x="11254.230" z="3290.319" a="0" y="6.65" group="Boy_3"/> бла-бла и так далее.... </event> Координаты X и Z грубо говоря это координаты точки отсчёта ивента. Просто координаты реперной точки, почему?
      Да потому что "а"....поворот её относительно оси координат карты. Советую никогда его не менять, не ломайте себе мозог почему. У -высота этой реперной точки.
      То что это группа - спавнер видит из-за наличия названия.
      (координаты вы берёте при создании события или из админки или из богопротивного дэйзэдитора или из оффлайн режима...вообщем "где у вас будет центр данной го ивента для группы")
      <zone smin="0" smax="0" dmin="1" dmax="2" r="20" /> ИМХО, количество зомби если есть строчка <secondary>I и радиус их спавна
      Вэ) Перемещаемся в файл cfgeventgroups.xml и для каждой группы начинаются страдания.
      Спавнеру теперь не нужно общее название события, только группы....
      <!--pos x="5587.466" z="2063.353" a="0" y="7.591" group="Boy_1"/--> <group name="Boy_1"> <child type="StaticObj_Wreck_Train_742_Red_DE" deloot="0" lootmax="3" lootmin="1" x="0" z="0" a="78.123" y="1.9"/> <child type="StaticObj_Wreck_Train_Wagon_Tanker_DE" deloot="0" lootmax="3" lootmin="1" x="12.085" z="2.740" a="256.739" y="1.789"/> <child type="StaticObj_Wreck_Train_Wagon_Tanker_DE" deloot="0" lootmax="3" lootmin="1" x="23.106" z="5.477" a="255.579" y="1.781"/> <child type="Land_Train_Wagon_Box_DE" deloot="0" lootmax="3" lootmin="2" x="34.546" z="8.424" a="255.837" y="1.32"/> <child type="Land_Train_Wagon_Box_DE" deloot="0" lootmax="3" lootmin="2" x="46.285" z="11.341" a="255.321" y="1.398"/> <child type="Land_Train_Wagon_Box_DE" deloot="0" lootmax="3" lootmin="2" x="69.472" z="18.594" a="250.938" y="1.450"/> <child type="Land_Train_Wagon_Box_DE" deloot="0" lootmax="3" lootmin="2" x="57.966" z="14.737" a="252.227" y="1.411"/> </group> Группа....Boy_1.
      Вы решили что у вас Первый объект у вас StaticObj_Wreck_Train_742_Red_DE . И стоит он на реперной точке (а может и НЕ стоять)...ну раз захотелось так, делаем так.
      X и Z  .....ноль. Потому что расположен в координатах самой точки, без смещения X и Z...значит его координаты ноль. "а" - поворот ОТНОСИТЕЛЬНО ОСИ ПОВОРОТА РЕПЕРНОЙ ТОЧКИ. (помните говорил вам не менять её?), а так её угол поворота совпадает с углом поворота относительно карты (в прошлом файле мы же записали "а"=0), то тут используем угол поворота относительно карты. И как уже понятно, У - это высота объекта ОТНОСИТЕЛЬНО реперной точки. (мы задали в прошлом файле Y=7.75, значит тут высота обьекта в эдиторе будет 7,75+1,9). Записано 1,9
      Ставите ВТОРОЙ ОБЪЕКТ StaticObj_Wreck_Train_Wagon_Tanker_DE .....Его координаты нужно вписать ОТНОСИТЕЛЬНО реперной точки, они вычисляются.
      Поставили объект, смотрите "Х координата обьекта минус координата рэперной точки"  -вписали, "Z координата обьекта минус координата реперной точки".-вписали..."а"-как и в эдиторе.Тут думать не надо.
      У-координата обьекта минус координата реперной точки....вписали. И так для каждого обьекта в группе.
      Сделали одну группу-переходим к другой. И так пока не сделаете необходимое вам число групп.
      Метод дедовский, поэтому если есть более лучший-внимательно слушаю.
       
      Да, есть метод грубо говоря это автоматизирующий на определённом этапе. Видео с описанием. (на буржуйском). Кабан, спасибо за на водку.
      (права у s-platoon.ru. а автора:))
       
    • Автор: daxters
      22:17:41 Error in expression <
      };
      };

      _blActivate = _this select 0;
      [_blActivate]spawn{
      VibrosStart = 1;
      _blA>
      22:17:41   Error position: <_blActivate]spawn{
      VibrosStart = 1;
      _blA>
      22:17:41   Error Undefined variable in expression: _blactivate
      22:17:41 File mpmissions\__cur_mp.chernarusredux\addons\blowout\module\blowout_client.sqf..., line 147
       
       
       
      22:17:47 Error in expression <t = 1;
      _blActivate = _this select 0;
      if(_blActivate == 0)then{
      [] spawn bl_detec>
      22:17:47   Error position: <_blActivate == 0)then{
      [] spawn bl_detec>
      22:17:47   Error Undefined variable in expression: _blactivate
      22:17:47 File mpmissions\__cur_mp.chernarusredux\addons\blowout\module\blowout_client.sqf..., line 150
       
       
      Как решить эти ошибки?
       

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

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

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

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