ко всем переменным
enum vInfo
{,
Float:AntiVehPos[4],
bool:AntiPropalCar
};
new pCars[MAX_VEHICLES][vInfo];
==========================================================================================
В секундный таймер
for(new c=0;c<MAX_VEHICLES+1;c++)
{
if(GetVehicleDistanceFromPoint(c,pCars[c][AntiVehPos][0],pCars[c][AntiVehPos][1],pCars[c][AntiVehPos][2]) > 2 && !UseCar(c))
{
SetVehiclePosEx(c,pCars[c][AntiVehPos][0],pCars[c][AntiVehPos][1],pCars[c][AntiVehPos][2],pCars[c][AntiVehPos][3]);
}
}
========================================================================================
в конец мода
public OnGameMode()
{
for(new car=0;car<MAX_VEHICLES+1;car++)
{
GetVehiclePos(car,pCars[car][AntiVehPos][0],pCars[car][AntiVehPos][1],pCars[car][AntiVehPos][2]);
GetVehicleZAngle(car,pCars[car][AntiVehPos][3]);
pCars[car][AntiPropalCar] = false;
}
}
========================================================================================
В конец мода
public OnVehicleSpawn(vehicleid)
{
if(pCars[vehicleid][AntiPropalCar] == false)
{
SetVehiclePosEx(vehicleid,pCars[vehicleid][AntiVehPos][0],pCars[vehicleid][AntiVehPos][1],pCars[vehicleid][AntiVehPos][2],pCars[vehicleid][AntiVehPos][3]);
return 1;
}
pCars[vehicleid][AntiPropalCar] = false;
return 1;
}
========================================================================================
в конец мода
public OnPlayerUpdate(playerid)
{
if(GetPlayerState(playerid) == 2)
{
GetVehiclePos(carid,pCars[carid][AntiVehPos][0],pCars[carid][AntiVehPos][1],pCars[carid][AntiVehPos][2]);
GetVehicleZAngle(carid,pCars[carid][AntiVehPos][3]);
}
}
========================================================================================
В конец мода
stock UseCar(vehicleid)
{
for(new i = GetMaxPlayers() - 1; i != -1; i--)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i) || !IsPlayerInVehicle(i, vehicleid)) continue;
return 1;
}
return 0;
}
stock SetVehiclePosEx(vehicleid,Float:X,Float:Y,Float:Z,Float:AngleS = 0.0)
{
pCars[vehicleid][AntiVehPos][0] = X;
pCars[vehicleid][AntiVehPos][1] = Y;
pCars[vehicleid][AntiVehPos][2] = Z;
pCars[vehicleid][AntiVehPos][3] = AngleS;
SetVehiclePos(vehicleid,X,Y,Z);
SetVehicleZAngle(vehicleid,AngleS);
return 1;
}
stock SetVehicleToRespawnEx(vehicleid)
{
pCars[vehicleid][AntiPropalCar] = true;
SetVehicleToRespawn(vehicleid);
GetVehiclePos(vehicleid,pCars[vehicleid][AntiVehPos][0],pCars[vehicleid][AntiVehPos][1],pCars[vehicleid][AntiVehPos][2]);
GetVehicleZAngle(vehicleid,pCars[vehicleid][AntiVehPos][3]);
return 1;
}
========================================================================================
А теперь разберём в чём смысл где минусы а где плюсы
Минус:
1) если игрок выпрыгнет из машины,машина встанет на то место за 2 метра от него где он выпрыгнул (не знаю как доработать)
2) Если есть водитель, а его машину телепортирует читом, то античит не сработает из-за того что есть за рулём водитель (позже доработаю)
Плюсы:
1) машину не возможно телепортировать к себе или респавнить её читом
2) игрока невозможно будет столкнуть в воду если он сидит на пассажирском сидении, а водителя нету
3) машину вообще нельзя стронуть с места если нету водителя
4) Если есть водитель, а его машину респавнили, то она вернёться и встанет рядом с ним
эта переменная
PHP код:
pCars[vehicleid][AntiPropalCar]