public static void HandleCharacterList(MapleConnection connection, InPacket packet) { bool viewAllCharacters = packet.ReadBool(); byte count = packet.ReadByte(); for (byte b = 0; b < count; b++) { Character character = new Character(); character.Index = b; HelpPacket.DecodeCharacterStatistics(character, packet); HelpPacket.DecodeCharacterAppearance(character, packet); packet.ReadByte(); if (packet.ReadBool()) { packet.ReadBytes(16); // NOTE: Ranking. } character.AvatarUrl = "http://direct.craftnet.nl/maplestory_get_rank_info.php?name=" + character.Name + "&get_character_image"; Main.Instance.DrawCharacterTile(character); } MapleConnection.User.PicMode = (PicMode)packet.ReadByte(); Main.Instance.SetTab(Indexer.CharacterSelect); }
public static void HandleSetField(MapleConnection connection, InPacket packet) { connection.Character = new Character(); ushort loopCount = packet.ReadUShort(); for (int i = 0; i < loopCount; i++) { packet.ReadLong(); } int gameServerId = packet.ReadInt(); packet.ReadByte(); packet.ReadInt(); connection.Character.PortalCount = packet.ReadByte(); packet.ReadInt(); bool characterData = packet.ReadBool(); if (characterData) { HelpPacket.DecodeCharacterData(connection.Character, packet); } else { } Main.Instance.SetField(new Bitmap(1500, 2000)); }
public static void HandleMapleChat(MapleConnection connection, InPacket packet) { MapleChatMode mode = (MapleChatMode)packet.ReadByte(); switch (mode) { case MapleChatMode.InviteReceive: { if (MapleChat.Instance != null) { return; // NOTE: Invite is automatically ignored while being in a chat session. } string sender = packet.ReadString(); byte unknown1 = packet.ReadByte(); MapleChat.ID = packet.ReadInt(); byte unknown2 = packet.ReadByte(); DialogResult result = Main.Instance.Notify(sender + " has invited you to a chat. Would you like to join?", "Maple Chat", 0, false, true); if (result == DialogResult.Yes) { connection.Send(SocialPacket.JoinMapleChat(MapleChat.ID)); } } break; case MapleChatMode.InviteSent: { } break; } }
/// <summary> /// Change current MapleConnection /// </summary> /// <param name="host">Host IP address as a string</param> /// <param name="port">Host port</param> public void ChangeConnection(string host, int port) { if (this.MapleConnect != null) { this.MapleConnect.Close(); } this.MapleConnect = new MapleConnection(host, port, this); }
public static void HandleSpawnCharacter(MapleConnection connection, InPacket packet) { Character character = new Character(); character.ID = packet.ReadInt(); character.Level = packet.ReadByte(); packet.ReadShort(); character.Name = packet.ReadString(); Main.Instance.DrawCharacterObject(character); }
public static void HandleLogin(MapleConnection connection, InPacket packet) { LoginStatus status = (LoginStatus)packet.ReadByte(); if (status == LoginStatus.Valid) { packet.Reset(packet.Length - 8); MapleConnection.User.SessionID = packet.ReadLong(); connection.Send(LoginPacket.RequestWorldList()); } }
public static void HandleMigrate(MapleConnection connection, InPacket packet) { ushort status = packet.ReadUShort(); if (status == 0) { string ip = string.Join(".", packet.ReadBytes(4)); ushort port = packet.ReadUShort(); packet.ReadBytes(6); // NOTE: Unknown. MapleConnection.User.ID = packet.ReadInt(); MapleConnection.Instance.Reconnect(UserState.Game, ip, port); } }
public static void HandleWorldInformation(MapleConnection connection, InPacket packet) { byte worldId = packet.ReadByte(); if (worldId == byte.MaxValue) { Main.Instance.SetTab(Indexer.WorldSelect); } else { string name = packet.ReadString(); Main.Instance.DrawWorldTile(worldId, name); } }
public static void HandlePing(MapleConnection connection, InPacket packet) { connection.Send(GeneralPacket.Pong()); }