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

    Create a theme in the appropriate section
    No need to write everything in the chat!
  • Sell or buy?

    Use the services of a guarantor
    We will make your transaction safe
  • Don't want a BAN?

    Please read our rules
    Don't disturb the order
  • Visit the market

    There you can sell or buy
    Everything related to game servers
123new

Создаем свой серверный мод. [DayZ 1.4 to Discontined]

Recommended Posts

В данной теме я распишу возможность создания серверного мода для сервера на собственном примере и объясню как его собрать.Работающий на момент публикации статьи на версии сервера игры 1.04.152050.

 

Нам понадобятся:

1. Сервер игры актуальной версии, не ниже патча 1.04. Как установить можно узнать тут:

До версии 1.04 параметра servermod у сервера игры не существовало!!!

2. Программа 'PBO manager' с состава инструментария армы из сети: https://www.armaholic.com/page.php?id=16369

Зеркало: https://yadi.sk/d/_gmzoNSDpNJTt

Еще зеркало:

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

3. Скрипты для упаковки в наш мод, сформированные и подготовленные нами вручную. Как - смотрите тему

4. Notepad++ https://notepad-plus-plus.org/download

P.S. Вместо 'PBO manager' можно использовать DayZ Tools, но как им пользоваться разбираемся сами 😉

 

И так, приступим:

1. Предположим, что у нас имеется свой некий набор скриптов (если нет - читаем выше), который необходимо добавить серверу, но не на уровне миссии сервера, а на более ранних уровнях его загрузки. Например, добавить свой killfeed, модифицировать или изменить какой-либо из родных скриптов сервера игры, либо вовсе модификации, подключенной у вас.
Для примера в этой теме и данного гайда я взял вот этот набор скриптов, собранный непосредственно для данной темы за 5 минут, и не изменяющий в сервере ровным счетом ничего. Он может послужить базой для создания своих модов, функций, переменных или классов. Данный гайд будем описывать, исходя из этого архива.
Архив:

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

Подробнее о создании скриптов для своих целей - читайте вот эту тему!

2. Создаем папку с нашим модом. Для примера, это будет папка '@My_Server_Mod'. В созданной нами папке создаем папку 'Addons', а в ней папку 'My_Server_Mod'.
3. Помещаем содержимое распакованного архива в папку 'My_Server_Mod'. Должно получиться так:

Безымянный.png

4. В папке 'My_Server_Mod' создаем файлик 'config.cpp' и заполняем его следующими данными (советую использовать Notepad++ для этого):

class CfgPatches	// требуется обязательно
{
	class My_Server_Mod	// требуется обязательно, совпадает с именем мода
	{
		units[]={}; 				// may be not worked
		weapons[]={}; 				// may be not worked
		requiredVersion=0.1; 		// may be not worked
		requiredAddons[]={};
		/*
			requiredAddons[]=
			{
				"DZ_Data",		// Перечисляем требуемые и используемые модом аддоны (pbo-файлы игры и модов по их внутренним скриптовым именам)
			};
		*/
	};
};
class CfgMods // // требуется обязательно, совпадает с именем мода
{
	// https://community.bistudio.com/wiki/DayZ:Modding_Structure#Mod_presentation
	class My_Server_Mod
	{
	    dir = "My_Server_Mod";							// Имя папки мода, совпадает с именем мода
	    picture = ""; 									// Картинка в описании мода
	    action = "";  									// Ссылка, например вот так: action = "https://dayz.com/";	
	    hideName = 1;									// Не уверен, что этот параметр работает
	    hidePicture = 1;								// Не уверен, что этот параметр работает
	    name = "My_Server_Mod";  						// Имя мода (а также его внутреннее скриптовое имя)
		logoSmall = "Mods/TestMod/modlogosmall.tga";	// значок рядом с именем мода, если описание не развернуто
		logo = "Mods/TestMod/modlogo.tga";				// логотип под меню игры
		logoOver = "Mods/TestMod/modlogohover.tga";		// при наведении курсора мыши на логотип
		tooltip = "tooltip";							// подсказка при наведении курсора мыши
		overview = "My Server Mod"; 					// Описание
	    credits = "123new";								// credits
	    author = "123new";								// author
	    authorID = "0";  								// author steam ID 
	    version = "1.0";  								// version
	    extra = 0;										// Не уверен, что этот параметр работает
		
	    type = "mod"; 									// требуется обязательно, остается неизменным
		// inputs = "mods\testmod\inputs\my_new_inputs.xml"; 	     // необязательно, при использовании пользовательских inputs
		dependencies[]={"Core","GameLib","Game","World","Mission"};  							// необязательно, если необходимо установить зависимость класса

	    class defs
	    {			
			class engineScriptModule
			{
				value=""; // если значение пустое, используется функция ввода по умолчанию
				files[]={"My_Server_Mod/scripts/1_Core"}; // вы можете добавить любое количество файлов или каталогов, и они будут скомпилированы вместе с оригинальными скриптами игрового модуля
			};
			class gameLibScriptModule
			{
				value="";
				files[]={"My_Server_Mod/scripts/2_GameLib"};
			};
			class gameScriptModule
			{
				//value="CreateGameMod"; // когда значение заполнено, имя функции ввода модуля скрипта по умолчанию перезаписывается им
				value = "";
				files[]={"My_Server_Mod/scripts/3_Game"};
			};
			class worldScriptModule
			{
				value="";
				files[]={"My_Server_Mod/scripts/4_World"};
			};
			class missionScriptModule
			{
				value="";
				files[]={"My_Server_Mod/scripts/5_Mission"};
			};
        };
		// Если какой-то из разделов скриптинга вам не нужен и вы не сибираетесь его паковать, сотрите необходимый блок с ним выше и в массиве dependencies 
    };
};

Пояснения в файле оставил. Файл готовый:

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

Как видите, в 'deffs' названия классов и путей соответствуют родным из 'scripts.pbo', но с допиской имени мода. Имя мода в данном случае и есть идентификатор для обращения к своему моду извне. А в 'dependencies' перечисляются используемые классы оригинальных скриптов без дописки номера секции. Количество используемых 'dependencies' и блоков 'deffs' должно быть идентично.

Пояснения есть также и в официальной документации от разработчика: https://community.bistudio.com/wiki/DayZ:Modding_Structure#Mod_presentation

5. Запаковываем нашу папку 'My_Server_Mod' в pbo-файл 'My_Server_Mod.pbo' через 'PBO manager', как на скриншоте ниже:

Безымянный.pngБезымянный.png

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

6. Добавляем в параметры запуска сервера параметр:

"-servermod=@My_Server_Mod;" -FilePatching

7. Радуемся, наш серверный мод готов. Пример готового серверного мода:

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

P.S. Создавать bikey файл для мода и bisign подписи для него не требуется, иначе это может привести к неработоспособности серверной модификации (возможно, недоработка сервера игры разработчиком)

 

Отмечу сразу, что данный способ подходит для модификации и переписывания оригинальных классов скриптов сервера от разработчиков и модификации чужих модов с помощью моддинга, применяется исключительно на стороне сервера игры и клиент игры не затрагивает. Распространять такой мод игрокам НЕ НУЖНО!
Изменение оригинальных скриптов, для которых не предусмотрена операция 'modded class' в движке игры, а также классов и функций, которые защищены языком и движком игры от такого рода действий через серверные моды не получится. Если вы столкнулись с этим, вам проще распаковать scripts.pbo и поместить папку scripts в корень сервера игры, добавить в параметры запуска сервера параметр -FilePatching и изменять напрямую в папке необходимые вам файлы.Запаковывать назад в pbo папку и размещать в dta в таком случае не нужно!

 

P.P.S. Процедура создания своего собственного клиент-серверного мода на основе скриптов работает таким же образом. В случае создания такого мода, файл 'config.cpp' может быть для стандартного мода более разнообразным, а также после требуется обязательная подпись такого мода в bisign и создание bikey файлов. Более подробно это освещать требуется отдельно!

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites

123new Спасибо тебе большое за подробный гайд. Только вот с папкой scripts у меня не получилось не чего. Хотел изменить стамину, я как понял сейчас это не работает? или я что-то упустил...?

Share this post


Link to post
Share on other sites

SergeyMaltsev1992 все работает

теперь  в constants.c

 

class GameConstants
{

 

и вперед

 

modded class GameConstants
{

 

    const int     STAMINA_DRAIN_STANDING_SPRINT_PER_SEC = 4; //in units (how much sprint depletes stamina)
    const int     STAMINA_DRAIN_CROUCHED_SPRINT_PER_SEC = 1; //in units (how much sprint in crouch depletes stamina)
    const int     STAMINA_DRAIN_PRONE_SPRINT_PER_SEC = 3; //in units (how much sprint in prone depletes stamina)
    const int    STAMINA_DRAIN_SWIM_FAST_PER_SEC = 5; //in units (how much fast swimming depletes stamina)
    const int    STAMINA_DRAIN_LADDER_FAST_PER_SEC = 8; //in units (how much fast ladder climb depletes stamina)

}

 

меняем на что надо и это отмодидся

Share this post


Link to post
Share on other sites
11 час назад, SergeyMaltsev1992 сказал:

123new Спасибо тебе большое за подробный гайд. Только вот с папкой scripts у меня не получилось не чего. Хотел изменить стамину, я как понял сейчас это не работает? или я что-то упустил...?

не работает само изменение scripts сервера в буквальном виде при включенной проверке сигнатур. По крайней мере до вчерашнего фикса стабилки точно не работало, т.к. при заходе на сервак мы ловим ошибку вида client contains pbo is not in server data (чет такое, на память пишу). Если проверку сигнатур вырубить то пустит, но и дырой это тоже будет являться))

Share this post


Link to post
Share on other sites

BorizzK Да проверял,результат-если сервак почти забит и
стамина увеличена на 25% (расход,приход и прочее),имееем;
Для игрока-стамина движеться рывками при полном израсходовании микролаг, для наблюдателя-игрок ТПэшит.

 

(отя я не пробовал ещё,работают ли "изменения для разработчиков",там вроде есть "чит стамина")

Edited by paranoyk (see edit history)

Share this post


Link to post
Share on other sites

paranoyk Увеличь число игроков обрабатываемых сервером 20 до 35 например simulatedPlayersBatch = 32;    при фул онлайне, микролаги пропали

Share this post


Link to post
Share on other sites

Хорошо. А такой вопрос, к примеру есть мод Build Anywhere, я не хочу его пихать как основной мод, хочется что бы его качали игроки при подключении к серверу.
Возможно сделать так, что бы это реализовать? Если кто-то пробовал, подскажите как.

Share this post


Link to post
Share on other sites

griha41 ахаха) А ты самый умный)))))))

 

Про это Богемии говорят уже лет 6, чтоб при запуске игры выводился список недостающих модов и их предлагалось скачать)

Нет такой возможности.

Share this post


Link to post
Share on other sites

@griha41его (мод) все равно нужно будет подключать и положить в серверную часть, если в конфиге подключено verifySignatures = 2 (3);
Можно конечно отключить verifySignatures поставить на 0, но функционал мода не будет работать.

Share this post


Link to post
Share on other sites
1 час назад, griha41 сказал:

Хорошо. А такой вопрос, к примеру есть мод Build Anywhere, я не хочу его пихать как основной мод, хочется что бы его качали игроки при подключении к серверу.
Возможно сделать так, что бы это реализовать? Если кто-то пробовал, подскажите как.

DZSA Launcher используй и твоя проблема решится. Правда там и сервер надо с их лаунчера запускать, иначе моды не увидит.

Share this post


Link to post
Share on other sites

Чтож, Арма 3 в этом плане мощнее. Можно было на с**ть и всёравно моде хоть отдельный город выстроить.

 

 

Спасибо всем за ответы и разъяснения.

Share this post


Link to post
Share on other sites
1 час назад, Morrison сказал:

Почему сервер не стартует ? делал все как автор описал

 

мы не экстрасенсы

Share this post


Link to post
Share on other sites

Товарищи, вот вам вопросик занятный. Возьмем для примера мод Traders

могу ли я, вырезав все новые объекты, оставив только скрипты, полностью сделать его servermod'ом?

 

и вообще, кто разобрался объясните пожалуйста, что можно можно делать в servermod, а что заставлять скачивать как обычный мод (в плане скриптов)

Share this post


Link to post
Share on other sites
В 11.07.2019 в 01:00, BorizzK сказал:

SergeyMaltsev1992 все работает

теперь  в constants.c

 

class GameConstants
{

 

и вперед

 

modded class GameConstants
{

 

    const int     STAMINA_DRAIN_STANDING_SPRINT_PER_SEC = 4; //in units (how much sprint depletes stamina)
    const int     STAMINA_DRAIN_CROUCHED_SPRINT_PER_SEC = 1; //in units (how much sprint in crouch depletes stamina)
    const int     STAMINA_DRAIN_PRONE_SPRINT_PER_SEC = 3; //in units (how much sprint in prone depletes stamina)
    const int    STAMINA_DRAIN_SWIM_FAST_PER_SEC = 5; //in units (how much fast swimming depletes stamina)
    const int    STAMINA_DRAIN_LADDER_FAST_PER_SEC = 8; //in units (how much fast ladder climb depletes stamina)

}

 

меняем на что надо и это отмодидся

BorizzK 

Подскажите пожалуйста как это сделать? или пример маленький... пол дня мучался не хрена не получилось :( Раньше то проще было с папкой Scripts, теперь вообще не понимаю как это сделать...

Edited by SergeyMaltsev1992 (see edit history)

Share this post


Link to post
Share on other sites
class CfgPatches	// требуется обязательно
{
	class XMSERVERMOD	// требуется обязательно, совпадает с именем мода
	{
		units[]={}; 				// may be not worked
		weapons[]={}; 				// may be not worked
		requiredVersion=1.0; 		// may be not worked
		requiredAddons[]={};
		/*
			requiredAddons[]=
			{
				"DZ_Data",		// Перечисляем требуемые и используемые модом аддоны (pbo-файлы игры и модов по их внутренним скриптовым именам)
			};
		*/
	};
};
class CfgMods // // требуется обязательно, совпадает с именем мода
{
	// https://community.bistudio.com/wiki/DayZ:Modding_Structure#Mod_presentation
	class My_Server_Mod
	{
	    dir = "XMSERVERMOD";							// Имя папки мода, совпадает с именем мода
	    picture = ""; 									// Картинка в описании мода
	    action = "";  									// Ссылка, например вот так: action = "https://dayz.com/";	
	    hideName = 1;									// Не уверен, что этот параметр работает
	    hidePicture = 1;								// Не уверен, что этот параметр работает
	    name = "XMSERVERMOD";  						// Имя мода (а также его внутреннее скриптовое имя)
		logoSmall = "Mods/TestMod/modlogosmall.tga";	// значок рядом с именем мода, если описание не развернуто
		logo = "Mods/TestMod/modlogo.tga";				// логотип под меню игры
		logoOver = "Mods/TestMod/modlogohover.tga";		// при наведении курсора мыши на логотип
		tooltip = "tooltip";							// подсказка при наведении курсора мыши
		overview = "XMSERVERMOD"; 					// Описание
	    credits = "SergeyMaltsev";								// credits
	    author = "SergeyMaltsev";								// author
	    authorID = "0";  								// author steam ID 
	    version = "1.0";  								// version
	    extra = 0;										// Не уверен, что этот параметр работает
		
	    type = "mod"; 									// требуется обязательно, остается неизменным
		// inputs = "mods\testmod\inputs\my_new_inputs.xml"; 	     // необязательно, при использовании пользовательских inputs
		dependencies[]={"constants.c"};  							// необязательно, если необходимо установить зависимость класса
		
	class defs
	    {			
			class GameConstants
			{
				value=""; // если значение пустое, используется функция ввода по умолчанию
				files[]={"StaminaXMMOD/constants.c"}; // вы можете добавить любое количество файлов или каталогов, и они будут скомпилированы вместе с оригинальными скриптами игрового модуля
			};
        };
		// Если какой-то из разделов скриптинга вам не нужен и вы не сибираетесь его паковать, сотрите необходимый блок с ним выше и в массиве dependencies 
    };
};

BorizzK 

 

Я вообще хрень какую то сделал ? :D

Не кидайтесь камнями, впервые это делаю.

Edited by SergeyMaltsev1992 (see edit history)

Share this post


Link to post
Share on other sites
13 часа назад, polpa сказал:

paranoyk Увеличь число игроков обрабатываемых сервером 20 до 35 например simulatedPlayersBatch = 32;    при фул онлайне, микролаги пропали

polpa Так,так,а поподробней где это сделать-только укажите направление,там раскопаю до бинарного кода в биосе....

Share this post


Link to post
Share on other sites
1 час назад, paranoyk сказал:

polpa Так,так,а поподробней где это сделать-только укажите направление,там раскопаю до бинарного кода в биосе....

serverDZ.cfg в профиле сервера

Share this post


Link to post
Share on other sites
12 часа назад, SergeyMaltsev1992 сказал:

class CfgPatches	// требуется обязательно
{
	class XMSERVERMOD	// требуется обязательно, совпадает с именем мода
	{
		units[]={}; 				// may be not worked
		weapons[]={}; 				// may be not worked
		requiredVersion=1.0; 		// may be not worked
		requiredAddons[]={};
		/*
			requiredAddons[]=
			{
				"DZ_Data",		// Перечисляем требуемые и используемые модом аддоны (pbo-файлы игры и модов по их внутренним скриптовым именам)
			};
		*/
	};
};
class CfgMods // // требуется обязательно, совпадает с именем мода
{
	// https://community.bistudio.com/wiki/DayZ:Modding_Structure#Mod_presentation
	class My_Server_Mod
	{
	    dir = "XMSERVERMOD";							// Имя папки мода, совпадает с именем мода
	    picture = ""; 									// Картинка в описании мода
	    action = "";  									// Ссылка, например вот так: action = "https://dayz.com/";	
	    hideName = 1;									// Не уверен, что этот параметр работает
	    hidePicture = 1;								// Не уверен, что этот параметр работает
	    name = "XMSERVERMOD";  						// Имя мода (а также его внутреннее скриптовое имя)
		logoSmall = "Mods/TestMod/modlogosmall.tga";	// значок рядом с именем мода, если описание не развернуто
		logo = "Mods/TestMod/modlogo.tga";				// логотип под меню игры
		logoOver = "Mods/TestMod/modlogohover.tga";		// при наведении курсора мыши на логотип
		tooltip = "tooltip";							// подсказка при наведении курсора мыши
		overview = "XMSERVERMOD"; 					// Описание
	    credits = "SergeyMaltsev";								// credits
	    author = "SergeyMaltsev";								// author
	    authorID = "0";  								// author steam ID 
	    version = "1.0";  								// version
	    extra = 0;										// Не уверен, что этот параметр работает
		
	    type = "mod"; 									// требуется обязательно, остается неизменным
		// inputs = "mods\testmod\inputs\my_new_inputs.xml"; 	     // необязательно, при использовании пользовательских inputs
		dependencies[]={"constants.c"};  							// необязательно, если необходимо установить зависимость класса
		
	class defs
	    {			
			class GameConstants
			{
				value=""; // если значение пустое, используется функция ввода по умолчанию
				files[]={"StaminaXMMOD/constants.c"}; // вы можете добавить любое количество файлов или каталогов, и они будут скомпилированы вместе с оригинальными скриптами игрового модуля
			};
        };
		// Если какой-то из разделов скриптинга вам не нужен и вы не сибираетесь его паковать, сотрите необходимый блок с ним выше и в массиве dependencies 
    };
};

BorizzK 

 

Я вообще хрень какую то сделал ? :D

Не кидайтесь камнями, впервые это делаю.

dependencies[]={"constants.c"}; 

и

class GameConstants
не верно назначено.
У нас constants.c находится в блоке 1_Core оригинальных скриптов, значит вместо

dependencies[]={"constants.c"}; 

должно быть

dependencies[]={"Core"};

и вместо

class GameConstants

должно быть

class engineScriptModule

Share this post


Link to post
Share on other sites
12 часа назад, Kaboom сказал:

Товарищи, вот вам вопросик занятный. Возьмем для примера мод Traders

могу ли я, вырезав все новые объекты, оставив только скрипты, полностью сделать его servermod'ом?

 

и вообще, кто разобрался объясните пожалуйста, что можно можно делать в servermod, а что заставлять скачивать как обычный мод (в плане скриптов)

сделать то вы можете все что угодно, но кроме объектов, стоящих в точке и ботов с бессмертием для них у вас ничего не будет тогда, т.е. ни менюшек торговли, ни уведомлений о входах в зоны, ничего.

Обычно делают сервермод, но если нужны какие-то изменения с добавлением меню, опций, текстурок, объектов, не родных для игры, худа на экране, то делается клиентский мод, т.к. без него на клиент игры ничего не добавить в данный момент.

Share this post


Link to post
Share on other sites

Насчет стамины, вот вам рабочая и проверенная версия, у самого на Дезматч сервере стоит. Я перевёл текст на русский, переводил гуглом так что камнями не бросайтесь.

 

modded class GameConstants
{
	
    const int 	STAMINA_DRAIN_STANDING_SPRINT_PER_SEC = 4; //в единицах (насколько быстрый бег истощает выносливость)
	const int 	STAMINA_DRAIN_CROUCHED_SPRINT_PER_SEC = 1; //в единицах (сколько быстрый баг присидя истощает выносливость)
	const int 	STAMINA_DRAIN_PRONE_SPRINT_PER_SEC = 3; //в единицах (сколько быстрое передвижение лёжа истощает выносливость)
	const int	STAMINA_DRAIN_SWIM_FAST_PER_SEC = 5; //в единицах (насколько быстрое плавание истощает выносливость)
	const int	STAMINA_DRAIN_LADDER_FAST_PER_SEC = 8; //в единицах (насколько быстрый подьем по лестнице истощает выносливость)

	const float	STAMINA_DRAIN_HOLD_BREATH = 0.2; //в единицах (насколько задержка дыхания снижает выносливость)
	const float	STAMINA_DRAIN_JUMP = 20;		//в единицах (насколько прыжки истощают выносливость)
	const float	STAMINA_DRAIN_MELEE_LIGHT = 5; //в единицах (насколько легкий рукопашный удар истощает выносливость)
	const float	STAMINA_DRAIN_MELEE_HEAVY = 25; //в единицах (насколько тяжелый рукопашный удар истощает выносливость)
	const float	STAMINA_DRAIN_MELEE_EVADE = 8; //в единицах (насколько уклонение истощает выносливость)
	
	const int 	STAMINA_GAIN_JOG_PER_SEC = 2; //в единицах (сколько единиц выносливости получено при обычном беге)
	const int 	STAMINA_GAIN_WALK_PER_SEC = 4; //в единицах (сколько единиц выносливости набрано при ползанье)
	const int 	STAMINA_GAIN_IDLE_PER_SEC = 5; //в единицах (сколько единиц выносливости получено во время ходьбы)
	const int	STAMINA_GAIN_SWIM_PER_SEC = 1; //в единицах (сколько единиц выносливости набрано при медленном плавании)
	const int	STAMINA_GAIN_LADDER_PER_SEC = 1; //в единицах (сколько единиц выносливости набрано при медленном подьеме по леснице)
	const float STAMINA_GAIN_BONUS_CAP = 3.0; //в единицах (говорит, сколько дополнительных единиц можно добавить в лучшем случае для восстановления выносливости)

	const float STAMINA_KG_TO_STAMINAPERCENT_PENALTY = 1.75; //в единицах (на сколько единиц уменьшается максимальная выносливость на каждый 1 кг веса груза)
	const float STAMINA_MIN_CAP = 5; //в единицах (перегрузка не уменьшит максимальный уровень выносливости при этом значении)
	const float STAMINA_SPRINT_THRESHOLD = 25; //в единицах (сколько единиц выносливости вам нужно восстановить, чтобы иметь возможность начать бег)
	const float STAMINA_HOLD_BREATH_THRESHOLD = 10; // в единицах (сколько единиц выносливости вам нужно восстановить, чтобы закончилась отдышка)
	const float STAMINA_JUMP_THRESHOLD = 20; // в единицах (сколько единиц выносливости вам нужно восстановить, чтобы иметь возможность прыгать)
	const float STAMINA_MELEE_HEAVY_THRESHOLD = STAMINA_DRAIN_MELEE_HEAVY; // в единицах (сколько единиц выносливости нам нужно, чтобы сильно ударить в ближнем бою)
	const float STAMINA_MELEE_EVADE_THRESHOLD = 8; // в единицах (сколько единиц выносливости нам нужно, чтобы увернутся)
	const float STAMINA_REGEN_COOLDOWN_DEPLETION = 0.45; // в секундах (сколько времени выносливость будет в перезарядке, прежде чем начнет восстанавливатся)
	const float STAMINA_REGEN_COOLDOWN_EXHAUSTION = 0.5; // - не понял до конца
	const float STAMINA_WEIGHT_LIMIT_THRESHOLD = 6000; //! в граммах (вес, когда игрок не уменьшает общую выносливость, у меня лично этот параметр не работал как бы его не менял)
	const float STAMINA_KG_TO_GRAMS = 1000; //для пересчета кг в граммы
	const float STAMINA_SYNC_RATE = 1; //в секундах
	const float STAMINA_MAX = 100; //Максимальное количество выносливости

}

 

Когда будете паковать в серверный мод, пути: scripts/3_Game и создаёте файл с названием constants.c

Edited by dosserua (see edit history)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By 123new
      Здравствуйте, дорогие друзья и посетители сайта. В данной теме я распишу как создать свой "чистый" сервер на основе первых официальных серверных файлов игры, доступных каждому в steam для тех, кто приобрел эту замечательную игру. Для тех, кто не приобретал ее, не расстраивайтесь, добавлю зеркала на файлы.
      И так, приступим.
       
      Системные требования игры:
      https://s-platoon.ru/topic/7014-polnaya-dokumentaciya-servernyh-faylov-dayz-standalone-dayz-server-files-documentation/?do=findComment&comment=61219
       
      Нам понадобятся:
      1. Notepad++ https://notepad-plus-plus.org/download
      2. Официальные серверные файлы игры со steam. Скачать  их можно:
      В Steam из раздела 'инструменты' , выбрав DayZ Server и нажав 'установить' Вручную через утилиту SteamCMD:
      3. Официальный клиент игры из steam: https://store.steampowered.com/app/221100/DayZ/
      4. "Настроенная конфигурация серверной части игры" и батник для старта сервера:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      И так, приступим.
      Копируем папку со скачанными серверными файлами игры (папку DayZServer ) в отдельную папку. В пути и имени папки не должно быть пробелов и русских символов. Саму новую папку можно назвать как хотите, я же назову ее MyServer. Распаковываем архив с "Настроенной конфигурацией серверной части игры" в папку с серверными файлами (папка MyServer). Получим что-то типа такого: Далее мы работаем уже только внутри папки MyServer Открываем в Notepad++ файл server.cfg в папке Instance_1.  Настраиваем его, комментарии к настройке на русском в файле имеются.
      При особой необходимости вы можете свериться с serverDZ.cfg в корневой папке сервера, это оригинальный файл конфигурации, предоставленный разработчиками. Также, можете прочитать информацию из официальной документации с переводом в теме вот этой(смотрите во 2 сообщении указанной темы). Плюсом есть пояснения в конце гайда! Открываем в Notepad++ файлы BEServer.cfg  и BEServer_x64.cfg в папке Instance_1\Battleye в папке сервера. Настраиваем параметры, содержимое обоих файлов должно быть идентичным.
      Параметры:
      RConPassword - Устанавливает пароль для подключения RCon инструментов  (инструмент удаленного администрирования, таких как BEC/Dart).
      RestrictRCon - Включает\отключает RCon-функции (кик\бан\ограничение подключения) (0 для отключения органичений)
      MaxPing - устанавливает ограничение на сервере по пингу
      В примере, уже имеющемся у вас, 12345678 - rcon-пароль сервера, 500 - максимальный пинг, разрешенный battleye для игры на сервере, RestrictRCon 0 - разрешить подключение с RCon-клиентов с правами кика и бана (0 - разрешено все, 1 - запрещен кик и бан, только отправка в чат). Запускаем !!!Start_server.bat и наш сервер запустится. Запускаем клиент игры со steam, находим наш сервер вручную по ip и порту, либо имени сервера.
      Если сервер запущен на том же компьютере, где и игра, и на стандартном порту 2302, то поумолчанию поиск выполняется по 127.0.0.1:2302
      Если сервер запущен на другом компьютере, то вместо 127.0.0.1 будет ip адрес компьютера, где запущен сервер, или его доменное имя. Например, myserver.com:2302 или 178.123.22.12:2302
      ВАЖНО: если сервер запущен на другом компьютере, отличном от компьютера где запущена игра, то для доступа на сервер игроков необходимо иметь "внешний" выделенный ip-адрес и открытый порт сервера!
      Сменить порт сервера можно в !!!Start_server.bat (Notepad++ для редактирования),  параметр запуска сервера -port= Более подробно по параметрам запуска читайте ниже. Для выключения сервера рекоммендуется пользоваться !!!Server_kill.bat файлом, созданным в соответствии с рекоммендациями разработчиков игры и официальной документацией.  
      Разъяснения по параметрам запуска сервера игры (для !!!Start_server.bat ):
      Разъяснения по конфигурационному файлу сервера игры (для serverDZ.cfg ):
       
      Crack SmartSteamEmu v. 1.4.3 данной версии клиента игры и сервера:
      Скачать с Zippyshare.com: https://www64.zippyshare.com/v/mHmPweqg/file.html
      Скачать с Mega.nz: https://mega.nz/#!rnZBXK4b!KRrJm6obcJjUlzMpEPNQ3R8sy2z0pP-0Myb_ao4TVhg
      Скачать с yandex.disk: https://yadi.sk/d/4xSF1dSt6XN41g
      Инструкция по установке есть в архиве, дублирую:
       
      Дополнительно:
      Для работы с Battleye, кика и бана игроков используйте ip-адрес и порт сервера, и любой rcon-клиент с паролем из BEServer_x64.cfg
      Для работы BEC файл BEServer.cfg должен быть идентичным по содержанию BEServer_x64.cfg иначе программа не будет работать!
      База данных (storage) теперь хранится по пути: mpmissions\dayzOffline.chernarusplus\storage_{номер instance с cfg сервера}
      В базе данных также хранится файл с сохранениями игроков на сервере с именем players.db
      Если вы не находите свой сервер в списке серверов игры во вкладке Community, проверьте на доступность и открытость извне игровой порт, а также порты steam и steamquery (см. cfg файл сервера). Сервера с crack не отобразятся там.
       
      Вот и все, приятной игры на сервере!
       
       
    • By 123new
      В данной теме я распишу мой вариант установки сейвзоны, работающий на момент публикации статьи на версии сервера игры 1.06.152885.
       
      Установка
      1. Открываем 'init.c' в  'MpMissions' вашей.
      2. Вверху файла добавляем 1 строкой:
      #include "$CurrentDir:\\mpmissions\\dayzoffline.chernarusplus\\Scripts\safezone.c" Где 'dayzoffline.chernarusplus' - имя папки с активной 'MpMissions' вашей.
      Т.е. для карты Livonia 'dayzoffline.chernarusplus'  надо вручную заменить на 'dayzOffline.enoch'
      Пример:

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      3.Создаем папку 'Scripts' в корне 'MpMissions' вашей, а в ней создаем файл с именем 'safezone.c' следующего содержания:
      /* Author: Sania(ZoS) (aka 123new) Project: S-platoon.ru Install: 1. Create a 'Scripts' directory in your active mpmissions 2. Plase this filename (safezone.c) in 'Scripts' 3. Add in init.c this line: #include "$CurrentDir:\\mpmissions\\dayzoffline.chernarusplus\\Scripts\safezone.c" Where is 'dayzoffline.chernarusplus' is active mpmission directory in cfg filename server 4. Configure a next settings */ class SafeZone_PlugIn { protected bool Activate_SafeZone_PlugIn = true; // safezone on (true) or off (false) protected float SAFEZONE_time_repeat_checking = 60; //In seconds ref static TStringArray SAFEZONE_LOACTIONS = {"15145.1 32.9793 13919.0", "12145.1 32.9793 10919.0"};//Map coords (positions of the safe zone) protected static float SAFEZONE_RADIUS = 100; //In meter protected static string SAFEZONE_ENTRY_MESSAGE = "Welcome to The SafeZone! Godmode ENABLED!"; protected static string SAFEZONE_EXIT_MESSAGE = "You Have Left The SafeZone! Godmode DISABLED!"; void OnInit() { if(Activate_SafeZone_PlugIn) { GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(RunCheckStart, (SAFEZONE_time_repeat_checking * 1000), true); } } static void RunCheckStart() { private array<Man> players; private int numbOfplayers = 0; foreach(string SAFEZONE_LOACTION: SAFEZONE_LOACTIONS) { players.Clear(); numbOfplayers=0; GetGame().GetPlayers( players ); numbOfplayers = players.Count(); if( numbOfplayers > 0 ) { foreach(Man player: players) { if(player) { private PlayerBase player_casted = PlayerBase.Cast(player); CheckingPosition(player_casted,SAFEZONE_LOACTION.ToVector()); } } } } } static void CheckingPosition(PlayerBase player,vector SAFEZONE_LOACTION) { private float SAFEZONE_distance; private string SAFEZONE_ZoneCheck, SAFEZONE_UID_PLAYER, SAFEZONE_NAME_PLAYER; SAFEZONE_NAME_PLAYER = player.GetIdentity().GetName(); SAFEZONE_UID_PLAYER = player.GetIdentity().GetPlainId(); //Steam 64 private Param1<string> SAFEZONE_Msgparam; private vector SAFEZONE_pos_player = player.GetPosition(); private vector SAFEZONE_LOCATION_FIXED = CorrectToGroundPosY(SAFEZONE_LOACTION); private string name_mesage_profile = "GodModeEnabledFor: " + SAFEZONE_UID_PLAYER + " Location: " + SAFEZONE_LOACTION.ToString(); SAFEZONE_distance = vector.Distance(SAFEZONE_pos_player,SAFEZONE_LOCATION_FIXED); if (SAFEZONE_distance <= SAFEZONE_RADIUS) //Player Inside Zone { SAFEZONE_ZoneCheck = ""; GetGame().GetProfileString(name_mesage_profile,SAFEZONE_ZoneCheck); if (SAFEZONE_ZoneCheck == "true") //Already in zone { return; } else { GetGame().SetProfileString(name_mesage_profile,"true"); Print("[SafeZone] " + SAFEZONE_NAME_PLAYER + " (" + SAFEZONE_UID_PLAYER + ") Enter in safeZone in position: " + SAFEZONE_LOCATION_FIXED.ToString()); player.SetAllowDamage(false); //GodMode On SendPersonalMessage(SAFEZONE_ENTRY_MESSAGE, player); } } else if (SAFEZONE_distance > SAFEZONE_RADIUS) //Player Outside of Zone { SAFEZONE_ZoneCheck = ""; GetGame().GetProfileString(name_mesage_profile,SAFEZONE_ZoneCheck); if (SAFEZONE_ZoneCheck == "false") { return; } else { if (SAFEZONE_ZoneCheck != "") { GetGame().SetProfileString(name_mesage_profile,"false"); Print("[SafeZone] " + SAFEZONE_NAME_PLAYER + " (" + SAFEZONE_UID_PLAYER + ") Left safeZone in position: " + SAFEZONE_LOCATION_FIXED.ToString()); player.SetAllowDamage(true); //GodMode Off SendPersonalMessage(SAFEZONE_EXIT_MESSAGE, player); } else { return; } } } } static vector CorrectToGroundPosY(vector pos) { private float pos_x = pos[0]; private float pos_z = pos[2]; private float pos_y = GetGame().SurfaceY(pos_x, pos_z); private vector tmp_pos = Vector(pos_x, pos_y, pos_z); return tmp_pos; } static void SendPersonalMessage(string message, PlayerBase casted_player) { Man player; Class.CastTo(player, casted_player); if(( player ) && (message != "")) { Param1<string> m_GlobalMessage = new Param1<string>(message); GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_GlobalMessage, true, player.GetIdentity()); } } } /* class SafeZone_Config //test config for json { vector SAFEZONE_LOACTION = "15145.1 32.9793 13919.0"; //Map coords (position of the safe zone) float SAFEZONE_RADIUS = 100.0; //In meter string SAFEZONE_ENTRY_MESSAGE = "Welcome to The SafeZone! Godmode ENABLED!"; string SAFEZONE_EXIT_MESSAGE = "You Have Left The SafeZone! Godmode DISABLED!";\ } */ ref SafeZone_PlugIn SafeZone = new SafeZone_PlugIn(); modded class CustomMission { override void OnInit () { super.OnInit(); SafeZone.OnInit(); } } Ну или скачиваем его отсюда в готовом виде:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Здесь:
       'SAFEZONE_LOACTIONS' - координаты точкек центра сейвзоны, можно указать несколько.
      'SAFEZONE_RADIUS' - радиус от указанного центра севзоны, на котором действует защита
      'ENTRY_MESSAGE' - сообщение о входе в зону (не рекоммендуется указывать русский язык, может не отображаться)
      'EXIT_MESSAGE' - сообщение о выходе из зоны (не рекоммендуется указывать русский язык, может не отображаться)
      'SAFEZONE_time_repeat_checking' - время повтора проверки наличия игроков в зонах, в секундах
      'Activate_SafeZone_PlugIn' - активация плагина скрипта, true - ключен, false - выключен
      4. Запускаем сервер и проверяем.
       
      Для совсем ленивых готовая миссия сервера с настроенной сейвзоной для патча игры 1.06 
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
       
      Гайд обновлен: 31.01.2020
       
       
    • By NoNameUltima
      Название:
      DayZ Standalone Ultima MOD
       
      Цена: 9500
       
      Функционал и особенности:
      Мод предоставляется в нескольких частях:
      Со стима:
      Клиентский мод со стима Ultima(для игроков). Ключи и подписи, присутствуют.   Клиентский мод со стима UltimaClientAdmin(для игроков). Ключи и подписи, присутствуют.   Клиентский мод для Вашего сервера! Данный мод необходимо будет переименовать(в любое имя - это Ваш мод, модифицирующий конфиг). Необходимо будет создать к нему ключи и подписи, и выложить от себя в стим. Ссылку на данный мод вы и выкладываете в стим. Серверные мод(только для сервера). Кол-во: 2. *Моды связанны между собой.
       
      Что присутствует:
      Стартовое меню:
      Добавлена ссылка на группу в ВК. Добавлена ссылка на Дискорд. Добавлен выбор для прямого захода на Ваши сервера!(возможно добавление множества серверов в одно меню). Добавлен логотип. Добавлен экран(картинка) загрузки. Добавлен экран(картинка) возрождения\захода на сервер. *Все описанные выше параметры настраиваются под Ваш сервер! Дебаг монитор:
      Донат Наличные Банк Убито людей Убито зомби Фракция Репутация Игроков онлайн ФПС Время старта миссии Время до рестарта Собственная валюта:
      Можно забрать из трупа по экшену мышки(обыскать карманы) Можно положить в банк(Размер банковской ячейки - настраивается). Можно перевести другому игроку Можно передать другому игроку Можно совершать покупки *Валюта виртуальная. Радиационные зоны:
      Сообщения о входе в радиационную зону(Опционально. Отключается в конфигурации) Сообщения о выходе из радиационной зоны(Опционально. Отключается в конфигурации) Предметы компенсирующий урон в радиационной зоне(Задаются списком в конфигурации). Конфигурация для устройств выступающих как счетчик Гейгера. В конфигурации есть возможность выбрать, - нуждается ли счетчик во включении. В конфигурации есть возможность выбрать, - нуждается ли счетчик в батарейке. HUD счетчика(Опционально. Отключаемый в конфигурации. Отображает уровень радиации, и общий счетчик компенсации). Звук счетчика Гейгера(Частота звука нарастает при приближении к эпицентру). Фракции:
      Возможность создать фракцию, за валюту, или чеки(донат).(Ценники настраиваются в конфигурации). Возможность удалить фракцию. Возможность приглашения игроков во фракцию.(Ограничение на кол-во игроков во фракции задается в конфигурации). Возможность выгнать игрока из фракции. Возможность отклонить приглашение во фракцию. Возможность принять приглашение во фракцию. Отображение имени игрока над головой, если он в одной фракции с вами, и на дистанции менее 100м. Возможность отключить отображение игроков во фракции со стороны сервера. Возможность создавать точки возрождения для членов фракции.(Кол-во точек и стоимость создания настраиваются в конфигурации). Безопасные зоны:
      Удалены зомби из безопасных зон Удалены волки из безопасных зон Отключен урон по игрокам внутри безопасных зон Нельзя перейти в боевой режим внутри безопасных зон Отображение имен игроков внутри торговых зон Оповещение при входе Оповещение при выходе Торговые зоны:
      Над торговцами, банкирами, менеджерами фракций, присутствует надпись(Имя, чем торгует и т.п.) Взаимодействие с торговцами через экшен мышки(торговля) Зона запрета строительства:
      Нельзя строить. Торговля:
      Торговля может быть настроена на определенную фракцию При продаже учитывается процент повреждения объекта, и торговец даст за него сумму с учетом повреждений! Владельцем техники считается тот игрок, кто последний сидел за рулем, и именно она и  отображается в продаже. Продаваемая техника должна быть в пределах 10м от игрока. При покупке техники, ключ выдается автоматически. Нельзя продать технику если в ней кто то находится. Нельзя вести торговлю находясь внутри техники. При продаже объекта, весь инвентарь, в т.ч. и обвес который находился внутри объекта(к примеру рюкзака, или техники), будет автоматически сложен под ноги. Есть возможность создать "бродячего" торговца. - Файл с конфигурацией прилагается.( Настраивается время перемещения, и список случайных позиции для торговца) Техника:
      Есть возможность привязать технику к ключу, предварительно купив его у торговца. Есть возможность закрывать технику на ключ. Владельцем техники считается тот, кто последним сидел за рулем. После рестарта, вся техника которая привязана к ключам создается закрытой. Экшен перевернутой техники (постановка на колеса), при наличии монтировки. Только тому игроку который последним сидел за рулем. Карта:
      Добавлена карта для игроков, открытие на CTRL+M Установка 3D маркера на карту Дабл.клик ЛКМ.(Будет отображен и в ESP)*При наличии компаса в инвентаре Удаление 3D маркера с карты Дабл клик ПКМ.*при наличии компаса в инвентаре Установка маркера карты, с возможностью выбора цвета шрифта, и прозрачности. Отображение азимута при наличии компаса в инвентаре. Монитор возрождения:
      Добавлены точки для выбора места возрождения. Возможность добавлять стандартные точки возрождения. Возможность добавлять точки возрождения за валюту в банке. Возможность добавлять точки возрождения за чеки(донат). Возможность добавлять точки возрождения зависящие от репутации(-+) *Данные точки отображаются у игроков в мониторе возрождения. Так же отображаются фракционные точки, если игрок состоит во фракции, и у фракции они созданы. Оповещения о смертях:
      Отдельное уведомление в окошке. Стартовый инвентарь:
      Есть возможность выдавать инвентарь как по UID, при чем случайным образом из списка доступных для данного UID'а. Игроки для которых не создан конфиг инвентаря, получают его из общего конфига. В конфиге можно указать одежду, вещи которые будут помещены в руки, вещи которые будут помещены горячие слоты, а так же есть возможность добавлять вещи сразу в комплектации(т.е. с обвесом, батарейками и т.п.) Репутация:
      При смерти с игрока снимается 200 репутации(до 0 в +-). т.е. Пример:
      Было +450, станет +250.
      Было -300, станет -100.
      Было +90, станет 0.
      Было -150, станет 0.
      За убийство игрока, репутация начисляется по 150 таким образом: Если с убитого снято менее 200 репутации(см. пример выше), то начисления нет! Если убийца был с отрицательной репутацией, то начисление идет в минус. Пример:
      Было -100, станет -250
      *Не играет роли, какая репутация была у убитого.
      Если убийца был с положительной репутацией, а убитый с отрицательной, то +150 Пример:
      Было 100, станет 250
      Если убийца был с положительной репутацией, и убитый с положительной , то -150 Пример:
      Было 100, станет -50
      Было 1000, станет 850
      Стартовые позиции игроков:
      Есть возможность возрождать игрока на точках прописанных специально под его UID, при чем случайным образом из списка доступных для данного UID'а. Игроки для которых не создан конфиг возрождения, возрождаются из общего конфига. Журналы:
      Торговля Посадка\Высадка в\из технику(и) Установка\демонтаж(стройка) Смерти игроков АДМИНКА (ВКЛЮЧЕНА В МОД):
      Все пункты описывать не буду, - могу сказать только то, что почти все работает, и множество пунктов, такие как выдача наличных, смена фракции и т.п. сделаны специально под модификацию. СЕРВЕРНЫЕ МОДЫ:
      Настраиваются под Ваш сервер, и имею богатый функционал. доп. процедуры и функции.  
      Контакты:
      skype: hf-trade
      discord: https://discord.gg/T9YAJDm
       
      Видео:
      В остальном смотрите видео по ссылке:
      *В данный момент, сервер с данным модом работает по адресам:
       
      185.247.140.7:2312
      *Версия R7
      **Для входа необходим мод сервера
      https://steamcommunity.com/sharedfiles/filedetails/?id=173507557
       
      P.S. Обновления платные, если они вносят доп. функционал:
      Для тех кто обновляет мод с предыдущей версии до текущей(пример - R6>R7), стоимость обновления: 15%(от общей стоимости). Для тех кто обновляет мод, с любой версии(но не предыдущей), до текущей, стоимость обновления: 25%(от общей стоимости). P.S.P.S. Весь функционал является БЕТА-ВЕРСИЕЙ!
    • By DrTauren
      На нашем сайте предусмотрена возможность рекламирования вашего игрового сервера/сайта/програмного обеспечения при помощи баннеров и ссылок.
       
      Баннеры под первым сообщением темы ↓
       
      Баннер на главной странице (над чатом) ↓
       
      Ссылки над первым сообщением темы ↓
       
      Ссылка на главной странице (над чатом) ↓
       
       

      Заявку вы можете заполнить в этой же теме, либо написать мне в ЛС.
      Любые сообщения не по теме запрещены.
×
×
  • Create New...