NextClient использует криптографическую подпись для подтверждения подлинности клиента. Это позволяет серверу отличать настоящий NextClient от поддельных модификаций, выдающих себя за него.

Зачем это нужно #

Без верификации любой клиент может представиться как NextClient через отправку соответствующих идентификаторов. Верификация решает эту проблему — поддельные клиенты не пройдут проверку.

Как это работает #

При подключении игрока с NextClient модуль:

  1. Запрашивает у клиента подпись на серверный challenge
  2. Проверяет подпись по публичному ключу
  3. Только при успешной проверке вызывается ncl_client_api_ready

То есть если forward вызвался — клиент гарантированно настоящий.

Использование в коде #

#include <amxmodx>
#include <nextclientapi>

public client_putinserver(id)
{
    // На этом этапе API ЕЩЁ НЕ ГОТОВ
    // ncl_is_using_nextclient() здесь может вернуть некорректный результат
}

public ncl_client_api_ready(id)
{
    // А вот здесь — клиент верифицирован
    // Все ncl_* функции безопасны для вызова
    grant_trusted_privileges(id);
}

Чего НЕ делать #

  1. Не доверять ncl_is_using_nextclient до ncl_client_api_ready — результат может быть преждевременным
  2. Не выдавать критичные привилегии только по факту NextClient — комбинируйте с другими методами
  3. Не пытаться отключить верификацию — она работает на уровне модуля и обеспечивает безопасность

Дополнительная защита #

Для VIP-функций рекомендуется дополнительно проверять Steam ID или использовать систему паролей:

public ncl_client_api_ready(id)
{
    new authid[32];
    get_user_authid(id, authid, charsmax(authid));

    if (is_vip_authid(authid))
    {
        grant_vip(id);
    }
}