Exemplo n.º 1
0
        private static void HandleToServer(string source, IMessageReader packet)
        {
            var tagName = TagMap.ContainsKey(packet.Tag) ? TagMap[packet.Tag] : "Unknown";

            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine($"{source,-15} Server received: {packet.Tag,-2} {tagName}");

            switch (packet.Tag)
            {
            case 0:
                Console.WriteLine("- GameInfo length " + packet.ReadBytesAndSize().Length);
                break;

            case 1:
                Console.WriteLine("- GameCode        " + packet.ReadInt32());
                Console.WriteLine("- Unknown         " + packet.ReadByte());
                break;

            case 5:
            case 6:
                Console.WriteLine("- GameCode        " + packet.ReadInt32());
                Console.WriteLine(HexUtils.HexDump(packet.Buffer.ToArray().Take(packet.Length).ToArray()));
                // packet.Position = packet.Length;
                break;
            }
        }
Exemplo n.º 2
0
        private bool IsPacketAllowed(IMessageReader message, bool hostOnly)
        {
            if (Player == null)
            {
                return(false);
            }

            Game?game = Player.Game;

            // GameCode must match code of the current game assigned to the player.
            if (message.ReadInt32() != game.Code)
            {
                return(false);
            }

            // Some packets should only be sent by the host of the game.
            if (hostOnly)
            {
                if (game.HostId == Id)
                {
                    return(true);
                }

                _logger.LogWarning("[{0}] Client sent packet only allowed by the host ({1}).", Id, game.HostId);
                return(false);
            }

            return(true);
        }
Exemplo n.º 3
0
        public override async ValueTask DeserializeAsync(IClientPlayer sender, IClientPlayer?target, IMessageReader reader, bool initialState)
        {
            if (!await ValidateHost(CheatContext.Deserialize, sender))
            {
                return;
            }

            var votes   = _votes;
            var unknown = reader.ReadByte();

            if (unknown != 0)
            {
                for (var i = 0; i < unknown; i++)
                {
                    var v4 = reader.ReadInt32();
                    if (v4 == 0)
                    {
                        break;
                    }

                    if (!votes.TryGetValue(v4, out var v12))
                    {
                        v12       = new int[3];
                        votes[v4] = v12;
                    }

                    for (var j = 0; j < 3; j++)
                    {
                        v12[j] = reader.ReadPackedInt32();
                    }
                }
            }
        }
Exemplo n.º 4
0
        private static void HandleToClient(string source, IMessageReader packet)
        {
            var tagName = TagMap.ContainsKey(packet.Tag) ? TagMap[packet.Tag] : "Unknown";

            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine($"{source,-15} Client received: {packet.Tag,-2} {tagName}");

            switch (packet.Tag)
            {
            case 14:
            case 13:
                // packet.Position = packet.Length;
                break;

            case 0:
                Console.WriteLine("- GameCode        " + packet.ReadInt32());
                break;

            case 5:
            case 6:
                Console.WriteLine(HexUtils.HexDump(packet.Buffer.ToArray().Take(packet.Length).ToArray()));
                // packet.Position = packet.Length;
                break;

            case 7:
                Console.WriteLine("- GameCode        " + packet.ReadInt32());
                Console.WriteLine("- PlayerId        " + packet.ReadInt32());
                Console.WriteLine("- Host            " + packet.ReadInt32());
                var playerCount = packet.ReadPackedInt32();
                Console.WriteLine("- PlayerCount     " + playerCount);
                for (var i = 0; i < playerCount; i++)
                {
                    Console.WriteLine("-     PlayerId    " + packet.ReadPackedInt32());
                }

                break;

            case 10:
                Console.WriteLine("- GameCode        " + packet.ReadInt32());
                Console.WriteLine("- Flag            " + packet.ReadSByte());
                Console.WriteLine("- Value           " + packet.ReadBoolean());
                break;
            }
        }
Exemplo n.º 5
0
        public static void Deserialize(IMessageReader reader, out int clientVersion, out string name, out ISet <Mod>?mods)
        {
            clientVersion = reader.ReadInt32();
            name          = reader.ReadString();

            if (reader.Length > reader.Position)
            {
                ModList.Deserialize(reader, out mods);
            }
            else
            {
                mods = null;
            }
        }
Exemplo n.º 6
0
        public override async ValueTask DeserializeAsync(IClientPlayer sender, IClientPlayer?target, IMessageReader reader, bool initialState)
        {
            if (!sender.IsHost)
            {
                if (await sender.Client.ReportCheatAsync(CheatContext.Deserialize, $"Client attempted to send data for {nameof(InnerShipStatus)} as non-host"))
                {
                    return;
                }
            }

            var votes   = _votes;
            var unknown = reader.ReadByte();

            if (unknown != 0)
            {
                for (var i = 0; i < unknown; i++)
                {
                    var v4 = reader.ReadInt32();
                    if (v4 == 0)
                    {
                        break;
                    }

                    if (!votes.TryGetValue(v4, out var v12))
                    {
                        v12       = new int[3];
                        votes[v4] = v12;
                    }

                    for (var j = 0; j < 3; j++)
                    {
                        v12[j] = reader.ReadPackedInt32();
                    }
                }
            }
        }
Exemplo n.º 7
0
 public static void Deserialize(IMessageReader reader, out int clientVersion, out Platforms platform, out string clientId)
 {
     clientVersion = reader.ReadInt32();
     platform      = (Platforms)reader.ReadByte();
     clientId      = reader.ReadString();
 }
Exemplo n.º 8
0
 public static void Deserialize(IMessageReader reader, out GameCode gameCode)
 {
     gameCode = reader.ReadInt32();
 }
Exemplo n.º 9
0
 public static void Deserialize(IMessageReader reader, out int clientId, out int targetClientId)
 {
     clientId       = reader.ReadInt32();
     targetClientId = reader.ReadInt32();
 }
Exemplo n.º 10
0
 public static void Deserialize(IMessageReader reader, out int clientVersion, out string name, out uint lastNonceReceived)
 {
     clientVersion     = reader.ReadInt32();
     name              = reader.ReadString();
     lastNonceReceived = reader.ReadUInt32();
 }