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

Тема в разделе "Программирование / Скриптинг", создана пользователем Slayerko, 28 ноя 2012.

  1. Slayerko

    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 && args && ADMFLAG_ROOT)     
        {  
            
    decl String:text[255];  
            
    GetCmdArgString(textsizeof(text));  
            
    StripQuotes(text);         
            
    CPrintToChatAll("{red}[ADMIN]{olive}%N :  {yellow}%s"clienttext);  
            return 
    Plugin_Handled;  
        }
        return 
    Plugin_Continue;  
    }
     
  2. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    PHP:
    #include <sourcemod>   
    #include <morecolors>   

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

    public 
    Action:say(client, const String:command[], args)     
    {     
        if (
    client && args && GetUserFlagBits(client) & ADMFLAG_ROOT)     
        {  
            
    decl String:text[255];  
            
    GetCmdArgString(textsizeof(text));  
            
    StripQuotes(text);         
            
    CPrintToChatAll("{red}[ADMIN]{olive}%N :  {yellow}%s"clienttext);  
            return 
    Plugin_Handled;  
        }
        return 
    Plugin_Continue;  
    }  
     
    Slayerko и September нравится это.
  3. Slayerko

    Slayerko

    Сообщения:
    12
    Симпатии:
    0
    Мне надо чтоб обычные игроки могли писать в чат,а вот после изменения данного скрипта,сообщения игрока вообще не выводятся ((
     
  4. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    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 && args 0)     
        {
            
    decl String:text[255];  
            
    GetCmdArgString(textsizeof(text));  
            
    StripQuotes(text);
            if(
    GetUserFlagBits(client) & ADMFLAG_ROOTCPrintToChatAll("{red}[ADMIN]{olive}%N :  {yellow}%s"clienttext);
            else 
    CPrintToChatAll("{red}[простой игрок, поменяй сам!]{olive}%N :  {yellow}%s"clienttext);
            return 
    Plugin_Handled;  
        }
        return 
    Plugin_Continue;  
    }  

     
    Slayerko нравится это.
  5. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    Тогда уж лучше так:
    PHP:
    #include <sourcemod>   
    #include <morecolors>   

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

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

     
    Slayerko нравится это.
  6. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Код
    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 && args 0)     
        {
            
    decl String:text[255];  
            
    GetCmdArgString(textsizeof(text));  
            
    StripQuotes(text);
            if(
    GetUserFlagBits(client) & ADMFLAG_ROOTCPrintToChatAll("{red}[ADMIN]{olive}%N :  {yellow}%s"clienttext);
            else
            {
                new 
    team GetClientTeam(client);
                if(
    team == 1CPrintToChatAll("{gray}%N: {yellow}%s"clienttext);
                else if(
    team == 2CPrintToChatAll("{red}%N: {yellow}%s"clienttext);
                else if(
    team == 3CPrintToChatAll("{blue}%N: {yellow}%s"clienttext);
            }
            return 
    Plugin_Handled;  
        }
        return 
    Plugin_Continue;  
    }
     
    Slayerko нравится это.
  7. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    Ой, да, забыл подправить, я просто копировал часть кода со своего эксперимента по раскрашиванию чата, там (да и тут возможно будет тоже) оказалась проблема, что если писать админские комманды, то они будут палиться в чат, да и сообщения, если писать через @ то тоже пишется изначальное и потом от админа. Костыли решил не писать (Так как тогда надо было бы вспоминать и скажем про guns...), сижу в поисках простого решения. Хотя кажется решение для своей версии я уже нашел, надо будет проверить....
     
    Slayerko нравится это.
  8. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Не лучше, лучше будет, если один раз использовать функцию CPrintToChatAll для трех команд
     
  9. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

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