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

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

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

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

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

Убираем сообщения с середины экрана

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

Ещё один маленький гайд.

На этот раз  я расскажу вам как убрать эти вечно мешающие целится сообщение!

Открываем наш файлик(с миссиями например) на стороне сервера  и ищем там что то подобное 

[nil,nil,rTitleText,"Техника в торговых зонах, будет телепортирована через 3 минуты!", "PLAIN",10] call RE;

и делаем так 

 

[nil, nil, rSPAWN, [], { systemChat "Техника в торговых зонах, будет телепортирована через 3 минуты!" }] call RE;

данное действие уберёт сообщение в левый нижний угол экрана !

 

[nil, nil, rSPAWN, [], { taskHint ["Техника Терпит бедтствие! Отследите её что бы поднять Снарягу!", [1,0,0.1,1], 'taskDone'] }] call RE;

 

а это загонит сообщение в верх экрана (по типу как в сейфзонах инфистара)

 

 

 

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

 

[nil, nil, rEXECVM, "my_script.sqf", []] call RE;

 

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


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





Я для  миссий использую remote_messages . а в самых миссиях 

комментирую 

//[nil,nil,rTitleText,"БЛА БЛА БЛА!", "PLAIN",6] call RE;

вызов 

_hint = parseText format["<t align='center' color='#00cc00' shadow='2' shadowColor='#000000' size='1.50'>МИССИЯ</t><br/><t align='center' color='#00cc00' shadow='2' shadowColor='#000000' size='1.00'>____________________________</t><br/><t align='center' color='#ffffff' size='1.25'> БЛА БЛА БЛА / БЛА БЛА БЛА!</t>"];
customRemoteMessage = ['hint', _hint];
publicVariable "customRemoteMessage";

Вывод меседжа в правом верхнем углу ....как на серверах CCG , если кто видел . 

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

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

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


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

Я для миссий использую remote_messages . а в самых миссиях

комментирую

//[nil,nil,rTitleText,"БЛА БЛА БЛА!", "PLAIN",6] call RE;
вызов
_hint = parseText format["<t align='center' color='#00cc00' shadow='2' shadowColor='#000000' size='1.50'>МИССИЯ</t><br/><t align='center' color='#00cc00' shadow='2' shadowColor='#000000' size='1.00'>____________________________</t><br/><t align='center' color='#ffffff' size='1.25'> БЛА БЛА БЛА / БЛА БЛА БЛА!</t>"];
customRemoteMessage = ['hint', _hint];
publicVariable "customRemoteMessage";

Вывод меседжа в правом верхнем углу ....как на серверах CCG , если кто видел .

 

не могу гайд нати.подскажите пожалста.

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


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

не могу гайд нати.подскажите пожалста.

какой гайд . руками все своими делается . 

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


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

какой гайд . руками все своими делается . 

это понятно что своими руками.только разве скрипт подключать не нужно?

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


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

это понятно что своими руками.только разве скрипт подключать не нужно?

держи 

В MPMission  создать файл remote_messages.sqf  , внутри :

 

 

fnc_remote_message = {
	private ["_type", "_message", "_player"];
	_type = _this select 0;
	_message = _this select 1;
	if (count _this > 2) then {
		_player = _this select 2;
		if (_player == player) then {
			switch (_type) do {
				case "globalChat": {
					player globalChat _message;
				};
				case "hint": {
					hint _message;
				};
				case "titleCut": {
					cutText [_message, "PLAIN DOWN", 10];
				};
			};
		};
	} else {
		switch (_type) do {
			case "hint": {
				hint _message;
			};
			case "titleCut": {
				cutText [_message,"Plain Down",10];
			};
		};
	};
};

"customRemoteMessage" addPublicVariableEventHandler {(_this select 1) call fnc_remote_message;}; 

 

 

 

init.sqf , в раздел 

if (!isDedicated) then {
_nil = execVM "ВАШ ПУТЬ\remote_messages.sqf";

теперь в каждой миссии  делаете вызов , пример я писал выше 

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


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

держи 

В MPMission  создать файл remote_messages.sqf  , внутри :

 

 

fnc_remote_message = {
	private ["_type", "_message", "_player"];
	_type = _this select 0;
	_message = _this select 1;
	if (count _this > 2) then {
		_player = _this select 2;
		if (_player == player) then {
			switch (_type) do {
				case "globalChat": {
					player globalChat _message;
				};
				case "hint": {
					hint _message;
				};
				case "titleCut": {
					cutText [_message, "PLAIN DOWN", 10];
				};
			};
		};
	} else {
		switch (_type) do {
			case "hint": {
				hint _message;
			};
			case "titleCut": {
				cutText [_message,"Plain Down",10];
			};
		};
	};
};

"customRemoteMessage" addPublicVariableEventHandler {(_this select 1) call fnc_remote_message;}; 

 

 

 

init.sqf , в раздел 

if (!isDedicated) then {
_nil = execVM "ВАШ ПУТЬ\remote_messages.sqf";

теперь в каждой миссии  делаете вызов , пример я писал выше 

Благодарю

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


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

1. как отправить только в правую часть экрана, проще говоря дебаг монитор и больше что бы ни где не писалось?

2. Как туда же изображение послать?

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


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

 

[nil, nil, rSPAWN, [], { taskHint ["Техника Терпит бедтствие! Отследите её что бы поднять Снарягу!", [1,0,0.1,1], 'taskDone'] }] call RE;   а это загонит сообщение в верх экрана (по типу как в сейфзонах инфистара)

 

 

Неа. Сообщение так же осталось по центру.

 

 

держи 

В MPMission  создать файл remote_messages.sqf  , внутри :

 

 

fnc_remote_message = {
	private ["_type", "_message", "_player"];
	_type = _this select 0;
	_message = _this select 1;
	if (count _this > 2) then {
		_player = _this select 2;
		if (_player == player) then {
			switch (_type) do {
				case "globalChat": {
					player globalChat _message;
				};
				case "hint": {
					hint _message;
				};
				case "titleCut": {
					cutText [_message, "PLAIN DOWN", 10];
				};
			};
		};
	} else {
		switch (_type) do {
			case "hint": {
				hint _message;
			};
			case "titleCut": {
				cutText [_message,"Plain Down",10];
			};
		};
	};
};

"customRemoteMessage" addPublicVariableEventHandler {(_this select 1) call fnc_remote_message;}; 

 

 

 

init.sqf , в раздел 

if (!isDedicated) then {
_nil = execVM "ВАШ ПУТЬ\remote_messages.sqf";

теперь в каждой миссии  делаете вызов , пример я писал выше 

Как здесь настроить время отображения? С тем что выше сообщение отображается на долю секунды.

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


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

 

 

Неа. Сообщение так же осталось по центру.

 

 

Как здесь настроить время отображения? С тем что выше сообщение отображается на долю секунды.

Если у тебя стоит дебаг монитор, то никак. Если только сообщение несколько раз повторить

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


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

[nil, nil, rSPAWN, [], { taskHint ["Техника Терпит бедтствие! Отследите её что бы поднять Снарягу!", [1,0,0.1,1], 'taskDone'] }] call RE;

 

А здесь как увеличить/уменьшить время показа? 

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

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


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

[nil,nil,rTitleText,"Банидиты решили прогуляться, так давайте покажем им куда надо пойти!", "PLAIN",10] call RE;
Это оригинал DZMS. Попробуй приписать значение "PLAIN","X-time sec"

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


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

[nil,nil,rTitleText,"Банидиты решили прогуляться, так давайте покажем им куда надо пойти!", "PLAIN",10] call RE;

Это оригинал DZMS. Попробуй приписать значение "PLAIN","X-time sec"

[nil, nil, rSPAWN, [], { taskHint ["Был замечен отряд бандитов! Остановите их до завершения патрулирования!","PLAIN",10, [1,0,0.1,1], 'taskDone'] }] call RE;

Так?

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


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

 

[nil, nil, rSPAWN, [], { taskHint ["Был замечен отряд бандитов! Остановите их до завершения патрулирования!","PLAIN",10, [1,0,0.1,1], 'taskDone'] }] call RE;

Так?

Или так, или в конце после taskdone, но в [в этом диапазоне]. Пробуйте.

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


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

Для миссий ZEV кто нибудь делал аналогичное?

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


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

 

Или так, или в конце после taskdone, но в [в этом диапазоне]. Пробуйте.

 

 

Ни так ни так не работает. Сообщение вообще не показывается, в RPT ошибок нет.

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


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

Причем здесь 'taskdone'? Это вообще ххинт завершения задачи. А вы даже не объявили ее

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


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

какой-то странный туториал, проще описываемый одной ссылкой:

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

Ну, не все же владеют таком скилом в скриптах как ты.))

Давай песца своего дорабатывай, очень уж затестить охота.

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


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

Ну, не все же владеют таком скилом в скриптах как ты.))

Давай песца своего дорабатывай, очень уж затестить охота.

На этой неделе закрытый альфатест, на который осталось 4 места

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


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

Для миссий ZEV кто нибудь делал аналогичное? 

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


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

Я для  миссий использую remote_messages . а в самых миссиях 

комментирую 

//[nil,nil,rTitleText,"БЛА БЛА БЛА!", "PLAIN",6] call RE;

вызов 

_hint = parseText format["<t align='center' color='#00cc00' shadow='2' shadowColor='#000000' size='1.50'>МИССИЯ</t><br/><t align='center' color='#00cc00' shadow='2' shadowColor='#000000' size='1.00'>____________________________</t><br/><t align='center' color='#ffffff' size='1.25'> БЛА БЛА БЛА / БЛА БЛА БЛА!</t>"];
customRemoteMessage = ['hint', _hint];
publicVariable "customRemoteMessage";

Вывод меседжа в правом верхнем углу ....как на серверах CCG , если кто видел . 

Я не силен в скриптовании, да и не только я. Думаю всем пригодится. Можно поподробнее куда вписывать?

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


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

Я не силен в скриптовании, да и не только я. Думаю всем пригодится. Можно поподробнее куда вписывать?

Вы миссии хотя бы открывали? Там есть текст который пишется от hint. Вот его и заменяем.

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


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

Вы миссии хотя бы открывали? Там есть текст который пишется от hint. Вот его и заменяем.

 В том то все и дело, перерыл всю папку WAI и ZEV но не нашел ни _hint = parseText format ни //[nil,nil,rTitleText,"БЛА БЛА БЛА!", "PLAIN",6] call RE; ни чего подобного (((

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


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

 В том то все и дело, перерыл всю папку WAI и ZEV но не нашел ни _hint = parseText format ни //[nil,nil,rTitleText,"БЛА БЛА БЛА!", "PLAIN",6] call RE; ни чего подобного (((

ZEVMissionMonitor.sqf  и  ZEVMissionStart.sqf

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: 123new
      За основу взята наработка автора скрипта: http://s-platoon.ru/profile/14721-borizzk/
      И немного доработана по своим соображениям.
      Использование мода клиенту игры НЕ ТРЕБУЕТСЯ!!!
       
      И так, установка:
      1. Первым делом нам необходим чистый стандартный сервер DayZ (без модов, поскольку моды могу приводить к неработоспособности частей гайда). Установить его можно по инструкции, например, так:
      2. Добавляем в папку сервера игры мод из архива:
      3. Добавляем в параметры запуска сервера:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      -Filepatching "-servermod=@KillFeed_ServerMod" Если ваш сервер уже имеет серверные моды, просто добавьте папку с модом в список используемых сервером модов.
      ВАЖНО: не добавляйте данный мод в параметр запуска сервера -mod=, иначе это может стать проблемой заходи игроков с параметрами verifysignatures=2; equalmodrequired=1;
      4. В 'config-файле' сервера (там где названием сервера и прочие настройки) добавляем настройки для мода:
      //KillFeed_mod KillFeed_enableSaveKills = 1; // Включение сохранения счетчика убийств по игрокам KillFeed_enableSaveDies = 1; // Включение сохранения счетчика смертей по игрокам KillFeed_enableCustomTimeLog = 1; // Включение записи модом 'Кастомных' логов смертей игроков KillFeed_enableDefaultLog = 1; // Включение записи сервером стандартных логов сервера в scripts.log KillFeed_enableDebugLog = 1; // Включение записи сервером отладочных логов сервера в scripts.log (работает при KillFeed_enableDefaultLog = 1) KillFeed_enableMessages = 1; // Включение отправки сообщений в чат сервера о смертях игроков Пояснения к настройкам, как видите, имеются.
      Напомню, активный профиль сервера обозначается параметром '-profiles={имя папки или путь до папки}'
      Например, при указании:
      -profiles=Instance_1 папка профиля сервера будет выглядеть вот так:
      5. Запускаем сервер, умираем от зомби и радуемся. Сообщения о смертях игроков будут в чате у других игроков (если в настройках игры они не отключены), так и в script.log.

      Где хранятся счетчики убийств и смертей? Ответ:
      Они хранятся в profile сервера игры. Т.е. после 1-го запуска создаются 2 файла (как у клиента игры в документах windows в папку dayz) в файлах с расширениями ".vars.DayZProfile" и ".DayZProfile". При удалении этих файлов счетчики сбросятся!
       
      P.S. Чтобы увидеть сообщения в чате, нужно быть 2-м игрокам на сервере, и умереть одному из двух. тот, кто умирает, сообщения с чата не видит!!!
       
    • Автор: fedotovyasha
      Хочу немного изменить сообщения перед отправкой клиенту
    • Автор: 123new
      Автор скрипта: http://s-platoon.ru/profile/14721-borizzk/
      Все благодарности за этот скрипт непосредственно автору скрипта, не мне!
       
      И так, установка:
      1. Первым делом нам необходим чистый стандартный сервер DayZ (без модов, поскольку моды могу приводить к неработоспособности частей гайда). Установить его можно по инструкции, например, так:
      Замечу сразу, гайд сделан для версии игры 0.63.149525
      2. Заходим в папку 'DTA' и распаковываем с 'PBO-MANAGER' архив 'scripts.pbo', получив папку 'scripts'.
      3. Перемещаем папку 'scripts с' папки 'DTA' в корень папки сервера
      4. Переходим по следующему пути:
      scripts\4_World\Entities\ManBase\PlayerBase.c и открываем файл.
      В самом его начале после кода
      class PlayerBase extends ManBase { добавляем код
      // BY BORIZZ.K, s-platoon.ru (ThX Mizev, NoNameUltima, 123New and DaOne) //MY --- //PLAYER DEATH with MESSAGES START //MY int killscore = 0; // usage p_killer.killscore = p_killer.killscore + 1; // for kills count in EEKilled function. //p_killer must be PlayerBase - use p_killer = PlayerBase.Cast(killer) //See EEKilled function int diescore = 0; // usage Player.diescore = Player.diescore + 1; // for death count in EEKilled function. //Player must be playerbase void Message_PlayerKilled(Object player_obj, Object killer) { //MY --- PlayerBase p_Killer = NULL; // Killer PlayerBase Player = player_obj; // Killed player PlayerIdentity Player_Identity = Player.GetIdentity(); //Killed player Identity string Player_Name = Player_Identity.GetName(); //Killed player name string p_UID = Player_Identity.GetPlainId(); // Killed player UID bool enableSaveKills = true; // enable/disable save kill count to profile/file by Killer UID bool enableSaveDies = true; // enable/disable save death count to profile/file by Player UID if ( GetGame().ServerConfigGetInt("enableSaveKills") == 0 ) //place parameter enableSaveKills = 0; for disable SaveKills to server profile { enableSaveKills = false; } if ( GetGame().ServerConfigGetInt("enableSaveDies") == 0 )//place parameter enableSaveDies = 0; for disable SaveDies to server profile { enableSaveDies = false; } string deathMsg = ""; string deathMsgDist = ""; string deathMsgKillScore = ""; string DebugMessage; Print("::: EEKilled: Debug: Input: killer " + killer.ToString() + " => Class: " + killer.GetType() + ", Player " + Player.ToString() + " => Class: " + Player.GetType()); //DEBUG //Phase #1 if ( killer.IsMan() ) { if ( killer.IsKindOf("SurvivorBase") ) { p_Killer = PlayerBase.Cast(killer); DebugMessage = "killer.IsMan(): killer.IsKindOf('SurvivorBase'): killer " + p_Killer.ToString() + " kill player " + Player.ToString(); //DEBUG } } else { if ( killer.IsItemBase() ) { ItemBase bitem = ItemBase.Cast(killer); p_Killer = PlayerBase.Cast(bitem.GetHierarchyRootPlayer()); DebugMessage = "killer.IsItemBase(): killer " + p_Killer.ToString() + " => " + bitem.ToString() + " kill player " + Player.ToString(); //DEBUG } else { DebugMessage = "killer " + killer.ToString() + " kill player " + Player.ToString(); //DEBUG } } Print("::: EEKilled Debug: " + DebugMessage); //DEBUG //Phase #2 if (p_Killer) { if (Player == p_Killer) { deathMsg = Player_Name + " committed suicide."; } else { PlayerIdentity Killer_Identity = p_Killer.GetIdentity(); string killer_name = Killer_Identity.GetName(); string k_UID = Killer_Identity.GetPlainId(); //Get killer UID vector position_killer = p_Killer.GetPosition(); vector position_player = Player.GetPosition(); int dist = vector.Distance(position_player, position_killer); EntityAI itemInHands = p_Killer.GetHumanInventory().GetEntityInHands(); if (enableSaveKills) { string strkillscore; g_Game.GetProfileString("killscore"+k_UID,strkillscore); if (strkillscore) { Print("::: EEKilled Debug: LoadKills: Killer: " + killer_name + ", loaded killscore: " + strkillscore); //DEBUG p_Killer.killscore = strkillscore.ToInt(); } } p_Killer.killscore = p_Killer.killscore + 1; //You must declare a variable: int KillScore = 0; in PlayerBase class if (enableSaveKills) { g_Game.SetProfileString("killscore"+k_UID,p_Killer.killscore.ToString()); g_Game.SaveProfile(); Print("::: EEKilled Debug: SaveKills: Killer: " + killer_name + ", killscore: " + diescore.ToString()); //DEBUG } if ( itemInHands.IsItemBase() ) { ItemBase item = ItemBase.Cast(itemInHands); string className = item.GetType(); deathMsg = killer_name + " kill: " + Player_Name; deathMsgDist = " from a distance: " + dist.ToString() + "m by " + className; deathMsgKillScore = killer_name + " kills: " + p_Killer.killscore.ToString(); } else { deathMsg = killer_name + " kill: " + Player_Name; deathMsgDist = " from a distance: " + dist.ToString() + "m."; deathMsgKillScore = killer_name + " kills: " + p_Killer.killscore.ToString(); } } } else { if ( killer.IsKindOf("AnimalBase") ) { deathMsg = Player_Name + " killed by animal."; } else { if ( killer.IsKindOf("ZombieBase") ) { deathMsg = Player_Name + " killed by zombie."; } else { deathMsg = Player_Name + " died for an unknown reason."; } } } //Phase #3 GetGame().ChatPlayer(5, deathMsg); Print("::: EEKilled Debug: killer: " + killer.ToString () + " ::: " + deathMsg); //DEBUG if (deathMsgDist) { GetGame().ChatPlayer(5, deathMsgDist); Print("::: EEKilled Debug: killer: " + killer.ToString () + " ::: " + deathMsgDist); //DEBUG } if (deathMsgKillScore) { GetGame().ChatPlayer(5, deathMsgKillScore); Print("::: EEKilled Debug: killer: " + killer.ToString () + " ::: " + deathMsgKillScore); //DEBUG } if (enableSaveDies) { string strdiescore; g_Game.GetProfileString("diescore"+p_UID,strdiescore); if (strdiescore) { Print("::: EEKilled Debug: Load Die's: Player: " + Player_Name + ", loaded diescore: " + strdiescore); //DEBUG Player.diescore = strdiescore.ToInt(); } } Player.diescore = Player.diescore + 1; if (enableSaveDies) { g_Game.SetProfileString("diescore"+p_UID,Player.diescore.ToString()); g_Game.SaveProfile(); Print("::: EEKilled Debug: SaveDeath: Player: " + Player_Name + ", diescore: " + diescore.ToString()); //DEBUG } //MY --- if( GetHumanInventory().GetEntityInHands() ) { if( CanDropEntity(player_obj) ) { if( !IsRestrained() ) { GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(ServerDropEntity,1000,false,( GetHumanInventory().GetEntityInHands())); } } } }  затем находим функцию
      override void EEKilled( Object killer ) { и перед строкой
      Print("EEKilled, you have died"); добавляем
      Message_PlayerKilled(this, killer); 4. В параметры запуска сервера добавляем:
      -FilePatching 5. В 'config-файл' сервера (тот файл где название сервера) добавляем:
      enableSaveKills = 1; // Включение сохранения счетчика убийств по игрокам enableSaveDies = 1; // Включение сохранения счетчика смертей по игрокам где 1 - включено, 0 - выключено
       
      6. Сохраняем, запускаем сервер и радуемся. Сообщения о смертях игроков будут у вас как в чате, так и в script.log.

      Где хранятся счетчики убийств и смертей? Ответ:
      Они хранятся в profile сервера игры. Т.е. после 1-го запуска создаются 2 файла (как у клиента игры в документах windows в папку dayz) в файлах с расширениями ".vars.DayZProfile" и ".DayZProfile". При удалении этих файлов счетчики сбросятся!
       
      ВАЖНО:
      Скажу сразу, добавить систему кастомного логирования вместо базового можно, но добавлять ее вам прийдется до иницилизации данного файла playerbase.c, поскольку уже в  playerbase.c вы будете вызывать функцию, которая должна быть заранее определена и известна серверу!
      Добавлю, что сейчас масса модов, которые в своем составе имеют данный класс. Они также могут переписывать его, там самым приводя данный гайд в неработоспособность. Самый лучший вариант проверки гайда - на чистом сервере игры без модов.
       
      P.S. Данная тема является копией утраченной темы на нашем форуме, восстановлена по просьбам 'трудящихся'. Надеюсь, она вам поможет.
       
    • Автор: 123new
      В данной теме напишу простенький гайд о том, как сделать самому сообщения о смертях на своем собственном сервере 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. Получим вот такое содержимое:
      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 на скриншоте и по тексту гайда ниже)
      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-скриптинге армы. данный код является лишь примером реализации такой возможности.
    • Автор: TsarStalker
      Сервер запускается, все отлично, но после того как игрок хочет выйти, ждет 10 секунд, и нажимает на "Выход", его выкидывает не в лобби, а показывает серый экран, который лечится только Alt+F4.

      Прикладываю RPT лог.

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

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

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

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