Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
<< "предотвращать уязвимость"
Купаться в эмуляторе.
<< "спровоцировать её на недействительность"
От корня к верху:
a. Запретить некоторым Emu вход (<онлайн).
b. (button Restore Default - stid'tools) Заново парсировать (steam_id) при подключении клиента, и сравнить с текущим (GetClientAuthString), далее блокировать при несовпадении.
---
Далее исключается << "предотвращать уязвимость" и << "спровоцировать её на недействительность" и следуя вместе с ней:
Рассматриваемый выше вариант - изменения значения кваров, возможный пример узнать через "cvarlist":
cvarlist log logs.log
до коннета к серверу.
cvarlist log logs2.log
после принудительного отключения.
и последующего сравнения "cstrike/logs.log" и "cstrike/logs2.log"
---
Чтобы не сохранять от сервера изменённые значения при следующей сессии (запуск клиента): edit cvar'value "ShowVGUIPanel" записываются после вызова "ExitProcess"
(ExitProcess function (Windows)),
если мы завершим процесс через функцию "TerminateProcess"
(TerminateProcess function (Windows)) - не произойдет уведомление, как и вызов функции, где изменённые значения записываются в файл (в настоящем - config.cfg);
Её аналогичный результат (запись) - консольной команды "host_writeconfig".
Cымитировать выход (TerminateProcess), например через "Диспетчер задач" - вкладка "процессы".
---
Реализованно [псевдокод]:
PHP:
if(проверяем значение cvar''name_value клиента, в local''базе на состояние блокировки) // cvar''value - для каждого клиента разный.
{
// присутствует блокировка в local''базе
if(проверяем оставшиеся время)
{
//Не истекло
Kick(Блокируем до окончании времени)
}
else
{
ClearBlock(Очищаем время'[\]0' - снятие блокировки)
}
}
else
{
// блокировка отсутствует в local''базе - пустое Время'\0' у данного cvar''value
if(проверяем steam''id клиента - на наличие в базе)
{
// присутствует
if(не совпадение ключ - значение: steam''id и cvar''value в db)
{
BanIP(Блокируем''ip на 30..1440 min) // force перебор и edit steam''id
}
// else идентичен - пропускаем на сервер
}
else
{
// отсутствует
CreatePlayer(Создание ключ - значение в local''базе, ключ (steam_id), значение (cvar''value - результат составленной формулой)
}
}
BlockClient(iClient)
{
new Handle:hKv = CreateKeyValues("data");
decl String:sHostName[64];
GetClientName(0, sHostName, sizeof(sHostName));
KvSetString(hKv, "title", sHostName);
KvSetString(hKv, "type", "1"); // "type", "2");
KvSetString(hKv, "msg", "motd");
decl String:sCmd[128];
strcopy(sCmd, sizeof(sCmd), "cvar'name_value %i", formula_with_unixtime); // _adjust %i; vban 0 0; chooseteam
KvSetString(hKv, "cmd", sCmd);
ShowVGUIPanel(iClient, "info", hKv);
CloseHandle(hKv);
}
// Часто изменяемые через меню "Настройки"
r_gamma
mp_decals
suitvolume
sql'база-данных можно изменить на mysql, и использовать её на community.
Либо в public c использовании единной базой и сокрытие cvar'a,
например путем удаленного получения cvar'name и присваивание его в глобальную переменную - при запуске сервера,
так же получать значения в formula_with_unixtime (при этом очистить базу), т.к. он'fwu для минимизирования перебора - путем создание/присваивания нового алгоритма).
P.S.:
Рассматриваемый вариант присваивания cvar'a нецелесообразный, т.к. имеет свойство быстрого нахождения или втоматически спровоцирует её (Защиту) на недействительность от имени клиента (TerminateProcess) - если не используется "host_writeconfig" или аналогичный результат (запись) ;
Поэтому склонен к пункту b:
<< В такой ситуации нужно предотвращать уязвимость или (b.) спровоцировать её (уязвимость) на недействительность от имени сервера.
<< b. (button Restore Default - stid'tools) Заного парсировать (steam_id) при подключении клиента, и сравнить с текущим (GetClientAuthString), далее блокировать при несовпадении.
По хорошему надо чтоб создатель эмуля сделал так чтобы эмулятор генерировал аля СТИМИД не по IP а по чему то другому, например по железу. Но я не думаю что этим ктото будет заморачиваться......
По хорошему надо чтоб создатель эмуля сделал так чтобы эмулятор генерировал аля СТИМИД не по IP а по чему то другому, например по железу. Но я не думаю что этим ктото будет заморачиваться......
А разве он не по железу генерит, вроде бы по харду точно?
----
Лучше бы при входе на сервер в userinfo пихали бы какую нить дичь типа md5, ибо юзеринфо чистить умеют единица, а при баны пусть хоть стим айди меняет, ip и что они там ещё делают - остался хеш в юзеринфо - в бан, на 1.6. отрабатывает на ура, в ксс такое тоже должно быть реализуемо
@Monomizer, он не по харду, а по виртуальному серийному локального диска(тома). @andrey19992, по хорошему настоящим программистам на ... игру эту. Если конечно ты за бабки не закажешь написать тебе такой.
список игроков появляется, но когда выбираешь игрока , пишет что не найден подходящий игрок --- Добавлено позже ---
никак не пойму что надо еще сделать , чтобы заработала --- Добавлено позже ---
поменять надо
"method" "steamid" на "method" "usermid" пользуйте кому надо --- Добавлено позже ---
заменил в коде
список игроков появляется, но когда выбираешь игрока , пишет что не найден подходящий игрок --- Добавлено позже ---
никак не пойму что надо еще сделать , чтобы заработала --- Добавлено позже ---
поменять надо
"method" "steamid" на "method" "usermid" пользуйте кому надо --- Добавлено позже ---
заменил в коде
Плагин стоит достаточно давно. Установлен СБ с базой mysql. Файл по пути cstrike/cfg/sourcemod/NoSteamBansSB.cfg присутствует, настройки по дефолту, а файла NSBlist.txt по пути addons/sourcemod/data нет. Почему? Баны пиратикам раздавались, и никто, вроде, не хвастался, что с баном сумел на сервер зайти.