Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Anti GOC

]Serеgamil[

Начинающий
Пользователь
Регистрация
13 Июн 2013
Сообщения
65
Лучшие ответы
0
Репутация
22
Добрый день

Думаю многие из вас знают про чит God Of Cars, для тех, кто не в курсе


В общем поиздевался над серверами, стало жалко поляков, около 8 серверов центрифугой выключил xD

Данный прототит анти-чита поможет защитить ваш сервер от всех этих "недугов", кроме центрифуги, у нее походу по другому система устроена...

Ложные срабатывания? - не видел

Для справочки:
Тестировал системку на пустом сервере с ~2000 машин, срабатывало на все, кроме центрифуги... после активации лагера у меня комп минут 20 отвисал :D

Для тестов:


При тесте, если обнаружил вас с читом - замораживает и отправляет смс в чат, чтобы очистить его и разморозиться - кнопка N

Если все устроило -

PHP:
#include <a_samp>
 
main(){}
 
new p_ac[MAX_PLAYERS];
 
public OnGameModeInit()
{
        SetTimer("AC_Car",200,0);
        return 1;
}
 
forward AC_Car();
public AC_Car(){
        for(new j;j!=GetMaxPlayers();j++){
            if(!IsPlayerConnected(j)) continue;
                if(p_ac[j]!=0) p_ac[j]--;
                if(p_ac[j] != 0){
                    p_ac[j] = 0;
                    Kick(j);
                }
        }
        SetTimer("AC_Car",200,0);
}
 
public OnPlayerConnect(playerid)
{
        p_ac[playerid] = 0;
        return 1;
}
 
public OnPlayerStateChange(playerid, newstate, oldstate){
        if(newstate == PLAYER_STATE_DRIVER){
                p_ac[playerid]+=1;
        }
        return 1;
}

Версия 2 - без таймера, действуют 2 каллбэка

PHP:
    // This is a comment
    // uncomment the line below if you want to write a filterscript
    //#define FILTERSCRIPT
    //все PutPlayerInVehicle замените на putPlayerInVehicle
    #include <a_samp>
     
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger){
            SetPVarInt(playerid,"ac_car_id",vehicleid);
        return 1;
    }
     
public OnPlayerUpdate(playerid){
	if(IsPlayerInAnyVehicle(playerid)){
	    if(GetPlayerVehicleID(playerid) != GetPVarInt(playerid,"ac_car_id")){
			SetPVarInt(playerid,"ac_car_id",-1);
			new Float:x,Float:y,Float:z;
			GetPlayerPos(playerid,x,y,z);
			SetPlayerPos(playerid,x,y,z+1);
			SendClientMessage(playerid,-1,"Не шали засранец!");
	    }
	}
	return 1;
}
     
    putPlayerInVehicle(playerid,vehicle,seat){
            SetPVarInt(playerid,"ac_car_id",vehicle);
        PutPlayerInVehicle(playerid,vehicle,seat);
    }
     
    public OnPlayerConnect(playerid){
        SetPVarInt(playerid,"ac_car_id",-1);
            return 1;
    }
Здесь уже очищен код и будет кикать при обнаружении чита
Так же рекомендую заменить все PutPlayerInVehicle на putPlayerInVehicle

Вот и все) Удачной ловли тунеядцев!

Автор - Seregamil

Так же во время тестирования заметил, что ловит за

AutoGet, т.е. телепортирует в любую близстоящую машину
И пульсатор цвета (игрок стоит рядом с тачкой и ее цвет меняется)

P.S. срабатывает при использовании не в машине


[hr][/hr]

Вариант Кемпера

PHP:
#include <a_samp>

forward AC_Car(); 
new p_ac[MAX_PLAYERS char];
 
public OnGameModeInit() {
	SetTimer("AC_Car", 200, true);
	return true;
}

public AC_Car() {
	for(new j, maxPL = GetMaxPlayers(); j != maxPL; j++) {
		if (!IsPlayerConnected(j)) continue;
		if (--p_ac{j} < 0)
			return p_ac{j} = 0, Kick(j);
	}
	return true;
}
 
public OnPlayerConnect(playerid) {
	p_ac{playerid} = 0;
	return 1;
}
 
public OnPlayerStateChange(playerid, newstate, oldstate){
	if (newstate == PLAYER_STATE_DRIVER)
		p_ac{playerid}++;
	return true;
}
 
Последнее редактирование:
Сверху Снизу