zThiago Postado Julho 4, 2020 Share Postado Julho 4, 2020 Sobre: O plugin permite enviar mensagens privadas a outros jogadores. Autor(a): DXBR bRuc3 Instruções: Para ativar o chat privado com um player basta digitar no chat /cp nome_do_player, você recebera uma mensagens de confirmação se o chat foi ativado ou não; Depois de ativado o chat privado com um player basta digitar as msgs normalmente no chat.. que serão destinadas ao player que vc ativou com o comando "/cp nome_do_player"; Para desativar o chat privado basta enviar o comando "/cp" no chat; Para checar se vc esta em chat com alguém digite o comando "/cp check"; Caso esteja em chat privado com alguém e queira entrar em chat privado com outro alguém. Não precisa sair do chat privado atual... basta digitar '/cp nome_do_player" que o plugin automaticamente desativa o chat privado com o player atual e ativa o chat privado com o novo player; Caso tenha duvidas com quem esteja em chat privado use o comando "/cp check"; O plugin suporta os comando !t !g !n para vocês colocarem cores nas msgs de alerta... possui ainda o sistema de ML onde você poderá inserir suas proprias mensagens (EDITE o arquivo "dxbr_chat_privado.txt" para colocar cor e/ou alterar as mensagens). .SMA: /* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #define PLUGIN "DXBR_ChatPrivado" #define VERSION "1.0" #define AUTHOR "DXBR bRuc3" #define PLUGIN_TAG "!g[Chat Privado] !n" #define CP_USERID_NOTFOUND 40 // controle de/para o chat privado new g_cpUserControl[ 33 ]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) // cvar para podermos ver quais servers estao usando o plugin no game tracker new ver[ 64 ]; format( ver, charsmax( ver ), "%s v%s", PLUGIN, VERSION ); register_cvar( "cp_version", ver, FCVAR_SERVER ); // hooks do chat register_clcmd( "say", "say_handler"); register_clcmd( "say_team", "say_handler"); // arquivo de frases register_dictionary( "dxbr_chat_privado.txt" ); } public say_handler( id ) { // comando /cp static chat_string[ 191 ]; // recebe o texto do chat read_args( chat_string, charsmax( chat_string ) ); //sanitiza a string vinda do chat remove_quotes( chat_string ); // remove os espacos do inicio de do fim trim( chat_string ); // joga tudo pra minuscula strtolower( chat_string ); // se chat inicia com o comando /cp usuario esta tentando usar o plugin if( chat_string[ 0 ] == '/' && chat_string[ 1 ] == 'c' && chat_string[ 2 ] == 'p' ) { // inicia o tratamento dos dados do chat cp_command( id, chat_string ); // faz com que o retorno nao seja enviado ao chat return PLUGIN_HANDLED_MAIN; } // nao tem o comando /cp // precisamos ver se usuario que esta digitando ja esta em chat privado // com alguem se tiver devemos enviar a msg para o usuario com id // armazenado no player que digitou o a msg else if( g_cpUserControl[ id ] != 0 ) { // envia a msg cp_send_message( id, chat_string ); // faz com que o retorno nao seja enviado ao chat return PLUGIN_HANDLED_MAIN; } return PLUGIN_CONTINUE; } public cp_command( id, const chat_string[] ) { // if digitou somente o comando /cp // provavelmente quer desativar o chat if( equali( chat_string, "/cp" )) cp_disable( id, true ); else if( equali( chat_string, "/cp check" ) ) { cp_check( id ); } // else digitou algo como // /cp qualquer coisa precisamos parsear o "qualquer coisa" // e ver se eh um nome de usuario valido else { static from_name[ 33 ], dest_name[ 33 ]; copy( dest_name, charsmax( dest_name ), chat_string[ 4 ] ); // nome do remetente //get_user_name( id, from_name, charsmax( from_name ) ); from_name = cp_get_user_name( id ); // nao podemos permitir iniciar um chat privado com ele mesmo if( equali( from_name,dest_name ) ) { cp_print( id, "CP_MSG_SELF", "" ); } else{ new dest_id = get_userid_from_name( dest_name ); // if if( dest_id == 0 || !is_user_connected( dest_id )) { cp_print( id, "CP_USER_NOTFOUND", dest_name ); } // usuario esta conectado else { cp_enable( id, dest_id, dest_name ); } } } } // mostra para o usuario com quem ele esta falando // no chat privado naquele momento. public cp_check( id ){ if( g_cpUserControl[ id ] == 0 ) cp_print( id, "CP_CHECK_1", "" ); else if( g_cpUserControl[ id ] == CP_USERID_NOTFOUND ) cp_print( id, "CP_USER_OFFLINE", "" ); else cp_print( id, "CP_CHECK_2", cp_get_user_name( g_cpUserControl[ id ] ) ); } // funcao auxiliar que nos retorna o nome // do player com o id passado public cp_get_user_name( id ) { new name[ 33 ]; get_user_name( id, name, charsmax( name ) ); return name; } // envia msg privada public cp_send_message( id, const msg[] ) { new dest_name[ 33 ], from_name[ 33 ]; from_name = cp_get_user_name( id ); dest_name = cp_get_user_name( g_cpUserControl[ id ] ); //get_user_name( id, from_name, charsmax( from_name ) ); //get_user_name( g_cpUserControl[ id ], dest_name, charsmax( dest_name ) ); if( is_user_bot( g_cpUserControl[ id ] ) ){ // notifica o remetente cp_print( id, "CP_MSG_SENT", dest_name ); // simula uma resposta do bot client_print_color( id, "%s !t%s !n%s", PLUGIN_TAG, dest_name, "Hi! I receive you private msg! This plugins sucks!" ); } else if( is_user_connected( g_cpUserControl[ id ] ) ) { // manda a mensagem para o destinatario client_print_color( g_cpUserControl[ id ], "%s !t%s !n%s", PLUGIN_TAG, from_name, msg ); // notifica o remetente cp_print( id, "CP_MSG_SENT", dest_name ); } else{ cp_print( id, "CP_USER_OFFLINE", "" ); } } // metodo auxiliar para obtermos o id de um player // pelo nome passado // retorna o id do usuario em caso de sucesso // ou 0 em caso de nao encontrar public get_userid_from_name( const pname[] ) { new players[ 32 ], i, totalPlayers, player, name[ 33 ]; new id = 0; // obtem os ids dos players get_players( players, totalPlayers ); for( i = 0; i < totalPlayers; i++ ) { // id do player player = players[ i ]; // nome do cabra de destino get_user_name( player, name, charsmax( name ) ); // se os nome coincidem achamos o cabra if( equali( pname, name ) ){ id = player; break; } } return id; } // habilita o chat privado public cp_enable( id_from, id_dest, const dest_name[] ) { g_cpUserControl[ id_from ] = id_dest; log_amx( "Nome eh %s", dest_name ); // informa ao usuario q o chat foi ativado cp_print( id_from, "CP_ENABLED", dest_name ); } // desabilita o chat privado public cp_disable( id, bool:print ) { g_cpUserControl[ id ] = 0; if( print == true ) cp_print( id, "CP_DISABLED", "" ); } public client_putinserver( id ) { cp_disable( id, false ); } public client_disconnect( id ) { // deixa o slot que ele ocupava no chat como livre cp_disable( id, false ); new i, player; // percorre toda a lista de players // e ve se tem alguem que estava falando // com o player que saiu no chat privado // e seta um id invalido para podermos avisa-lo // na proxima vez que ele tentar falar alguma coisa for( i = 0; i < 33; i++ ) { player = g_cpUserControl[ i ]; if( player == id ) g_cpUserControl[ i ] = CP_USERID_NOTFOUND; } } public cp_print( id, const msg_lang_key[], const param_replace[] ) { new msg[ 191 ]; if( strlen( param_replace ) == 0 ) format( msg, charsmax( msg ), "%L", LANG_SERVER, msg_lang_key ); else format( msg, charsmax( msg ), "%L", LANG_SERVER, msg_lang_key, param_replace ); // 0 indica mensagem para todos no server if( id == 0 ) { new playersIDList[ 32 ], i, totalPlayers, id; // obtem os ids dos players menos os bots get_players( playersIDList, totalPlayers, "c"); for( i = 0; i < totalPlayers; i++ ) { id = playersIDList[ i ]; if( is_user_connected( id) ) client_print_color( id, "%s %s", PLUGIN_TAG, msg ); } } else if( is_user_connected( id ) ) client_print_color( id, "%s %s", PLUGIN_TAG, msg ); } stock client_print_color(id, const text[], any:...) { new g_iMsgidSayText; g_iMsgidSayText = get_user_msgid( "SayText" ); new szMsg[191]; vformat(szMsg, charsmax(szMsg), text, 3); replace_all(szMsg, charsmax(szMsg), "!g","^x04"); replace_all(szMsg, charsmax(szMsg), "!n","^x01"); replace_all(szMsg, charsmax(szMsg), "!t","^x03"); message_begin( MSG_ONE_UNRELIABLE, g_iMsgidSayText, _, id ); write_byte( id ); write_string( szMsg ); message_end(); } Txt: (dxbr_chat_privado.txt) Citar [en] CP_ENABLED = The Private Chat with %s is now enabled! CP_DISABLED = Now you can talk with anyone on server. CP_USER_NOTFOUND = Currently there is no player with name %s in the server. CP_MSG_SELF = You cannot send private chat to yourself CP_MSG_SENT = The message to %s was successfully sent! CP_USER_OFFLINE = Sorry, but destination player is disconnected CP_CHECK_1 = You not active Private Message with nobody CP_CHECK_2 = Your Private Chat is enabled for %s! Enjoy!! [bp] CP_ENABLED = Agora o Chat Privado com %s esta ativado! CP_DISABLED = Agora voce pode falar com todos normalmente. CP_USER_NOTFOUND = Usuario com o nome %s nao encontrado no servidor CP_MSG_SELF = Voce nao pode enviar uma mensagem privada para voce mesmo! CP_MSG_SENT = Mensagem para %s enviada com sucesso! CP_USER_OFFLINE = Desculpe mas o player que voce estava falando nao esta mais online.. CP_CHECK_1 = Atualmente voce nao esta falando privado com ninguem CP_CHECK_2 = Seu Chat Privado esta ativa com %s! Bom chat!! Instalação: Copile o texto .SMA e depois copilado o seu plugin, vá até a pasta plugins do CS ou painel do seu servidor. Steam: C:\Program Files (x86)\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\plugins E no-steam: C:\Program Files (x86)\Valve\cstrike\addons\amxmodx\plugins Depois de localizar a pasta "plugins" pegue o plugin que você copilou ".amxx" e jogue dentro da pasta. Agora para ligar o plugin localize a pasta: "Configs", Geralmente em: C:\Program Files (x86)\Valve\cstrike\addons\amxmodx\configs e abra o arquivo plugins.ini Vá até a ultima linha e adicione o nome do seu plugin. Ex: PrivateChat.amxx ; Descrição do plugin E para desativar o plugin adicione ";" na frente da linha. O arquivo .txt, cole em: Steam: C:\Program Files (x86)\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\data\lang E no-steam: C:\Program Files (x86)\Valve\cstrike\addons\amxmodx\data/lang Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe da Conversa
Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.