Ir para conteúdo
BAIXAR NOVO COUNTER-STRIKE 1.6 CLASSIC FULL GRÁTIS ATUALIZADO 2024 ×

Plugin - Chat Privado


zThiago

Posts Recomendados

  • Sobre: O plugin permite enviar mensagens privadas a outros jogadores.
  • Autor(a): DXBR bRuc3
  • Instruções:
  1. 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;
  2. 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";
  3. Para desativar o chat privado basta enviar o comando "/cp" no chat;
  4. Para checar se vc esta em chat com alguém digite o comando "/cp check";
  5. 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;
  6. Caso tenha duvidas com quem esteja em chat privado use o comando "/cp check";
  7. 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
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...