C'est vraiment pas compliqué, mais je pense que tu ne conçois pas les fonctions comme elles devraient l'être. Je vais tenter de t'expliquer leur usage, pour que ce soit plus clair pour toi.
Pour commencer, lorsque tu écris la ligne
new Float:X, Float:Y, Float:Z;
Tu réserves simplement trois emplacements en mémoire pour contenir trois nombres à virgule. Tu ne fais que réserver des emplacements : ils ne contiennent aucune valeur.
Lorsque tu utilises la fonction GetPlayerPos(), tu passes en paramètre les trois variables qui vont recevoir les valeurs X, Y et Z du joueur (le premier paramètre de la fonction, playerid). Autrement dit, tu récupères des valeurs et tu les enregistres quelque-part en mémoire. Ni plus, ni moins.
Maintenant, lorsque tu veux exploiter ces valeurs enregistrées en mémoire, tu utilises la fonction SetPlayerPos(). C'est simple : tu passes en paramètre l'index du joueur à téléporter, et les coordonnées auxquelles le téléporter. Puisque tu as enregistré en mémoire les coordonnées du premier joueur (celui sur qui téléporter), tu peux utiliser les variables X, Y et Z pour téléporter le joueur (celui qui va être téléporté).
Encore une fois, si tu as besoin d'un peu plus d'informations n'hésites pas. ;)
EDIT - J'avais quelques minutes de libre, j'ai codé ça rapidement sans compiler. Il se peut qu'il y ait des erreurs, mais ça devrait pouvoir te permettre de mieux comprendre ce que tu dois faire. Notes que j'utilise zcmd pour détecter les commandes utilisées.
// Lorsqu'on utilise la commande
cmd_goto(playerid, params[])
{
// Si un ID est renseigné
if (!isnull(params))
{
// Si le joueur dont l'ID est renseigné est connecté et s'il ne s'agit pas de l'ID du joueur qui tape la commande
if (IsPlayerConnected(strval(params)) && strval(params) != playerid)
{
// On crée trois variables
new Float:PosX = 0.0, Float:PosY = 0.0, Float:PosZ = 0.0;
// On récupère la position du joueur (ID renseigné) dans les trois variables
GetPlayerPos(strval(params), PosX, PosY, PosZ);
// On téléporte le joueur (celui qui tape la commande) à ces coordonnées
SetPlayerPos(playerid, PosX, PosY, PosZ);
// On lui indique que tout s'est bien passé
SendClientMessage(playerid, -1, "Vous avez été téléporté !");
}
// Si le joueur dont l'ID est renseigné n'est pas connecté ou s'il s'agit de l'ID du joueur qui tape la commande
else
{
SendClientMessage(playerid, -1, "L'ID entré n'est pas valide !");
}
}
// Si aucun ID n'a été renseigné
else
{
SendClientMessage(playerid, -1, "Usage: /goto <id>");
}
return 1;
}