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

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
123new

[DayZ 0.60, 0.61, 0.62] Сообщения о смертях на сервере DayZ Standalone

Recommended Posts

В данной теме напишу простенький гайд о том, как сделать самому сообщения о смертях на своем собственном сервере DayZ.

 

Гайд пригодится тем, кто сам делает свою сборку сервера, либо по каким-то причинам пользуется не моей сборкой сервера (где это уже сделано), а чьей-либо еще. Обращаю ваше внимание на тот факт, что часть файлов, описанных в гайде, у вас могут уже быть вынесены в другое место или названы несколько иначе (это зависит от сборки сервера, которую вы используете, например, в сборке dankdayz вся mpmissions вынесена в отдельный файл в addons сервера), гайд основывается на чистых серверных файлах игры и отталкивается от них.
Гайд сделан для версий игры с серверной частью 0.60-0.62, но может быть совместим и с другими версиями игры, если файлы серверной части игры не поменяли своего текущего месторасположения и содержания. Гайд составлен по версии серверных файлов игры 0.62 чистой "девственной" и не правленой никем версии игры.

Напоминаю заранее, в моих серверных файлах версий 0.60, 0.61 и 0.62 из моих гайдов на данном форуме это уже сделано и делать это не нужно!!!

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

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

2. Pbo Manager http://www.armaholic.com/page.php?id=16369

3. Ваши серверные файлы игры

 

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

1. Первое, что нам понадобится - достать чистые и оригинальные файлы сервера, не правленые никем, которые мы и будем изменять. Для этого открываем в серверной части игры папку "addons", находим там файл с именем "server_data.pbo", распаковываем его или открываем с помощью Pbo Manager. Получим вот такое содержимое:

 

 


acefd133cddbb6e74e8b4ad20d6d60f3.png
 

 

2. Далее открываем папку "scripts", затем "events", находим там файл "event_playerKilled.sqf" и копируем его куда-нибудь.

3. Открываем вашу "Mpmissions", далее папку с активной "MpMissions", и открываем файл "init.sqf" в Notepad++.
4. Находим в файле строки с "call compile preprocessFileLineNumbers" и строку "simulWeatherSync;"
5. Вставляем после всех "call compile preprocessFileLineNumbers" (или, если нету, после "simulWeatherSync;") следующее:

call compile preprocessFileLineNumbers "scripts\compiles.sqf";

6. Создаем в "mpmissions", если отсутствует, папку "scripts", а в ней файл с именем "compiles" в формате ".SQF". Если такой файл у вас имеется, рекоммендую имя файла "compiles" изменить на любое другое. В таком случае, его потребуется изменить и в ссылке, что мы вставляли в пункте выше, т.е. вот так:

call compile preprocessFileLineNumbers "scripts\{имя вашего файла}.sqf";

Открываем этот файл в Notepad++.
Если в файле есть данные, и вы решили не создавать новый файл, то новые строки вы будете добавлять в конце файла!

7. Добавляем в файл следующую строку:

event_playerKilled = 	compile preprocessFileLineNumbers "scripts\events\event_playerKilled.sqf";

Если такая или похожая строка там уже имелась с переменной "event_playerKilled" то вам необходимо ее удалить из файла.
8. Создаем папку "events" и помещаем в нее ранее скопированный "event_playerKilled.sqf". Если файл с таким именем у вас уже был по какой-либо причине, переименуйте его.

9. Открываем скопированный файл в Notepad++ и видим содержимое файла примерно такого содержания (пример от DayZ 0.62 на скриншоте и по тексту гайда ниже)

 

 


56999fc562db22947265dae2a74673ea.png
 

 

10. После строк:

private["_agent","_uid"];
_agent = _this select 0;
_killer = _this select 1;
_uid = getClientUID (owner _agent);

добавляем в этом файле строки

_textToAll   = "";
if (isNull _killer) then 
{
	_textToAll   = format["%1 kill yourself",(name _agent)];
}
else
{
	if (isNull _agent) then 
	{
		_textToAll   = format["Disconnected %1 kill yourself",(name _agent)];
	} else 
	{
		if (_agent == _killer) then 
		{
			_textToAll   = format["%1 kill yourself",(name _agent)];
		}
		else
		{
			if (_killer isKindOf "ZombieBase") then 
			{
				_textToAll   = format["%1 killed zombie",(name _agent)];
			} else
			{
				_kplayers = (_killer getVariable ["kplayers",0]);	
				_killer setVariable ["kplayers",(_kplayers + 1)];		
				_name_gun_killer = displayName (itemInHands _killer);
				if (_name_gun_killer == "") then { _name_gun_killer = "punch(hands)";};
				_dist_kill = ((position _killer) distance _agent);
				_textToAll   = format["%1 kill player %2 with [%3] form distance %4",(name _killer),(name _agent),_name_gun_killer,_dist_kill];
			};
		};
	};
}; 
if (DZ_Enable_Kill_Messages) then
{
	{
		[_x, _textToAll, "colorStatusChannel"] call fnc_playerMessage;
	} foreach players;
};

И сохраняем файл.

11. И последний штрих. Открываем вашу "Mpmissions", далее папку с активной "MpMissions", и открываем файл "init.sqf" в Notepad++. Добавляем в любом месте файла (лучше всего в начале или после после "simulWeatherSync;") следующее:

DZ_Enable_Kill_Messages = true; // Сообщения о смерти игроков в чат (true - включить, false - выключить)

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

 

Сам код сообщений из п. 10 гайда, логику их составления и обработки вы можете менять сами как вам угодно при наличии должных знаний в sqf-скриптинге армы. данный код является лишь примером реализации такой возможности.

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites







123new  а на 0.63 не пробовал ещё замутить???в 63 server_data.pbo другой немнога( что если его перекинуть с 0.62?

Share this post


Link to post
Share on other sites

mastaZz не прокатит перекидывание по одной простой причине - в 0.63 полностю убран SQF-язык, и заменен ENSCRIPT-языком чистым. Т.е. это где-то есть, но совсем в другом виде и в другом месте. Где? Где-то в scripts.pbo в dta. А вот где сказать сложно, у меня не было времени до таких сложностей доходить, пока по внутренним делам своего проекта вожусь.

Share this post


Link to post
Share on other sites

123new подскажи почему у меня вот так ?

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Trueтень733
      500 метров и начинается туман ,есть у кого настройки тумана ???Спасибо)))

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

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By Trueтень733
      Ищем человека кто сможет сделать Автоивент,либо подскажите у кого есть какие автоивенты для DayZ,кто занимается именно созданием ивентов,Спасибо!
    • By TokZe
      Добрый вечер, знающие подскажите как реализовать продажу через сайт, без очереди и вип!
      также как вывести топ игроков на сайт
    • By CubeIn
      Есть ли у кого ни будь шаблон или инструкция как создать свой шеврон?
      Нашел видео от Фидова, но ссылка на шаблон не действительна

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By aimlock
      Всем привет, я заметил что некоторые люди не до конца понимают что такое регистрация анимаций для предметов в руках, как ее правильно делать и для чего она нужна?

      Для чего это нужно? Допустим вы добавляете предмет в игру и не привязываете его ни к какому объекту (создаете полностью с нуля, задаете свойства) и сталкиваетесь с тем что ваш объект без привязки не имеет должной анимации. А имеет стандартную анимацию банки консервы (в том числе и для предметов которые должны держаться в 2 руках), ну или вовсе предмет находиться в ногах у персонажа (примеры прикрепил скриншоты). Именно для этого и нужно привязывать анимацию положения объекта в руках через скрипт.

      На момент написания этого поста я знаю 3 вида регистрации анимаций для предметов в руках:
      1. PlayerBase
      2. JMAnimRegister
      3. ModItemRegisterCallbacks

      До создания последних 2 способов все использовали PlayerBase :
       
      modded class PlayerBase { override void Init() { DayzPlayerItemBehaviorCfg fireArmsItemBehaviour = new DayzPlayerItemBehaviorCfg; fireArmsItemBehaviour.SetFirearms(); GetDayZPlayerType().AddItemInHandsProfileIK("MyModdedWeapon", "dz/anims/workspaces/player/player_main/weapons/player_main_cz527.asi", fireArmsItemBehaviour, "dz/anims/anm/player/ik/weapons/cz527.anm", "dz/anims/anm/player/reloads/cz527/w_CZ527_states.anm"); super.Init(); } } Но у этого способа есть очень большой минус, это очень нестабильная штука. Нередко крашила сервера и имела ограничения на кол-во регистрации анимаций.
      С такими большими минусами, мододеллы начали искать решения как можно сделать это более стабильно и оптимизированно. И такой способ нашли.

      DayZPlayerTypeRegisterItems(DayZPlayerType Type) вот наше спасение, но тут тоже не все так просто, полумолчание это функция внутри класса, а для поставленной задачи (иметь возможность безопасно  и стабильно вносить новую регистрацию предметов) это не подходит. Тогда разработчики мода CF создали кастомный класс с использованием схожих функций для регистрации анимаций положений предметов в руках. Этим классом является JMAnimRegister. Стабильная и оптимизированная функция, которой очень просто пользоваться. Разумеется использовать вы сможете этот класс только при наличии в своей сборке CF . Как им пользоваться?
       
      modded class JMAnimRegister { override void OnRegisterFireArms( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) { super.OnRegisterFireArms( pType, pBehavior ); pType..AddItemInHandsProfileIK("MyModdedWeapon", "dz/anims/workspaces/player/player_main/weapons/player_main_cz527.asi", pBehavior, "dz/anims/anm/player/ik/weapons/cz527.anm", "dz/anims/anm/player/reloads/cz527/w_CZ527_states.anm"); } }; Как самый простой пример. И так можно задавать любому количеству предметов положение в руках :
       
      modded class JMAnimRegister { override void OnRegisterFireArms( DayZPlayerType pType, DayzPlayerItemBehaviorCfg pBehavior ) { super.OnRegisterFireArms( pType, pBehavior ); pType..AddItemInHandsProfileIK("MyModdedWeapon", "dz/anims/workspaces/player/player_main/weapons/player_main_cz527.asi", pBehavior, "dz/anims/anm/player/ik/weapons/cz527.anm", "dz/anims/anm/player/reloads/cz527/w_CZ527_states.anm"); pType..AddItemInHandsProfileIK("MyModdedWeapon2", "dz/anims/workspaces/player/player_main/weapons/player_main_cz527.asi", pBehavior, "dz/anims/anm/player/ik/weapons/cz527.anm", "dz/anims/anm/player/reloads/cz527/w_CZ527_states.anm"); } }; Прошу обратить внимание, что мы используем modded, мы модифицируем уже существующий класс внутри
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

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

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

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.