Hook Grab Rope выдача по стиму!

Тема в разделе "Counter-Strike: Source", создана пользователем DexKekcuk #13, 23 июн 2015.

  1. DexKekcuk #13

    DexKekcuk #13

    Сообщения:
    638
    Симпатии:
    70
    Всем добрый день, наткнулся на плагин паутинки, поставил на сервер, настоил admin_overrides.cfg только по флагу z, но некоторые друзья на сервере просят им дать паутинку, а я кроме того как дать по флагу z не могу, можно ли привязать файл, который будет отвечать за выдачу по STEAM ID...

    ну и конечно если можно было бы сделать так:
    addons/sourcemod/configs/hgrlist.txt

    заходим сюда и на каждый новой строчке прописываем STEAM ID
    но еще хотелось бы сделать ограничения для них по возможности использования за одну игру, то есть зашел поиграл, килл написал, можно заного использовать ну в cfg вроде есть команда для выдачи опеределенных количеств раз панутинки, но можно ли сделать так?

    addons/sourcemod/configs/hgrlist.txt
    "STEAM ID" "кол-во"

    Плагин:
    https://forums.alliedmods.net/showthread.php?t=201154
     
  2. vaxa

    vaxa Rock Rulet!

    Сообщения:
    859
    Симпатии:
    102
    Может стоит тогда под мускул переделать? Чем через файл =)
     
  3. DexKekcuk #13

    DexKekcuk #13

    Сообщения:
    638
    Симпатии:
    70
    Да у меня есть плагины которые выдаются через стим ид, просто куда поудобней мне будет и полегче)
     
  4. DarklSide

    DarklSide

    Сообщения:
    685
    Симпатии:
    173
    Помню - по дополнительным флагам (Custom1-Custom6), у каждого флага свое кол-во использования и время использования (сек).
    Остаеться только добавить клиента, по любому идентификатору (steamid, ip, name) в стандарт файл'ы админов и sm_reloadadmins.
    Таким способом, уже дана возможность - использования sourcebans (msql).

    Добавлено через 9 минут
    Если понравился способ - напишу её реализацию.
     
    Последнее редактирование: 23 июн 2015
  5. DexKekcuk #13

    DexKekcuk #13

    Сообщения:
    638
    Симпатии:
    70
    Блин, как то сложновато мне так кажется)
     
  6. DarklSide

    DarklSide

    Сообщения:
    685
    Симпатии:
    173
    Пример для Hook для HGR:Source(2.1.5d) by SumGuy14 (Aka Soccerdude)


    PHP:
    new bgladmin[MAXPLAYERS 1],  // счетчик количества использования для гл.админа
    bgladminsec[MAXPLAYERS 1],  // счетчик секунд использования для гл.админа
    badminsec[MAXPLAYERS 1]; // счетчик секунд использования для админа    
    new bool:badmin[MAXPLAYERS 1] =  { false, ... }; // счетчик количества использования для админа (булевая - для разового использования, т.е. и константа не нужна)
    static const maxgladm 2// константа для максимума использования количества для гл.админа
    static const maxgladmsec 31// константа для максимума использования секунд для гл.админа (3 сек, т.к. CreateTimer(0.1, Hooking - мл сек)
    static const maxadmsec 51// константа для максимума использования секунд для админа (5 сек)

    bool:HasAccess(client)
    {
        if (
    GetAdminFlag(GetUserAdmin(client), Admin_Custom2Access_Real) || GetAdminFlag(GetUserAdmin(client), Admin_Custom2Access_Effective)) // для флага доступа Custom2 (гл.админа)
        
    {
            if (
    bgladmin[client] < maxgladm// проверяем счетчик, на его максимум (не равно, т.к. начинаем с нуля)
            
    {
                
    bgladmin[client]++; // если меньше, то +
                
    return true// разрешаем
            
    }
            else 
    // если больше или равно
            
    {
                
    PrintToChat(client"%c[HOOK] %cРазрешено использовать паутину %c2 раза %cза раунд"COLOR_GREENCOLOR_DEFAULTCOLOR_GREENCOLOR_DEFAULT); //чат
                
    return false// запрещаем
            
    }
        }
        else if (
    GetAdminFlag(GetUserAdmin(client), Admin_Custom5Access_Real) || GetAdminFlag(GetUserAdmin(client), Admin_Custom5Access_Effective)) // для флага доступа Custom5 (админа)
        
    {
            if (!
    badmin[client]) // (false) проверяем счетчик, на его максимум (true)
            
    {
                
    badmin[client] = true// раз использования
                
    return true// разрешаем
            
    }
            else 
    // (true) уже использовали
            
    {
                
    PrintToChat(client"%c[HOOK] %cРазрешено использовать паутину %c1 раз %cза раунд"COLOR_GREENCOLOR_DEFAULTCOLOR_GREENCOLOR_DEFAULT); //чат
                
    return false// запрещаем
            
    }
        }
        else if (
    GetAdminFlag(GetUserAdmin(client), Admin_RootAccess_Real) || GetAdminFlag(GetUserAdmin(client), Admin_RootAccess_Effective)) // флаг root
        
    {
            return 
    true// разрешаем
        
    }
        else 
    // нет доступа ко всем флагам, и предлагаем
        
    {
            
    EmitSoundToClient(clientdeniedWav);
            
    PrintToChat(client"%c[HOOK] %cУ вас нет Паутинки :(\nКупить её вы можете у создателя: %cskype"COLOR_GREENCOLOR_DEFAULTCOLOR_GREEN);
            return 
    false// запрещаем
        
    }
    }
    public 
    Action:Hooking(Handle:timerany:index)
    {
        if (
    gStatus[index] && IsClientInGame(index) && IsPlayerAlive(index))
        {
            
    //...
            
    if (bgladmin[index]) // проверяем что использует гл.админ
            
    {
                
    bgladminsec[index]++; // + к счетчику секунд
                
    if (bgladminsec[index] > maxgladmsec// проверяем если, секунды уже больше - его заданного максимума
                
    {
                    
    Action_UnHook(index); // принуждаем выключить
                    
    return Plugin_Stop;
                }
            }
            else if (
    badmin[index]) // проверяем что использует админ
            
    {
                
    badminsec[index]++; // + к счетчику секунд
                
    if (badminsec[index] > maxadmsec// проверяем если, секунды уже больше - его заданного максимума
                
    {
                    
    Action_UnHook(index); // принуждаем выключить hook
                    
    return Plugin_Stop;
                }
            }
            
    Hook_Push(index); // иначе, если счетчик секунд - позваляет, - включаем hook
        
    }
        else
        {
            
    Action_UnHook(index);
            return 
    Plugin_Stop;
        }
        return 
    Plugin_Handled;
    }
    public 
    Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
    {
        for (new 
    1<= MaxClients; ++i// возвращаем в начале раунда на началное значения, для повторного использования
        
    {
            
    bgladmin[i] = 0;
            
    badmin[i] = false;
            
    bgladminsec[i] = 0;
            
    badminsec[i] = 0;
        }
    }
    Action_UnHook(client)
    {
        
    //...
        
    bgladminsec[client] = 0// возвращаем секунды, для повторного использования
     
    Последнее редактирование: 22 июл 2015