public static void HandlePlayerLogin(ref PacketReader packet, ref WorldClass session) { byte[] guidMask = { 6, 3, 0, 5, 7, 2, 1, 4 }; byte[] guidBytes = { 1, 0, 3, 2, 4, 7, 5, 6 }; BitUnpack GuidUnpacker = new BitUnpack(packet); ulong guid = GuidUnpacker.GetGuid(guidMask, guidBytes); Log.Message(LogType.DEBUG, "Character with Guid: {0}, AccountId: {1} tried to enter the world.", guid, session.Account.Id); session.Character = new Character(guid, ref session); WorldMgr.Session = session; SpellMgr.LoadSpells(); WorldMgr.WriteAccountData(AccountDataMasks.CharacterCacheMask, ref session); PacketWriter motd = new PacketWriter(LegacyMessage.MessageOfTheDay); motd.WriteUInt32(3); motd.WriteCString("Arctium MoP test"); motd.WriteCString("Welcome to our MoP server test."); motd.WriteCString("Your development team =)"); session.Send(motd); SpellHandler.SendSendKnownSpells(); UpdateHandler.HandleUpdateObject(ref packet, ref session); }
public static void SendSendKnownSpells() { Character pChar = GetSession().Character; if (pChar.SpellList.Count == 0) { SpellMgr.LoadSpells(); } PacketWriter writer = new PacketWriter(LegacyMessage.SendKnownSpells); BitPack BitPack = new BitPack(writer); BitPack.Write(1); BitPack.Write <uint>((uint)pChar.SpellList.Count, 24); BitPack.Flush(); pChar.SpellList.ForEach(spell => writer.WriteUInt32(spell.SpellId)); GetSession().Send(writer); }