sodoff-mmo/src/CommandHandlers/PublicMessageHandlers.cs
Robert Paciorek 82e83722da fix client stay in room and add Room.Send
- fix client stay in room:
  - replace Client.JoinRoom and Client.LeaveRoom by Client.SetRoom
  - do not call Client.LeaveRoom / Client.SetRoom(null) for SheduleDisconnect cases
    (only quietly remove client from room and the rest do in disconnect realisation)
- add Room.Send for send message to all clients in room
  - replace Room.Client sending loops by calls Room.Send
2024-03-24 21:29:57 +00:00

30 lines
1022 B
C#

using sodoffmmo.Attributes;
using sodoffmmo.Core;
using sodoffmmo.Data;
namespace sodoffmmo.CommandHandlers;
[ExtensionCommandHandler("PM")]
class RacingPMHandler : ICommandHandler
{
// rec: {"a":13,"c":1,"p":{"c":"PM","p":{"M":"DT:c4647597-a72a-4f34-973c-5a10218d9a64:1000","en":"we"},"r":-1}}
public void Handle(Client client, NetworkObject receivedObject) {
// send: {"a":13,"c":1,"p":{"c":"PM","p":{"arr":[{"M":["DT:f05fc387-7358-4bff-be04-7c316f0a8de8:1000"],"MID":3529441}]}}}
NetworkObject cmd = new();
NetworkObject p = new();
NetworkArray arr = new();
NetworkObject data = new();
data.Add("M", new string[] {
receivedObject.Get<NetworkObject>("p").Get<string>("M")
});
arr.Add(data);
p.Add("arr", arr);
p.Add("MID", client.ClientID);
cmd.Add("c", "PM");
cmd.Add("p", p);
NetworkPacket packet = NetworkObject.WrapObject(1, 13, cmd).Serialize();
client.Room.Send(packet);
}
}