Проверка переменных у клиента

Тема в разделе "Программирование / Скриптинг", создана пользователем Ganibal95, 16 авг 2013.

  1. Ganibal95

    Ganibal95

    Сообщения:
    52
    Симпатии:
    0
    Здравствуйте, т.к я создатель читов... Не раз делал данные манипуляции на игровых серверах.
    Изменял в памяти sv_cheats на 1
    Ставил разные r_DrawModel...
    И все-же вопрос вот в чем, как отследить у игрока эти переменные, заходя на один сервер я видел подобное; Но вот способ реализации не знаю.

    Надеюсь на вашу помощь =)
     
  2. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    Ganibal95, в основном подобные переменные ловит модуль SMAC smac_cvars
     
  3. Ganibal95

    Ganibal95

    Сообщения:
    52
    Симпатии:
    0
    KorDen, Мне бы хотелось средствами sourcemod...
    Если это конечно возможно =)
     
  4. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.989
    Симпатии:
    2.987
    Ganibal95, декомпиль smac_cvars
     
  5. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    237
    Симпатии:
    569
    R1KO нравится это.
  6. Ganibal95

    Ganibal95

    Сообщения:
    52
    Симпатии:
    0
    Неужели нет небольшого отрывка кода.?

    В этом смаке ничего не разберешь!
     
  7. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    Ganibal95, SMAC это как бы набор плагинов для SourceMod, включающий в себя плагин-ядро smac.smx и плагины-модули. Вообще защита от идиотов-читеров прекрасно работает в комбинации "smac+smac_eyetest+smac_cvars+smac_aimbot+smac_speedhack", главное правильно настроить.

    Собственно вот сам исходник smac_cvars - https://bitbucket.org/psychonic/sma...7f12bfa8a3/scripting/smac_cvars.sp?at=default
    В общих словах каждые N секунд для каждого подключенного игрока запускается
    QueryClientConVar(client, sName, CVars_QueryCallback, client);
    и при получении значения сравнивается, если не стандартное (скажем не 0), то бан
     
    Ganibal95 нравится это.
  8. Ganibal95

    Ganibal95

    Сообщения:
    52
    Симпатии:
    0
    KorDen, Нашел вот этот код, на pastebin.com...
    Код:
    #include <sourcemod>
    
    #define PLUGIN_NAME					"MinFPS"
    #define PLUGIN_AUTHOR				"Tony G."
    #define PLUGIN_DESCRIPTION	"Kicks a player if his/her fps_max convar value is below the value of 72."
    #define PLUGIN_VERSION			"1.0"
    #define PLUGIN_URL					"http://www.sourcemod.net/"
    
    public Plugin:myinfo = {name = PLUGIN_NAME, author = PLUGIN_AUTHOR, description = PLUGIN_DESCRIPTION, version = PLUGIN_VERSION, url = PLUGIN_URL};
    
    public OnPluginStart()
    {
    	CreateConVar("sm_minfps_version", PLUGIN_VERSION, "MinFPS", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
    	CreateTimer(10.0, TriggerFPSCheck, _, TIMER_REPEAT);
    }
    
    public OnClientPostAdminCheck(client)
    {
    	QueryClientConVar(client, "fps_max", ConVarQueryFinished:FPSCheck, client);
    }
    
    public Action:TriggerFPSCheck(Handle:timer)
    {
    	for (new client = 1; client <= MaxClients; client++)
    	{
    		if (IsClientInGame(client) && !IsClientObserver(client))
    		{
    			QueryClientConVar(client, "fps_max", ConVarQueryFinished:FPSCheck, client);
    		}
    	}
    	
    	return Plugin_Continue;	
    }
    
    public FPSCheck(QueryCookie:cookie, client, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
    {
    	if (IsClientConnected(client))
    	{
    		new fps_max = StringToInt(cvarValue);
    		
    		if (fps_max < 72 && fps_max != 0)
    		{
    			KickClient(client, "Please set your fps_max value to at least 72");
    		}
    	}
    }
     
    Последнее редактирование: 17 авг 2013
  9. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    Ganibal95, ну это фактически то же самое, только для одной переменной. И все же для защиты я бы посоветовал поставить смак с вышеупомянутыми модулями
     
  10. Ganibal95

    Ganibal95

    Сообщения:
    52
    Симпатии:
    0
    KorDen, Да мне нужно защитится от своего чита =)
    В данный момент я могу легко впарить все что угодно в чит, под видом нового обновления...
    Я вроде и просканировал переменные, но эффект 0 когда они изменяются через память... Нужно обязательно писать через консоль... Ну а мне нужно что-то через память передовать, и сервер чтоб ловил...

    Как-то так...
    Может есть возможность ставить что-то сервером?
    Яб мог читом скаровать адресс на изменение...
    Получить играемое название сервера не получилось, там очень много перенаправления, а асемблером трудновато будет... Это нужно будет хукать адресс ассемблера изменения названия, передавать в мою переменную, и уже сверять... Весьма трудоемко...

    Может сервер установить что-то игроку, что ему не помешает?
     
  11. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    Ganibal95, Ну, если так подумать, то сервер клиенту ничего не установит... На пиратках есть еще любители UCP, на стиме есть VAC - и там и там идет контроль памяти, и думаю что такое изменение словится тем же ваком