Изменить один из флагов доступа в плагине amx_blockipmenu

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
166
Реакции
34
Помог
3 раз(а)
Добрый день, подскажите пожалуйста правильно ли я сделал.
Присутствует плагин бан диапазонов под сети.
Код:
#include <amxmodx>
 
#include <amxmisc>
 
 
 
#define ADMIN ADMIN_BAN
 
 
 
new msg_block[128]
 
new tabul[9][] =
 
{
 
        "^t",                           //0
 
        "  ^t",                         //1
 
        "    ^t",                       //2
 
        "      ^t",                     //3
 
        "        ^t",                   //4
 
        "          ^t",                 //5
 
        "            ^t",               //6
 
        "              ^t",             //7
 
        "                ^t"                    //8
 
}       
 
 
 
public plugin_init()
 
{
 
        register_plugin("block ip", "0.2", "legenda");
 
        register_concmd("amx_readip", "readip", ADMIN, "- displays ip who is on server")
 
        register_concmd("amx_blockipmenu", "menu_chooseuserforblockip", ADMIN, "- displays menu for ban ip or network")
 
}
 
 
 
public readip(id, level, cid)
 
{
 
        if (!cmd_access(id, level, cid, 0))
 
                return PLUGIN_HANDLED
 
      
 
        new inum, iPlayers[32], nickname[32], ip[32], msg[128]
 
        get_players(iPlayers, inum)
 
      
 
        client_print(id,print_console,"==================================================^n Users:%d",inum)
 
        client_print(id,print_console,"# ^t^t^t^tip addres^t^t^t^t^t^tname")
 
        for (new i = 0; i < inum; ++i)
 
        {
 
                new player = iPlayers[i]
 
                get_user_name(player,nickname,31)
 
                get_user_ip(player,ip,31)
 
                format(nickname,10, "%s",nickname)
 
                new i_tabul = 21-strlen(ip)
 
                (i <=9) ? format(msg,127,"[%d]  ^t%s%s%s",i+1,ip,tabul[i_tabul],nickname) : format(msg,127,"[%d]^t%s%s%s",i+1,ip,tabul[i_tabul],nickname)     
 
                client_print(id,print_console,msg)
 
        }
 
        client_print(id,print_console,"==================================================^n^n")
 
      
 
        return PLUGIN_HANDLED
 
}
 
 
 
public menu_chooseuserforblockip(id, level, cid)
 
{
 
        if (!cmd_access(id, level, cid, 0))
 
                return PLUGIN_HANDLED
 
      
 
        new p_Menu = menu_create("\rPlayer menu:", "menu_chooose_user")
 
        new s_Players[32], s_MsgMenu[32], i_Num, i_Player
 
        new s_Admin[32], s_Name[32], s_Player[10]
 
        get_players(s_Players, i_Num)
 
      
 
        for (new i; i < i_Num; i++)
 
        {
 
                i_Player = s_Players[i]
 
                num_to_str(i_Player, s_Player, charsmax(s_Player))
 
              
 
                if(get_user_flags(i_Player) & ADMIN)
 
                {
 
                        get_user_name(i_Player, s_Admin, charsmax(s_Admin))
 
                        formatex(s_MsgMenu, 31, "%s  [\radmin\w]", s_Admin)
 
                        menu_additem(p_Menu, s_MsgMenu, s_Player, 0)
 
                }
 
                else
 
                {
 
                        get_user_name(i_Player, s_Name, charsmax(s_Name))
 
                        menu_additem(p_Menu, s_Name, s_Player, 0)
 
                }
 
        }
 
      
 
        menu_display(id, p_Menu, 0)
 
        return PLUGIN_HANDLED
 
}
 
 
 
public menu_chooose_user(id, menu, item)
 
{
 
        if (item == MENU_EXIT)
 
        {
 
                menu_destroy(menu)
 
                return PLUGIN_HANDLED
 
        }
 
      
 
        new s_Data[6], s_Name[64], i_Access, i_Callback, nickname[32]
 
        menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
 
      
 
        new i_Player = str_to_num(s_Data)
 
        get_user_name(i_Player,nickname,31)
 
      
 
        if(get_user_flags(i_Player) & ADMIN)
 
                client_print(id, print_chat, "Player ^"%s^" has immunity.", nickname)
 
        else
 
                choose_network(id, i_Player)
 
      
 
        menu_destroy(menu)
 
        return PLUGIN_HANDLED
 
}
 
 
 
public choose_network(id, i_Player)
 
{
 
        new player_ip[23]
 
        get_user_ip(i_Player, player_ip, 22,1)
 
        replace_all(player_ip,22,"."," ")
 
      
 
        new user_name_admin[32],user_name_block[32]
 
        get_user_name(id,user_name_admin,31)
 
        get_user_name(i_Player,user_name_block,31)
 
        format(msg_block, 127, "%s block %s", user_name_admin, user_name_block)
 
      
 
        new ip_Menu = menu_create("\rNetwork menu", "menu_block_network")
 
      
 
        new okteta1[4],okteta2[4],okteta3[4],okteta4[4]
 
        parse(player_ip,okteta1,charsmax(okteta1),okteta2,charsmax(okteta2),okteta3,charsmax(okteta3),okteta4,charsmax(okteta4))
 
        new n0[23], n1[23], n2[23], n3[23]
 
      
 
        format(n0, 22, "%s.%s.%s.%s", okteta1, okteta2,okteta3,okteta4)
 
        format(n1, 22, "%s.%s.%s.0", okteta1, okteta2,okteta3)
 
        format(n2, 22, "%s.%s.0.0", okteta1, okteta2)
 
        format(n3, 22, "%s.0.0.0", okteta1)   
 
      
 
        //      menu_addtext(ip_Menu, "XXXX")
 
        menu_additem(ip_Menu, n0,n0, 0)
 
        menu_additem(ip_Menu, n1,n1, 0)
 
        menu_additem(ip_Menu, n2,n2, 0)
 
        menu_additem(ip_Menu, n3,n3, 0)
 
 
 
        menu_display(id, ip_Menu, 0)
 
        return PLUGIN_HANDLED
 
}
 
 
 
public menu_block_network(id, menu, item)
 
{
 
        if (item == MENU_EXIT)
 
        {
 
                menu_destroy(menu)
 
                return PLUGIN_HANDLED
 
        }
 
      
 
        new s_Data[23], s_Name[64], i_Access, i_Callback
 
        menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
 
        server_cmd("addip 0 %s ; wait;wait;wait; writeip", s_Data)
 
      
 
        client_print(id,print_console,"^n^n==================================================")
 
        client_print(id,print_console,"%s ip is: %s",msg_block, s_Data)
 
        client_print(id,print_console,"==================================================^n^n")
 
        log_to_file("block_ip.log","%s ip is: %s",msg_block, s_Data)
 
      
 
        menu_destroy(menu)
 
        return PLUGIN_HANDLED
 
}
В нем доступ к меню по флагу "D"
Так же присутствует иммунитет по то муже флагу. (что бы администраторы не банили друг друга)
Хотелось бы изменить флаг иммунитета. Как пытаюсь сделать.
Как я понимаю в данном участке кода, нужно прописать другой флаг для иммунитета.
Код:
public menu_chooose_user(id, menu, item)
 
{
 
        if (item == MENU_EXIT)
 
        {
 
                menu_destroy(menu)
 
                return PLUGIN_HANDLED
 
        }
 
      
 
        new s_Data[6], s_Name[64], i_Access, i_Callback, nickname[32]
 
        menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
 
      
 
        new i_Player = str_to_num(s_Data)
 
        get_user_name(i_Player,nickname,31)
 
      
 
        if(get_user_flags(i_Player) & ADMIN)
 
                client_print(id, print_chat, "Player ^"%s^" has immunity.", nickname)
 
        else
 
                choose_network(id, i_Player)
 
      
 
        menu_destroy(menu)
 
        return PLUGIN_HANDLED
 
}
Что изменил
Код:
public menu_chooose_user(id, menu, item)
 
{
 
        if (item == MENU_EXIT)
 
        {
 
                menu_destroy(menu)
 
                return PLUGIN_HANDLED
 
        }
 
      
 
        new s_Data[6], s_Name[64], i_Access, i_Callback, nickname[32]
 
        menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
 
      
 
        new i_Player = str_to_num(s_Data)
 
        get_user_name(i_Player,nickname,31)
 
      
 
        if(get_user_flags(id) & ADMIN_RESERVATION)
 
                client_print(id, print_chat, "Player ^"%s^" has immunity.", nickname)
 
        else
 
                choose_network(id, i_Player)
 
      
 
        menu_destroy(menu)
 
        return PLUGIN_HANDLED
 
}
Подскажите пожалуйста правильно ли я сделал.
 
Сообщения
3,582
Реакции
1,571
Помог
137 раз(а)
можно просто
#define ADMIN ADMIN_BAN, вместо ADMIN_BAN - свой флаг.
 
Сообщения
166
Реакции
34
Помог
3 раз(а)
sbelov020, Можно, но тогда замениться флаг и для доступа к меню и к иммунитету от бана, а необходимо их разделить, что бы у каждой функции был свой флаг
 
Сообщения
3,582
Реакции
1,571
Помог
137 раз(а)
Pe4enbka, в таком случае, правильно. if(get_user_flags(id) & ADMIN_RESERVATION)
 
Сообщения
273
Реакции
424
Помог
5 раз(а)
Pe4enbka, Советую в этом выражении if(get_user_flags(i_Player) & ADMIN) ADMIN взять в скобкиif(get_user_flags(i_Player) & (ADMIN)), на тот случай если для определения админа может применяться несколько флагов например #define ADMIN ADMIN_BAN | ADMIN_RESERVATION,это предотвратит непредвиденные ошибки так как сначало происходит логическое умножение(&), а уж потом сложение(|).
 
Сообщения
3,582
Реакции
1,571
Помог
137 раз(а)
bionext, ну в таком случае делается обычно так: #define ADMIN (ADMIN_BAN | ADMIN_RESERVATION)
 
Сообщения
273
Реакции
424
Помог
5 раз(а)
sbelov020, Поверь мне есть люди которые не знают что так делается, впрочем если делается только для себя можно и так:smile3:
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу