/* * Cmd_Say_f */ void Cmd_Say_f( edict_t *ent, bool arg0, bool checkflood ) { char *p; char text[2048]; size_t arg0len = 0; #ifdef AUTHED_SAY if( sv_mm_enable->integer && ent->r.client && ent->r.client->mm_session <= 0 ) { // unauthed players are only allowed to chat to public at non play-time if( GS_MatchState() == MATCH_STATE_PLAYTIME ) { G_PrintMsg( ent, "%s", S_COLOR_YELLOW "You must authenticate to be able to communicate to other players during the match.\n"); return; } } #endif if( checkflood ) { if( CheckFlood( ent, false ) ) return; } if( ent->r.client && ( ent->r.client->muted & 1 ) ) return; if( trap_Cmd_Argc() < 2 && !arg0 ) return; text[0] = 0; if( arg0 ) { Q_strncatz( text, trap_Cmd_Argv( 0 ), sizeof( text ) ); Q_strncatz( text, " ", sizeof( text ) ); arg0len = strlen( text ); Q_strncatz( text, trap_Cmd_Args(), sizeof( text ) ); } else { p = trap_Cmd_Args(); if( *p == '"' ) { if( p[strlen( p )-1] == '"' ) p[strlen( p )-1] = 0; p++; } Q_strncatz( text, p, sizeof( text ) ); } // don't let text be too long for malicious reasons text[arg0len + (MAX_CHAT_BYTES - 1)] = 0; if( !Q_stricmp( text, "gg" ) || !Q_stricmp( text, "good game" ) ) G_AwardFairPlay( ent ); G_ChatMsg( NULL, ent, false, "%s", text ); }
/* * Cmd_Say_f */ void Cmd_Say_f( edict_t *ent, qboolean arg0, qboolean checkflood ) { char *p; char text[2048]; if( checkflood ) { if( CheckFlood( ent, qfalse ) ) return; } if( ent->r.client && ent->r.client->muted & 1 ) return; if( trap_Cmd_Argc() < 2 && !arg0 ) return; text[0] = 0; if( arg0 ) { Q_strncatz( text, trap_Cmd_Argv( 0 ), sizeof( text ) ); Q_strncatz( text, " ", sizeof( text ) ); Q_strncatz( text, trap_Cmd_Args(), sizeof( text ) ); } else { p = trap_Cmd_Args(); if( *p == '"' ) { if( p[strlen( p )-1] == '"' ) p[strlen( p )-1] = 0; p++; } Q_strncatz( text, p, sizeof( text ) ); } // don't let text be too long for malicious reasons if( strlen( text ) > 150 ) text[150] = 0; G_ChatMsg( NULL, ent, qfalse, "%s", text ); // racesow RS_ircSendMessage( va( "%s", COM_RemoveColorTokens(( ent->r.client->netname ) )), va( "%s", COM_RemoveColorTokens(( text)) ) ); // !racesow }
/* * ClientCommand */ void ClientCommand( edict_t *ent ) { char *cmd; int i; if( !ent->r.client || trap_GetClientState( PLAYERNUM( ent ) ) < CS_SPAWNED ) return; // not fully in game yet cmd = trap_Cmd_Argv( 0 ); if( Q_stricmp( cmd, "cvarinfo" ) ) // skip cvarinfo cmds because they are automatic responses G_Client_UpdateActivity( ent->r.client ); // activity detected for( i = 0; i < MAX_GAMECOMMANDS; i++ ) { if( !g_Commands[i].name[0] ) break; if( !Q_stricmp( g_Commands[i].name, cmd ) ) { if( g_Commands[i].func ) g_Commands[i].func( ent ); else GT_asCallGameCommand( ent->r.client, cmd, trap_Cmd_Args(), trap_Cmd_Argc() - 1 ); return; } } G_PrintMsg( ent, "Bad user command: %s\n", cmd ); }
/* * CG_SC_ExecuteText */ static void CG_SC_ExecuteText( void ) { if( cgs.demoPlaying || cgs.tv ) return; trap_Cmd_ExecuteText( EXEC_APPEND, trap_Cmd_Args() ); }
/* * CG_SC_ChannelAdd */ static void CG_SC_ChannelAdd( void ) { char menuparms[MAX_STRING_CHARS]; Q_snprintfz( menuparms, sizeof( menuparms ), "menu_tvchannel_add %s\n", trap_Cmd_Args() ); trap_Cmd_ExecuteText( EXEC_NOW, menuparms ); }
/* * Cmd_Say_f */ void Cmd_Say_f( edict_t *ent, bool arg0, bool checkflood ) { char *p; char text[2048]; if( checkflood ) { if( CheckFlood( ent, false ) ) return; } if( ent->r.client && ent->r.client->muted & 1 ) return; if( trap_Cmd_Argc() < 2 && !arg0 ) return; text[0] = 0; if( arg0 ) { Q_strncatz( text, trap_Cmd_Argv( 0 ), sizeof( text ) ); Q_strncatz( text, " ", sizeof( text ) ); Q_strncatz( text, trap_Cmd_Args(), sizeof( text ) ); } else { p = trap_Cmd_Args(); if( *p == '"' ) { if( p[strlen( p )-1] == '"' ) p[strlen( p )-1] = 0; p++; } Q_strncatz( text, p, sizeof( text ) ); } // don't let text be too long for malicious reasons if( strlen( text ) > 150 ) text[150] = 0; G_ChatMsg( NULL, ent, false, "%s", text ); }
/* * CG_Cmd_UseItem_f */ static void CG_Cmd_UseItem_f( void ) { if( !trap_Cmd_Argc() ) { CG_Printf( "Usage: 'use <item name>' or 'use <item index>'\n" ); return; } CG_UseItem( trap_Cmd_Args() ); }
/* * Cmd_Use_f * Use an inventory item */ static void Cmd_Use_f( edict_t *ent ) { gsitem_t *it; assert( ent && ent->r.client ); it = GS_Cmd_UseItem( &ent->r.client->ps, trap_Cmd_Args(), 0 ); if( !it ) return; G_UseItem( ent, it ); }
/* * Cmd_CvarInfo_f - Contains a cvar name and string provided by the client */ static void Cmd_CvarInfo_f( edict_t *ent ) { if( trap_Cmd_Argc() < 2 ) { G_PrintMsg( ent, "Cmd_CvarInfo_f: invalid argument count\n" ); return; } // see if the gametype script is requesting this info if( !GT_asCallGameCommand( ent->r.client, "cvarinfo", trap_Cmd_Args(), trap_Cmd_Argc() - 1 ) ) { // if the gametype script wasn't interested in this command, print the output to console G_Printf( "%s%s's cvar '%s' is '%s%s'\n", ent->r.client->netname, S_COLOR_WHITE, trap_Cmd_Argv( 1 ), trap_Cmd_Argv( 2 ), S_COLOR_WHITE ); } }
/* * Cmd_Give_f * * Give items to a client */ static void Cmd_Give_f( edict_t *ent ) { char *name; gsitem_t *it; int i; bool give_all; if( !sv_cheats->integer ) { G_PrintMsg( ent, "Cheats are not enabled on this server.\n" ); return; } name = trap_Cmd_Args(); if( !Q_stricmp( name, "all" ) ) give_all = true; else give_all = false; if( give_all || !Q_stricmp( trap_Cmd_Argv( 1 ), "health" ) ) { if( trap_Cmd_Argc() == 3 ) ent->health = atoi( trap_Cmd_Argv( 2 ) ); else ent->health = ent->max_health; if( !give_all ) return; } if( give_all || !Q_stricmp( name, "weapons" ) ) { for( i = 0; i < GS_MAX_ITEM_TAGS; i++ ) { it = GS_FindItemByTag( i ); if( !it ) continue; if( !( it->flags & ITFLAG_PICKABLE ) ) continue; if( !( it->type & IT_WEAPON ) ) continue; ent->r.client->ps.inventory[i] += 1; } if( !give_all ) return; } if( give_all || !Q_stricmp( name, "ammo" ) ) { for( i = 0; i < GS_MAX_ITEM_TAGS; i++ ) { it = GS_FindItemByTag( i ); if( !it ) continue; if( !( it->flags & ITFLAG_PICKABLE ) ) continue; if( !( it->type & IT_AMMO ) ) continue; Add_Ammo( ent->r.client, it, 1000, true ); } if( !give_all ) return; } if( give_all || !Q_stricmp( name, "armor" ) ) { ent->r.client->resp.armor = GS_Armor_MaxCountForTag( ARMOR_RA ); if( !give_all ) return; } if( give_all ) { for( i = 0; i < GS_MAX_ITEM_TAGS; i++ ) { it = GS_FindItemByTag( i ); if( !it ) continue; if( !( it->flags & ITFLAG_PICKABLE ) ) continue; if( it->type & ( IT_ARMOR|IT_WEAPON|IT_AMMO ) ) continue; ent->r.client->ps.inventory[i] = 1; } return; } it = GS_FindItemByName( name ); if( !it ) { name = trap_Cmd_Argv( 1 ); it = GS_FindItemByName( name ); if( !it ) { G_PrintMsg( ent, "unknown item\n" ); return; } } if( !( it->flags & ITFLAG_PICKABLE ) ) { G_PrintMsg( ent, "non-pickup (givable) item\n" ); return; } if( it->type & IT_AMMO ) { if( trap_Cmd_Argc() == 3 ) ent->r.client->ps.inventory[it->tag] = atoi( trap_Cmd_Argv( 2 ) ); else ent->r.client->ps.inventory[it->tag] += it->quantity; } else { if( it->tag && ( it->tag > 0 ) && ( it->tag < GS_MAX_ITEM_TAGS ) ) { if( GS_FindItemByTag( it->tag ) != NULL ) ent->r.client->ps.inventory[it->tag]++; } else G_PrintMsg( ent, "non-pickup (givable) item\n" ); } }
/* * Cmd_SayTeam_f */ static void Cmd_SayTeam_f( edict_t *ent ) { G_Say_Team( ent, trap_Cmd_Args(), true ); }
void M_Menu_Main_Statusbar_f( void ) { Q_strncpyz( main_menu_statusbar, trap_Cmd_Args(), sizeof( main_menu_statusbar ) ); Menu_SetStatusBar( &s_main_menu, main_menu_statusbar[0] ? main_menu_statusbar : NULL ); }
/* * Cmd_ConsoleSay_f */ static void Cmd_ConsoleSay_f( void ) { G_ChatMsg( NULL, NULL, false, "%s", trap_Cmd_Args() ); }