WoWInterface

WoWInterface (https://www.wowinterface.com/forums/index.php)
-   Lua/XML Help (https://www.wowinterface.com/forums/forumdisplay.php?f=16)
-   -   Making prettier chat messages (https://www.wowinterface.com/forums/showthread.php?t=25712)

Hat 07-26-09 05:07 AM

Making prettier chat messages
 
My guild uses its own points system to allocate loot, and I'm in the process of writing a web-based system to manage it. One of the features of that system is going to be an addon in-game to report the number of points someone has when they roll. I have a couple of questions about this:

1) Is there a way to gag or append to a chat message that's coming in? I can use CHAT_MSG_SYSTEM and DEFAULT_CHAT_FRAME:AddMessage() to add another line, but I'd really like it to say "Joe rolls 15 (1-100) (15 points)" to save some space.

2) Is there a way to set the chat colour for individual parts of a message? It'd be nice if I could colour, say, the points value differently to the rest of the text.

Thanks in advance for your help :)

Waverian 07-26-09 05:19 AM

Quote:

Originally Posted by Hat (Post 149178)
My guild uses its own points system to allocate loot, and I'm in the process of writing a web-based system to manage it. One of the features of that system is going to be an addon in-game to report the number of points someone has when they roll. I have a couple of questions about this:

1) Is there a way to gag or append to a chat message that's coming in? I can use CHAT_MSG_SYSTEM and DEFAULT_CHAT_FRAME:AddMessage() to add another line, but I'd really like it to say "Joe rolls 15 (1-100) (15 points)" to save some space.

2) Is there a way to set the chat colour for individual parts of a message? It'd be nice if I could colour, say, the points value differently to the rest of the text.

Thanks in advance for your help :)

The normal clean way to alter a chat message is using http://wowprogramming.com/docs/api/C...ageEventFilter. I'm not sure if there's a CHAT_MSG_* event for rolls though.

You can change the color of text in local messages, but you cannot change the color of text in a chat channel. This limitation shouldn't be a problem if you're trying to alter the message locally anyway. You do it with color escape codes.

print("|cAARRGGBBText|r")

A = Alpha, R = Red, G = Green, B = Blue hex values.

print("|cffFF0000This text is red|r This text is white |cff00FF00This text is green|r |cff0000FFThis text is blue|r")

Hat 07-26-09 05:44 AM

Thanks for that pointer on chat filters, that's very useful. It's CHAT_MSG_SYSTEM for rolls btw.

But I can't get your examples of changing chat colours to work in-game. If I enter /script print("|cffFF0000This text is red|r This text is white |cff00FF00This text is green|r |cff0000FFThis text is blue|r") into a chat window, the colour codes aren't removed, they're printed verbatim.

Waverian 07-26-09 06:12 AM

Quote:

Originally Posted by Hat (Post 149184)
Thanks for that pointer on chat filters, that's very useful. It's CHAT_MSG_SYSTEM for rolls btw.

But I can't get your examples of changing chat colours to work in-game. If I enter /script print("|cffFF0000This text is red|r This text is white |cff00FF00This text is green|r |cff0000FFThis text is blue|r") into a chat window, the colour codes aren't removed, they're printed verbatim.

The chat system doesn't interpret the pipe character | correctly. If you're doing this via an editbox in game, you have to use \124 which is the escape code for said character.

print("\124cffFF0000This text is red\124r")

The pipe character will work correctly when used in an addon's lua file, though.

Slakah 07-26-09 06:18 AM

Quote:

Originally Posted by Hat (Post 149184)
Thanks for that pointer on chat filters, that's very useful. It's CHAT_MSG_SYSTEM for rolls btw.

But I can't get your examples of changing chat colours to work in-game. If I enter /script print("|cffFF0000This text is red|r This text is white |cff00FF00This text is green|r |cff0000FFThis text is blue|r") into a chat window, the colour codes aren't removed, they're printed verbatim.

The default editbox escapes the pipe symbol by replacing "|" with "||".

shkm 07-26-09 06:51 AM

Any chance you'll be releasing this system? I'd be interested in giving it a go if you are.

blocker147 09-09-20 10:28 AM

Code:

colors = {
        {
                title = 'LIGHTBLUE',
                color = 'cff00ccff',
        },
        {
                title = 'LIGHTRED',
                color = 'cffff6060',
        },
        {
                title = 'SPRINGGREEN',
                color = 'cff00FF7F',
        },
        {
                title = 'GREENYELLOW',
                color = 'cffADFF2F',
        },
        {
                title = 'BLUE',
                color = 'cff0000ff',
        },
        {
                title = 'PURPLE',
                color = 'cffDA70D6',
        },
        {
                title = 'GREEN',
                color = 'cff00ff00',
        },
        {
                title = 'RED',
                color = 'cffff0000',
        },
        {
                title = 'GOLD',
                color = 'cffffcc00',
        },
        {
                title = 'GOLD2',
                color = 'cffFFC125',
        },
        {
                title = 'GREY',
                color = 'cff888888',
        },
        {
                title = 'WHITE',
                color = 'cffffffff',
        },
        {
                title = 'SUBWHITE',
                color = 'cffbbbbbb',
        },
        {
                title = 'MAGENTA',
                color = 'cffff00ff',
        },
        {
                title = 'YELLOW',
                color = 'cffffff00',
        },
        {
                title = 'ORANGEY',
                color = 'cffFF4500',
        },
        {
                title = 'CHOCOLATE',
                color = 'cffCD661D',
        },
        {
                title = 'CYAN',
                color = 'cff00ffff',
        },
        {
                title = 'IVORY',
                color = 'cff8B8B83',
        },
        {
                title = 'LIGHTYELLOW',
                color = 'cffFFFFE0',
        },
        {
                title = 'SEXGREEN',
                color = 'cff71C671',
        },
        {
                title = 'SEXTEAL',
                color = 'cff388E8E',
        },
        {
                title = 'SEXPINK',
                color = 'cffC67171',
        },
        {
                title = 'SEXBLUE',
                color = 'cff00E5EE',
        },
        {
                title = 'SEXHOTPINK',
                color = 'cffFF6EB4'
        },
}
function printColors()
        --print("\124cffFF0000This text is red\124r") --This is red color
        local startLine = '\124'
        local endLine = '\124r'
        for i = 1, table.getn(colors) do
                print(startLine .. colors[i].color .. colors[i].title .. endLine)
        end
end



All times are GMT -6. The time now is 11:19 AM.

vBulletin © 2020, Jelsoft Enterprises Ltd
© 2004 - 2020 MMOUI