GetClientAuthString
и GetClientAuthId
(а использовать их можно во всех):if (!GetClientAuthId(...)) // ...
public void OnClientPutInServer(int client)
{
if (!GetClientAuthId(client, AuthId_Engine, view_as<char>({0}), 0))
KickClientEx(client, "Ваш SteamID не прошёл валидацию, попробуйте переподключиться");
}
GetClientAuthId
можно, кстати, добиться постоянный высер STEAM_ID_STOP_IGNORING_RETVALS
, где будет возвращён true: GetClientAuthId(client, view_as<AuthIdType>(4), view_as<char>({0}), 0);
.AuthIdType
GetClientAuthId
можно использовать IsClientAuthorized
. но это не точно, лучше проверитьClientCommand(client, "retry");
. это автоматически переподключит игрока, но может работать не во всех играх, нужно проверятьВидимо будет обновакрч, этот текст генерит см и, соответственно, поддерживаются все игрушки где можно использоватьGetClientAuthString
иGetClientAuthId
(а использовать их можно во всех):
и исходя из кода, проверку можно сократить до![]()
sourcemod/core/logic/smn_players.cpp at 1fbe5e1daaee9ba44164078fe7f59d862786e612 · alliedmodders/sourcemod
SourceMod - Source Engine Scripting and Administration - alliedmodders/sourcemodgithub.com
if (!GetClientAuthId(...)) // ...
Сообщения автоматически склеены:
вот и вся суть фикса, собснаC-подобный:public void OnClientPutInServer(int client) { if (!GetClientAuthId(client, AuthId_Engine, view_as<char>({0}), 0)) KickClientEx(client, "Ваш SteamID не прошёл валидацию, попробуйте переподключиться"); }
Сообщения автоматически склеены:
черезGetClientAuthId
можно, кстати, добиться постоянный высерSTEAM_ID_STOP_IGNORING_RETVALS
, где будет возвращён true:GetClientAuthId(client, view_as<AuthIdType>(4), view_as<char>({0}), 0);
.
да-да, нужно всего лишь подсунуть невалидныйAuthIdType
Сообщения автоматически склеены:
а ещë я думаю что вместо явногоGetClientAuthId
можно использоватьIsClientAuthorized
. но это не точно, лучше проверить
Сообщения автоматически склеены:
и лучше вместо кика попробовать выполнитьClientCommand(client, "retry");
. это автоматически переподключит игрока, но может работать не во всех играх, нужно проверять
вообще, там чел с первой страницы обсуждения неплохой вариант предложил с проверкой "буквенного" стима. но лучше сделать так вместо проверки на 0 и 1:Видимо будет обнова![]()
public void OnClientPutInServer(int client)
{
if (IsFakeClient(client))
return;
char buffer[8];
GetClientAuthId(client, AuthId_Steam2, buffer, sizeof(buffer));
if (buffer[6] < '0' || '9' < buffer[6])
KickClientEx(client, "Во время авторизации произошла какая-то ошипка, попробуйте переподключиться");
// либо прошлое закомментировать и снять комментарий со следующего (менее надёжно, т.к. выполняется клиентом):
//ClientCommand(client, "retry");
}
А исходник можно?))Учёл все выше вышенаписанные замечания и рекомендации, проверяйте, если всё нормально, выложу как обновление.
дак через lysis можно посмотретьА исходник можно?))
o_O а что исходник теперь секрет? Он так то был, мы тут все решения советовали)) Просто я все плагины сам компилирую из исходников, параноик так сказать + код ревью))) Ладно подожду автора мб и выложит, а за сотку декомпилить спс не нужно могу и сам все советы из темы в доступный исходник воткнуть))) Просто хотел посмотреть что именно изменилось с прошлых версий.дак через lysis можно посмотреть
УПД: нет, не можно. проказник воспользовался новыми опкодами, которые lysis не переваривает (собрано на 1.11-1.12).
могу декомпильнуть за сотку, но кот может быть не 1 к 1 (логика не изменится), да и смысла в этом нет, раз плагин бесплатный.
код из этого сообщения, но сообщение кика вынесено в квары + проверяет игроков после подгрузки
А исходник можно?))
неужели так сложно посмотреть подПросто хотел посмотреть что именно изменилось с прошлых версий.
? я уже смотрел smx, если бы у тебя было желание, то мог бы самостоятельно доделатькод из этого сообщения, но сообщение кика вынесено в квары + проверяет игроков после подгрузки
валяймогу и сам все советы из темы в доступный исходник воткнуть)))