//--------------------------------------------------------------------------------- // Purpose: Say string to single player in center of screen //--------------------------------------------------------------------------------- void CSayToPlayer ( player_t *player_ptr, const char *fmt, ... ) { va_list argptr; char tempString[1024]; va_start ( argptr, fmt ); vsnprintf( tempString, sizeof(tempString), fmt, argptr ); va_end ( argptr ); MRecipientFilter mrf; mrf.MakeReliable(); mrf.AddPlayer(player_ptr->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(tempString); 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(tempString); engine->MessageEnd(); #endif }
bool CHalfLife2::TextMsg(int client, int dest, const char *msg) { #ifndef USE_PROTOBUF_USERMESSAGES bf_write *pBitBuf = NULL; #endif cell_t players[] = {client}; if (dest == HUD_PRINTTALK) { const char *chat_saytext = g_pGameConf->GetKeyValue("ChatSayText"); /* Use SayText user message instead */ if (chat_saytext != NULL && strcmp(chat_saytext, "yes") == 0) { char buffer[253]; ke::SafeSprintf(buffer, sizeof(buffer), "%s\1\n", msg); #if SOURCE_ENGINE == SE_CSGO CCSUsrMsg_SayText *pMsg; if ((pMsg = (CCSUsrMsg_SayText *)g_UserMsgs.StartProtobufMessage(m_SayTextMsg, players, 1, USERMSG_RELIABLE)) == NULL) { return false; } pMsg->set_ent_idx(0); pMsg->set_text(buffer); pMsg->set_chat(false); #else if ((pBitBuf = g_UserMsgs.StartBitBufMessage(m_SayTextMsg, players, 1, USERMSG_RELIABLE)) == NULL) { return false; } pBitBuf->WriteByte(0); pBitBuf->WriteString(buffer); pBitBuf->WriteByte(1); #endif g_UserMsgs.EndMessage(); return true; } } #if SOURCE_ENGINE == SE_CSGO CCSUsrMsg_TextMsg *pMsg; if ((pMsg = (CCSUsrMsg_TextMsg *)g_UserMsgs.StartProtobufMessage(m_MsgTextMsg, players, 1, USERMSG_RELIABLE)) == NULL) { return false; } // Client tries to read all 5 'params' and will crash if less pMsg->set_msg_dst(dest); pMsg->add_params(msg); pMsg->add_params(""); pMsg->add_params(""); pMsg->add_params(""); pMsg->add_params(""); #else if ((pBitBuf = g_UserMsgs.StartBitBufMessage(m_MsgTextMsg, players, 1, USERMSG_RELIABLE)) == NULL) { return false; } pBitBuf->WriteByte(dest); pBitBuf->WriteString(msg); #endif g_UserMsgs.EndMessage(); return true; }
//--------------------------------------------------------------------------------- // Purpose: Write Text to chat area //--------------------------------------------------------------------------------- void UTIL_SayText(int colour, MRecipientFilter *mrf, const char *say_text) { #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(3); // Say area #else msg_buffer = engine->UserMessageBegin(mrf, text_message_index ); // Show TextMsg type user message msg_buffer->WriteByte(3); // Say area if ((gpManiGameType->IsGameType(MANI_GAME_CSS))) { switch (colour) { case ORANGE_CHAT:break; case GREY_CHAT: msg_buffer->WriteByte(-1); break; case LIGHT_GREEN_CHAT: msg_buffer->WriteByte(3);break; // Light Green case GREEN_CHAT: msg_buffer->WriteByte(4);break; // Darker Green default :break; } } #endif /* \x01 = White \x02 = Dark Red \x03 = White \x04 = Dark Green \x05 = Moss Green \x06 = Lime Green \x07/8/9 = Light Red */ if ((gpManiGameType->IsGameType(MANI_GAME_CSGO))) { //switch (colour) //{ // case WHITE_TEXT: break; // case WHITE2_TEXT:break; // case RED_TEXT: msg_buffer->WriteByte(2); break; // case DARK_GREEN_TEXT: msg_buffer->WriteByte(4);break; // Light Green // case MOSS_GREEN_TEXT: msg_buffer->WriteByte(5);break; // Light Green // case LIME_GREEN_TEXT: msg_buffer->WriteByte(6);break; // Light Green // case LIGHT_RED_TEXT: msg_buffer->WriteByte(7);break; // Darker Green // default :break; //} } #if defined ( GAME_CSGO ) // Client tries to read all 5 'params' and will crash if less msg->add_params(say_text); msg->add_params(""); msg->add_params(""); msg->add_params(""); msg->add_params(""); engine->SendUserMessage(*mrf, CS_UM_TextMsg, *msg); delete msg; #else msg_buffer->WriteString(say_text); engine->MessageEnd(); #endif }
//--------------------------------------------------------------------------------- // Purpose: Say admin string to all //--------------------------------------------------------------------------------- void AdminCSayToAll ( player_t *player, int anonymous, const char *fmt, ... ) { va_list argptr; char tempString[1024]; char admin_final_string[2048]; char non_admin_final_string[2048]; bool found_player = false; bool found_admin = false; va_start ( argptr, fmt ); vsnprintf( tempString, sizeof(tempString), fmt, argptr ); va_end ( argptr ); player_t server_player; if (!player) { snprintf(admin_final_string, sizeof (admin_final_string), "(CONSOLE) : %s", tempString); snprintf(non_admin_final_string, sizeof (non_admin_final_string), "(CONSOLE) %s", tempString); } else { snprintf(admin_final_string, sizeof (admin_final_string), "(ADMIN) %s: %s", player->name, tempString); snprintf(non_admin_final_string, sizeof (non_admin_final_string), "(ADMIN) %s", tempString); } OutputToConsole(NULL, "%s\n", admin_final_string); if (anonymous == 1) { MRecipientFilter mrfadmin; MRecipientFilter mrf; mrf.MakeReliable(); mrfadmin.MakeReliable(); for (int i = 1; i <= max_players; i++) { bool is_admin; is_admin = false; server_player.index = i; if (!FindPlayerByIndex(&server_player)) { continue; } if (server_player.is_bot) { continue; } is_admin = gpManiClient->HasAccess(server_player.index, ADMIN, ADMIN_BASIC_ADMIN); if (is_admin) { found_admin = true; mrfadmin.AddPlayer(i); if (!(gpManiGameType->IsGameType(MANI_GAME_CSS) || gpManiGameType->IsGameType(MANI_GAME_CSGO))) { OutputToConsole(&server_player, "%s\n", admin_final_string); } } else { found_player = true; mrf.AddPlayer(i); if (!(gpManiGameType->IsGameType(MANI_GAME_CSS) || gpManiGameType->IsGameType(MANI_GAME_CSGO))) { OutputToConsole(&server_player, "%s\n", non_admin_final_string); } } } if (found_player) { #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(non_admin_final_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(non_admin_final_string); engine->MessageEnd(); #endif } if (found_admin) { #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(admin_final_string); msg->add_params(""); msg->add_params(""); msg->add_params(""); msg->add_params(""); engine->SendUserMessage(mrfadmin, CS_UM_TextMsg, *msg); delete msg; #else msg_buffer = engine->UserMessageBegin( &mrfadmin, text_message_index ); // Show TextMsg type user message msg_buffer->WriteByte(4); // Center area msg_buffer->WriteString(admin_final_string); engine->MessageEnd(); #endif } } else { 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; if (!(gpManiGameType->IsGameType(MANI_GAME_CSS) || gpManiGameType->IsGameType(MANI_GAME_CSGO))) { OutputToConsole(&server_player, "%s\n", admin_final_string); } } if (found_player) { MRecipientFilter mrf; mrf.MakeReliable(); mrf.AddAllPlayers(max_players); #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(admin_final_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(admin_final_string); engine->MessageEnd(); #endif } } }
//--------------------------------------------------------------------------------- // 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 }