Детект команды клиента

Тема в разделе "Counter-Strike: Global Offensive", создана пользователем nuPAT, 31 июл 2015.

  1. nuPAT

    nuPAT

    Сообщения:
    113
    Симпатии:
    2
    Не знаю, есть ли такая возможность в ГОУ, потому пишу сюда. Есть ли возможность обнаружить, какая переменная команды стоит на клиенте?
     
  2. AlmazON

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

    Сообщения:
    4.566
    Симпатии:
    1.988
    Точно также, как проверить, стоит закачка всех файлов на клиенте игрока или нет.
     
    nuPAT нравится это.
  3. nuPAT

    nuPAT

    Сообщения:
    113
    Симпатии:
    2
    Буду считать это "Да"...
    Сможет кто сделать плагин чекающий текущее значение команды на клиенте?
    Буду рад, если плагин уже существует.
     
    Последнее редактирование: 1 авг 2015
  4. AlmazON

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

    Сообщения:
    4.566
    Симпатии:
    1.988
    Вот тема. Там и код на пробу и ниже ссылки на готовые примеры.
     
    nuPAT нравится это.
  5. nuPAT

    nuPAT

    Сообщения:
    113
    Симпатии:
    2
    Спасибо! А можешь доработать плагин? Хочется не кика, а персонального уведомления для игрока в чат...
    Если уж совсем обнаглеть, то с определенной периодичностью :)

    Нужно предложить игроку выставить переменную команды на 0. А конкретно - cl_disablehtmlmotd 0...
    Чтобы этого добиться, я пишу
    а сюда
    Так?

    //UP
    Заставил плагин кикать игроков с нужной переменной. Но нет сообщения, как пишется при кике с сервера. Просто при коннекте на сервер выкидывает в главное меню без сообщения в центре экрана. В консоли есть.
    Можно сделать версию без кика, но с предложением о включении нужной ф-ции в чат или лучше в подсказку игроку (hint, на черном фоне, с ! знаком)...
    //UP
    Нашел еще одну проблему. Плагин бесполезен, если поменять квар находясь уже на сервере. Т.е зашел с cl_disablehtmlmotd 0 а затем выставил cl_disablehtmlmotd 1
     
    Последнее редактирование: 1 авг 2015
  6. nuPAT

    nuPAT

    Сообщения:
    113
    Симпатии:
    2
    Почти идеально, но есть баг. Поменяв переменную - сообщение не исчезает пока не перезайдешь на сервер.
     
  7. AlmazON

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

    Сообщения:
    4.566
    Симпатии:
    1.988
    Я путаю с переменной закачки. Там это только плюс.
    Значит, ещё в самом сообщении проверять:
    PHP:
    #define TIME_MESSAGE 60.0 //Время повтора проверки переменной клиента и выдачи сообщения (секунд).

    new Handle:hTimerMessage[MAXPLAYERS+1];

    public 
    OnClientPostAdminCheck(clienthTimerMessage[client] = CreateTimer(TIME_MESSAGERepeatMessageclientTIMER_REPEAT);

    public 
    OnClientDisconnect(client) if (hTimerMessage[client])
    {
        
    KillTimer(hTimerMessage[client]);
        
    hTimerMessage[client] = INVALID_HANDLE;
    }

    public 
    ClientConVar1(QueryCookie:cookieclientConVarQueryResult:result, const String:cvarName1[], const String:cvarValue1[])
    {
        if (
    cvarValue1[0] == '1'PrintHintText(client"Пропиши в консоль: cl_disablehtmlmotd 0");
    }

    public 
    Action:RepeatMessage(Handle:timerany:client)
    {
        
    QueryClientConVar(client"cl_disablehtmlmotd"ConVarQueryFinished:ClientConVar1client);
        return 
    Plugin_Continue;
    }
    Плагин постоянно проверяет переменную игрока с заданным интервалом.
     
    nuPAT нравится это.
  8. nuPAT

    nuPAT

    Сообщения:
    113
    Симпатии:
    2
    Благодарю!
    Есть 1 вопрос: Не будет ли плагин, постоянно проверяющий клиентов (пусть и через период) создавать нагрузку/лаги/фризы и т.д во время проверки? Ведь, как я понимаю, все игроки (а у меня их много) будут проверяться одновременно... Или у каждого это время свое и таймер ведет отсчет от времени захода игрока на сервер?
     
  9. AlmazON

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

    Сообщения:
    4.566
    Симпатии:
    1.988
    Конечно будет. До лагов от такого мелкого кода, конечно, далеко.
    Да. Кстати, надо было общий таймер сделать, раз уж наклон плагина изменился (чтобы не меняли переменные, находясь уже на сервере).
    Если хочется сообщения одновременно всем отсылать, то:
    PHP:
    #define TIME_MESSAGE 60.0 //Время повтора проверки переменной клиентов и выдачи сообщения (секунд).

    new bool:bNoActive true;

    public 
    OnClientPostAdminCheck(client) if (bNoActive)
    {
        
    CreateTimer(TIME_MESSAGERepeatMessage_TIMER_REPEAT);
        
    bNoActive false;
    }

    public 
    ClientConVar1(QueryCookie:cookieclientConVarQueryResult:result, const String:cvarName1[], const String:cvarValue1[])
    {
        if (
    cvarValue1[0] == '1'PrintHintText(client"Пропиши в консоль: cl_disablehtmlmotd 0");
    }

    public 
    Action:RepeatMessage(Handle:timer)
    {
        for (new 
    bNoActive true<= MaxClients; ++i) if (IsClientInGame(i))
        {
            
    QueryClientConVar(i"cl_disablehtmlmotd"ConVarQueryFinished:ClientConVar1i);
            
    bNoActive false;
        }
        return 
    bNoActive Plugin_Stop:Plugin_Continue;
    }
    Таймер отключится, если на сервере долго (TIME_MESSAGE) никого нет.
     
    nuPAT нравится это.
  10. nuPAT

    nuPAT

    Сообщения:
    113
    Симпатии:
    2
    Вопрос. Разве не будет лучше, чтобы таймер был у всех разным? Ведь нагрузка будет создаваться меньше, когда не всем разом будет исполняться проверка.

    Это в какой версии плагина? В последней? И что произойдет, если долго никого не будет? При возвращении игроков - плагин не будет работать до перезапуска сервера?

    Ты это уже поборол в предыдущей версии. Проверил.
    //UP Меняешь значение - плагин реагирует. (сообщение есть при 1. При 0 - его нет)
     
  11. AlmazON

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

    Сообщения:
    4.566
    Симпатии:
    1.988
    В плане сообщений лучше - у каждого оно через свой промежуток времени с самого начала (но нам это не требуется, такая точность, поэтому опускаем).
    Только в этот момент, зато всё остальное время будет тикать аж до 64 таймеров вместо 1-го.
    Да. Плагин "отключится". Как только игрок зайдёт - активируется заново.