1 - Ton code ne compilera pas puisque tes tableaux garage, X, Y et Z sont définis dans la fonction OnGameModeInit et que tu les utilisent dans OnPlayerCommandeText et dans OnPlayerEnterVehicle.
Donc déplace les lignes qui déclarent tes tableaux à l'extérieur de toute fonction (juste après les lignes d'include) pour en faire des variables globales utilisables partout dans ton script (et qui conserve leur valeur même quand on change de fonction).
A ce sujet, je rappelle encore une fois qu'une variable ne peut être utilisé que dans le bloc où elle à été déclarée. Et attention aux variables locales qui masquent (shadow) les variables globales (variable déclarée dans un bloc avec le même nom qu'un variable déclarée en dehors de tout bloc). Le compilateur mettra un warning mais compilera quand même et la variable utilisée sera la variable locale.
2 - Tu fais un strcmp sur la variable cmd, c'est plutôt cmdtext qu'il faut utiliser
3 - La valeur de garage[playerid] n'est jamais remise à zéro, donc le joueur n'a droit qu'à un seul /new (mais c'est peut-être ce que tu veux)
4 - Tu n'est pas obligé d'utiliser les variables x, y et z, tu peux directement mettre les tableaux X, Y et Z dans l'appel à GetPlayerPos :
GetPlayerPos(playerid,X[playerid], Y[playerid], Z[playerid]);
Sinon, pour moi, ton code fonctionne.
++
Syg