Тупо инструкция по работе с RPC на примере передачи 1 текстового параметра:
1. создаем в 3_Game идентификатор своего RPC, например так. Указывать или нет id смотрите сами, работает и без указания. Если указываете - надо смотреть чтобы не пересекалось с чем-то еще. Разумеется на клиенте и сервере быть должно.
enum MyScript_ERPCs: ERPCs
{
MyScript_ERPCs_1,
MyScript_ERPCs_2 = 554823,
}
2. В 4_World создаем экшен отправки, например, при коннекте к серверу игроку значения:
override void OnConnect()
{
super.OnConnect();
private Param1< string > v_Param = new Param1< string >("MyServer");
GetGame().RPCSingleParam(this, MyScript_ERPCs.MyScript_ERPCs_1, v_Param, true, this.GetIdentity());
}
где передаем лишь 1 параметр - текстовую переменную с текстом 'MyServer' соответственно.
Обращаю внимание на наш id, заданный в виде переменной в комманде. А также на то, что делается это в классе персонажа, т.е. базовом классе игрового персонажа, управляемого игроком.
Этот код достаточно иметь чисто на сервере.
3. В 4_World создаем анализ и чтение принятого значения от сервера в функции, которая исполняется каждый раз, когда RPC-сигналы от сервера приходят в данный класс:
override void OnRPC(PlayerIdentity sender, int rpc_type, ParamsReadContext ctx)
{
super.OnRPC(sender, rpc_type, ctx);
if (rpc_type == MyScript_ERPCs.MyScript_ERPCs_1)
{
Param1< string > v_ctx;
ctx.Read(v_ctx);
private string MyValue = v_ctx.param1;
/// Тут делаем например что-то своем или вызываем свою функцию на клиенте игры
}
}
где соответственно сверяем id пакета сообщения, что оно принадлежит нашему отправленному, потом читаем (формат же отправленных данных знаем сами), ну и заносим в переменную, например, MyValue. А далее уже делаем что вам надо, хоть свой код, хоть вызываем функцию. Это исполняется лишь на клиенте игры уже, и, соответственно, достаточно только там (но хуже не будет если это в клиентском моде будет, серверу этот код будет не нужен и он его просто не вызовет сам).
Обращаю внимание на наш id тоже. А также на то, что делается это также в классе персонажа, т.е. базовом классе игрового персонажа, управляемого игроком.
Как видим, никакой велосипед в виде CF модов не надо изобретать. Все пишется легко своими ручками.