GetVehicleVelocity
#3

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
никак.
Но собственно зачем тебе проверять машины без водителя?
А если уж так надо, то для этого есть специальное событие OnUnoccupiedVehicleUpdate.
А какие машины проверять?

Машину которая с водителем телепортнуть нельзя читом. Также читы типо Car Shot'a которые разгоняют машину без изменения Velocity и работают лишь без водителя в ней.

OnUnoccupiedVehicleUpdate - не буду использовать, заменяю таймером+циклом.

pawn Код:
CheckVehicle(i)
{
    new Float:v1[3];
    if(GetVehicleDistanceFromPoint(i,Veh[i][XYZA][0],Veh[i][XYZA][1],Veh[i][XYZA][2]) > 5.0)
    {
        GetVehiclePos(i,v1[0],v1[1],v1[2]);
        for(new p=0;p<GetMaxPlayers();p++) if(IsPlayerConnected(p)) if(GetPlayerVehicleID(p) == i && GetPlayerState(p) != PLAYER_STATE_DRIVER) SetPlayerPos(p,v1[0]+(random(2)/5-random(2)/5),v1[1]+(random(2)/5-random(2)/5),v1[2]+1);
        SetVehiclePos(i,Veh[i][XYZA][0],Veh[i][XYZA][1],Veh[i][XYZA][2]);
        SetVehicleZAngle(i,Veh[i][XYZA][3]);
    }
}

public CheckVehicles()
{
    new Float:v[6];
    for(new i=0;i<MAX_VEHICLES;i++)
    {
        if(Veh[i][Spawned])
        {
            if(Veh[i][Updating] <= 0)
            {
                GetVehicleVelocity(i,v[0],v[1],v[2]);
                GetVehiclePos(i,v[3],v[4],v[5]);
                if(v[0] != 0 && Veh[i][LastVelocity][0] != v[0] || v[1] != 0 && Veh[i][LastVelocity][1] != v[1] || v[2] != 0 && Veh[i][LastVelocity][2] != v[2])
                {
                    Veh[i][LastVelocity][0] = v[0],Veh[i][LastVelocity][1] = v[1],Veh[i][LastVelocity][2] = v[2];
                    Veh[i][XYZA][0] = v[3], Veh[i][XYZA][1] = v[4], Veh[i][XYZA][2] = v[5];
                    GetVehicleZAngle(i,Veh[i][XYZA][3]);
                }
                else CheckVehicle(i);
            }
            else Veh[i][Updating]--;
        }
    }
    return SetTimer("CheckVehicles",1000,false);
}
Вот часть кода, именно та, которая проверяет позицию машины и наличие телепортации/лишнего изменения позиции. Ну тут одна проблема, если разогнаться и выпрыгнуть, то из-за вот этой проверки

pawn Код:
if(v[0] != 0 && Veh[i][LastVelocity][0] != v[0] || v[1] != 0 && Veh[i][LastVelocity][1] != v[1] || v[2] != 0 && Veh[i][LastVelocity][2] != v[2])
античит думает что машина телепортнута и вернет ее на последнюю сохраненную позицию. Ее конечно можно убрать, но после 1го такого запуска машины, античит уже не будет работать на ней, если сразу подхватит читер.
Reply


Messages In This Thread
GetVehicleVelocity - by stabker - 07.09.2012, 20:18
Re: GetVehicleVelocity - by Stepashka - 07.09.2012, 20:31
Re: GetVehicleVelocity - by stabker - 07.09.2012, 20:42

Forum Jump:


Users browsing this thread: 3 Guest(s)