Home Newest Hot Active Unanswered Views Votes Tags Rank
 
bRuc3

[PLUGIN]Chat Privado


RESUMO
Bom Galera este é meu segundo plugin.. e espero que gostem..
Com este plugin é possível enviar [b]msgs privadas [/b]no chat do cs...

INSTRUÇÕES DE USO
Para ativar o chat privado com um player basta digitar no chat /cp nome_do_player, vc recebera uma msg de confirmação se o chat foi ativado ou nao.
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 commando /cp nome_do_player

Para desativar o chat privado basta enviar o comando /cp no chat...
Para checar se vc esta em chat com alguem digite o comando /cp check

Caso esteje em chat privado com alguem e queira entrar em chat privado com outro alguem.. nao 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 voces colocarem cores nas msgs de alerta... possui ainda o sistema de ML onde vc poderá inserir suas proprias mensagens (EDITE o arquivo dxbr_chat_privado.txt para colocar cor e/ou alterar as msgs)

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();
}

dxbr_chat_privado.txt

[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!!

GuruQA
GuruQA
 
 
bRuc3

[PLUGIN]Ultimate Reset Frags

Alves

Quero editar esse plugin Steam Prefix

Anderson

Amx Mod X comandos

lukaazkmze

Alguem me ajuda com esse erro?

Anderson

Chat + Radio + Xadrez - phpBB3

Anderson

Chat Prosilver - phpBB 3.1

thiagomito

Erro no plugin?

Anderson

div em cima do iframe ou embed

Anderson

amx_pausecfg - AMXX

thiagomito

PLUGIN MUITO BOM PARA PLAYER SEM OBJETIVO!