После моей долгой пропажи, я решил вернуться обратно в багнутый samp.
И так, сама суть чита думаю всем известна, мы жмем ( при работе собейта ) роликом мышки на автомобиль и автоматически туда садимся.
Мое самое простое решение:
В public OnPlayerDisconnect
PHP код:
DeletePVar(playerid,"AC_AntiCarRun"); // Удалим нашу переменную определяющую ид авто
В public OnPlayerEnterVehicle
PHP код:
SetPVarInt(playerid,"AC_AntiCarRun",GetPlayerVehicleID(playerid)); // Записываем в нашу переменную игрока ид авто, в которое он сел
В public OnPlayerExitVehicle
PHP код:
DeletePVar(playerid,"AC_AntiCarRun"); // Удаляем
Если у вас есть таймер который чекает игрока каждую секунду то вставляем в него, если нет - то в public OnPlayerUpdate
PHP код:
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) if(GetPVarInt(playerid,"AC_AntiCarRun") != GetPlayerVehicleID(playerid)) return Kick(playerid);
Суть чита: как я понял на глаз, то когда мы садимся в машину при помощи чита, не задействуется OnPlayerEnterVehicle, тем самым читер вредит сам себе. Мы записываем в переменную ид машины в которую он сел и если он не идентичен авто в котором он сидит - наказываем игрока. Ложных срабатываний нет, только-что проверил.
Важно: если садите игрока в машину с помощью сервера ( PutPlayerInVehicle(playerid, vehicleid, param); ), задавайте переменной значение -
PHP код:
SetPVarInt(playerid,"AC_AntiCarRun",vehicleid); // Тут ид авто куда садим игрока