Code: Select all
//by Games
#include a_samp
new IDVEH[MAX_PLAYERS];
new bool:UseEnter[MAX_PLAYERS];
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER )
{
if(IDVEH[playerid] != GetPlayerVehicleID(playerid) || !UseEnter[playerid])
{
Punish(playerid);
}
UseEnter[playerid] = false;
}
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
ResetCarInfo(playerid);
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
UseEnter[playerid] = true;
IDVEH[playerid]=vehicleid;
return 1;
}
public OnPlayerConnect(playerid)
{
ResetCarInfo(playerid);
return 1;
}
public OnPlayerDisconnect(playerid,reason)
{
ResetCarInfo(playerid);
return 1;
}
public OnFilterScriptInit()
{
SetTimer("CheckCar",1000,1);//если в мод вшивать будете, то в public OnGameModeInit()
}
forward CheckCar();
public CheckCar()
{
for(new i; i<GetMaxPlayers(); i++)
{
if(IDVEH[i] != -1 && IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && !UseEnter[i] && IDVEH[i] != GetPlayerVehicleID(i)) Punish(i);
}
return 1;
}
stock ResetCarInfo(playerid)
{
IDVEH[playerid]=-1;
UseEnter[playerid] = false;
}
stock Punish(playerid)
{
new string[MAX_PLAYER_NAME+40];
format(string,sizeof(string),"{FFFF66}%s был кикнут за тп в авто!",PlayerName(playerid));
SendClientMessageToAll(-1, string);
Kick(playerid);
/*ResetCarInfo(playerid); //если наказание не кик, но вы вытаскиваете игрока из авто, например посадите в тюрьму*/
/*IDVEH[playerid]=GetPlayerVehicleID(playerid);//если не высаживаете игрока, например только даете предупреждение */
}
//
При необходимости добавить:
Code: Select all
stock PlayerName(playerid){
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid,pname,sizeof(pname));
return pname;}
Все PutPlayerInVehicle(playerid, vehicleid, seatid); заменить на PutPlayerInVeh(playerid, vehicleid, seatid);
Вниз мода добавить:
Code: Select all
stock PutPlayerInVeh(playerid, vehicleid, seatid)
{
UseEnter[playerid] = false;
IDVEH[playerid] = vehicleid;
PutPlayerInVehicle(playerid, vehicleid, seatid);
return 1;
}
Плюсы этого варианта:
-Ловит тп в авто (хоть пешком в авто, хоть из авто в авто)
- Ловит даже если нажать возле одного авто интер, а тп внутрь другого авто.
Минусы:
- Не ловит, если нажать возле авто интер, а потом тп читом в это же авто.