Магия соурсмода. AdminFlag:20 = Invalid flag, как можно выжить без флага t?

Статус
В этой теме нельзя размещать новые ответы.

Danyas

Участник
Сообщения
2,173
Реакции
1,072
PHP:
static String: sLog[] = "addons/sourcemod/logs/trash.log";

public OnPluginStart()
{
    #define FLAG 20
    new c;
    if(FindFlagChar(AdminFlag:FLAG, c))
        LogToFileEx(sLog, "Флаг %c найден", c);
    else
        LogToFileEx(sLog, "Флаг %i не найден", FLAG);
}

Простите, что?

Меняем #define FLAG 20 на #define FLAG 19 - всё работает.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
PHP:
public void OnPluginStart()
{
    for(int i; i < AdminFlags_TOTAL; i++)
    {
        int c;
        if(FindFlagChar(view_as<AdminFlag>(i), c)) PrintToServer("%2d) Flag '%c'", i, c);
        else PrintToServer("%2d) Can't find flag", i);
    }
}
В результате:
PHP:
 0) Flag 'a'
 1) Flag 'b'
 2) Flag 'c'
 3) Flag 'd'
 4) Flag 'e'
 5) Flag 'f'
 6) Flag 'g'
 7) Flag 'h'
 8) Flag 'i'
 9) Flag 'j'
10) Flag 'k'
11) Flag 'l'
12) Flag 'm'
13) Flag 'n'
14) Flag 'z'
15) Flag 'o'
16) Flag 'p'
17) Flag 'q'
18) Flag 'r'
19) Flag 's'
20) Flag 't'
Проверь свой файл admin_levels.cfg в ...\addons\sourcemod\configs\
Есть ли там "custom6"
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
PHP:
public void OnPluginStart()
{
    for(int i; i < AdminFlags_TOTAL; i++)
    {
        int c;
        if(FindFlagChar(view_as<AdminFlag>(i), c)) PrintToServer("%2d) Flag '%c'", i, c);
        else PrintToServer("%2d) Can't find flag", i);
    }
}
В результате:
PHP:
 0) Flag 'a'
1) Flag 'b'
2) Flag 'c'
3) Flag 'd'
4) Flag 'e'
5) Flag 'f'
6) Flag 'g'
7) Flag 'h'
8) Flag 'i'
9) Flag 'j'
10) Flag 'k'
11) Flag 'l'
12) Flag 'm'
13) Flag 'n'
14) Flag 'z'
15) Flag 'o'
16) Flag 'p'
17) Flag 'q'
18) Flag 'r'
19) Flag 's'
20) Flag 't'
Проверь свой файл admin_levels.cfg в ...\addons\sourcemod\configs\
Есть ли там "custom6"
Есть
/**
* There is no reason to edit this file. Core uses this to map each named
* access type to a given ASCII character. The names are all pre-defined.
*/
Levels
{
/**
* These are the default role flag mappings.
* You can assign new letters for custom purposes, however you should
* not change the default names, as SourceMod hardcodes these.
*/
Flags
{
"reservation" "a" //Reserved slots
"generic" "b" //Generic admin, required for admins
"kick" "c" //Kick other players
"ban" "d" //Banning other players
"unban" "e" //Removing bans
"slay" "f" //Slaying other players
"changemap" "g" //Changing the map
"cvars" "h" //Changing cvars
"config" "i" //Changing configs
"chat" "j" //Special chat privileges
"vote" "k" //Voting
"password" "l" //Password the server
"rcon" "m" //Remote console
"cheats" "n" //Change sv_cheats and related commands

/**
* Custom flags can be used by plugins, but they can also be used to
* for you to expand on the previous groups, using Overrides.
*/

"custom1" "o"
"custom2" "p"
"custom3" "q"
"custom4" "r"
"custom5" "s"
"custom6" "t"

/**
* Root is a magic access flag that grants all permissions.
* This should only be given to trusted administrators.
* Root users can target anyone regardless of immunity,
* however, they themselves are not automatically immune.
*/
"root" "z"
}
}
 

Grey83

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

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
@ludanik, ну а вдруг у него стоит SM1.7?
Вот вариант для 1.6:
PHP:
public OnPluginStart()
{
    for(new i; i < AdminFlags_TOTAL; i++)
    {
        new c;
        if(FindFlagChar(AdminFlag:i, c)) PrintToServer("%2d) Flag '%c'", i, c);
        else PrintToServer("%2d) Can't find flag", i);
    }
}
изменить нужно всего лишь в 3 местах
 

Reg1oxeN

Участник
Сообщения
403
Реакции
319
почему AdminFlag:FLAG? почему не Admin_Custom6 или как в последнем см view_as<AdminFlag>(FLAG)
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
@ludanik, ну а вдруг у него стоит SM1.7?
Вот вариант для 1.6:
PHP:
public OnPluginStart()
{
    for(new i; i < AdminFlags_TOTAL; i++)
    {
        new c;
        if(FindFlagChar(AdminFlag:i, c)) PrintToServer("%2d) Flag '%c'", i, c);
        else PrintToServer("%2d) Can't find flag", i);
    }
}
изменить нужно всего лишь в 3 местах

PHP:
 0) Flag 'a'
 1) Flag 'b'
 2) Flag 'c'
 3) Flag 'd'
 4) Flag 'e'
 5) Flag 'f'
 6) Flag 'g'
 7) Flag 'h'
 8) Flag 'i'
 9) Flag 'j'
10) Flag 'k'
11) Flag 'l'
12) Flag 'm'
13) Flag 'n'
14) Flag 'z'
15) Flag 'o'
16) Flag 'p'
17) Flag 'q'
18) Flag 'r'
19) Flag 's'
20) Can't find flag
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
@Danyas, ладно, что у тебя в файле admin.inc (...\sourcemod\scripting\include\)?
Интересует блок enum AdminFlag{...}
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
@Danyas, ладно, что у тебя в файле admin.inc (...\sourcemod\scripting\include\)?
Интересует блок enum AdminFlag{...}
PHP:
/**
* Access levels (flags) for admins.
*/
enum AdminFlag
{
    Admin_Reservation = 0,    /**< Reserved slot */
    Admin_Generic,            /**< Generic admin abilities */
    Admin_Kick,                /**< Kick another user */
    Admin_Ban,                /**< Ban another user */
    Admin_Unban,            /**< Unban another user */
    Admin_Slay,                /**< Slay/kill/damage another user */
    Admin_Changemap,        /**< Change the map */
    Admin_Convars,            /**< Change basic convars */
    Admin_Config,            /**< Change configuration */
    Admin_Chat,                /**< Special chat privileges */
    Admin_Vote,                /**< Special vote privileges */
    Admin_Password,            /**< Set a server password */
    Admin_RCON,                /**< Use RCON */
    Admin_Cheats,            /**< Change sv_cheats and use its commands */
    Admin_Root,                /**< All access by default */
    Admin_Custom1,            /**< First custom flag type */
    Admin_Custom2,            /**< Second custom flag type */
    Admin_Custom3,            /**< Third custom flag type */
    Admin_Custom4,            /**< Fourth custom flag type */
    Admin_Custom5,            /**< Fifth custom flag type */
    Admin_Custom6,            /**< Sixth custom flag type */
    /* --- */
};
взял из папки компилятора
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
Сдаётся мне, что тебе нужно свой соурсмод перекомпилить
Вот только не скажу какие именно плагины, но скорей всего

И даже строка #define ADMFLAG_CUSTOM6 (1<<20) там имеется?
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Сдаётся мне, что тебе нужно свой соурсмод перекомпилить
Вот только не скажу какие именно плагины, но скорей всего

И даже строка #define ADMFLAG_CUSTOM6 (1<<20) там имеется?

Имеется.

PHP:
#define AdminFlags_TOTAL    21        /**< Total number of admin flags */

/**
 * @section Bitwise values definitions for admin flags.
 */
#define ADMFLAG_RESERVATION            (1<<0)        /**< Convenience macro for Admin_Reservation as a FlagBit */
#define ADMFLAG_GENERIC                (1<<1)        /**< Convenience macro for Admin_Generic as a FlagBit */
#define ADMFLAG_KICK                (1<<2)        /**< Convenience macro for Admin_Kick as a FlagBit */
#define ADMFLAG_BAN                    (1<<3)        /**< Convenience macro for Admin_Ban as a FlagBit */
#define ADMFLAG_UNBAN                (1<<4)        /**< Convenience macro for Admin_Unban as a FlagBit */
#define ADMFLAG_SLAY                (1<<5)        /**< Convenience macro for Admin_Slay as a FlagBit */
#define ADMFLAG_CHANGEMAP            (1<<6)        /**< Convenience macro for Admin_Changemap as a FlagBit */
#define ADMFLAG_CONVARS                (1<<7)        /**< Convenience macro for Admin_Convars as a FlagBit */
#define ADMFLAG_CONFIG                (1<<8)        /**< Convenience macro for Admin_Config as a FlagBit */
#define ADMFLAG_CHAT                (1<<9)        /**< Convenience macro for Admin_Chat as a FlagBit */
#define ADMFLAG_VOTE                (1<<10)        /**< Convenience macro for Admin_Vote as a FlagBit */
#define ADMFLAG_PASSWORD            (1<<11)        /**< Convenience macro for Admin_Password as a FlagBit */
#define ADMFLAG_RCON                (1<<12)        /**< Convenience macro for Admin_RCON as a FlagBit */
#define ADMFLAG_CHEATS                (1<<13)        /**< Convenience macro for Admin_Cheats as a FlagBit */
#define ADMFLAG_ROOT                (1<<14)        /**< Convenience macro for Admin_Root as a FlagBit */
#define ADMFLAG_CUSTOM1                (1<<15)        /**< Convenience macro for Admin_Custom1 as a FlagBit */
#define ADMFLAG_CUSTOM2                (1<<16)        /**< Convenience macro for Admin_Custom2 as a FlagBit */
#define ADMFLAG_CUSTOM3                (1<<17)        /**< Convenience macro for Admin_Custom3 as a FlagBit */
#define ADMFLAG_CUSTOM4                (1<<18)        /**< Convenience macro for Admin_Custom4 as a FlagBit */
#define ADMFLAG_CUSTOM5                (1<<19)        /**< Convenience macro for Admin_Custom5 as a FlagBit */
#define ADMFLAG_CUSTOM6                (1<<20)        /**< Convenience macro for Admin_Custom6 as a FlagBit */

Сейчас костылем сделал
PHP:
if(!FindFlagChar(flags[x], c)) c = 't';

SetAdminFlag с флагом работает, а вот FindFlagChar - нет
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
какой-то SM у тебя кривой
 

Reg1oxeN

Участник
Сообщения
403
Реакции
319
расскажи хоть что за см такой баганутый у тебя
 

Колян

Участник
Сообщения
180
Реакции
5
@ludanik, ну а вдруг у него стоит SM1.7?
Вот вариант для 1.6:
PHP:
public OnPluginStart()
{
    for(new i; i < AdminFlags_TOTAL; i++)
    {
        new c;
        if(FindFlagChar(AdminFlag:i, c)) PrintToServer("%2d) Flag '%c'", i, c);
        else PrintToServer("%2d) Can't find flag", i);
    }
}
изменить нужно всего лишь в 3 местах
sourcemod есть на кс1.6? или в AMX такой-же синтаксис?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
@Колян, SM1.6
до 1.6 использовался один синтаксис, в 1.7 начали вводить новый
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #19
@Rabb1t, синтаксис такой же. Не путай.
@MasterNagib, бред. SourceMod поддерживается с Half-Life 2. Оффтоп
 
Статус
В этой теме нельзя размещать новые ответы.

Похожие темы

Ответы
2
Просмотры
Сверху Снизу