PDA

Просмотр полной версии : [Вопрос] Античит



Killer
28.09.2017, 08:50
Здравствуйте, у меня возникла с Античитом на оружие.

Я сделал систему сохранения оружия, по такому принципу:


stock SaveGun(i)
{
for(new idx = 1; idx < 11; idx++)
{
GetPlayerWeaponData(i, idx, pInfo[i][Weapon][idx-1], pInfo[i][Ammo][idx-1]);
}
format(pInfo[i][pWeapons],32,"%i, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i",pInfo[i][Weapon][0], pInfo[i][Weapon][1], pInfo[i][Weapon][2], pInfo[i][Weapon][3],
pInfo[i][Weapon][4], pInfo[i][Weapon][5], pInfo[i][Weapon][6], pInfo[i][Weapon][7], pInfo[i][Weapon][8], pInfo[i][Weapon][9], pInfo[i][Weapon][10]);
format(pInfo[i][Ammos],32,"%i, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i",pInfo[i][Ammo][0], pInfo[i][Ammo][1], pInfo[i][Ammo][2], pInfo[i][Ammo][3],
pInfo[i][Ammo][4], pInfo[i][Ammo][5], pInfo[i][Ammo][6], pInfo[i][Ammo][7], pInfo[i][Ammo][8], pInfo[i][Ammo][9], pInfo[i][Ammo][10]);

format(mysql_query_string, 400, "UPDATE `accounts` SET `weapons` = '%s', `ammos` = '%s' WHERE `name` = '%s'", pInfo[i][pWeapons], pInfo[i][Ammos], GetName(i));
mysql_tquery(dbHandle, mysql_query_string, "", "");
}

Сохранение происходит после выхода игрока с сервера;

А выдачу оружия по такому: (во время спавна игрока):


for(new idx = 1; idx < 11; idx++)
{
GivePlayerWeaponEx(playerid, pInfo[playerid][Weapon][idx-1],pInfo[playerid][Ammo][idx-1]);
}

Все отлично работает, но сама проблема заключается с читерами.

Например, читер взял оружие - его кикнуло. Но, после перезахода в игру у его это же оружие остается, он выключает чит, и спокойн бегает с этим оружием. То-есть, оружие уже читерское сохранилось.

P.S пробовал удалять оружие после кика.

Mr_LemoneZ
28.09.2017, 09:17
Как вариант, перед тем, как античит какает игрока, создавай PVar, сигнализирующий о том, что игрок был кикнут за использование читов на оружие:

SetPVarInt(playerid, "weapon_cheat_detect", 1);

И в функции сохранения оружия игрока проверяй наличие этого PVar:

stock SaveGun(i)
{
if(GetPVarInt(i, "weapon_cheat_detect"))
return 0;

for(new idx = 1; idx < 11; idx++)
{
GetPlayerWeaponData(i, idx, pInfo[i][Weapon][idx-1], pInfo[i][Ammo][idx-1]);
}
format(pInfo[i][pWeapons],32,"%i, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i",pInfo[i][Weapon][0], pInfo[i][Weapon][1], pInfo[i][Weapon][2], pInfo[i][Weapon][3],
pInfo[i][Weapon][4], pInfo[i][Weapon][5], pInfo[i][Weapon][6], pInfo[i][Weapon][7], pInfo[i][Weapon][8], pInfo[i][Weapon][9], pInfo[i][Weapon][10]);
format(pInfo[i][Ammos],32,"%i, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i",pInfo[i][Ammo][0], pInfo[i][Ammo][1], pInfo[i][Ammo][2], pInfo[i][Ammo][3],
pInfo[i][Ammo][4], pInfo[i][Ammo][5], pInfo[i][Ammo][6], pInfo[i][Ammo][7], pInfo[i][Ammo][8], pInfo[i][Ammo][9], pInfo[i][Ammo][10]);

format(mysql_query_string, 400, "UPDATE `accounts` SET `weapons` = '%s', `ammos` = '%s' WHERE `name` = '%s'", pInfo[i][pWeapons], pInfo[i][Ammos], GetName(i));
mysql_tquery(dbHandle, mysql_query_string, "", "");
}

vovandolg
28.09.2017, 09:23
В мою подпись ниже гляньте(насчет античита) и не мучайтесь над написанием лишних хуков...

Прошу прощения, с андроида отправлял, не появилась подпись, вот ссыль
Weapon-Ammo-Hack (http://pro-pawn.ru/showthread.php?14333-%D0%90%D0%BD%D1%82%D0%B8-Weapon-Ammo-Hack)