Нужна помощь с установкой лимита на использования команды игроком

Тема в разделе "Запросы", создана пользователем Алексей Кашура, 7 дек 2014.

  1. Алексей Кашура

    Алексей Кашура

    Сообщения:
    15
    Симпатии:
    1
    Здравствуйте! Извиняюсь за тупость заранее.
    Мне нужна помощь или хотя бы пример как сделать лимит на использования команды игроком.
    Например чтобы каждый игрок мог использовать команду !test или !info по 1-5 раз, за раунд. А после это блокировалась команда.
     
  2. aim bot`

    aim bot`

    Сообщения:
    12
    Симпатии:
    10
    Попробуй.
     

    Вложения:

    • limit.sp
      Размер файла:
      989 байт
      Просмотров:
      10
  3. AlmazON

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

    Сообщения:
    4.563
    Симпатии:
    1.988
    1) В случае наличия мода, вроде DM, команда будет работать далеко не столько раз за раунд, сколько указано, а гораздо больше.
    2) Такой код лишь пишет в чат о лимите использования команды, но писать можно и далее, просто не обращая на неё внимания.
     
  4. Primo

    Primo Где мои манеры

    Сообщения:
    1.192
    Симпатии:
    310
    Так лучше.

    PHP:
    #include <sourcemod>
    #include <sdktools>

    new Limit[MAXPLAYERS +1];

    new 
    Handlesm_limit INVALID_HANDLE;

    public 
    Plugin:myinfo 
    {
        
    name "New Plugin",
        
    author "Unknown",
        
    description "<- Description ->",
        
    version "1.0",
        
    url "<- URL ->"
    }

    public 
    OnPluginStart()
    {
        
    RegConsoleCmd ("test"test);
        
    HookEvent("round_start"Round_Start);
        
        
    sm_limit CreateConVar ("sm_limit""3""—колько игрок может раз ввести команду:");
        
    AutoExecConfig (true"Limit");
    }

    public 
    Round_Start (Handle:event, const String:name[], bool:dontBroadcast

        for(new 
    client=1client <= GetMaxClients(); client++)
        {
            
    Limit[client] = 0;
        }


    public 
    Actiontest (client,args)
    {
        new 
    limit GetConVarInt (sm_limit);
        if (
    Limit[client] < limit)
        {
            
    Limit[client]++;
            
    PrintToChat(client"У вас осталось %d использований"limit-Limit[client]);
        }
        else
        {
            
    PrintToChat (client"Лимит исчерпан");
        }
    return 
    Plugin_Handled;        
    }

    public 
    OnClientDisconnected(client)
    {
        
    Limit[client] = 0;
    }
     
    Hejter и Алексей Кашура нравится это.
  5. AlmazON

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

    Сообщения:
    4.563
    Симпатии:
    1.988
    return Plugin_Handled; погрызли мыши? :)
    Разве через RegConsoleCmd уже существующая команда заблокируется, пробовал?
     
  6. Primo

    Primo Где мои манеры

    Сообщения:
    1.192
    Симпатии:
    310
    AlmazON, разве в OnPluginStart() можно что-то вернуть?
     
  7. AlmazON

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

    Сообщения:
    4.563
    Симпатии:
    1.988
    В Action: не можно, а нужно возвращать. Но оно же вовсе не там.
     
  8. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Primo
    1. В циклах используй MaxClients

    2. Не нужно получать переменную каждый раз

    3. sdktools не нужно подключать

    4. Сомневаюсь, что можно заблокировать команду от другого плагина
     
  9. Primo

    Primo Где мои манеры

    Сообщения:
    1.192
    Симпатии:
    310
    The End Is Near...,
    1. Всегда думал, что GetMaxClients лучше
    2. Насчёт квара - то да, в этом моя ошибка
    3. Это я не менял из исходника, предоставленный выше
    4. Честно говоря, я не могу представить блокировки команды от другого плагина, поэтому не понимаю о чем Вы.