| Создаём массив, который будет отвечать за деньги каждого игрока Code new plmoney[MAX_PLAYERS];//В самый верх мода, т. к. это глобальный массив В public OnPlayerConnect Code plmoney[playerid] = 0; Теперь созданим паблик, который будет нашей новой функцией давания денег )) Code forward GivePlayerMoneyLegal(playerid,money); public GivePlayerMoneyLegal(playerid,money) { if(money > 0)//Если мы даем деньги { plmoney[playerid] += money;//Сначала добавим это кол-во денег в наш массив GivePlayerMoney(playerid,money);//дадим эту сумму игроку return 1; } else//Еслы мы забираем деньги { GivePlayerMoney(playerid,money);//Сначала заберем эту сумму игроку plmoney[playerid] += money;//В наш массив добавим это кол-во денег } return 1; } Создаём новый паблик с проверкой на читерство Code forward AntiMoneyHack(playerid); public AntiMoneyHack(playerid) { if(GetPlayerMoney(playerid) > plmoney[playerid])//Проверяем сумму { 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);//И кикнем его } return 1; } Теперь нужно поставить таймер на проверку в public OnGameModeInit Code SetTimer("AntiMoneyHack", 1000, true); Ну а теперь осталась только ваша задача поменять все функции SafeGivePlayerMoney и GivePlayerMoney на GivePlayerMoneyLegal Если вы всё правильно делали, то всё должно отлично работать УРОК BY valych
|