Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }