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
Брыскин

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

Recommended Posts

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

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

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

[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;

 

Share this post


Link to post
Share on other sites



Я для  миссий использую 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 , если кто видел . 

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

Edited by Bandit3 (see edit history)

Share this post


Link to post
Share on other sites

Я для миссий использую 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 , если кто видел .

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

держи 

В 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";

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

Share this post


Link to post
Share on other sites

держи 

В 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";

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

Благодарю

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

 

[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";

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

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

Share this post


Link to post
Share on other sites

 

 

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

 

 

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

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

Share this post


Link to post
Share on other sites

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

 

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

Edited by stspartak (see edit history)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

[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;

Так?

Share this post


Link to post
Share on other sites

 

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

Так?

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

 

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

 

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Я для  миссий использую 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 , если кто видел . 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

ZEVMissionMonitor.sqf  и  ZEVMissionStart.sqf

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 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-м игрокам на сервере, и умереть одному из двух. тот, кто умирает, сообщения с чата не видит!!!
       
    • By fedotovyasha
      Хочу немного изменить сообщения перед отправкой клиенту
    • By 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. Данная тема является копией утраченной темы на нашем форуме, восстановлена по просьбам 'трудящихся'. Надеюсь, она вам поможет.
       
    • By 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-скриптинге армы. данный код является лишь примером реализации такой возможности.
    • By TsarStalker
      Сервер запускается, все отлично, но после того как игрок хочет выйти, ждет 10 секунд, и нажимает на "Выход", его выкидывает не в лобби, а показывает серый экран, который лечится только Alt+F4.

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

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
  • 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.