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
-
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 :
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)
-
Tu dois mettre les "new Float:" En haut de ton script, pas dans OnPlayerCommandText.
-
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 :-[
-
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 :
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");
}
-
pour identifier si le mec tape une command utilise sa pour tous : if(strcmp(cmd, "/nascar", true) == 0).
-
j'ai essayé mais ca me met
error 025: function heading differs from prototype (au public)
-
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.
-
ça ne change rien :( :wall
-
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.
-
ca y est ca fonctionne merci ! :)
-
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.
-
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 ;)
-
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++