Brendan Lally wrote: > > er, I'd only really need to > 1) change the arguments of new_draw_info (I've changed the function itself > already, so literally just > 1a) backup and make a seperate copy of c_chat.c > 2) for i in $(ls server/*); do cat server/$i | sed s/NDI_UNIQUE \|/ / >$i.new; > cat server/$i | sed s/NDI_[:alpha:]\,/ / > $i > (I'll need to check the syntax on that) > 3) compile and manually change some corner cases (and c_chat.c). > 4) set the colour value in the channels as described earlier. > > removing infomation is much easier than adding it.... But the problem I see is that you don't add enough new channels that all the NDI_... is now redundant. I estimated that there'd be around 20-30 different NDI_<message type> fields. And the problem then leads into a huge combination of NDI values * channel values, making handling on the client a much more complicated mess. I was thinking about this some more, and we may be addressing it from the wrong side of things - the server side. What really counts is the interface to the player - if the interface isn't good, all of this is basically meaningless because no one will ever use it. My personal thought is that I probably want a max of 5 different message tabs in my client - anything more than that seems excessive for the number of messages I typically see while playing on metalforge. My vision on how to handle this is to have a selection window that lists all the different message types/channels, and lets you select the font, color, and tab it goes into. For purposes of this discussion, we'll let the type/channel info be non specific - could be NDI code or channel value. This, I might set something up that lets all attack related messages go into one tab. As an additional ability, any kill messages show up in that tab in red. In another tab, set it for all readable type messages. In third tab, set it for all chat/shout/tell type messages. In fourth tab, set it for whatever is left over (level gain messages, people joining/leaving/etc). Maybe set a fifth tab to cover everything else. I certainly _don't_ want 1 tab per channel - I don't want to have 30 tabs in my client. I also don't want something like 'if you don't have that specific tab, everything gets dumped into a default tab'. That is one problem I have with both having channels and colors - from a user perspective, how do I control preferences then? For example, suppose the preference I describe is based on channels. How do you handle messages that come in on that channel in a different color? You can't really have a selection for all those posibilities, so the client has to assume some behaviour. does it just use the defaults the user selects (tab, font, color)? Does it use the color it comes in as, but otherwise use same tab and font? etc. That is why having only 1 attribute for all draw_info calls makes things much easier to handle - if there is only 30 message types, easy to present all those in a window to the user to choose their defaults. Note that these preferences are also stored client side. So this makes dynamic channels harder to handle - channel 25 may change its meaning run to run, or perhaps even server to server. I don't have a good solution for that one. What is also the expected plan for people actually chatting on these channels? I'm presuming there will need to be some command to do so, but I don't see that in your patch right now, so not sure how that will be handled. Keep in mind you need to provide some way for players with older clients to both see and chat on these new channels.