The "say" code for the dedicated server doesn't go through the game dll
at all so MetaMod can't directly access it. However, it does send a
message to all users:

                PF_MessageBegin_I( MSG_ONE, RegUserMsg( "SayText", -1 ), NULL,
&sv.edicts[j+1] );
                        PF_WriteByte_I( 0 );
                        PF_WriteString_I( text );
                PF_MessageEnd_I();


You could intercept that outgoing message to detect the event :)




voogru wrote:

You would probably need to hook pfnAlertMessage to get those, I could be
wrong.

- voogru

-----Original Message-----
From: Brian A. Stumm [mailto:[EMAIL PROTECTED]
Sent: Monday, February 09, 2004 7:36 PM
To: [EMAIL PROTECTED]
Subject: Re: [hlcoders] Server say (chat) messages

On Mon, 9 Feb 2004, Jeffrey "botman" Broome wrote:


Brian A. Stumm wrote:


Can I get a push in the right direction here?

I'm looking to capture with metamod "say" messages that are typed to

the


console (and later probably will want for remote console - rcon).

I've logged hundreds of megs of data reflecting all pfnMessageBegin,
WriteByte, WriteString (and the rest) as well as hooking

pfnServerCommand


and logging any of those that come through. Not a damn one of the

lines in


this 500+ megs of text looks remotely like a "Server say" message.

And


with voting etc my server "says" stuff all the time.

In the default SDK code, chat messages are handled with the "say" command in ClientCommand() found in the client.cpp file...

if ( FStrEq(pcmd, "say" ) )
{
   Host_Say( pEntity, 0 );
}

Host_Say() will propagate the text message to all clients.  Other MODs
may do this differently (server voting, etc. might not work the same

way).


Forgive my ignorance here Im thinking perhaps I was misunderstood. I am
ALREADY getting say and say_team commands that the PLAYERS issue but do
not get server says via that. What I am looking for is if I the server
owner sit down in front of my linux box and at the hlds console type
"say
hello world". Your saying this comes from ClientCommand? ClientCommand
has
a pEntity with it? Whats the pEntity for the server itself?


void ClientCommand( edict_t * pEntity ) {

        // don't care about bots
        if (pEntity->v.flags & FL_FAKECLIENT)
                RETURN_META(MRES_IGNORED);

        // is it a "say" client command to all players
        if (strcmp(CMD_ARGV(0), "say") == 0)
        {



_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives,
please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders




_______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders

_______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders



Reply via email to