Ejemplo n.º 1
0
        private void OnReceiveEvent(EventPacket packet, NetPeer peer)
        {
            if (!Servers.TryGetValue(peer, out NPServer server))
            {
                return;
            }

            NetDataReader data = new NetDataReader(packet.Data);

            switch ((EventType)packet.Type)
            {
            case EventType.PlayerJoined:
            {
                string userId    = data.GetString();
                string nickname  = data.GetString();
                var    newPlayer = new NPPlayer(server, userId, nickname);

                if (server.PlayersDictionary.ContainsKey(userId))
                {
                    break;
                }

                server.PlayersDictionary.Add(userId, newPlayer);

                foreach (var handler in DedicatedAddonHandlers.Values)
                {
                    handler.InvokePlayerJoined(new PlayerJoinedEvent(newPlayer), server);
                }

                NetDataWriter writer = new NetDataWriter();
                writer.Put(userId);
                PacketProcessor.Send <EventPacket>(peer, new EventPacket()
                    {
                        Type = (byte)EventType.PlayerJoined,
                        Data = writer.Data
                    }, DeliveryMethod.ReliableOrdered);
            }
            break;

            case EventType.PlayerLeft:
            {
                string userId = data.GetString();

                if (!server.PlayersDictionary.TryGetValue(userId, out NPPlayer plr))
                {
                    break;
                }

                foreach (var handler in DedicatedAddonHandlers.Values)
                {
                    handler.InvokePlayerLeft(new PlayerLeftEvent(plr), server);
                }

                server.PlayersDictionary.Remove(userId);
            }
            break;

            case EventType.PlayerLocalReport:
            {
                string userId       = data.GetString();
                string targetUserId = data.GetString();
                string reason       = data.GetString();

                if (!server.PlayersDictionary.TryGetValue(userId, out NPPlayer plr))
                {
                    break;
                }

                if (!server.PlayersDictionary.TryGetValue(targetUserId, out NPPlayer target))
                {
                    break;
                }

                foreach (var handler in DedicatedAddonHandlers.Values)
                {
                    handler.InvokePlayerLocalReport(new PlayerLocalReportEvent(plr, target, reason), server);
                }
            }
            break;

            case EventType.PreAuth:
            {
                string userid  = data.GetString();
                string ip      = data.GetString();
                string country = data.GetString();
                byte   flags   = data.GetByte();
                foreach (var handler in DedicatedAddonHandlers.Values)
                {
                    handler.InvokePlayerPreAuth(new PlayerPreAuthEvent(server, userid, ip, country, flags), server);
                }
            }
            break;

            case EventType.WaitingForPlayers:
            {
                foreach (var handler in DedicatedAddonHandlers.Values)
                {
                    handler.InvokeWaitingForPlayers(new WaitingForPlayersEvent(server), server);
                }
            }
            break;

            case EventType.RoundEnded:
            {
                foreach (var handler in DedicatedAddonHandlers.Values)
                {
                    handler.InvokeRoundEnded(new RoundEndedEvent(server), server);
                }
            }
            break;
            }
        }
 public PlayerLocalReportEvent(NPPlayer player, NPPlayer targetPlayer, string reason)
 {
     this.Player       = player;
     this.TargetPlayer = targetPlayer;
     this.Reason       = reason;
 }
Ejemplo n.º 3
0
 public PlayerJoinedEvent(NPPlayer player) => Player = player;
Ejemplo n.º 4
0
 public PlayerLeftEvent(NPPlayer player) => Player = player;
Ejemplo n.º 5
0
 /// <inheritdoc/>
 public void Invoke(NPPlayer player, string[] arguments)
 {
     player.SendRAMessage("Test response");
 }