public static void CheckInGame(RicePacket packet) { Log.WriteLine("CheckInGame"); var version = packet.Reader.ReadUInt32(); var ticket = packet.Reader.ReadUInt32(); var username = packet.Reader.ReadUnicodeStatic(32); // Followed by int m_IsPcBang, 21 bytes of weird shit we don't know about, and yet another 21 byte chunk of weird shit we don't know about. var serverTicket = RiceServer.GetTicket(ticket); if (serverTicket == null || !serverTicket.ValidateOrigin(packet.Sender, username)) { Log.WriteLine("Ticket is non-existent or invalid for current user."); Log.WriteLine("ticket: {0}, packet sender: {1}, username: {2}", serverTicket.Identifier, packet.Sender.GetRemoteIP(), username); packet.Sender.Error("water u even doin"); return; } packet.Sender.Player = serverTicket.GetOwner(); packet.Sender.Player.GameClient = packet.Sender; var ack = new RicePacket(121); ack.Writer.Write(1L); packet.Sender.Send(ack); }
public static void CheckInLobby(RicePacket packet) { Log.WriteLine("CheckInLobby request."); uint version = packet.Reader.ReadUInt32(); uint ticket = packet.Reader.ReadUInt32(); string username = packet.Reader.ReadUnicodeStatic(0x28); uint time = packet.Reader.ReadUInt32(); string stringTicket = packet.Reader.ReadASCIIStatic(0x40); var serverTicket = RiceServer.GetTicket(ticket); if (serverTicket == null || !serverTicket.ValidateOrigin(packet.Sender, username)) { #if DEBUG packet.Sender.Player = new Player(Rice.Game.User.Retrieve(username)); RiceServer.AddPlayer(packet.Sender.Player); serverTicket = RiceServer.CreateDebugTicket(packet.Sender, ticket); #else Log.WriteLine("Ticket is non-existent or invalid for current user."); packet.Sender.Error("water u even doin"); return; #endif } else { packet.Sender.Player = serverTicket.GetOwner(); } var ack = new RicePacket(42); // CheckInLobbyAck ack.Writer.Write(ticket); // Ticket ack.Writer.Write(0); // Permission ??? packet.Sender.Send(ack); var timeAck = new RicePacket(47); // LobbyTimeAck timeAck.Writer.Write(Environment.TickCount); timeAck.Writer.Write(Environment.TickCount); packet.Sender.Send(timeAck); Log.WriteLine("User {0} entered lobby.", username); }