Изменения цвета текста по символам из сообщения игрока.

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Нужно изменять цвет текста посредством написания в чате специальных символов (\x03 и т.д.). Проблема в том, что это не работает.

PHP:
public Action:SayHook(client, args)    
{     
	if (client > 0 && args > 0 && IsClientInGame(client))     
	{
		new i = Ri[client];
		decl String:Prefix[255];
		pGetPlayerPrefix(client, Prefix, sizeof(Prefix));
		if(IsPlayerAlive(client))
		{
			switch(GetClientTeam(client))
			{
				case 2:
				{
					decl String:text[255], String:mes[256];
					GetCmdArgString(text, 255); 
					StripQuotes(text);
					FormatEx(mes, sizeof(mes), "-\x07[\x04%s\x07] \x03|\x05%s\x03| \x03%N\x01: %s", Prefix, Rank[i] , client, text);
					CPrintToChatAll("%s", mes);  
					return Plugin_Handled; 
				}
				case 3:
				{
					decl String:text[255], String:mes[256];
					GetCmdArgString(text, 255); 
					StripQuotes(text);     
					FormatEx(mes, sizeof(mes), "-\x0B[\x04%s\x0B] \x03|\x05%s\x03| \x03%N\x01: %s", Prefix, Rank[i] , client, text);
					CPrintToChatAll("%s", mes);  
					return Plugin_Handled; 
				}
			}
		}
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
AlmazON, ты не понял моей проблемы :D
Для наглядности сделал скрин.
 

Вложения

  • text-img.png
    text-img.png
    3.6 КБ · Просмотры: 37

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
А почему не так?!
PHP:
public Action:SayHook(client, args)     
{      
    if (client)     
    { 
        //new i = Ri[client]; 
        decl String:Prefix[180]; 
        pGetPlayerPrefix(client, Prefix, 180); 
        if(IsPlayerAlive(client)) 
        {
			decl String:text[192];
			GetCmdArg(1, text, 192);
            CPrintToChatAll(GetClientTeam(client) == 2 ? "\x01-\x07[\x04%s\x07] \x03|\x05%s\x03| \x03%N\x01: %s":
			"\x01-\x0B[\x04%s\x0B] \x03|\x05%s\x03| \x03%N\x01: %s", Prefix, Rank[i], client, text);
			return Plugin_Handled;
		}
	}
	return Plugin_Continue;
}
Оффтоп
Ясно теперь. Через сам чат не окрасишь, надо делать распознавание такой цветовой палитры.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Просто не умею пользоваться
PHP:
GetClientTeam(client) == 2 ? "\x01-\x07[\x04%s\x07] \x03|\x05%s\x03| \x03%N\x01: %s":
            "\x01-\x0B[\x04%s\x0B] \x03|\x05%s\x03| \x03%N\x01: %s"

При попытке использовать include colors (CPrintToChat) плагин вообще крашится.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
При попытке использовать include colors (CPrintToChat)
А зачем он там вообще, в этой строчке? Куда? Ты же всё равно использовал стандартные цвета.
Но, если неймётся:
PHP:
public OnPluginStart() AddCommandListener(SayHook, "say");

public Action:SayHook(client, String:command[], args)   
{      
    if(client && IsClientInGame(client))
	{
		//new i = Ri[client]; 
        if(IsPlayerAlive(client)) 
        {
			decl String:text[192];
			if(GetCmdArg(1, text, 192))
			{
				decl String:Prefix[180];
				pGetPlayerPrefix(client, Prefix, 180);
				if(GetClientTeam(client) == 2) CPrintToChatAll("\x01-\x07[\x04%s\x07] \x03|\x05%s\x03| \x03%N\x01: %s", Prefix, Rank[i], client, text);
				else CPrintToChatAll("\x01-\x0B[\x04%s\x0B] \x03|\x05%s\x03| \x03%N\x01: %s", Prefix, Rank[i], client, text);
				return Plugin_Handled;
			}
		}
	}
	return Plugin_Continue;
}
Но, цвета всё равно ловить не будет) Не та система.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
AlmazON, хорошо :)
С 1000 репутацией :D
 
Сверху Снизу