Тут и так всё понятно: читерство - это зло, а со злом надо бороться
Начнем нашу борьбу с объявления массива, в котором мы будем хранить количество денег всех игроков:
В public OnPlayerConnect засунем это:
Теперь созданим "паблик", который будет давать деньги "от имени сервера":
public GivePlayerMoneyLegal(playerid,money)
{
if(money > 0)//Если мы даем деньги
{
plmoney[playerid] += money;//Сначала добавим это кол-во денег в наш массив
GivePlayerMoney(playerid,money);//И дадим эту сумму игроку
return 1;//Неважно, что эта функция будет возвращать, пусть это будет "тру"
}
else//Еслы мы забираем деньги
{
GivePlayerMoney(playerid,money);//Сначала заберем эту сумму игроку
plmoney[playerid] += money;//В наш массив добавим это кол-во денег
}
return 1;//Неважно, что эта функция будет возвращать, пусть это будет "тру"
}
Т. к. это "паблик", его нужно "профорвардить", засунем эту строку над нашим пабликом:
Теперь найдем OnPlayerUpdate, и засунем туда это:
{
new str[64];//Переменная, в которую мы запишем наше уведомление о обнаружении читера
new plname[MAX_PLAYER_NAME];//Переменная, в которую мы поместим имя читера
GetPlayerName(playerid,plname,sizeof(plname));//Узнаем имя нашего читера
format(str,sizeof(str),"АНТИЧИТ: %s был кикнут. Причина: Читерство ($%d)",plname,GetPlayerMoney(playerid) - plmoney[playerid]);//Поместим всю нужную информацию в нашу переменную
SendClientMessageToAll(0xF0624496,str);//Опозорим этого игрока на весь сервер
Kick(playerid);//И кикнем его
}
Всё что остаётся сделать - заменить стандартную GivePlayerMoney на созданную нами GivePlayerMoneyLegal.
Если вы всё сделали правильно - то читерство денег на вашем сервере должно прекратиться.
ВАЖНО: этот код так-же будет кикать людей, которые выиграли деньги в казино или заработали их при помощи прыжков/стантов, т. к. все вмешательства в денежную сумму игрока со стороны самой игры узнать не удастся.
Автор: Paul_Norck
© Paul_Norck Копирование запрещено!