Проверка является ли игрок администратором.

Тема в разделе "Программирование / Скриптинг", создана пользователем 8Ahnenerbe8, 27 май 2016.

  1. 8Ahnenerbe8

    8Ahnenerbe8

    Сообщения:
    102
    Симпатии:
    11
    В общем,решил написать простенький плагин,но мои знания в этом деле очень скудны.
    Суть плагина:
    Когда игрок подключается к серверу,то в чат будет вместо стандартного сообщения должно выводит другое.Если подключается обычный игрок,то будет писать "Player name connected",а если администратор,то "Admin name connected".
    Вот,что получилось у меня:
    PHP:

    #include <sourcemod>
    #include <csgo_colors>

    public OnClientPostAdminCheck(client)
    {
        new 
    String:name[99]
        
    GetClientName(clientnamesizeof(name));
        if(
    OnClientPostAdminCheck == 1)
        {
          
    PrintToChatAll("{GREEN}[ADMIN] {DEFAULT}%s  {GREEN}connected"name);
        }
        else
        {
           
    PrintToChatAll("{GREEN}[PLAYER] {DEFAULT}%s {GREEN}connected"name);
        }
    }
    Но при компиляции выдает ошибку,значит я неправильно использую команду для проверки на то,является ли игрок админом.
    Может вы подскажете,что изменить?
     
  2. pracc

    pracc

    Сообщения:
    482
    Симпатии:
    129
    PHP:
    #include <sourcemod>
    #include <csgo_colors>

    public OnClientPostAdminCheck(client)
    {
    new 
    String:name[128]
    GetClientName(clientnamesizeof(name));
    if(
    GetUserFlagBits(client))
    {
    CGOPrintToChatAll("{GREEN}[ADMIN] {DEFAULT}%s {GREEN}connected"name);
    }
    else
    {
    CGOPrintToChatAll("{GREEN}[PLAYER] {DEFAULT}%s {GREEN}connected"name);
    }
    }
    Пробуй.
     
  3. 8Ahnenerbe8

    8Ahnenerbe8

    Сообщения:
    102
    Симпатии:
    11
    @pracc, спасибо,но пока что времени нет,часа через два-три отпишу,получилось или нет!
     
  4. KapaT

    KapaT Эгоист

    Сообщения:
    1.983
    Симпатии:
    408
    @8Ahnenerbe8, зачем изобритать велосипед, когда уже давно все реализовано.
     
  5. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.586
    Симпатии:
    1.994
    PHP:
    #include <sourcemod>
    #include <csgo_colors>

    public OnClientPostAdminCheck(client)
        
    CGOPrintToChatAll("{GREEN}[%s] {DEFAULT}%N  {GREEN}connected"GetUserAdmin(client) != INVALID_ADMIN_ID "ADMIN" "PLAYER"client);
     
  6. Drumanid

    Drumanid Дилетант

    Сообщения:
    572
    Симпатии:
    196
    Оффтоп
     
  7. 8Ahnenerbe8

    8Ahnenerbe8

    Сообщения:
    102
    Симпатии:
    11
    @KapaT, в других плагинах много лишнего и ненужного мне
     
  8. alexfyodrv

    alexfyodrv

    Сообщения:
    24
    Симпатии:
    0
    Здравствуйте.

    Мне нужно реализовать несколько групп вип и каждой выделить отдельный флаг. Далее проверять при нанесении урона флаг админа и начислять ему дополнительный опыт, но нужно это сделать через elseif так как множители у каждой группы разные.

    Несколько вопросов:
    1. Как проверять является ли пользователь админом? (для общего понимания)
    2. Как проверять есть ли у пользователя нужный мне флаг доступа?

    Ps Напишите пожалуйста простой пример, чтобы понять как использовать данные функции.

    Спасибо.
     
  9. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.586
    Симпатии:
    1.994
    PHP:
    if (GetUserAdmin(client) != INVALID_ADMIN_ID//Игрок является админом.
    PHP:
    if (GetAdminFlag(GetUserAdmin(client), Admin_Kick)) //У игрока есть указанный флаг.
     
  10. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.005
    Симпатии:
    2.994
    @AlmazON, разве GetAdminFlag не выдаст ошибку если GetUserAdmin вернет INVALID_ADMIN_ID ?
    Мне кажется лучше проверять CheckCommandAccess т.к. это дает возможность переназначить флаги для команды
     
  11. SlipknotRU

    SlipknotRU

    Сообщения:
    35
    Симпатии:
    4
    Код:
    stock bool CheckAdminFlag(int client) {
        AdminId admin = GetUserAdmin(client);
        AdminFlag flag;
        char vadminsflag[] = "z";
    
        return admin == INVALID_ADMIN_ID ? false : vadminsflag[0] && FindFlagByChar(vadminsflag[0], flag) && GetAdminFlag(admin, flag) ? true : false;
    }
     
  12. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.586
    Симпатии:
    1.994
    В API - тишина, может и нет.