//--------------------------------------------------------------------------------- // Purpose: Say to all //--------------------------------------------------------------------------------- void SayToAll(const int colour, bool echo, const char *fmt, ...) { va_list argptr; char tempString[1024]; player_t server_player; bool found_player = false; if (war_mode) { return; } va_start ( argptr, fmt ); vsnprintf( tempString, sizeof(tempString), fmt, argptr ); va_end ( argptr ); MRecipientFilter mrf; mrf.MakeReliable(); mrf.RemoveAllRecipients(); if (echo) OutputToConsole(NULL, "%s\n", tempString); for (int i = 1; i <= max_players; i++) { server_player.index = i; if (!FindPlayerByIndex(&server_player)) { continue; } if (server_player.is_bot) { continue; } found_player = true; mrf.AddPlayer(i); if (!(gpManiGameType->IsGameType(MANI_GAME_CSS) || gpManiGameType->IsGameType(MANI_GAME_CSGO))) { if (echo) OutputToConsole(&server_player, "%s\n", tempString); } } if (found_player) { UTIL_SayText(colour, &mrf, tempString); } }
//--------------------------------------------------------------------------------- // Purpose: Say string to specific teams //--------------------------------------------------------------------------------- void SayToTeam ( const int colour, bool ct_side, bool t_side, bool spectator, const char *fmt, ... ) { va_list argptr; char tempString[1024]; if (war_mode) { return; } va_start ( argptr, fmt ); vsnprintf( tempString, sizeof(tempString), fmt, argptr ); va_end ( argptr ); MRecipientFilter mrf; player_t recipient_player; mrf.MakeReliable(); mrf.RemoveAllRecipients(); for (int i = 1; i <= max_players; i++) { recipient_player.index = i; if (!FindPlayerByIndex (&recipient_player)) { continue; } if (recipient_player.is_bot) { continue; } if (ct_side) { if (recipient_player.team == TEAM_B) { mrf.AddPlayer(i); } } if (t_side) { if (recipient_player.team == TEAM_A) { mrf.AddPlayer(i); } } if (gpManiGameType->IsSpectatorAllowed() && spectator) { if (recipient_player.team == gpManiGameType->GetSpectatorIndex()) { mrf.AddPlayer(i); } } } OutputToConsole(NULL, "%s\n", tempString); UTIL_SayText(colour, &mrf, tempString); }
//--------------------------------------------------------------------------------- // Purpose: Say to Dead //--------------------------------------------------------------------------------- void SayToDead(const int colour, const char *fmt, ...) { va_list argptr; char tempString[1024]; player_t recipient_player; bool found_player = false; if (war_mode) { return; } va_start ( argptr, fmt ); vsnprintf( tempString, sizeof(tempString), fmt, argptr ); va_end ( argptr ); MRecipientFilter mrf; mrf.MakeReliable(); mrf.RemoveAllRecipients(); OutputToConsole(NULL, "%s\n", tempString); for (int i = 1; i <= max_players; i++) { recipient_player.index = i; if (!FindPlayerByIndex(&recipient_player)) { continue; } if (recipient_player.is_bot) { continue; } // If player is spectator if (gpManiGameType->IsSpectatorAllowed() && recipient_player.team == gpManiGameType->GetSpectatorIndex()) { mrf.AddPlayer(i); found_player = true; if (!(gpManiGameType->IsGameType(MANI_GAME_CSS) || gpManiGameType->IsGameType(MANI_GAME_CSGO))) { OutputToConsole(&recipient_player, "%s\n", tempString); } continue; } if (recipient_player.is_dead) { mrf.AddPlayer(i); found_player = true; if (!(gpManiGameType->IsGameType(MANI_GAME_CSS) || gpManiGameType->IsGameType(MANI_GAME_CSGO))) { OutputToConsole(&recipient_player, "%s\n", tempString); } continue; } } if (found_player) { UTIL_SayText(colour, &mrf, tempString); } }
//--------------------------------------------------------------------------------- // Purpose: Say from player only to admin //--------------------------------------------------------------------------------- void SayToAdmin ( const int colour, player_t *player, const char *fmt, ... ) { va_list argptr; char tempString[1024]; char final_string[2048]; bool found_player = false; player_t recipient_player; if (war_mode) { return; } va_start ( argptr, fmt ); vsnprintf( tempString, sizeof(tempString), fmt, argptr ); va_end ( argptr ); MRecipientFilter mrf; mrf.MakeReliable(); mrf.RemoveAllRecipients(); snprintf(final_string, sizeof (final_string), "(TO ADMIN) %s: %s", player->name, tempString); OutputToConsole(NULL, "%s\n", final_string); for (int i = 1; i <= max_players; i++) { recipient_player.index = i; if (!FindPlayerByIndex (&recipient_player)) { continue; } if (recipient_player.is_bot) { continue; } if (player->index == i) { mrf.AddPlayer(i); found_player = true; // OutputToConsole(recipient_player.entity, "%s\n", final_string); } else { if (gpManiClient->HasAccess(recipient_player.index, ADMIN, ADMIN_BASIC_ADMIN)) { // This is an admin player mrf.AddPlayer(i); found_player = true; // OutputToConsole(recipient_player.entity, "%s\n", final_string); } } } if (found_player) { UTIL_SayText(colour, &mrf, final_string); } }
//--------------------------------------------------------------------------------- // Purpose: Show hud message for kill //--------------------------------------------------------------------------------- static void ShowQuakeSound (player_t *attacker, player_t *victim, int mode, char *fmt, ...) { va_list argptr; char temp_string[256]; va_start ( argptr, fmt ); vsnprintf( temp_string, sizeof(temp_string), fmt, argptr ); va_end ( argptr ); MRecipientFilter mrf; if (mode == 1) { mrf.RemoveAllRecipients(); mrf.MakeReliable(); // All players must see for (int i = 1; i <= max_players; i++) { player_settings_t *player_settings; player_t sound_player; sound_player.index = i; if (!FindPlayerByIndex(&sound_player)) continue; if (sound_player.is_bot) continue; player_settings = FindPlayerSettings(&sound_player); if (player_settings && player_settings->quake_sounds) { mrf.AddPlayer(sound_player.index); } } } else if (mode == 2) { player_settings_t *player_settings; player_settings = FindPlayerSettings(attacker); if (player_settings && player_settings->quake_sounds) { mrf.AddPlayer(attacker->index); } player_settings = FindPlayerSettings(victim); if (player_settings && player_settings->quake_sounds) { mrf.AddPlayer(victim->index); } } else if (mode == 3) { player_settings_t *player_settings; player_settings = FindPlayerSettings(attacker); if (player_settings && player_settings->quake_sounds) { // Attacker sees it. mrf.AddPlayer(attacker->index); } } else if (mode == 4) { player_settings_t *player_settings; player_settings = FindPlayerSettings(victim); if (player_settings && player_settings->quake_sounds) { // Victim sees it. mrf.AddPlayer(victim->index); } } #if defined ( GAME_CSGO ) CCSUsrMsg_TextMsg *msg = (CCSUsrMsg_TextMsg *)g_Cstrike15UsermessageHelpers.GetPrototype(CS_UM_TextMsg)->New(); // Show TextMsg type user message msg->set_msg_dst(4); // Center area // Client tries to read all 5 'params' and will crash if less msg->add_params(temp_string); msg->add_params(""); msg->add_params(""); msg->add_params(""); msg->add_params(""); engine->SendUserMessage(mrf, CS_UM_TextMsg, *msg); delete msg; #else msg_buffer = engine->UserMessageBegin( &mrf, text_message_index ); // Show TextMsg type user message msg_buffer->WriteByte(4); // Center area msg_buffer->WriteString(temp_string); engine->MessageEnd(); #endif }