Автор скрипта сообщения всем пользователям: Мизев
Код функции отправки сообщения всем игрокам
вставляется в OnInit () в init.c или в missionserver.c из scripts.pbo
Становится глобальной серверной функцией и можно использовать где угодно на сервере (вроде бы)
Что делает? Отправляет сообщение переданное в функцию всем игрокам на сервере
Использование: MessageAllPlayers ("ТЕКСТ");
void MessageAllPlayers(string message)
{
ref array<Man> players = new array<Man>;
GetGame().GetPlayers( players );
if ( players.Count() > 0 )
{
for ( int i = 0; i < players.Count(); i++ )
{
PlayerBase player;
Class.CastTo(player, players.Get(i));
Param1<string> m_MessageParam = new Param1<string>(message);
GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_MessageParam, true, player.GetIdentity());
}
}
}
Код сообщения всем игрокам на сервере о входе НОВОГО игрока
вставляется в код создания персонажа, обработки его подключения или экипировки при входе - где Вам больше нравится
но после того как персонаж создастся и будет помещен в переменную к которой можно обратиться
В данном примере m_player
исполняется в контексте конкретного персонажа
Например init.c
override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName)
{
//...... //тут еще разный код
playerEnt = GetGame().CreatePlayer(identity, characterName, pos, 0, "NONE");//Creates random player
Class.CastTo(m_player, playerEnt);
GetGame().SelectPlayer(identity, m_player);
//inform all players about new player connected
ref array<Man> players = new array<Man>; //define array for all players
GetGame().GetPlayers( players ); //put all players in to array players
if ( players.Count() > 0 ) // if players count > 0
{
string Message = "NEW Player " + m_player.GetIdentity().GetName() + " connected!"; //message text
MessageAllPlayers(Message); // call MessageAllPlayers function with Message param
}
return m_player;
}