В данной теме мы с вами научимся создавать простой скрипт, который позволит выводить в чат объявления о присоединении и отсоединении игроков, а также логировать их данные.
Нам понадобится:
1. Сервер DayZ 1.0, сделанный по одному из гайдов:
2. Notepad++
3. Немножечко трезвого ума
Приступим:
1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c
2. В самом начале файла добавляем:
#include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\ConnectDisconnectMessagesInChat.c"
Обратите внимание, имя папки с активной mpmissions сервера у вас может отличаться от стандартного названия dayzOffline.chernarusplus - в таком случае в ссылке выше имя этой папки также надо заменить (это актуально в основном для серверов аренды)
3. Помещаем в папку файлConnectDisconnectMessagesInChat.cЛибо создаем вручную этот файл с именем "
"ConnectDisconnectMessagesInChat.c" и заполняем его следующим текстом:
modded class CustomMission
{
void SendGlobalChatMessage(string message)
{
private array<Man> players = new array<Man>;
GetGame().GetPlayers( players );
int numbOfplayers = players.Count();
if( numbOfplayers > 0 )
{
foreach(Man player: players)
{
SendPersonalMessage(message, player);
}
//GetGame().ChatPlayer(message);
}
}
void SendPersonalMessage(string message, Man 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());
}
}
override void InvokeOnDisconnect( PlayerBase player )
{
private PlayerIdentity identity = NULL;
identity = player.GetIdentity();
if (player && identity)
{
private string Name_P = identity.GetName();
private string UID_P = identity.GetPlainId();
private string message = "[Информация] Игрок " + Name_P + " отключился от сервера.";
private string log_message = "[Disconnect] Player " + Name_P + " with Steam64ID: " + UID_P + " disconnected from server.";
//GetGame().ChatPlayer(message);
SendGlobalChatMessage(message);
Print(log_message);
}
super.InvokeOnDisconnect( player );
}
override void InvokeOnConnect(PlayerBase player, PlayerIdentity identity)
{
super.InvokeOnConnect(player, identity);
private string Name_P = identity.GetName();
private string UID_P = identity.GetPlainId();
private string message = "[Информация] Игрок " + Name_P + " Зашёл на сервер.";
private string log_message = "[Connect] Player " + Name_P + " with Steam64ID: " + UID_P + "connected to server.";
//GetGame().ChatPlayer(message);
SendGlobalChatMessage(message);
Print(log_message);
}
}
4. Настраиваем текст как нам нужно. Т.е. в строках для чата
private string message = "[Информация] Игрок " + Name_P + " отключился от сервера.";
и
private string message = "[Информация] Игрок " + Name_P + " Зашёл на сервер.";
а также для логов
private string log_message = "[Disconnect] Player " + Name_P + " with Steam64ID: " + UID_P + " disconnected from server.";
и
private string log_message = "[Connect] Player " + Name_P + " with Steam64ID: " + UID_P + "connected to server.";
P.S. Если сообщения вам не видны, включите их видимость в настройках вашего клиента игры для себя!