I have noticed that in a few instances where I've sent complex messages to folks in any channel, the sequence can get altered.
For me it was more like putting a space in front of each line in a macro and sending a copy to someone. The lines can get jumbled.
I suspect it's to do with the new API, some aspect of it that has changed.
My guess would be that you'd need to move to some process that allows for a delay between messages.
Even 1/10th of a second would probably be enough.
As to what to use to do that? That's up to you. I'm sure there are any number of addons out there that would do the job.
This is still an issue, any word from Blizz official on info for a fix for this?
I did some experimenting on my own and found that if I delayed each chat line by a frame, it worked fine, but that’s kind of a PITA to set up.
I’m not sure what Blizzard did to break this, but it’s definitely an 8.0 issue. If I get time, I’ll work on a multi-line-message addon for this sort of thing.
If you’re looking to do it yourself, what I’d suggest is that you use the OnUpdate event processor to queue lines for printing in a table , print first line, delete first line from table, lather, rinse, repeat, until the table is empty. Setting it up that way would get you a frame for each line and from what I’ve been able to see about what’s going on behind the scenes, that SHOULD be enough to keep things in order.
Found something yesterday digging around for something else.
I haven’t tested this yet, but . . . .
/run local S=SendChatMessage C_Timer.After(0,function()S("Message one","GUILD")C_Timer.After(0,function()S("Message two","GUILD")C_Timer.After(0,function()S("Message three","GUILD")end)end)end)
C_Timer.After(seconds, callbackFunction)
If the seconds argument is 0, one frame is skipped only. As each of those messages is followed by a new timer that will delay one frame before posting the next message, it ought to keep everything in order.
Now, as to whether or not that’ll work? I can’t tell you.
But it should.
Still out of order.
Had a bit of a play and came up with this (two parter) (you could break part 1 into macros but it would be exactly the same)
Paste the following into the website addon.bool.no and create/install your addon section
local f = CreateFrame("Frame","GuildMessageSender")
f.t={}
f:RegisterEvent("CHAT_MSG_GUILD")
f:SetScript("OnEvent", function(self)
if #self.t == 0 then return end
SendChatMessage(self.t[1], "GUILD")
tremove(self.t, 1)
end)
function f:send(msg, send)
tinsert(self.t, msg)
if send then
self:GetScript("OnEvent")(self, "CHAT_MSG_GUILD")
end
end
You can then create your send guild chat macros (adding true to the last one to start the send process):
/run local s=GuildMessageSender s:send("Message one") s:send("Message two") s:send("Message three", true)
I’m gonna play with that a bit, Fizzie. Thanks.
What I have in mind is maybe reversing the flag - have it send unless you say NOT to and then possibly capturing Guild Chat input and running it through this by default.
Any guild chat input that ends with, say the \a symbol, would be held until a non-\a-terminated line is reached.
Not sure if that’s even possible, but I’d like to “fix” guild chat so that it’s usable without having to muck about with a special command line to send multi-line messages.
Also, I found that even normal whispers get garbled.
I recently sent a copy of a macro to a friend by indenting each of the lines by one character and then “running” the macro (with that friend’s whisper as the last chat channel) and it sent the information, but out of order.
There has got to be a way to unscrew whatever Blizzard did to chat with 8.0 to fix this. What you’ve go there looks like a really good start.
Another thought would be to client-side throttle messages just a touch. Capture ALL outbound messages and hold them, then drop them back in separated by a frame or two.
From a practical standpoint, it won’t make a bit of difference on reading them and it might work to solve whatever problem Blizzard introduced with 8.0 and chat.
You could possibly do away with the send flag by changing the send function:
function f:send(msg, send)
local sent = #self.t
tinsert(self.t, msg)
if sent == 0 then
self:GetScript("OnEvent")(self, "CHAT_MSG_GUILD")
end
end
I have a vague memory of a post about a problem with C_Timer.After. Something to do with the first call to not working as expected. I don’t remember if it was first call in a session or not or if the problem was random(ish) or not.
I tried your solution with a time of 0.1 and it mostly worked and 0.5 seemed to work. My main concern was if lag could still end up with too many messages in the queue.
Using the frame/event, you could potentially create an automated addon to do things like respond to guild messages with “ding” in them using a designated “gratz” response set of messages etc.
Anything ever come of the work you two were doing? Any addons ever come about or any actual fixes? Does what fizzlemizz suggest work? If so how do I impliment that?
did they ever fix this? Everything got screwed up when they added communities.
Ehiztari has taken a break from WoW. I don’t know what/if anything came of any code that might have been created.
Also, not sure if this is similar to a thread asked not too long ago or if it contains anything that might be of use:
Bump!
I am having issues trying to make macro:
{square}{square}{square}{square}{square}
{square}{moon}{square}{moon}{square}
{square}{square}{square}{square}{square}
{square}{triangle}{triangle}{triangle}{square}
{square}{square}{square}{square}{square}
To make cookie monster… when I post in /p it forms correctly. When I post in guild it flips the teeth and the eyes so it appears upside down. Any clues how to fix this? Or write it differently?
Guild chat has message delays when posting multiple lines. You’ll want some sort of pause between each line to make sure it lines up properly or just, ya know, don’t do it.
This.
And probably also read the forum guidelines about spam as it relates to necroing old posts.