Salut, avant tout, il faut que tu créé un "stock" de tes position des arrêts de bus donc bien sur par exemple :
new Float:ArretBus[26][3]={
{-2660.9,85.3,4.1},
{-2738.9,93.5,4.5},
{-2759.0,-37.5,6.9},
{-2753.7,422.2,4.3},
{-2558.3,660.6,14.4},
{-2441.9,522.2,29.9},
{-2517.7,341.7,27.7},
{-2546.0,297.4,18.3},
{-2197.7,289.2,35.3},
{-2131.9,-94.0,35.3}
};
Puis ensuite au moment ou tu va taper une commande, tu va venir comparer chacune des positions en fonction du joueur, donc par exemple ...
if(strcmp(cmd, "/arret", true) == 0)
{
new Float:PosJoueurX,Float:PosJoueurY,Float:PosJoueurZ;
GetPlayerPos(playerid, PosJoueurX, PosJoueurY, PosJoueurZ;
// On declare les positions des à arrets
new Float:PosArretX, Float:PosArretY, Float:PosArretZ;
new Float:PosArret1X, Float:PosArret1Y, Float:PosArret1Z;
new Float:PosArret2X, Float:PosArret1Y, Float:PosArret2Z;
// On ajoute aux variables déclarer avant une valeur donc ici les positions des arrets de bus 0, 1 et 2
/* Position Arret 0*/PositionArret[0][0] = PosArretX; PositionArret[0][1] = PosArretX; PositionArret[0][2] = PosArretX;
/* Position Arret 1*/PositionArret[1][0] = PosArretX; PositionArret[1][1] = PosArretX; PositionArret[1][2] = PosArretX;
/* Position Arret 1*/PositionArret[2][0] = PosArretX; PositionArret[2][1] = PosArretX; PositionArret[2][2] = PosArretX;
// On calcul la position du joueur par rapport aux arrets de bus
new arret = floatadd(floatadd(floatsqroot(floatpower(floatsub(PosArretX,PosJoueurX),2)),floatsqroot(floatpower(floatsub(PosArretY,PosJoueurY),2))),floatsqroot(floatpower(floatsub(PosArretZ,PosJoueurZ),2)));
new arret1 = floatadd(floatadd(floatsqroot(floatpower(floatsub(PosArret1X,PosJoueurX),2)),floatsqroot(floatpower(floatsub(PosArret1Y,PosJoueurY),2))),floatsqroot(floatpower(floatsub(PosArret1Z,PosJoueurZ),2)));
new arret2 = floatadd(floatadd(floatsqroot(floatpower(floatsub(PosArret2X,PosJoueurX),2)),floatsqroot(floatpower(floatsub(PosArret2Y,PosJoueurY),2))),floatsqroot(floatpower(floatsub(PosArret2Z,PosJoueurZ),2)));
// On ecrase une valeur qui va servir de comparaison
PlayerInfo[playerid][ArretProche] = arret;
if(arret < arret1 && arret2)
{
// Donc si l'arret 0 à une valeur plus faible que les autres et donc moins loin on affiche son checkpoint
SetPlayerCheckpoint(playerid, PositionArret[0][0], PositionArret[0][1], PositionArret[0][2],5);
SendClientMessage(playerid, COLOR_GREEN, " L'arrêt le plus proche à été signalez sur votre carte !");
return 1;
}
else if(arret1 < arret && arret2)
{
// Donc si l'arrêt 1 à une valeur plus faible que les autres et donc moins loin on affiche son checkpoint
SetPlayerCheckpoint(playerid, PPositionArret[1][0], PositionArret[1][1], PositionArret[1][2],5);
SendClientMessage(playerid, COLOR_GREEN, " L'arrêt le plus proche à été signalez sur votre carte !");
return 1;
}
else if(arret2 < arret1 && arret)
{
// Donc si l'arret 2 à une valeur plus faible que les autres et donc moins loin on affiche son checkpoint
SetPlayerCheckpoint(playerid, PositionArret[2][0], PositionArret[2][1], PositionArret[2][2],5);
SendClientMessage(playerid, COLOR_GREEN, " L'arrêt le plus proche à été signalez sur votre carte !");
return 1;
}
}
N'oublie pas de déclarer au script l'info [ArretProche] ^^
Voila en espérant t'avoir éclairer, A+
Sam. :cheers