Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок System Anti-Sobeit [ 3 Варианта ]

Статус
В этой теме нельзя размещать новые ответы.

Brendan

Эксперт
Пользователь
Регистрация
25 Июн 2013
Сообщения
1,506
Лучшие ответы
0
Репутация
455
И так, дорогие пользователи форума.. Хотел бы предложить 3 варианта - 3 системы защищающие от Sobeit.
Поехали!

Первый вариант:

1. В начало мода, к макросам:
PHP:
#define NULL 0
native SendClientCheck(playerid, actionid, memaddr, memOffset, bytesCount);
2. В main():
PHP:
	new playerid;
	CallLocalFunction("OnPlayerConnect", "d", playerid);
	return false;
3. В public OnPlayerConnect:
PHP:
	printf("%s подключенный к серверу", PlayerName(playerid));

	new actionid = 0x5, memaddr = 0x5E8606, retndata = 4;
	SendClientCheck(playerid, actionid, memaddr, NULL, retndata);

	printf("Проверка клиента %s:\n%d\n%d\n%d\n%d\n%d", PlayerName(playerid), playerid, actionid, memaddr, NULL, retndata);
	switch(retndata)
	{
    case 10: {
    	printf("Игрок %s вероятно имеет собейт или d3d9.dll файл в директории GTA San Andreas", PlayerName(playerid)); }
	}
4. И это в самый конец кода:
PHP:
forward OnClientCheckResponse(playerid, actionid, memaddr, retndata);
public OnClientCheckResponse(playerid, actionid, memaddr, retndata)
{
	switch(retndata) {
    	case 0xA: printf("Использует читы");
	}
    return true || false;
}
stock PlayerName(playerid)
{
	new Name[MAX_PLAYER_NAME];
	GetPlayerName(playerid, Name, sizeof(Name));
	return Name;

}

Второй вариант:
1. Ко всем переменным:
PHP:
new Fallen[MAX_PLAYERS];
2. В public OnPlayerDisconnect:
PHP:
    KillTimer(Fallen[playerid]);
3. В public OnPlayerSpawn:
PHP:
    if(GetPVarInt(playerid, "proverkaoff") < 1)
    {
        TogglePlayerControllable(playerid,0);
    	SetPVarInt(playerid,"connecttime",GetPVarInt(playerid, "connecttime") + 1);
    	Fallen[playerid] = SetTimerEx("CheckClient", 1600+(GetPlayerPing(playerid)*2), 0, "ii", playerid);
		TogglePlayerControllable(playerid,0);
	}
4. И в конец всего кода:
PHP:
forward CheckClient(playerid);
public CheckClient(playerid)
{
    if(GetPVarInt(playerid, "connecttime") > 1) return Kick(playerid);
	new Float:pos[6];
	GetPlayerCameraPos(playerid, pos[0], pos[1], pos[2]), GetPlayerPos(playerid, pos[3], pos[4], pos[5]);
	if(floatabs(pos[2] - pos[5]) > 1.3) SetTimerEx("KickSob",5000,false,"i",playerid);
	SetPVarInt(playerid,"connecttime",0), SetPVarInt(playerid,"proverkaoff",1);
	TogglePlayerControllable(playerid,1);
	return true;
}
forward KickSob(playerid);
public KickSob(playerid)
{
	if(!IsPlayerConnected(playerid)) return true;
	SendClientMessage(playerid, 0x703A3AFF, "Вы были кикнуты за использование чит программ. (cod: Программа Sobeit)");
	SendClientMessage(playerid, 0x703A3AFF, "Удалите файл в папке с игрой: \"d3d9.dll\"");
	SetTimerEx("KickSob1",1000,false,"i",playerid);
	return true;
}
forward KickSob1(playerid);
public KickSob1(playerid) return Kick(playerid);

Третий вариант:
1. Ко всем макросам:
PHP:
#define TIMESOBCHECK 6
#define DIALOG_SOB_TEMP 1383
2. Ко всем переменным:
PHP:
new Float:spos[MAX_PLAYERS][3];
3. В public OnPlayerConnect:
PHP:
SetPVarInt(playerid, "sobcheck", TIMESOBCHECK);
4. В public OnGameLoginPlayer или какой там у вас:
PHP:
AntiSobeit(playerid);
5. В конец всего кода:
PHP:
forward AntiSobeit(playerid);
public AntiSobeit(playerid)
{
    new
	    string[256]
	;
    if(GetPVarInt(playerid, "sobcheck") > 1)
	{
	    SetPVarInt(playerid, "sobcheck", GetPVarInt(playerid, "sobcheck")-1);
	    format(string,sizeof string,"Проверка директории игры GTA SA на наличие s0beit.");
	    format(string,sizeof string,"%s\nПожалуйста подождите, осталось %d сек до окончания.",string, GetPVarInt(playerid, "sobcheck"));
	    ShowPlayerDialog(playerid,DIALOG_SOB_TEMP,0,"{FFA500}==[ Cheat Check ]==",string,"Ok","");
	    return SetTimerEx("AntiSobeit", 1000, false, "i",playerid);
	}
    GetPlayerCameraFrontVector(playerid,spos[playerid][0],spos[playerid][1],spos[playerid][2]);
    if(GetPVarInt(playerid, "sobcheck") == 1 && spos[playerid][2] < -0.4)
    {
	    SendClientMessage(playerid, 0xE90000FF, "Введите (/q)uit для выхода из игры");
	    format(string,sizeof string,"Уважаемый игрок, в директории игры GTA San Andreas обнаружен посторонний");
	    format(string,sizeof string,"%s\nфайл 'd3d9.dll'. Для игры на нашем сервере удалите этот файл.",string);
	    ShowPlayerDialog(playerid,DIALOG_SOB_TEMP,0,"{FFA500}==[ Warning ]==",string,"Ok","");
	    return Kick(playerid);
    }
	else ShowPlayerDialog(playerid,-1,DIALOG_STYLE_MSGBOX,"HideDialog","text","Close",""),TogglePlayerControllable(playerid, true);
    return 1;
}

На этом закончим! Всё!
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу