Hello,
I looked for guides to handle wow chat system, I searched arround and only found old threads with links for guides for noobs that are 404
so I hope some body have something in his favs.
thx
Hello,
I looked for guides to handle wow chat system, I searched arround and only found old threads with links for guides for noobs that are 404
so I hope some body have something in his favs.
thx
Can't really help that much with chat handling, but all I do for it is just hooking FrameScript_SignalEvent and filtering for those events (chat events in your case) that are relevant. Then I pass event args to my main app using pipes and handle them there. To not only receive but to send messages you can use lua api.
Hello,
thanks for response, I found the way I can read and parse chat buffer, only made some mistakes before.
If somebody need basic snipet,
Code:public enum Chat { Chat_Base = 0xC6DA40 + Chat_Ptr2,// 5.0.5 /// <summary> /// Next Message /// </summary> Chat_Ptr1 = 0x17C0, // 5.0.5 Chat_Ptr2 = 0x3C // 5.0.5 } uint ChatBufferStart = (uint)WoWProcess.baseAdress + (uint)Chat.Chat_Base; uint NextMessage = (uint)Chat.Chat_Ptr1; for (int i = 0; i < 10; i++) { string message = xmx.Memory.Read<string>((uint)(ChatBufferStart + (i * NextMessage)), (uint)NextMessage); Helper.Debug.AddMessage(message); }
Well using this, I only get the 10 first received Messages ever.
Is the trick, that I should just loop through until NextMessage == 0 or something, or is it, that it only contains the 10 first messages, ever?!
That may have something to do with the fact that his for loop only cycles 10 times -_-
see:
The messages here are stored from first-last meaning the first message you are sent when your client is loaded will remain as #1 until you receive enough chat messages to start overwriting them (because there's a limit of how many messages you can have).Code:for (int i = 0; i < 10; i++)
I'll just throw it here (C#):
WowChatViewer v1
WowChatViewer v2
Last edited by TOM_RUS; 11-19-2012 at 08:51 AM.
Just for the archive:
should be replaced withCode:private static readonly DateTime UnixEpochStart = new DateTime(1970, 1, 1, 0, 0, 0, 0);
Code:private static readonly DateTime UnixEpochStart = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
Otherwise will it return an UTC-Timestamp (like a Unix-Timestamp should be), but I guess everybody wants to work with a DateTime for the local timezone.