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; } }
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); }
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(); } } } }
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; } }
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; } }
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(); } } } }
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(); }
public static void Deserialize(IMessageReader reader, out GameCode gameCode) { gameCode = reader.ReadInt32(); }
public static void Deserialize(IMessageReader reader, out int clientId, out int targetClientId) { clientId = reader.ReadInt32(); targetClientId = reader.ReadInt32(); }
public static void Deserialize(IMessageReader reader, out int clientVersion, out string name, out uint lastNonceReceived) { clientVersion = reader.ReadInt32(); name = reader.ReadString(); lastNonceReceived = reader.ReadUInt32(); }