Exemplo n.º 1
0
    public static void HandleNameQueryResponse(ref PacketReader packet, ref World manager)
    {
        WoWGuid guid = new WoWGuid(packet.ReadUInt64());
        string  name = packet.ReadString();

        packet.ReadByte();
        Race      Race   = (Race)packet.ReadUInt32();
        Gender    Gender = (Gender)packet.ReadUInt32();
        Classname Class  = (Classname)packet.ReadUInt32();


        if (manager.objectMgr.objectExists(guid))    // Update existing Object
        {
            Assets.Scripts.World.Object obj = manager.objectMgr.getObject(guid);
            obj.Name = name;
            manager.objectMgr.updateObject(obj);
        }
        else                // Create new Object        -- FIXME: Add to new 'names only' list?
        {
            Assets.Scripts.World.Object obj = new Assets.Scripts.World.Object(guid);
            obj.Name = name;
            manager.objectMgr.addObject(obj);

            for (int i = 0; i < ChatHandler.ChatQueued.Count; i++)
            {
                ChatHandler.ChatQueue message = (ChatHandler.ChatQueue)ChatHandler.ChatQueued[i];
                if (message.GUID.GetOldGuid() == guid.GetOldGuid())
                {
                    //MainWorld.ChatHeads.Add("[" + obj.Name + "] " + MainWorld.ChatTag + message.Message + "\n");
                    ChatHandler.ChatQueued.Remove(message);
                }
            }
        }
    }
Exemplo n.º 2
0
 // Find Object on list by GUID
 private int getObjectIndex(WoWGuid guid)
 {
     for (int i = 0; i < mObjects.Count; i++)
     {
         Object obj = mObjects[i];
         if (obj.GUID.GetOldGuid() == guid.GetOldGuid())
         {
             return(i);
         }
     }
     return(-1);
 }
Exemplo n.º 3
0
    public static void HandleChatMessage(ref PacketReader packet, ref World manager)
    {
        try
        {
            string  channel = null;
            UInt64  guid = 0;
            WoWGuid fguid = null, fguid2 = null;
            string  FinalMessage = "";
            string  Message      = "";
            string  username     = null;

            ChatMsg Type     = (ChatMsg)packet.ReadByte();
            UInt32  Language = packet.ReadUInt32();

            switch (Type)
            {
            case ChatMsg.CHAT_MSG_MONSTER_WHISPER:
            case ChatMsg.CHAT_MSG_RAID_BOSS_WHISPER:
            case ChatMsg.CHAT_MSG_RAID_BOSS_EMOTE:
            case ChatMsg.CHAT_MSG_MONSTER_EMOTE:
                //data << uint32(strlen(senderName) + 1);
                //data << senderName;
                fguid2 = new WoWGuid(packet.ReadUInt64());                             // Unit Target
                break;

            case ChatMsg.CHAT_MSG_SAY:
            case ChatMsg.CHAT_MSG_PARTY:
            case ChatMsg.CHAT_MSG_YELL:
                guid = packet.ReadUInt64();
                guid = packet.ReadUInt64();
                break;

            case ChatMsg.CHAT_MSG_MONSTER_SAY:
            case ChatMsg.CHAT_MSG_MONSTER_YELL:
                guid = packet.ReadUInt64();
                //data << uint32(strlen(senderName) + 1);
                //data << senderName;
                fguid2 = new WoWGuid(packet.ReadUInt64());                            // Unit Target
                break;

            case ChatMsg.CHAT_MSG_CHANNEL:
                channel = packet.ReadString();
                //data << uint32(playerRank);
                //data << ObjectGuid(senderGuid);
                break;

            default:
                guid = packet.ReadUInt64();
                break;
            }

            UInt32 Length = packet.ReadUInt32();
            Message = packet.ReadString();// Encoding.Default.GetString(packet.ReadBytes((int)Length));
            PlayerChatTag chatTag = (PlayerChatTag)packet.ReadByte();

            fguid = new WoWGuid(guid);

            //Message = Regex.Replace(Message, @"\|[rc]{1}[a-zA-z0-9]{0,8}", ""); // Colorfull chat message also isn't the most important thing.

            if (fguid.GetOldGuid() == 0)
            {
                username = "******";
            }
            else
            {
                if (manager.objectMgr.objectExists(fguid))
                {
                    username = manager.objectMgr.getObject(fguid).Name;
                }
            }

            byte afk = 0;

            if (username == null)
            {
                ChatQueue que = new ChatQueue();
                que.GUID     = fguid;
                que.Type     = (byte)Type;
                que.Language = Language;
                if ((ChatMsg)Type == ChatMsg.CHAT_MSG_CHANNEL)
                {
                    que.Channel = channel;
                }
                que.Length  = Length;
                que.Message = Message;
                que.AFK     = afk;
                ChatQueued.Add(que);
                MiscHandler.QueryName(guid, ref manager);
                return;
            }

            if (!PublicWorld.inWorld)
            {
                FinalMessage = Message + "\n";
                // MainWorld.ChatHeads.Add(FinalMessage);
            }
            else
            {
                //FinalMessage = "[" + username + "] " + MainWorld.ChatTag + Message + "\n";
                // MainWorld.ChatHeads.Add(FinalMessage);
                // MainWorld.ChatBox = false;

                //MainWorld.ChatMessage = "";
            }
        }
        catch (Exception ex)
        {
            Debug.LogWarning("Exception Occured");
            Debug.LogWarning("Message: " + ex.Message);
            Debug.LogWarning("Stacktrace: " + ex.StackTrace);
        }
    }