SA-MP Forums Archive
[FilterScript] Anti God of Cars - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+----- Forum: Релизы/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=66)
+----- Thread: [FilterScript] Anti God of Cars (/showthread.php?tid=447194)

Pages: 1 2


Anti God of Cars - Seregamil1 - 29.06.2013

Добрый день!

Думаю многие слышали про чит God of Cars...

http://www.youtube.com/watch?feature...&v=YJ8JP_gNMHM

Данный прототип анти чита защищает сервер от его использования вне машины
Ложных сигналов - не было

Тестировалось на полностью пустом сервере с ~2000 машин

PHP Code:
    // This is a comment
    // uncomment the line below if you want to write a filterscript
    //#define FILTERSCRIPT
    //все PutPlayerInVehicle замените на putPlayerInVehicle
    #include <a_samp>
     
    
public OnPlayerEnterVehicle(playeridvehicleidispassenger){
            
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;
    } 
Спасибо за внимание)

Автор - Seregamil


Re: Anti God of Cars - White_116 - 29.06.2013

Фигня
Метод "дотолкать" веселее.
На заметку: есть вид чита когда, состояние не меняется. Достаточно сесть в машину и ваша защита не работает


Re: Anti God of Cars - Seregamil1 - 29.06.2013

Quote:
Originally Posted by White_116
View Post
Фигня
Метод "дотолкать" веселее.
На заметку: есть вид чита когда, состояние не меняется. Достаточно сесть в машину и ваша защита не работает
тут только от гока, про остальные - неслышал


Re: Anti God of Cars - Alexander_Petrov - 29.06.2013

Можно начать садиться в машину, но так и не сесть. Тогда для следующей машины античит не сработает.


Re: Anti God of Cars - Seregamil1 - 29.06.2013

Quote:
Originally Posted by Alexander_Petrov
View Post
Можно начать садиться в машину, но так и не сесть. Тогда для следующей машины античит не сработает.
почему?
начнет садиться - значение станет равно 1, уйдет - ничего не измениться, решит сесть в новую - пройдет тот же алгоритм


Re: Anti God of Cars - Alexander_Petrov - 29.06.2013

Если так и не сядет, значение останется равным одному, и тогда весь дальнейший алгоритм не имеет смысла.


Re: Anti God of Cars - Seregamil1 - 29.06.2013

Quote:
Originally Posted by Alexander_Petrov
View Post
Если так и не сядет, значение останется равным одному, и тогда весь дальнейший алгоритм не имеет смысла.
согласен, однако в чите это не предусмотрено)
там просто с большой скоростью запинывает и выгоняет в машину


Re: Anti God of Cars - Jon_De - 29.06.2013

делал поДобный античит. будет ложно срабатывать часто


Re: Anti God of Cars - Alexander_Petrov - 29.06.2013

Не будет, если поставить исключение на PutPlayerInVehicle


Re: Anti God of Cars - Seregamil1 - 30.06.2013

Обновил вторую версию, сделан фикс PutPlayerInVehicle, рекомендую заменить все PutPlayerInVehicle на putPlayerInVehicle дабы избежать сбоев в системе
Так же система теперь действует как анти-тп в авто


Re: Anti God of Cars - Jon_De - 30.06.2013

Quote:
Originally Posted by Alexander_Petrov
View Post
Не будет, если поставить исключение на PutPlayerInVehicle
OnPlayerEnterVehicle не всегда вызывается

а всего то нужно - сделать антителепорт из тачки в тачку через OnPlayerUpdate и антифлуд на OnPlayerStateChange (не более 3 раз в секунду)


Re: Anti God of Cars - Alexander_Petrov - 30.06.2013

Зачем делать телепорт из тачки в тачку через OnPlayerUpdate? Можно сделать так:
pawn Code:
new Vehicle[MAX_PLAYERS];
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
    {
        if(Vehicle[playerid])
        {
            Kick(playerid);
            return 1;
        }
        Vehicle[playerid] = GetPlayerVehicleID(playerid);
    }
    else if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
    {
        Vehicle[playerid] = 0;
    }
    return 1;
}
Если это использовать, можно юзать переменную Vehicle, а не GetPlayerVehicleID, похоже на античит на деньги.


Re: Anti God of Cars - Seregamil1 - 30.06.2013

Quote:
Originally Posted by Alexander_Petrov
View Post
Зачем делать телепорт из тачки в тачку через OnPlayerUpdate? Можно сделать так:
pawn Code:
new Vehicle[MAX_PLAYERS];
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
    {
        if(Vehicle[playerid])
        {
            Kick(playerid);
            return 1;
        }
        Vehicle[playerid] = GetPlayerVehicleID(playerid);
    }
    else if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
    {
        Vehicle[playerid] = 0;
    }
    return 1;
}
До определенного момента я так и сделал, однако при ТП в машину из машины выяснилось, что каллбэки OnPlayerEnter/ExitVehicle и OnPlayerStateChange несрабатывают


Re: Anti God of Cars - Alexander_Petrov - 30.06.2013

Не срабатывают при использовании самого чита или просто не срабатывают во время обычной игры?


Re: Anti God of Cars - Seregamil1 - 30.06.2013

при использовании чита


Re: Anti God of Cars - White_116 - 30.06.2013

Оставлю тут. Может работать как ФС. Суть АФК бага: на одном транспорте могут ездить несколько игроков.

pawn Code:
#include <a_samp>
new NewWVehicle[MAX_PLAYERS];
new WVehicle[MAX_PLAYERS];
new EnterWVehicleTime[MAX_PLAYERS];
new WVehicleDriver[MAX_VEHICLES];

forward PutPlayerInVehicleEx(playerid, vehicleid, seatid);
public PutPlayerInVehicleEx(playerid, vehicleid, seatid)
{
    //Из-за пинга возможны проблемы. Нужно высадить и лишь потом посадить, если игрок уже был в другом транспорте.
    NewWVehicle[playerid]=vehicleid;
    EnterWVehicleTime[playerid]=0;
    return PutPlayerInVehicle(playerid, vehicleid, seatid);
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
//----------------------        AntiQuikCarChange       ------------------------
    NewWVehicle[playerid]=vehicleid;
    return 1;
}

public OnPlayerUpdate(playerid)
{
//----------------------        AntiQuikCarChange       ------------------------
    new vehicleid=GetPlayerVehicleID(playerid);
    if(vehicleid == 0)WVehicle[playerid]=0; else//exit
    {
        if(WVehicle[playerid] == 0)//enter
        {
            if(NewWVehicle[playerid] != vehicleid)
            {
                SetVehicleVelocity(vehicleid, 0.0, 0.0, 0.0);
                Kick(playerid);
                return 0;
            }
            else
            {
                if(GetTickCount()-EnterWVehicleTime[playerid] < 1500)
                {
                    SetVehicleVelocity(vehicleid, 0.0, 0.0, 0.0);
                    Kick(playerid);
                    return 0;
                }
                else
                {
                    WVehicle[playerid]=vehicleid;
                    NewWVehicle[playerid]=0;
                    EnterWVehicleTime[playerid]=GetTickCount();
//----------------------        Anti AFK Bug        ----------------------------
                    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)WVehicleDriver[vehicleid]=playerid;
                }
            }
        }
        else if(WVehicle[playerid] != vehicleid)
        {
            SetVehicleVelocity(vehicleid, 0.0, 0.0, 0.0);
            Kick(playerid);
            return 0;
        }
//----------------------        Anti AFK Bug        ----------------------------
        if(GetPlayerState(playerid)==PLAYER_STATE_DRIVER && WVehicleDriver[vehicleid] != playerid)
        {
            new Float:x, Float:y, Float:z;
            GetPlayerPos(playerid, x, y, z);
            SetPlayerPos(playerid, x, y, z);
        }
    }
//...
    return 1;
}



Re: Anti God of Cars - Alexander_Petrov - 30.06.2013

Можно не выпихивать игрока из машины перед использованием PutPlayerInVehicle, а просто самому вызвать OnPlayerStateChange.


Re: Anti God of Cars - White_116 - 30.06.2013

Quote:
Originally Posted by Alexander_Petrov
View Post
Можно не выпихивать игрока из машины перед использованием PutPlayerInVehicle, а просто самому вызвать OnPlayerStateChange.
Это вы относительно какого кода?


Re: Anti God of Cars - Alexander_Petrov - 30.06.2013

Quote:
Originally Posted by White_116
View Post
pawn Code:
forward PutPlayerInVehicleEx(playerid, vehicleid, seatid);
public PutPlayerInVehicleEx(playerid, vehicleid, seatid)
{
    //Из-за пинга возможны проблемы. Нужно высадить и лишь потом посадить, если игрок уже был в другом транспорте.
    NewWVehicle[playerid]=vehicleid;
    EnterWVehicleTime[playerid]=0;
    return PutPlayerInVehicle(playerid, vehicleid, seatid);
}
Вот.


Re: Anti God of Cars - White_116 - 30.06.2013

Quote:
Originally Posted by Alexander_Petrov
View Post
Вот.
В моей защите не используется OnPlayerStateChange