Чисто как пример, для тех кто 'шарит немного'
1. 3_Game\Enums - создаем свой класс, например ERPCs.c с следующим содержимым:
enum My_Custom_RPC: ERPCs
{
My_Custom_RPC_1,
My_Custom_RPC_2,
My_Custom_RPC_3,
}
Где My_Custom_RPC нашек кастомное имя своего класса для комманд вызова клиент-сервер и сервер-клиент, а My_Custom_RPC_1, My_Custom_RPC_2,My_Custom_RPC_3 соответственно id самих вызовов, которые игра сама заполнит как посчитает корректным
2. Моддим класс игрока 4_World\Entities\ManBase\PlayerBase.c на тему обработки вызова:
modded class PlayerBase
{
// Выполняется после PRC процедуры на клиенте
override void OnRPC(PlayerIdentity sender, int rpc_type, ParamsReadContext ctx)
{
super.OnRPC(sender, rpc_type, ctx); // выполняем родной код, чтобы не сломать ничего
if (rpc_type == My_Custom_RPC.My_Custom_RPC_1) // сверка id пакета сообщения
{
Param1<string> v_ctx_PlayerConnected; // создаем переменную для проверки
ctx.Read(v_ctx_PlayerConnected); //считывание значения, пересланного от сервера
private string ReadedParam1_PlayerConnected = v_ctx_PlayerConnected.param1; //запись в переменную значения, пересланного от сервера
if(ReadedParam1_PlayerConnected == "true") // проверка записанного значения
{
// выполняем свой код
}
}
}
void MyCommand() // создаем свою функцию, например, для отправки комманды на клиент
{
private PlayerIdentity v_PlayerIdentity = this.GetIdentity(); // получаем идентификатор игрока
if (v_PlayerIdentity) // проверяем, еть ли идентификатор у игрока (вдруг труп уже или отключен)
{
private string control_value = "true"; // формируем переменную для отправки игроку
private Param1< string > v_Param = new Param1< string >(control_value ); // записываем переменную для отправки игроку
GetGame().RPCSingleParam(this, My_Custom_RPC.My_Custom_RPC_1, v_Param, true, v_PlayerIdentity); // отправляем переменную игроку
}
}
override void OnConnect() // чисто серверная функция
{
super.OnConnect();
MyCommand(); // вызываем свою комманду на сервере
}
}
пометки написал. OnConnect выполняется чисто на стороне сервера, на клиенте оно естественно будет чисто просто, чтоб было. Вместо этого можете делать свой вызов из своего скрипта, например, газ зоны
MyCommand - созданная для примера функция, отправляющая от сервера игроку комманду и пересылающая 1 текстовый параметр для примера на клиент игры
OnRPC - функция, обрабатывающая передаваемые значения от сервера на стороне клиента игры, как пример с получаем комманды и проверкой значения.