GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Yann0560 le 31 Janvier 2010, 10:23:45

Titre: Problème téléportation
Posté par: Yann0560 le 31 Janvier 2010, 10:23:45
Bonjour j'ai fais deux commandes une pour se téléporter (/sv) et l'autre pour revenir où l'on était avant d'être téléporté (/back).
Le problème c'est que quand je saisis /back il me téléporte sous la map au centre !

Mon code :

Code: (pawn) [Sélectionner]
public OnPlayerCommandText(playerid, cmdtext[])
{
new Float:X;
new Float:Y;
new Float:Z;

if(strcmp(cmdtext, "/sv", true, 10) == 0) // Quand le joueur tape /sv (spawn vehicle)
{
if(IsPlayerInAnyVehicle(playerid)) // S'il est dans un vehicule
{
                GetVehiclePos(GetPlayerVehicleID(playerid),X,Y,Z);
SetVehiclePos(GetPlayerVehicleID(playerid),1512.3362,-872.4364,62.4495); // Teleporter le vehicule
SendClientMessage(playerid, COULEUR_BLEUCIEL, "Choisis un véhicule puis saisis /back"); // Afficher ce message
return 1;
}
            GetPlayerPos(playerid,X,Y,Z);
SetPlayerInterior(playerid,0); // Mettre son interieur a 0
SetPlayerPos(playerid,1512.3362,-872.4364,62.4495); // Teleporter le joueur
SendClientMessage(playerid, COULEUR_BLEUCIEL, "Choisis un véhicule puis saisis /back"); // Afficher ce message
return 1;
}



else if(strcmp(cmdtext, "/back", true, 10) == 0) && (X != 0) && (Y != 0) && (Z != 0)
{
if(IsPlayerInAnyVehicle(playerid)) // S'il est dans un vehicule
{
SetVehiclePos(GetPlayerVehicleID(playerid),X,Y,Z); // Teleporter le vehicule
return 1;
}
SetPlayerInterior(playerid,0); // Mettre son interieur a 0
SetPlayerPos(playerid,X,Y,Z); // Teleporter le joueur
return 1;
}
return 1;
}

Merci  ;D (je suis débutant j'ai commencé tout juste hier)
Titre: Re : Problème téléportation
Posté par: ApocKalipsS le 31 Janvier 2010, 12:38:19
Tu dois mettre les "new Float:" En haut de ton script, pas dans OnPlayerCommandText.
Titre: Re : Re : Problème téléportation
Posté par: BuBuNo le 31 Janvier 2010, 13:09:35
Tu dois mettre les "new Float:" En haut de ton script, pas dans OnPlayerCommandText.

je doute que sa change quelque chose apres je me trompe petetre  :-[
Titre: Re : Problème téléportation
Posté par: Yann0560 le 31 Janvier 2010, 13:33:48
j'ai trouvé un script sur le net :
http://www.gtaforums.fr/lofiversion/index.php/t2265.html (http://www.gtaforums.fr/lofiversion/index.php/t2265.html)

donc je crois que c'est résolu pour ce problème mais j'en ai un autre quand je tape /sv puis /nascar (une commande de téléportation) et ben ca me retéléporte à /sv.

mon nouveau code source :

Code: (pawn) [Sélectionner]
public OnPlayerCommandText(playerid, cmdtext[])
{

if(strcmp(cmdtext, "/sv", true, 10)) // Quand le joueur tape /sv (spawn vehicle)
{
    GetPlayerPos(playerid, gPositions[playerid][0], gPositions[playerid][1], gPositions[playerid][2]);
GetPlayerFacingAngle(playerid, gPositions[playerid][3]);
if(IsPlayerInAnyVehicle(playerid)) // S'il est dans un vehicule
{
SetVehiclePos(GetPlayerVehicleID(playerid),1512.3362,-872.4364,62.4495); // Teleporter le vehicule
SendClientMessage(playerid, COULEUR_BLEUCIEL, "Choisis un véhicule puis saisis /back"); // Afficher ce message
return 1;
}
           
SetPlayerInterior(playerid,0); // Mettre son interieur a 0
SetPlayerPos(playerid,1512.3362,-872.4364,62.4495); // Teleporter le joueur
SendClientMessage(playerid, COULEUR_BLEUCIEL, "Choisis un véhicule puis saisis /back"); // Afficher ce message
return 1;
}



else if(strcmp(cmdtext, "/back", true, 10) && (gPositions[playerid][0] != 0) && (gPositions[playerid][1] != 0) && (gPositions[playerid][2] != 0)) // Quand le joueur tape /back (retour depuis /sv) et que les coordonées existent
{
if(IsPlayerInAnyVehicle(playerid)) // S'il est dans un vehicule
{
SetVehiclePos(playerid, gPositions[playerid][0], gPositions[playerid][1], gPositions[playerid][2]); // Teleporter le vehicule
return 1;
}
SetPlayerInterior(playerid,0); // Mettre son interieur a 0
SetPlayerPos(playerid, gPositions[playerid][0], gPositions[playerid][1], gPositions[playerid][2]);
SetPlayerFacingAngle(playerid, gPositions[playerid][3]); // Teleporter le joueur
return 1;
}

else if(strcmp(cmdtext, "/nascar", true, 10))
{
    if(IsPlayerInAnyVehicle(playerid)) // S'il est dans un vehicule
{
    SetVehiclePos(GetPlayerVehicleID(playerid),1477.87,1515.84,10.828); // Teleporter le vehicule
SendClientMessage(playerid, COULEUR_BLEUCIEL, "Tu as été téléporté à l'aéroport de LV"); // Afficher ce message
return 1;
}
SetPlayerInterior(playerid,0); // Mettre son interieur a 0
SetPlayerPos(playerid,1477.87,1515.84,10.828); // Teleporter le joueur
SendClientMessage(playerid, COULEUR_BLEUCIEL, "Tu as été téléporté à l'aéroport de LV"); // Afficher ce message
return 1;
}

else
{
    SendClientMessage(playerid, COULEUR_ROUGE, "Commande inconnue");
}
Titre: Re : Problème téléportation
Posté par: Dark_revan le 31 Janvier 2010, 13:41:57
pour identifier si le mec tape une command utilise sa pour tous : if(strcmp(cmd, "/nascar", true) == 0).
Titre: Re : Problème téléportation
Posté par: Yann0560 le 31 Janvier 2010, 14:16:38
j'ai essayé mais ca me met
Code: (pawn) [Sélectionner]
error 025: function heading differs from prototype (au public)
Titre: Re : Problème téléportation
Posté par: Dark_revan le 31 Janvier 2010, 14:29:19
Alors remplace else if par if ce qui revient un peu au même ( else if = ou si , if = si, else = sinon )
J'espere que cela t'aidera je pense que sa vient de sa.
Titre: Re : Problème téléportation
Posté par: Yann0560 le 31 Janvier 2010, 14:40:43
ça ne change rien  :(  :wall
Titre: Re : Problème téléportation
Posté par: Dark_revan le 31 Janvier 2010, 14:56:32
if(strcmp(cmd, "/sv", true) == 0) // Quand le joueur tape /sv (spawn vehicle)
{
         GetPlayerPos(playerid, gPositions[playerid][0], gPositions[playerid][1], gPositions[playerid][2]);
GetPlayerFacingAngle(playerid, gPositions[playerid][3]);
if(IsPlayerInAnyVehicle(playerid)) // S'il est dans un vehicule
{
SetVehiclePos(GetPlayerVehicleID(playerid),1512.3362,-872.4364,62.4495); // Teleporter le vehicule
SendClientMessage(playerid, COULEUR_BLEUCIEL, "Choisis un véhicule puis saisis /back"); // Afficher ce message
return 1;
}
SetPlayerInterior(playerid,0); // Mettre son interieur a 0
SetPlayerPos(playerid,1512.3362,-872.4364,62.4495); // Teleporter le joueur
SendClientMessage(playerid, COULEUR_BLEUCIEL, "Choisis un véhicule puis saisis /back"); // Afficher ce message
return 1;
}
if(strcmp(cmd, "/back", true) == 0)
{
                    if((gPositions[playerid][0] != 0) && (gPositions[playerid][1] != 0) && (gPositions[playerid][2] != 0)) // Quand le joueur tape /back (retour depuis /sv) et que les coordonées existent
                    {
if(IsPlayerInAnyVehicle(playerid)) // S'il est dans un vehicule
{
SetVehiclePos(playerid, gPositions[playerid][0], gPositions[playerid][1], gPositions[playerid][2]); // Teleporter le vehicule
return 1;
}
SetPlayerInterior(playerid,0); // Mettre son interieur a 0
SetPlayerPos(playerid, gPositions[playerid][0], gPositions[playerid][1], gPositions[playerid][2]);
SetPlayerFacingAngle(playerid, gPositions[playerid][3]); // Teleporter le joueur
return 1;
                     }
}
if(strcmp(cmd, "/nascar", true) == 0)
{
        if(IsPlayerInAnyVehicle(playerid)) // S'il est dans un vehicule
{
  SetVehiclePos(GetPlayerVehicleID(playerid),1477.87,1515.84,10.828); // Teleporter le vehicule
SendClientMessage(playerid, COULEUR_BLEUCIEL, "Tu as été téléporté à l'aéroport de LV"); // Afficher ce message
return 1;
}
SetPlayerInterior(playerid,0); // Mettre son interieur a 0
SetPlayerPos(playerid,1477.87,1515.84,10.828); // Teleporter le joueur
SendClientMessage(playerid, COULEUR_BLEUCIEL, "Tu as été téléporté à l'aéroport de LV"); // Afficher ce message
return 1;
}

ta commande /nascar marche chez moi. donc essaye sa aussi non je sais pas.
Titre: Re : Problème téléportation
Posté par: Yann0560 le 31 Janvier 2010, 15:11:28
ca y est ca fonctionne merci !  :)
Titre: Re : Re : Re : Problème téléportation
Posté par: ApocKalipsS le 31 Janvier 2010, 21:13:11
Tu dois mettre les "new Float:" En haut de ton script, pas dans OnPlayerCommandText.

je doute que sa change quelque chose apres je me trompe petetre  :-[


Si si, j'ai tester, ça marche.
Tu les met tout en haut de ton script, en dessous des #include.
Titre: Re : Re : Re : Re : Problème téléportation
Posté par: BuBuNo le 31 Janvier 2010, 21:26:31
Tu dois mettre les "new Float:" En haut de ton script, pas dans OnPlayerCommandText.

je doute que sa change quelque chose apres je me trompe petetre  :-[


Si si, j'ai tester, ça marche.
Tu les met tout en haut de ton script, en dessous des #include.
ok je te croit alors ;)
Titre: Re : Problème téléportation
Posté par: S!m le 31 Janvier 2010, 21:55:52
Salut,

mais attention, ça ne fonctionnera que s'il y a un seul joueur sur le serveur

dans le cas où plusieurs joueurs s'y trouvent, tu devras utiliser un tableau (Float:X[MAX_PLAYERS])

++Sim++