Podes criar uma funзгo para guardar a posiзгo antiga do veiculo e outra para guardar a nova posiзгo, assim, bastava checar se as mesmas sгo diferentes, e se forem, tens um carro movido...
Darei um exemplo de OnVehiclePosChange.
OBS: Esta funзгo apenas funciona se o veнculo й movido por um player em state driver.
Ex:
pawn Код:
//Variбvel pra guardar as OLD e NEW pos do vehicle...
new Float:PosVH[MAX_VEHICLES][2][3];
/*Float:PosVH > [MAX_VEHICLES] - Valor definido do total de veнculos do servidor
[2] - 0 = OLDPOS | 1 = NEWPOS
[3] - 0 = Pos X | 1 = Pos Y | 2 = Pos Z
*/
//Declaraзгo da callback OnVehiclePosChange que serб chamada ao um veнculo se mover, informando id do veнculo, e antiga e nova posiзгo
forward OnVehiclePosChange(vehicleid, Float:oldposx, Float:oldposy, Float:oldposz, Float:newposx, Float:newposy, Float:newposz);
public OnPlayerUpdate(playerid)
{
new vid = GetPlayerVehicleID(playerid);//Pega o id do veнculo atual do player
if(vid != 0)//Checa se o valor de rotorno da funзгo acima nгo й 0, pois retorna 0 se o player nгo estiver em um veнculo
{
GetVehiclePos(vid, PosVH[vid][1][0], PosVH[vid][1][1], PosVH[vid][1][2]);//Guarda a nova posiзгo do veнculo (mesmo se o veнculo nгo tiver se movido)
//Checa se a posiзгo antiga й diferente da nova
if(PosVH[vid][0][0] != PosVH[vid][1][0] && PosVH[vid][0][1] != PosVH[vid][1][1] && PosVH[vid][0][2] != PosVH[vid][1][2])
{
//Chama a funзгo setando os valores dos parвmetros
CallLocalFunction("OnVehiclePosChange", "dfff", vid, PosVH[vid][0][0], PosVH[vid][0][1], PosVH[vid][0][2], PosVH[vid][1][0], PosVH[vid][1][1], PosVH[vid][1][2]);
}
}
return 1;
}
public OnVehiclePosChange(vehicleid, Float:oldposx, Float:oldposy, Float:oldposz, Float:newposx, Float:newposy, Float:newposz)
{
//E aqui basta colocar as funзхes que deseja quando o veнculo se mover
printf("[%d] Old Position: [%f,%f,%f] New Position: [%f,%f,%f]", vehicleid, oldposx, oldposy, oldposz, newposx, newposy, newposz);
return 1;
}