//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;
}
public OnVehiclePosChange(vehicleid, Float:oldposx, Float:oldposy, Float:oldposz, Float:newposx, Float:newposy, Float:newposz)
{
new vehicleid = GetPlayerVehicleID(playerid);
GetVehiclePos(vehicleid, PlayerInfo[playerid][CarX], PlayerInfo[playerid][CarY], PlayerInfo[playerid][CarZ]);
printf("[%d] Old Position: [%f,%f,%f] New Position: [%f,%f,%f]", vehicleid, oldposx, oldposy, oldposz, newposx, newposy, newposz);
return 1;
}
public OnVehiclePosChange(vehicleid, Float:oldposx, Float:oldposy, Float:oldposz, Float:newposx, Float:newposy, Float:newposz)
{
PlayerInfo[playerid][CarX] = newposx;
PlayerInfo[playerid][CarY] = newposy;
PlayerInfo[playerid][CarZ] = newposz;
printf("[%d] Old Position: [%f,%f,%f] New Position: [%f,%f,%f]", vehicleid, oldposx, oldposy, oldposz, newposx, newposy, newposz);
return 1;
}
if (SomCar[playerid] == 0)
{
SomCar[playerid] = 1; // liga
new vehicleid = GetPlayerVehicleID(playerid);
GetVehiclePos(vehicleid, PlayerInfo[playerid][CarX], PlayerInfo[playerid][CarY], PlayerInfo[playerid][CarZ]);
PlayerInfo[playerid][CarStatus] = playerid;
format(PlayerInfo[playerid][CarLink], 512, "http://www.sky.fm/mp3/tophits.pls");
}
Minha funзгo que uso para o comando aqui;
/comando ... pawn Код:
|
forward OnVehiclePosChange(playerid, vehicleid, Float:oldposx, Float:oldposy, Float:oldposz, Float:newposx, Float:newposy, Float:newposz);
CallLocalFunction("OnVehiclePosChange", "ddfff", playerid, 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]);
public OnVehiclePosChange(playerid, vehicleid, Float:oldposx, Float:oldposy, Float:oldposz, Float:newposx, Float:newposy, Float:newposz)
{
//Agora sу inserir aqui...nгo precisa getar novamente as posiзхes do veнculo, jб vem informando (newpos...)
if (SomCar[playerid] == 0)
{
SomCar[playerid] = 1; // liga
PlayerInfo[playerid][CarX] = newposx;
PlayerInfo[playerid][CarY] = newposy;
PlayerInfo[playerid][CarZ] = newposz;
PlayerInfo[playerid][CarStatus] = playerid;
format(PlayerInfo[playerid][CarLink], 512, "http://www.sky.fm/mp3/tophits.pls");
}
return 1;
}
Tб, vamos supor que vocк consiga pegar coordenadas do carro em movimento... Como vocк faria para 'mover' o бudio tambйm?
PlayAudioStreamForPlayer = For Player = Para o Player. ANTES DE CODAR ALGO, PLANEJE! Posso tentar ajudar: Quando o player ligar o som no carro, quem estiver perto dele escuta. Sу aqui vocк vai se complicar todo em fazer. Vamos supor que vocк conseguiu fazer isso. E quando ele sair do carro sem desligar o som? Como que faz pro Som do carro continuar tocando no carro? Vocк pode atй tentar criar um PlayAudioStreamForPlayer fixo em um local, mas vai ter que recomeзar a musica. Enfim, ou o som segue o player, ou o som fica parado fixamente. |