예제 #1
0
 public void handlePacket(Client c, PacketReader packet)
 {
     int cid = packet.ReadInt();
     byte[] mac = packet.ReadBytes(6);
     byte[] hwid = packet.ReadBytes(4);
     packet.Skip(8);
     long sessionID = packet.ReadLong();
     c.mAccount = new Account();
     c.mAccount.Load(cid);
     Logger.Write(Logger.LogTypes.정보,
                  "SESSIONID;\r\n\t CID={0},\r\n\t CMAC={1},\r\n\t CHWID={2},\r\n\t CSESSIONID={3},\r\n\t SMAC={4},\r\n\t SHWID={5},\r\n\t SSESSIONID={6}",
                  cid, mac.ToString2s(),
                  hwid.ToString2s(),
                  sessionID,
                  c.mAccount.MacAddress.ToString2s(),
                  c.mAccount.HDDSerial.ToString2s(),
                  c.mAccount.SessionID);
     if (c.mAccount.SessionID != sessionID)
     {
         Logger.Write(Logger.LogTypes.경고, "UNEQUAL SESSIONID !");
         return; // TODO: Autoban
     }
     c.validated = true;
     c.mCharacter = Database.GetCharacter(cid);
     Program.mServer.center.mCenterConnection.mSession.SendPacket(CenterServerPacketDefinitions.GuildInfo(c.mCharacter.mID, c.mCharacter.mGuild.GuildID));
     System.Threading.Thread.Sleep(500); // should be enough
     c.mCharacter.mPosition = Program.mServer.Fields[c.mCharacter.mField][c.mCharacter.mFieldInstance].GetPortal(c.mCharacter.mFieldPosition).mPosition;
     c.mCharacter.mClient = c;
     Console.WriteLine("Character: {0}:{1}", c.mCharacter.mID, c.mCharacter.mGuild.Name);
     c.SendPacket(CStage.SetField(c, true));
     Program.mServer.Fields[c.mCharacter.mField][c.mCharacter.mFieldInstance].AddCharacter(c.mCharacter);
 }
예제 #2
0
        public void handlePacket(Client c, PacketReader packet)
        {
            int portalCount = packet.ReadByte();
            int crc = packet.ReadInt();
            int tickcount = packet.ReadInt();
            c.mCharacter.mPosition = new System.Drawing.Point(packet.ReadShort(), packet.ReadShort());
            Program.mServer.Fields[c.mCharacter.mField][c.mCharacter.mFieldInstance].SendPacket(c, CField.UserMove(c.mCharacter.mID, c.mCharacter.mPosition, packet.ReadBytes(packet.Length - packet.Position)));
            //Console.WriteLine("UH....PACKET?\r\n{0}", CField.UserMove(c.mCharacter.mID, c.mCharacter.mPosition, packet.ReadBytes(packet.Length - packet.Position)).ToString2s());
            /*
            int portalCount = packet.ReadByte();
            int crc = packet.ReadInt();
            int tickcount = packet.ReadInt();
            short x = packet.ReadShort();
            short y = packet.ReadShort();
            c.mCharacter.mPosition = new System.Drawing.Point(x, y);
            byte[] movement = packet.ReadBytes(packet.Length - packet.Position);
            packet.ReadBytes(4);
                         int tickcount = packet.ReadInt();
             c.mCharacter.mPosition = new System.Drawing.Point(packet.ReadShort(), packet.ReadShort());
             packet.ReadBytes(4);
            -            c.mCharacter.ParseMovementPath(packet);*/
            //c.mCharacter.ParseMovementPath(packet);
             //Program.mServer.Fields[c.mCharacter.mField][c.mCharacter.mFieldInstance].SendPacket(c, CField.UserMove(c.mCharacter.mID, c.mCharacter.mPosition, MovementParser.ParseMovementPath(packet)));
             //Program.mServer.Fields[c.mCharacter.mField][c.mCharacter.mFieldInstance].SendPacket(c, CField.UserMove(c.mCharacter.mID, c.mCharacter.mPosition, packet.ReadBytes(packet.Length - packet.Position)));

            //if (x < Program.mServer.Fields[c.mCharacter.mField][c.mCharacter.mFieldInstance].WzData

            //c.mCharacter.ParseMovementPath(packet);
            //Program.mServer.Fields[c.mCharacter.mField][c.mCharacter.mFieldInstance].SendPacket(c, CField.UserMove(c.mCharacter.mID, c.mCharacter.mPosition, MovementParser.ParseMovementPath(packet)));
            //Program.mServer.Fields[c.mCharacter.mField][c.mCharacter.mFieldInstance].SendPacket(c, CField.UserMove(c.mCharacter.mID, c.mCharacter.mPosition, movement));
            //Program.mServer.Fields[c.mCharacter.mField][c.mCharacter.mFieldInstance].SendPacket(c, CField.UserMove(c.mCharacter.mID, c.mCharacter.mPosition, c.mCharacter.ParseMovementPath(packet)));
            /*[9/12/2012 12:40:34 AM][대타] 받은 패킷
             * 49 00
             * 01 AC 7E BC BC 80 15 FC 05 BA 02 12 01 00 00 00 00 03 00 BA 02 12 01 00 00 00 00 61 00 00 00 00 00
             * 04 4A 01 00 C8 02 12 01 96 00 00 00 61 00 00 00 00 00 02 96 00 00 CC 02 12 01 7E 00 00 00 61 00 00
             * 00 00 00 04 1E 00 11 00 00 00 00 00 40 44 44 00 BA 02 12 01 CC 02 12 01
             *
             */
        }
예제 #3
0
 public void handlePacket(Client c, PacketReader packet)
 {
     packet.ReadByte();
     int portalId = packet.ReadInt();
     int timestamp = packet.ReadInt();
 }
예제 #4
0
 public void handlePacket(Client c, PacketReader packet)
 {
     c.LastKeepAlive = DateTime.Now.ToFileTime();
 }