Discord sunucumuz açılmıştır, hepinizi bekleriz

https://discord.gg/43gGDQe6tS

Admin Chat Color + Tag Eklenti Hatası

Eklenti sorunlarınız ve özel eklenti istekleriniz

Moderatör: Moderatörler


Konu Sahibi
HepYekten
Mesajlar: 8
Kayıt: Cmt May 25, 2019 8:12 pm

Admin Chat Color + Tag Eklenti Hatası

Mesaj gönderen HepYekten »

Eklenti Sorunsuz çalışıyor fakat renkler bazen birbirine giriyor. bazen tek renk oluyor

eklenti çalışma mantığı aşağıdaki gibidir.
tag.ini içeriği
// Yetki, TAG ISMI, Tagrengi, nickrengi, say rengi
"bi" "[SKY]" "white" "red" "blue"

Kod: Tümünü seç

#include <amxmodx>
#include <amxmisc>

#define PLUGIN 		"Admin taglar"
#define AUTHOR 		"Odin"
 

#define ACCESS_LEVEL	ADMIN_CHAT
#define ADMIN_LISTEN	ADMIN_BAN

new message[192]
new sayText
new teamInfo
new maxPlayers

//new g_MessageColor
//new g_NameColor
//new g_AdminListen

new strName[191]
new strText[191]
new alive[11]
 
new const flag_auths[32][32]
new const tags_names[32][32]
new const tags_color[32][32]
new const name_color[32][32]
new const chat_color[32][32]

new taglar_admingrup_opt_tags
new taglar_admingrup_opt_team
new taglar_admingrup_opt_root 
new taglar_admingrup_opt_news
new taglar_admingrup_opt_free
new taglar_admingrup_opt_deat
new taglar_admingrup_tdisable

public plugin_init()
{
	register_plugin (PLUGIN, AMXX_VERSION_STR, AUTHOR)
	
	//g_MessageColor = register_cvar ("amx_color", "2") // Message colors: [1] Default Yellow, [2] Green, [3] White, [4] Blue, [5] Red

	//g_NameColor = register_cvar ("amx_namecolor", "6") // Name colors: [1] Default Yellow, [2] Green, [3] White, [4] Blue, [5] Red, [6] Team-color
	
	//g_AdminListen = register_cvar ("amx_listen", "1") // Set whether admins see or not all messages (Alive, dead and team-only)
	
	taglar_admingrup_opt_tags = register_cvar ("taglar_admingrup_opt_tags", "1")  // Oyuncularin isimlerinin basinda yetki TAG ini goster
	taglar_admingrup_opt_team = register_cvar ("taglar_admingrup_opt_team", "0")  // Oyuncularin isimlerinin basinda takim TAG ini goster
	taglar_admingrup_opt_root = register_cvar ("taglar_admingrup_opt_root", "1")  // Adminler tum yasizmalari okuyabilir
	taglar_admingrup_opt_news = register_cvar ("taglar_admingrup_opt_news", "0")  // Server a girenler, admin değil ise ilk 120sn mesaj yazamazlar
	taglar_admingrup_opt_free = register_cvar ("taglar_admingrup_opt_free", "1")  // [0]yasak, [1] Serbest, [2] Sadece adminler gorur
	taglar_admingrup_opt_deat = register_cvar ("taglar_admingrup_opt_deat", "1")  // Ölülerin yazabilmesi
	taglar_admingrup_tdisable = register_cvar ("taglar_admingrup_tdisable", "0")  // Takım mesajında {TAKIM} yazisini gizle 
	
	sayText = get_user_msgid ("SayText")
	teamInfo = get_user_msgid ("TeamInfo")
	maxPlayers = get_maxplayers()
	
	register_message (sayText, "avoid_duplicated")
	
	register_clcmd ("say", "hook_say")
	register_clcmd ("say_team", "hook_teamsay")
	
	load_colors()
}

public avoid_duplicated (msgId, msgDest, receiver){
	return PLUGIN_HANDLED
}

public hook_say(id){
	read_args (message, 191)
	remove_quotes (message) 
	func_say(id,message,0)  
}

public hook_teamsay(id){
	read_args (message, 191)
	remove_quotes (message)
	func_say(id,message,1)  
}

public func_say(id,message[],protokol){
	
	replace_all(message,190,"^x01","")
	replace_all(message,190,"^x02","")
	replace_all(message,190,"^x03","")
	replace_all(message,190,"^x04","")
	replace_all(message,190,"^x05","")
	replace_all(message,190,"^x06","")
	
	if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, "")) // Ignores Admin Hud Messages, Admin Slash commands, 
		return PLUGIN_CONTINUE
		
	new str_name[32]
	get_user_name (id, str_name, 31)
	
	if(is_user_alive(id)){
		alive = "^x01"
	}else{
		alive = "^x01*OLU* "
	}
	
	static color[10]
	
	new uindex = user_auth_index(id)
	new c_tags = func_color_tags(uindex)
	new c_name = func_color_name(uindex)
	new c_chat = func_color_chat(uindex) 
	
	//client_print(0,print_chat,"Tag: %d | Name: %d | Chat: %d",c_tags,c_name,c_chat);
	
	
	new team[32],str_team[64],to_team[16]
	
	get_user_team(id,team,31)
	if(get_pcvar_num(taglar_admingrup_opt_tags)){ 
		switch (c_tags){
			case 1:{format (str_team, 63, "");}	
			case 2:{format (str_team, 63, "^x04");}
			case 3:
				{
					color = "SPECTATOR"
					format (str_team, 63, "^x03")
				}
				
			case 4:
				{
					color = "CT"
					format (str_team, 63, "^x03")
				}
			case 5:
				{
					color = "TERRORIST"
					format (str_team, 63, "^x03")
				}
						
			case 6:
				{
					get_user_team (id, color, 9)					
					format (str_team, 63, "^x03")
				}
		}
		
		format (str_team, 63, "%s%s ",str_team,tags_names[uindex]) 
	}	

	if(get_pcvar_num(taglar_admingrup_opt_team)){ 
		if(equal(team,"TERRORIST")){ format (str_team, 63, "%s(Terorist) ",str_team); }   
		if(equal(team,"CT"))           { format (str_team, 63, "%s(Counter-Terorist) ",str_team); }   
		if(equal(team,"SPECTATOR")){ format (str_team, 63, "%s(Izleyici) ",str_team); }   
	}
	if(protokol){
		if(!get_pcvar_num(taglar_admingrup_tdisable)){
			to_team = "{TAKIM} ";
		}
	}
	 
	
	format (str_team, 63, "%s%s",str_team,to_team)
 
// Name 		
	switch (c_name){
		case 1:{format (strName, 191, "%s%s%s", alive,str_team,str_name);}

		case 2:{format (strName, 191, "%s%s^x04%s", alive,str_team,str_name);}
						
		case 3:
			{
				color = "SPECTATOR"
				format (strName, 191, "%s%s^x03%s", alive,str_team,str_name);
			}
			
		case 4:
			{
				color = "CT"
				format (strName, 191, "%s%s^x03%s", alive,str_team,str_name); 
			}
		case 5:
			{
				color = "TERRORIST"
				format (strName, 191, "%s%s^x03%s", alive,str_team,str_name);
			}
					
		case 6:
			{
				get_user_team (id, color, 9)					
				format (strName, 191, "%s%s^x03%s", alive,str_team,str_name);
			}
	}
	
// Mesaj
	switch (c_chat){
		case 1:	// Yellow
			format (strText, 191, "%s", message)
			
		case 2:	// Green
			format (strText, 191, "^x04%s", message)
			
		case 3:	// White
			{
				copy (color, 9, "SPECTATOR")
				format (strText, 191, "^x03%s", message)
			}
			
		case 4:	// Blue
			{
				copy (color, 9, "CT")
				format (strText, 191, "^x03%s", message)
			}
			
		case 5:	// Red
			{
				copy (color, 9, "TERRORIST")
				format (strText, 191, "^x03%s", message)
			}
		default:
			format (strText, 191, "%s", message)
	}
 
 	new x_mute[10];
	get_user_info(id, "x_mute", x_mute, 9);
	
	if(get_pcvar_num(taglar_admingrup_opt_free) == 0 && uindex == 30 || equal(x_mute , "403")){return PLUGIN_CONTINUE;} // Eger oyuncuya konusmak yasaksa ve bu kisi admin degilse 
	
	format (message, 191, "%s^x01 : %s", strName, strText)	 
	
	
	sendMessage (color, id,protokol)	// Sends the colored message
	return PLUGIN_HANDLED
	
}

public sendMessage (color[], id,protokol){
	// taglar_admingrup_opt_user 
	// [1] Oyuncuya yazmak serbest,
	// [2] Oyuncuya yazmak serbest fakat sadece adminler gorur,
	// [3] Top15 e girmis kisiler herkese yazabilir
	new gorebilir = 0

	for (new player = 1; player < maxPlayers; player++){ 
		if (!is_user_connected(player)){continue;} // oyuncu yoksa iptal
		gorebilir = 1
		new karar = 0
		// Yazar admin ise
		if(  user_auth_index(id) != 30 && !protokol || id == player){
			karar = 1 
		}
		
		// Eger adminler tum mesajlari okuyorsa ve bu kisi adminse mesaji gonder
		if(get_pcvar_num(taglar_admingrup_opt_root)  && user_auth_index(player) != 30 ){
			karar = 1 
		}
		
		
		// 120 Sn yazamazlar | adminler yazabilir.
		if(get_pcvar_num(taglar_admingrup_opt_news) && !karar){
			if(get_user_time(player) < get_pcvar_num(taglar_admingrup_opt_news) ){ 
				gorebilir = 0
				karar = 1
			}
		}
		
		//
		if(user_auth_index(id) == 30){ //YAZAN KİŞİ OYUNCU
			if(get_pcvar_num(taglar_admingrup_opt_free) == 0 && !karar){ 
				gorebilir = 0
				karar = 1
			}
			if(user_auth_index(player) == 30){ // HEDEF OYUNCU İSE
				if(get_pcvar_num(taglar_admingrup_opt_free) == 2   && !karar){ 
					gorebilir = 0
					karar = 1
				}
			}
		}
		
		if(user_auth_index(id) == 30 && user_auth_index(player) == 30 && get_pcvar_num(taglar_admingrup_opt_deat) == 0){
			if (!is_user_alive(id) && is_user_alive(player)){
				gorebilir = 0
				karar = 1
			}
		}
		
		if(protokol == 1){ 
			if(get_user_team(id) != get_user_team(player)  && !karar){ 
				gorebilir = 0
				karar = 1
			} 
		}
		 
		
		if(gorebilir == 1){
			write_chat_text(id,player,color,message) 
			
		}
		
	}
	return PLUGIN_CONTINUE
}

public write_chat_text(yazar,okuyucu,renk[],mesaj[]){
	new teamName[10]
	get_user_team (okuyucu, teamName, 9)
	changeTeamInfo (okuyucu, renk)	
	writeMessage (okuyucu, message)	
	changeTeamInfo (okuyucu, teamName)
}

public changeTeamInfo (player, team[])
{
	message_begin (MSG_ONE, teamInfo, _, player)	// Tells to to modify teamInfo (Which is responsable for which time player is)
	write_byte (player)				// Write byte needed
	write_string (team)				// Changes player's team
	message_end()					// Also Needed
}

public writeMessage (player, message[])
{
	message_begin (MSG_ONE, sayText, {0, 0, 0}, player)	// Tells to modify sayText (Which is responsable for writing colored messages)
	write_byte (player)					// Write byte needed
	write_string (message)					// Effectively write the message, finally, afterall
	message_end () // Needed as always
	
}

public func_color_tags(ix){ 
	if(equal(tags_color[ix],"normal")){return 1;} 
	if(equal(tags_color[ix],"green"))  {return 2;}
	if(equal(tags_color[ix],"white"))  {return 3;}
	if(equal(tags_color[ix],"blue"))  {return 4;}
	if(equal(tags_color[ix],"red"))  {return 5;}
	if(equal(tags_color[ix],"team"))  {return 6;}
	return 1;
}

public func_color_name(ix){ 
	// Name colors: [1] Default Yellow, [2] Green, [3] White, [4] Blue, [5] Red, [6] Team-color
	if(equal(name_color[ix],"normal")){return 1;}
	if(equal(name_color[ix],"green"))  {return 2;}
	if(equal(name_color[ix],"white"))  {return 3;}
	if(equal(name_color[ix],"blue"))  {return 4;}
	if(equal(name_color[ix],"red"))  {return 5;}
	if(equal(name_color[ix],"team"))  {return 6;}
	return 6;
}

public func_color_chat(ix){ 
	// Name colors: [1] Default Yellow, [2] Green, [3] White, [4] Blue, [5] Red, [6] Team-color
	if(equal(chat_color[ix],"normal")){return 1;}
	if(equal(chat_color[ix],"green"))  {return 2;}
	if(equal(chat_color[ix],"white"))  {return 3;}
	if(equal(chat_color[ix],"blue"))  {return 4;}
	if(equal(chat_color[ix],"red"))  {return 5;}
	if(equal(chat_color[ix],"team"))  {return 6;}
	return 6;
}

public user_auth_index(id){
	new szFlags[ 64 ];
	YetkileriCek( id , szFlags , charsmax( szFlags ) );
	for (new i = 0; i < sizeof flag_auths; i++){
		if(equal(flag_auths[i],szFlags)){ 
			return i
		}
	}  
	if(equal(szFlags,"z")){ 
		return 30
	} 
	return 0; 
}

public load_colors(){
	new szCfgsDir[64];
	get_configsdir(szCfgsDir , 63); 
	new szFileStr[94];
	format(szFileStr , 93 , "%s/taglar.ini" , szCfgsDir  ); 
	
	
	flag_auths[30] = "z"
	tags_names[30] = ""
	tags_color[30] = "normal"
	name_color[30] = "team"
	chat_color[30] = "normal"
 
 
	new index = 1;
	
	if(file_exists(szFileStr)) {
		new szText[256];
		new nLen=0 , nLine=0;
		while(read_file(szFileStr , nLine++ , szText , 200 , nLen)) {
			if(szText[0] == ';') continue;
			new l_auth[32], l_tag[32], l_t_color[16], l_n_color[16], l_c_color[16]
			parse(szText ,l_auth ,charsmax( l_auth)    ,l_tag ,charsmax( l_tag)    ,l_t_color ,charsmax( l_t_color)    ,l_n_color ,charsmax( l_n_color)     ,l_c_color ,charsmax( l_c_color) );
			
			flag_auths[index] = l_auth;
			tags_names[index] = l_tag 
			tags_color[index] = l_t_color
			name_color[index] = l_n_color
			chat_color[index] = l_c_color
				 
			
			index++
		}
			 
	} else {
		log_amx("Chat color eklentisi icin taglar.ini dosyasi bulunamadi")
	}
	
	return PLUGIN_CONTINUE; 
	
}

YetkileriCek( id , szFlags[] , iMaxLen )
{
    new iFlags = get_user_flags( id ) , iStartFlag = 'a' , iIndex;
    
    for ( new i = 0 ; i < ( 'z' - 'a' ) ; i++ )
    {
        if ( iFlags & ( 1 << i ) )
        {
            szFlags[ iIndex++ ] = iStartFlag + i;
        }
        
        if ( iIndex == iMaxLen )
            break;
    }
    
    return iIndex;
} 


Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

OPC Line
Mesajlar: 1633
Kayıt: Pzt Tem 22, 2019 3:13 am
Server Ip/DNS: 213.238.173.xx
Clan İsmi: *YouKnowMyName*

Admin Chat Color + Tag Eklenti Hatası

Mesaj gönderen OPC Line »

Tam olarak ne istiyorsunuz ?

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
HepYekten
Mesajlar: 8
Kayıt: Cmt May 25, 2019 8:12 pm

Admin Chat Color + Tag Eklenti Hatası

Mesaj gönderen HepYekten »

OPC Line yazdı: Sal Haz 15, 2021 8:02 pm Tam olarak ne istiyorsunuz ?
Hocam eklentideki renkler karışıyor renklerde hata var tek renk olarak sayden çıkıyor

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
HepYekten
Mesajlar: 8
Kayıt: Cmt May 25, 2019 8:12 pm

Admin Chat Color + Tag Eklenti Hatası

Mesaj gönderen HepYekten »

yokmu yardımcı olacak kimse?

Link:
Linklerini gizle
Linki Kopyala
Cevapla