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 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 DecodeCharacterStatistics(Character character, InPacket packet) { character.ID = packet.ReadInt(); character.Name = packet.ReadString(13).Replace("\0", ""); character.Gender = packet.ReadByte(); character.Skin = packet.ReadByte(); character.Face = packet.ReadInt(); character.Hair = packet.ReadInt(); for (int i = 0; i < 3; i++) { packet.ReadLong(); // Pet i's Unique ID. } character.Level = packet.ReadByte(); character.Job = packet.ReadShort(); character.Strength = packet.ReadShort(); character.Dexterity = packet.ReadShort(); character.Intelligence = packet.ReadShort(); character.Luck = packet.ReadShort(); character.CurrentHP = packet.ReadInt(); character.MaxMP = packet.ReadInt(); character.CurrentMP = packet.ReadInt(); character.MaxMP = packet.ReadInt(); character.AvailableAP = packet.ReadShort(); bool separated = true; short job = character.Job; if ((job / 1000) == 1) { if ((((job % 1000) / 100) == 2) || (((job % 1000) / 100) == 4)) { separated = false; } } if (character.IsBeastTamer || job == 800 || ((job / 100) == 9) || (((job / 1000) == 2) && (((job % 1000) / 100)) == 1)) { separated = false; } if (separated) { byte count = packet.ReadByte(); for (byte b = 0; b < count; b++) { byte advancement = packet.ReadByte(); int value = packet.ReadInt(); character.AvailableSP[advancement] = value; } } else { character.AvailableSP[0] = packet.ReadShort(); } character.Experience = packet.ReadLong(); character.Fame = packet.ReadInt(); character.WeaponPoints = packet.ReadInt(); // Zero Weapon Points character.GachaponExperience = packet.ReadInt(); character.FieldID = packet.ReadInt(); character.SpawnPoint = packet.ReadByte(); packet.ReadInt(); packet.ReadShort(); if (character.IsDemonSlayer || character.IsDemonAvenger || character.IsXenon || character.IsBeastTamer) { character.FaceMarking = packet.ReadInt(); } packet.ReadByte(); // Fatigue packet.ReadInt(); // Current Date for (int i = 0; i < 6; i++) { packet.ReadInt(); // Traits (Total) } packet.ReadBytes(21); character.BattleExperience = packet.ReadInt(); character.BattleRank = packet.ReadByte(); character.BattlePoints = packet.ReadInt(); packet.ReadByte(); packet.ReadByte(); packet.ReadInt(); // Part Time Job { packet.ReadByte(); packet.ReadReversedLong(); packet.ReadInt(); packet.ReadBool(); } // Character Cards { for (int i = 0; i < 9; i++) { packet.ReadInt(); packet.ReadByte(); packet.ReadInt(); } } packet.ReadLong(); }