If you were to have ******d this before posting you would've found an include for this,
https://sampforum.blast.hk/showthread.php?tid=91815 |
static Float:LastPos[MAX_PLAYERS][3];
static Float:Distance[MAX_PLAYERS];
stock Float:GetPlayerDistance(playerid) { return Distance[playerid]; }
stock ResetDistance(playerid) { Distance[playerid] = 0.0; }
static UpdateLastDistance(playerid) { GetPlayerPos(playerid, LastPos[playerid][0], LastPos[playerid][1], LastPos[playerid][2]); }
//------------------------------------------------------------------------------
public OnPlayerConnect(playerid)
{
Distance[playerid] = 0.0;
if (funcidx("ODO_OnPlayerConnect") != -1)
{
return CallLocalFunction("ODO_OnPlayerConnect", "i", playerid);
}
return 1;
}
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect ODO_OnPlayerConnect
forward ODO_OnPlayerConnect(playerid);
//------------------------------------------------------------------------------
public OnPlayerUpdate(playerid)
{
Distance[playerid] += GetPlayerDistanceFromPoint(playerid, LastPos[playerid][0], LastPos[playerid][1], LastPos[playerid][2]);
UpdateLastDistance(playerid);
if (funcidx("ODO_OnPlayerUpdate") != -1)
{
return CallLocalFunction("ODO_OnPlayerUpdate", "i", playerid);
}
return 1;
}
#if defined _ALS_OnPlayerUpdate
#undef OnPlayerUpdate
#else
#define _ALS_OnPlayerUpdate
#endif
#define OnPlayerUpdate ODO_OnPlayerUpdate
forward ODO_OnPlayerUpdate(playerid);
//------------------------------------------------------------------------------
public OnPlayerSpawn(playerid)
{
UpdateLastDistance(playerid);
if (funcidx("ODO_OnPlayerSpawn") != -1)
{
return CallLocalFunction("ODO_OnPlayerSpawn", "i", playerid);
}
return 1;
}
#if defined _ALS_OnPlayerSpawn
#undef OnPlayerSpawn
#else
#define _ALS_OnPlayerSpawn
#endif
#define OnPlayerSpawn ODO_OnPlayerSpawn
forward ODO_OnPlayerSpawn(playerid);
//------------------------------------------------------------------------------
forward ODO_SetPlayerPos(playerid, Float:x, Float:y, Float:z);
public ODO_SetPlayerPos(playerid, Float:x, Float:y, Float:z)
{
SendClientMessage(playerid, -1, "Called");
LastPos[playerid][0] = x, LastPos[playerid][1] = y, LastPos[playerid][2] = z;
return SetPlayerPos(playerid, x, y, z);
}
#if defined _ALS_SetPlayerPos
#undef SetPlayerPos
#else
#define _ALS_SetPlayerPos
#endif
#define SetPlayerPos ODO_SetPlayerPos
Float:GetVehicleSpeed(vehicleid)
{
new Float:vX, Float:vY, Float:vZ;
GetVehicleVelocity(vehicleid, vX, vY, vZ);
return floatsqroot(vX*vX + vY*vY + vZ*vZ);
}
new speed;
forward OnSpeedUpdate();
public OnSpeedUpdate()
{
speed = GetVehicleSpeed(vehicleid)*3600*1000; //multiply the speed into miles per second, instead of miles per hour
SetTimer("OdoUpdate", speed, false);
}
forward OdoUpdate()
public OdoUpdate()
{
Odo[vehicleid] ++;
SetTimer("OnSpeedUpdate", 2000, true);
}