Как получить флаг админа в эвенте ?

x330122

Участник
Сообщения
357
Реакции
152
Всем привет народ.
Мне нужна помощь с получением админ флага в событии "player_death", вот я пытался делать но безуспешно. Кто подскажет что делать ? :ac:
Оффтоп
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #2
@Tetragromaton, полный код в студию.
Оффтоп
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
967
PHP:
stock bool CheckAdminChar(int client, const char[] cflag)
{
    if(GetUserAdmin(client)==INVALID_ADMIN_ID)
        return false
    new AdminFlag:flag
    if(FindFlagByChar(cflag[0], flag))
        return GetAdminFlag(GetUserAdmin(client), flag)
    return false
}
Спасибо White
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
PHP:
stock bool CheckAdminFlags(int client, const char[] cflag)
{
    return view_as<bool>(GetUserFlagBits(client) & ReadFlagString(cflag));
}
Можно указывать сразу несколько админ-флагов (латинские буквы).
получением админ флага в событии "player_death"
Флаги нужно получать при входе игрока и хранить результат в переменной!
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
@R1KO, потому что выражение забыли в круглые скобки закрыть return (GetUserFlagBits(client) & ReadFlagString(cflag));
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
@R1KO, а как ты определил какой тип возвращает функция?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #14
@Grey83, зачем? для функции задал тип bool и посмотрел на возврат в разных вариантах, в обоих было несоответствие тегов.

Короче я понял. туплю.
int & int = int
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
967
@Grey83, зачем? для функции задал тип bool и посмотрел на возврат в разных вариантах, в обоих было несоответствие тегов.

Короче я понял. туплю.
int & int = int
Битовое значение само выражается в int
 

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,064
Реакции
267
Подскажите, как здесь сделать проверку на админа именно по флагу b, сейчас как я понял здесь по всем флагам проверяется
C-подобный:
public OnClientPostAdminCheck(client)
{
    if (enabled && !IsFakeClient(client))
    {
        adminid[client] = GetUserAdmin(client);
            
        if (adminallow && adminid[client] != INVALID_ADMIN_ID)
        {
            decl String:steam_id[64];
            decl String:player_ip[64];
    
            GetClientIP(client, player_ip, sizeof(player_ip));
            GetClientAuthString(client, steam_id, sizeof(steam_id));
            
            if (announce)
                PrintToChatAll("%t", "AdminJoined", 4, 3, client, 4, 3, player_ip, 4, 3, steam_id);
        }
        else if (Steam_IsConnected())
            LookupPlayerGroups(client);
    }
}
вышеуказанные методы не сработали (может не правильно вставил). Так же код компилирую на sm 1.6.3 , так как плагин старый.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #17
@HooLIGUN,
C-подобный:
public OnClientPostAdminCheck(client)
{
    if (enabled && !IsFakeClient(client))
    {
        adminid[client] = GetUserAdmin(client);
        if (adminallow && (GetUserFlagBits(client) & ADMFLAG_GENERIC) == ADMFLAG_GENERIC)
        {
            decl String:steam_id[64];
            decl String:player_ip[64];

            GetClientIP(client, player_ip, sizeof(player_ip));
            GetClientAuthString(client, steam_id, sizeof(steam_id));

            if (announce)
                PrintToChatAll("%t", "AdminJoined", 4, 3, client, 4, 3, player_ip, 4, 3, steam_id);
        }
        else if (Steam_IsConnected())
            LookupPlayerGroups(client);
    }
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
HooLIGUN, 7-ю строку заменить на
C-подобный:
if(adminallow && adminid[client] != INVALID_ADMIN_ID && (GetAdminFlag(adminid[client], ADMFLAG_GENERIC) || GetAdminFlag(adminid[client], ADMFLAG_GENERIC, Access_Real))
Сообщения автоматически склеены:

PrintToChatAll("%t", "AdminJoined", 4, 3, client, 4, 3, player_ip, 4, 3, steam_id);
Интересно, а нафига всем светить IP и SteamID админа?
Сообщения автоматически склеены:

if (adminallow && (GetUserFlagBits(client) & ADMFLAG_GENERIC) == ADMFLAG_GENERIC)
А разве не достаточно того, что GetUserFlagBits(client) & ADMFLAG_GENERIC не равно 0?
Насколько я понимаю так отфильтрируются все, у кого есть какие-либо иные флаги помимо ADMFLAG_GENERIC
 
Последнее редактирование:

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,064
Реакции
267
Оффтоп
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #20
А разве не достаточно того, что GetUserFlagBits(client) & ADMFLAG_GENERIC не равно 0?
Вообще, достаточно. Но я так делаю везде и всегда на тот случай, если кому-то понадобится проверять несколько флагов.
 
Сверху Снизу