Имунитет себе "sm_slay" "sm_slap" "sm_kick" "sm_ban"

Тема в разделе "Программирование / Скриптинг", создана пользователем DarklSide, 3 окт 2014.

  1. DarklSide

    DarklSide

    Сообщения:
    685
    Симпатии:
    173
    Что же добавить, чтобы он не мог выполнить на себя эти команды. Если легче, то имеющий флаг ADMFLAG_ROOT.
     
    Последнее редактирование: 1 ноя 2014
  2. DarklSide

    DarklSide

    Сообщения:
    685
    Симпатии:
    173
    Хорошо, как в admin_overrides.cfg правильно прописать:

    "Overrides"
    {
    "sm_slay @me" "z"
    }
     
    Последнее редактирование: 1 ноя 2014
  3. artyrka94

    artyrka94

    Сообщения:
    182
    Симпатии:
    36
    Re: Имунитет себе "команда sm_slay"

    PHP:
    for (new 0target_counti++)
        {
            if(!(
    GetUserFlagBits(client) & ADMFLAG_ROOT) && client != target_list[i])
            
    PerformSlay(clienttarget_list[i]);
        }
     
  4. DarklSide

    DarklSide

    Сообщения:
    685
    Симпатии:
    173
    Вот так не катит:

    PHP:
    PerformSlay(clienttarget)
    {
    LogAction(clienttarget"\"%L\" slayed \"%L\""clienttarget);
    ForcePlayerSuicide(target);
    }
    DisplaySlayMenu(client)
    {
    new 
    Handle:menu CreateMenu(MenuHandler_Slay);
     
    decl String:title[100];
    Format(titlesizeof(title), "%T:""Slay player"client);
    SetMenuTitle(menutitle);
    SetMenuExitBackButton(menutrue);
     
    AddTargetsToMenu(menuclienttruetrue);
     
    DisplayMenu(menuclientMENU_TIME_FOREVER);
    }
    public 
    AdminMenu_Slay(Handle:topmenu
    TopMenuAction:action,
    TopMenuObject:object_id,
    param,
    String:buffer[],
    maxlength)
    {
    if (
    action == TopMenuAction_DisplayOption)
    {
    Format(buffermaxlength"%T""Slay player"param);
    }
    else if (
    action == TopMenuAction_SelectOption)
    {
    DisplaySlayMenu(param);
    }
    }
    public 
    MenuHandler_Slay(Handle:menuMenuAction:actionparam1param2)
    {
    if (
    action == MenuAction_End)
    {
    CloseHandle(menu);
    }
    else if (
    action == MenuAction_Cancel)
    {
    if (
    param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
    {
    DisplayTopMenu(hTopMenuparam1TopMenuPosition_LastCategory);
    }
    }
    else if (
    action == MenuAction_Select)
    {
    decl String:info[32];
    new 
    useridtarget;
     
    GetMenuItem(menuparam2infosizeof(info));
    userid StringToInt(info);
    if ((
    target GetClientOfUserId(userid)) == 0)
    {
    PrintToChat(param1"[SM] %t""Player no longer available");
    }
    else if (!
    CanUserTarget(param1target))
    {
    PrintToChat(param1"[SM] %t""Unable to target");
    }
    else if (!
    IsPlayerAlive(target))
    {
    ReplyToCommand(param1"[SM] %t""Player has since died");
    }
    else
    {
    decl String:name[32];
    GetClientName(targetnamesizeof(name));
    PerformSlay(param1target);
    ShowActivity2(param1"[SM] ""%t""Slayed target""_s"name);
    }
     
    DisplaySlayMenu(param1);
    }
    }
    public 
    Action:Command_Slay(clientargs)
    {
    if (
    args 1)
    {
    ReplyToCommand(client"[SM] Usage: sm_slay <#userid|name>");
    return 
    Plugin_Handled;
    }
    decl String:arg[65];
    GetCmdArg(1argsizeof(arg));
    decl String:target_name[MAX_TARGET_LENGTH];
    decl target_list[MAXPLAYERS], target_countbool:tn_is_ml;
     
    if ((
    target_count ProcessTargetString(
    arg,
    client,
    target_list,
    MAXPLAYERS,
    COMMAND_FILTER_ALIVE,
    target_name,
    sizeof(target_name),
    tn_is_ml)) <= 0)
    {
    ReplyToTargetError(clienttarget_count);
    return 
    Plugin_Handled;
    }
    for (new 
    0target_counti++) 

    if(!(
    GetUserFlagBits(client) & ADMFLAG_ROOT) && client != target_list[i]) 
    PerformSlay(clienttarget_list[i]); 

     
    if (
    tn_is_ml)
    {
    ShowActivity2(client"[SM] ""%t""Slayed target"target_name);
    }
    else
    {
    ShowActivity2(client"[SM] ""%t""Slayed target""_s"target_name);
    }
    return 
    Plugin_Handled;
    }

    Что если добавить:

    PHP:
    ITEMDRAW_DEFAULT ITEMDRAW_DISABLED);

    Думаю вот это сойдет:

    PHP:
        decl String:i_id[15], String:i_nick[32];
        for (new 
    1<= MaxClientsi++)
        {
            if (
    IsClientInGame(i) && !IsFakeClient(i))
            {    
                
    IntToString(GetClientUserId(i), i_id15);
                
    i_nick[0] = '\0';
                
    GetClientName(ii_nick32);
                
    AddMenuItem(menui_idi_nick!= client ITEMDRAW_DEFAULT ITEMDRAW_DISABLED);
            }
        }
     
    Последнее редактирование: 1 ноя 2014