123new

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

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

1 час назад, Morrison сказал:

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

 

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

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


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


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

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

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
В 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, теперь вообще не понимаю как это сделать...

Изменено пользователем 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

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
13 часа назад, polpa сказал:

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, paranoyk сказал:

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
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

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


Ссылка на сообщение
Поделиться на других сайтах
12 часа назад, Kaboom сказал:

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

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

 

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

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

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

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


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

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

 

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

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

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


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

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

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

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

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


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

Войти

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


Войти сейчас

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

    • Автор: 123new
      Нам понадобится:
      1. Сервер DayZ Standalone (см. тему вот эту)
      2. Notepad++: бесплатно на оф. сайте
      3. Немного времени и настойчивости (обычно бывает в комплекте и так)
       
      И так, начинаем:
      1. Открываем блокнотом mpmissions\dayzOffline.chernarusplus\init.c
      P.S. Имя папки dayzOffline.chernarusplus у вас может отличаться, будьте внимательны
      2. В начале файла добавляем:
      static int time_repeat_info_players = 10; //in seconds static string file_name_info_players = "$profile:PlayersLogFile.txt"; static void WriteFile(string file_name, string text) { private FileHandle fhandle; if ( !FileExist(file_name) ) { fhandle = OpenFile(file_name, FileMode.WRITE); } else { fhandle = OpenFile(file_name, FileMode.APPEND); } if ( fhandle == 0 ) { Print("[#Запись_в_файл]: Не удалось открыть файл для записи: " + file_name); Print("[#Запись_в_файл]: [Запись]: " + text); return; } FPrintln(fhandle, text); CloseFile(fhandle); } static void WritePlayersInfo() { array<Man> players = new array<Man>; Man player; Man player_test; GetGame().GetPlayers( players ); if (players.Count() > 0) { if ( FileExist(file_name_info_players) ) { DeleteFile(file_name_info_players); } for ( int i = 0; i < players.Count(); ++i ) { player_test = players.Get(i); if( player_test ) { PlayerIdentity p_identity = player_test.GetIdentity(); private string coord_pl = player_test.GetPosition().ToString(); private string Name_P = p_identity.GetName(); private string UID_P = p_identity.GetPlainId(); WriteFile(file_name_info_players, "User name: " + Name_P + " UID: " + UID_P + " Coords: " + coord_pl); } } } else { if ( FileExist(file_name_info_players) ) { DeleteFile(file_name_info_players); } } } Где 'PlayersLogFile.txt' меняем на нужное вам имя файла, а в 'time_repeat_info_players' настраиваем время повтора проверки списка игроков для перезаписи файла
      3. Находим в файле блок 'void main()' и в его конце перед закрывающей '}', поумолчанию это строка
      weather.SetWindFunctionParams(0.1, 0.3, 50); добавляем ниже строку:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(WritePlayersInfo, (time_repeat_info_players * 1000), true); 4. Готово, если не допустили ошибок, при наличии хотя бы 1 игрока на сервере ваш файл с данными по игрокам будет присутствовать и заполняться информацией, а в случае их отсутствия удаляться.
    • Автор: NoNameUltima
      Автор: NoNameUltima
      v. 0.1.7
      Стоимость: 2500
       
      Мод предоставляется в двух частях:
      Клиентский мод(для игроков). Ключи и подписи, присутствуют(При необходимости изменения содержимого - ключ и подписи можно переделать). Серверный мод(только для сервера). *Моды связанны между собой.
       
      Что присутствует:
       
      Дебаг монитор *Есть настройка в конфигурации - отображать, или нет монитор при заходе на сервер.
      **Кнопка вкл\выкл настраивается в конфигурации
      За убийство зомби, повышается счетчик убийств зомби. За убийство зомби, начисляются наличные(кол-во настраивается в конфигурации). При смерти игрока, наличные остаются в трупе.(Забрать можно). За убийство игрока, повышается счетчик убийств людей. Оповещение о проверке мода. Оповещение о завершении проверки мода. Метки на карте с указанием торговых зон. Стартовое приветствие игроков. ПНВ работающий от батарейки. Панель игрока Зараженные зоны. Стартовый инвентарь для игроков(по UID'ам, и общий). Стартовые позиции для игроков(по UID'ам, и случайные для тех кого нет в списке). Статичные постройки на карте(загрузка из класса). Создание коробок с содержимым. Команды чата:  
      Доп. статичные функции:  
      skype: hf-trade
       
      P.S. Обновления платные(для тех кто приобретал мод ранее: 25% от общей стоимости, до актуальной версии).
      P.S.P.S. Весь функционал является БЕТА-ВЕРСИЕЙ!
    • Автор: BorizzK
      Обсуждаем тут
       
      Список того, на что наткнулся в процессе переноса своих серверных файлов на экспу с целью подготовиться заранее
       
      1. Апкастинг - больше не требуется
      static void MoveTo(PlayerBase Player, vector finishPos) { EntityAI PlayerEntity = EntityAI.Cast(Player); Движок сервера теперь ругается
      No need to use 'Cast' for up-casting
       
      Теперь он сам апкастит
      Молодцы, чо
       
      2. Переделана система управления питанием персонажа
      было
      player.GetStatStomachVolume().Set(0); теперь введен новый класс PlayerStomach (файл PlayerStomach.c)
      и в классе OlayerBase обьявлена ссылка на него
      ref PlayerStomach m_PlayerStomach; ну и как бы наполняем его ВООБЩЕ на стороне сервера теперь так

      в классе PlayerBase
      m_PlayerStomach.m_StomachVolume = значение; за его пределами применительно к игроку
      player.m_PlayerStomach.m_StomachVolume = значение; более подробно с PlayerStomach не разбирался пока
       
      Навскидку - формируется массив классов еды и эта еда инсертится по принципу как агент-заболевание персонажу
      Бегло глянул - много тонкостей - нужно разбираться
       
    • Автор: NoNameUltima
      Еще одна тема, по которой возникают вопросы - как залить свой мод в steam
      Видео пару минут, надеюсь все понятно
       
    • Автор: 123new
      Собственно, в шапке темы написано все. Давайте в этой теме обсуждать вопрос создания 'нормальной' (привычной для всех, в том числе и для редактирования) базы данных персонажей сервера. Возможно, даже с возможностью мультисерверной работы (что крайне лишним не было бы).