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

