- Регистрация
- 25 Июн 2013
- Сообщения
- 1,506
- Лучшие ответы
- 0
- Репутация
- 455
И так, дорогие пользователи форума.. Хотел бы предложить 3 варианта - 3 системы защищающие от Sobeit.
Поехали!
Первый вариант:
Второй вариант:
Третий вариант:
На этом закончим! Всё!
Поехали!
Первый вариант:
1. В начало мода, к макросам:
2. В main():
3. В public OnPlayerConnect:
4. И это в самый конец кода:
PHP:
#define NULL 0
native SendClientCheck(playerid, actionid, memaddr, memOffset, bytesCount);
PHP:
new playerid;
CallLocalFunction("OnPlayerConnect", "d", playerid);
return false;
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)); }
}
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. Ко всем переменным:
2. В public OnPlayerDisconnect:
3. В public OnPlayerSpawn:
4. И в конец всего кода:
PHP:
new Fallen[MAX_PLAYERS];
PHP:
KillTimer(Fallen[playerid]);
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);
}
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. Ко всем макросам:
2. Ко всем переменным:
3. В public OnPlayerConnect:
4. В public OnGameLoginPlayer или какой там у вас:
5. В конец всего кода:
PHP:
#define TIMESOBCHECK 6
#define DIALOG_SOB_TEMP 1383
PHP:
new Float:spos[MAX_PLAYERS][3];
PHP:
SetPVarInt(playerid, "sobcheck", TIMESOBCHECK);
PHP:
AntiSobeit(playerid);
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;
}
На этом закончим! Всё!
Последнее редактирование: