Как сделать проверку на админа root

Slayerko

Участник
Сообщения
12
Реакции
0
Привет всем!Вот делаю проверку на админа с доступом root (z) , но плагин все равно позволяет игрокам писать в чат цветным сообщением.Подскажите что не так?

PHP:
#include <sourcemod>   
#include <morecolors>   

public OnPluginStart()  
{  
    AddCommandListener(say, "say");     
    AddCommandListener(say, "say_team");  
}  

public Action:say(client, const String:command[], args)     
{     
    if (client > 0 && args > 0 && ADMFLAG_ROOT)     
    {  
        decl String:text[255];  
        GetCmdArgString(text, sizeof(text));  
        StripQuotes(text);         
        CPrintToChatAll("{red}[ADMIN]{olive}%N :  {yellow}%s", client, text);  
        return Plugin_Handled;  
    }
    return Plugin_Continue;  
}
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
PHP:
#include <sourcemod>   
#include <morecolors>   

public OnPluginStart()  
{  
    AddCommandListener(say, "say");     
    AddCommandListener(say, "say_team");  
}  

public Action:say(client, const String:command[], args)     
{     
    if (client > 0 && args > 0 && GetUserFlagBits(client) & ADMFLAG_ROOT)     
    {  
        decl String:text[255];  
        GetCmdArgString(text, sizeof(text));  
        StripQuotes(text);         
        CPrintToChatAll("{red}[ADMIN]{olive}%N :  {yellow}%s", client, text);  
        return Plugin_Handled;  
    }
    return Plugin_Continue;  
}
 

Slayerko

Участник
Сообщения
12
Реакции
0
PHP:
#include <sourcemod>   
#include <morecolors>   

public OnPluginStart()  
{  
    AddCommandListener(say, "say");     
    AddCommandListener(say, "say_team");  
}  

public Action:say(client, const String:command[], args)     
{     
    if (client > 0 && args > 0 && GetUserFlagBits(client) & ADMFLAG_ROOT)     
    {  
        decl String:text[255];  
        GetCmdArgString(text, sizeof(text));  
        StripQuotes(text);         
        CPrintToChatAll("{red}[ADMIN]{olive}%N :  {yellow}%s", client, text);  
        return Plugin_Handled;  
    }
    return Plugin_Continue;  
}
Мне надо чтоб обычные игроки могли писать в чат,а вот после изменения данного скрипта,сообщения игрока вообще не выводятся ((
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Slayerko
Пробуй
PHP:
#include <sourcemod>   
#include <morecolors>   

public OnPluginStart()  
{  
	AddCommandListener(say, "say");     
	AddCommandListener(say, "say_team");  
}  

public Action:say(client, const String:command[], args)     
{     
	if (client > 0 && args > 0)     
	{
		decl String:text[255];  
		GetCmdArgString(text, sizeof(text));  
		StripQuotes(text);
		if(GetUserFlagBits(client) & ADMFLAG_ROOT) CPrintToChatAll("{red}[ADMIN]{olive}%N :  {yellow}%s", client, text);
		else CPrintToChatAll("{red}[простой игрок, поменяй сам!]{olive}%N :  {yellow}%s", client, text);
		return Plugin_Handled;  
	}
	return Plugin_Continue;  
}
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Тогда уж лучше так:
PHP:
#include <sourcemod>   
#include <morecolors>   

public OnPluginStart()  
{  
	AddCommandListener(say, "say");     
	AddCommandListener(say, "say_team");  
}  

public Action:say(client, const String:command[], args)     
{     
	if (client > 0 && args > 0)     
	{
		decl String:text[255];  
		GetCmdArgString(text, sizeof(text));  
		StripQuotes(text);
		if(client==0)
		{
			CPrintToChatAll("{green}Console: {white}%s",CleanText);
			return Plugin_Handled;
		}
		if(GetUserFlagBits(client) & ADMFLAG_ROOT) CPrintToChatAll("{red}[ADMIN]{olive}%N :  {yellow}%s", client, text);
		else 
		{
			new Team=GetClientTeam(client)
			if (Team==2) CPrintToChatAll("{red}%N: {white}%s", client,CleanText);
			else if (Team==3) СPrintToChatAll("{blue}%N: {white}%s", client,CleanText);
			else if (Team==1) CPrintToChatAll("{gray}%N: {white}%s", client,CleanText);
		}
		return Plugin_Handled;  
	}
	return Plugin_Continue;  
}
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Код
PHP:
if(client==0)
        {
            CPrintToChatAll("{green}Console: {white}%s",CleanText);
            return Plugin_Handled;
        }
и откуда ты взял CleanText - не знаю
думаю не выполнится, так как в условии client > 0
Вот так наверное
PHP:
#include <sourcemod>   
#include <morecolors>   

public OnPluginStart()  
{  
	AddCommandListener(say, "say");     
	AddCommandListener(say, "say_team");  
}  

public Action:say(client, const String:command[], args)     
{     
	if (client > 0 && args > 0)     
	{
		decl String:text[255];  
		GetCmdArgString(text, sizeof(text));  
		StripQuotes(text);
		if(GetUserFlagBits(client) & ADMFLAG_ROOT) CPrintToChatAll("{red}[ADMIN]{olive}%N :  {yellow}%s", client, text);
		else
		{
			new team = GetClientTeam(client);
			if(team == 1) CPrintToChatAll("{gray}%N: {yellow}%s", client, text);
			else if(team == 2) CPrintToChatAll("{red}%N: {yellow}%s", client, text);
			else if(team == 3) CPrintToChatAll("{blue}%N: {yellow}%s", client, text);
		}
		return Plugin_Handled;  
	}
	return Plugin_Continue;  
}
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Код
PHP:
if(client==0)
        {
            CPrintToChatAll("{green}Console: {white}%s",CleanText);
            return Plugin_Handled;
        }
и откуда ты взял CleanText - не знаю
думаю не выполнится, так как в условии client > 0
Вот так наверное

Ой, да, забыл подправить, я просто копировал часть кода со своего эксперимента по раскрашиванию чата, там (да и тут возможно будет тоже) оказалась проблема, что если писать админские комманды, то они будут палиться в чат, да и сообщения, если писать через @ то тоже пишется изначальное и потом от админа. Костыли решил не писать (Так как тогда надо было бы вспоминать и скажем про guns...), сижу в поисках простого решения. Хотя кажется решение для своей версии я уже нашел, надо будет проверить....
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Не лучше, лучше будет, если один раз использовать функцию CPrintToChatAll для трех команд

СПустя ровно четре месяца :D
А лучше вообще MoreColors не использовать, раз уж на то пошло...
PHP:
new String:teams[3][] = {"CCCCCC","FF4040","99CCFF"}
.....
PrintToChatAll("\x07%s%N: \xFFFF00%s", teams[GetClientTeam(client)-1], client, text);
 
Сверху Снизу