Jump to content
ALUGUE SEU SERVIDOR DE CS 1.6 DE ALTA QUALIDADE ×

Plugin - Chat Privado


zThiago

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...