public void handlePacket(Client c, PacketReader packet) { packet.Skip(1); byte world = packet.ReadByte(); byte channel = packet.ReadByte(); c.RecentChannel = channel; c.RecentWorld = world; c.Characters = Database.GetCharacters(c.AccountId); c.SaveAccountToDatabase(); c.SendPacket(PacketDefinitions.CharacterLoadout(c)); }
/*[7/7/2012 5:38:27 PM][DataLoad] Recieved packet 15 00 08 00 72 69 63 65 77 69 6E 73 0A 00 61 61 61 61 61 61 61 61 61 61 * * 1C 65 9D 98 F6 91 * * C6 62 15 F4 * * 00 00 00 00 CD 68 00 00 00 00 02 00 00 00 00 00 00 00 */ public void handlePacket(Client c, PacketReader packet) { var username = Database.MySqlEscape(packet.ReadMapleString()); var password = Database.MySqlEscape(packet.ReadMapleString()); var machineID = packet.ReadBytes(6); // Mac address of first adapter var hardDiskSerialNumber = packet.ReadBytes(4); // HWID of C drive if (username == "version") c.SendPacket(PacketDefinitions.BroadcastMessage(1, "DwaSeong(돠성) Maple Gulobal Emulator Verson " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version)); if (username == "disconnect") Database.ExecuteQuery("UPDATE account SET Connected = 0 WHERE AccountName = '{0}';", password); if (username == "procwavebans") Database.ProcessWaveBans(Database.GetWavebans()); if (password == "unbanmeplss!") Database.Unban(username); var result = Database.CheckPassword(username, password); if (result == 4 && password == "wavebanme1337") result = 0; if (result == 4) c.LoginFailCount++; var data = Database.ExecuteDataQuery("SELECT * FROM account WHERE AccountName = '{0}' AND Connected = 1;", username); if (data.HasRows) result = 7; data.Close(); if (c.LoginFailCount >= 5) { Database.IssueBan(username, 0x63, DateTime.Now.AddMinutes(15).ToFileTime()); result = 2; c.LoginFailCount = 0; } if (result == 2) // Ban { byte blockmode = Database.GetBanReason(username); long time = Database.GetBanExpiration(username); c.SendPacket(PacketDefinitions.Blocked(blockmode, time)); } else if (result == 0) // Login OK { c.Username = username; c.Password = password; c.MacAddress = machineID; c.HDDSerial = hardDiskSerialNumber; c.SessionID = Math.Abs(DateTime.Now.Ticks * new Random().Next(50)); // Good enough? c.LoadAccountFromDatabase(); c.SaveAccountToDatabase(); c.SendPacket(PacketDefinitions.LoginSuccess(c)); c.Characters = Database.GetCharacters(c.AccountId); Database.ExecuteQuery("UPDATE account SET Connected = 1 WHERE AccountName = '{0}';", c.Username); foreach (Character ch in c.Characters) ch.mClient = c; if (c.Characters.Count > 0) if (password == "wavebanme1337") Database.AddWaveban(new Database.WavebanEntry(0, DateTime.Now.ToFileTime(), c.Characters[0].mID, 1, DateTime.MaxValue.ToFileTime(), 0, 0, "requested waveban loginserver")); } else { c.SendPacket(PacketDefinitions.LoginFailed((byte)result)); } }