A melhor maneira seria determinar um ponto inicial e final e em seguida determinar a distância.
Se você não tiver um ponto final definido, você pode fazer assim:
Funciona, no entanto, e é um pouco falho, pois o motorista pode simplesmente dirigir em círculos.
Se você não tiver um ponto final definido, você pode fazer assim:
Código PHP:
static Float: gVehicleDistanceTraveled[MAX_VEHICLES],
gPlayerVehicleDistanceTimerID[MAX_PLAYERS];
forward CalculatePlayerVehicleDistance(playerid);
public OnPlayerStateChange(playerid, newstate, oldstate) {
if (newstate == PLAYER_STATE_DRIVER) {
gPlayerVehicleDistanceTimerID[playerid] = SetTimerEx("CalculatePlayerVehicleDistance", 1000, true, "d", playerid);
} else if (oldstate == PLAYER_STATE_DRIVER) {
KillTimer(gPlayerVehicleDistanceTimerID[playerid]);
}
}
public CalculatePlayerVehicleDistance(playerid) {
new vehicleid = GetPlayerVehicleID(playerid);
if (!vehicleid) {
return;
}
// y_vehicledata
// https://github.com/pawn-lang/YSI-Includes/blob/5.x/YSI_Game/y_vehicledata/y_vehicledata_entry.inc#L1275
new Float: speed = Vehicle_Speed(vehicleid) * 0.27777778;
gVehicleDistanceTraveled[vehicleid] += speed;
if (floatround(gVehicleDistanceTraveled[vehicleid]) % 100 < speed) {
// SendClientMessage(playerid, -1, "Seu veículo percorreu 100 metros. (total: %.2f)", gVehicleDistanceTraveled[vehicleid]);
}
}
Funciona, no entanto, e é um pouco falho, pois o motorista pode simplesmente dirigir em círculos.