GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: moster54 le 25 Janvier 2009, 09:22:47
-
Bonjour,
J'ai un problème avec Float:X, Float:Y, Float:Z. J'ai fait les commandes /afk et /back :
if(strcmp(cmdtext, "/afk", true) == 0)
{
new pName[MAX_PLAYER_NAME];
new string[48];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), "%s est ABSENT.", pName);
GetPlayerPos(playerid,X,Y,Z);
SetPlayerPos(playerid,2265.9468,1620.0013,99.0233);
SCMTA(COLOR_RED, string);
SetPlayerFacingAngle(playerid,89.9107);
TogglePlayerControllable(playerid, 0);
SetPlayerName(playerid,"[AFK]%s");
return 1;
}
if(strcmp(cmdtext, "/back", true) == 0)
{
new pName[MAX_PLAYER_NAME];
new string[48];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), "%s est de retour dans le jeu.", pName);
SCMTA(COLOR_GREEN, string);
SetPlayerFacingAngle(playerid, 0);
TogglePlayerControllable(playerid, 1);
SetPlayerPos(playerid,X,Y,Z);
return 1;
}
J'ai ajouté : new Float:X;
new Float:Y;
new Float:Z;
Mais le compilateur dit encore que X, Y, Z est indéfini.
Pourriez-vous m'aider s'il vous plaît ?
MERCI
MoSteR
-
En haut de ton script :
new Float:[MAX_PLAYERS]X;
new Float:[MAX_PLAYERS]Y;
new Float:[MAX_PLAYERS]Z;
ta commande :
if(strcmp(cmdtext, "/afk", true) == 0)
{
new pName[MAX_PLAYER_NAME];
new string[48];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), "%s est ABSENT.", pName);
GetPlayerPos(playerid,[playerid]X, [playerid]Y, [playerid]Z);
SetPlayerPos(playerid,2265.9468,1620.0013,99.0233);
SCMTA(COLOR_RED, string);
SetPlayerFacingAngle(playerid,89.9107);
TogglePlayerControllable(playerid, 0);
SetPlayerName(playerid,"[AFK]%s");
return 1;
}
if(strcmp(cmdtext, "/back", true) == 0)
{
new pName[MAX_PLAYER_NAME];
new string[48];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), "%s est de retour dans le jeu.", pName);
SCMTA(COLOR_GREEN, string);
SetPlayerFacingAngle(playerid, 0);
TogglePlayerControllable(playerid, 1);
SetPlayerPos(playerid, [playerid]X, [playerid]Y, [playerid]Z);
return 1;
}
petite correction, peut être que ça va fonctionner ??? ^^ ::)
-
Merci d'avoir voulu l'aider mais ça ne fonctionne toujours pas.
-
Salut,
[StAfF]mAn a simplement commi une petite erreur, par contre il a la bonne solution, car la tienne assignait la même variable à tous les joueurs, donc si un premier joueur tape /afk on enregistre sa position, lorsqu'un second le fait et que le premier est toujours AFK, on enregistre par dessus l'ancienne position et les deux joueurs iront à la même position
new Float:X[MAX_PLAYERS];
new Float:Y[MAX_PLAYERS];
new Float:Z[MAX_PLAYERS];
Et maintenant les commandes
if(strcmp(cmdtext, "/afk", true) == 0)
{
new pName[MAX_PLAYER_NAME];
new string[48];//très bien d'avoir compris le principe de prendre un string le plus petit possible
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), "%s est ABSENT.", pName);
GetPlayerPos(playerid,X[playerid], Y[playerid], Z[playerid]);
SetPlayerPos(playerid,2265.9468,1620.0013,99.0233);
SCMTA(COLOR_RED, string);
SetPlayerFacingAngle(playerid,89.9107);
TogglePlayerControllable(playerid, 0);
SetPlayerName(playerid,"[AFK]%s");
return 1;
}
if(strcmp(cmdtext, "/back", true) == 0)
{
new pName[MAX_PLAYER_NAME];
new string[48];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), "%s est de retour dans le jeu.", pName);
SCMTA(COLOR_GREEN, string);
SetPlayerFacingAngle(playerid, 0);
TogglePlayerControllable(playerid, 1);
SetPlayerPos(playerid, X[playerid], Y[playerid], Z[playerid]);
return 1;
}
Et voilà qui devrait être numéro 1
++Sim++
-
Salut,
J'ai essayé avec le code de Sim mais ça fait pareil que quand j'ai ajouté le code de [StAfF]mAn .
Voici mes erreurs :
(158) : error 017: undefined symbol "X"
(158) : warning 215: expression has no effect
(158) : error 001: expected token: ";", but found "]"
(158) : error 029: invalid expression, assumed zero
(158) : fatal error 107: too many error messages on one line
Et la ligne 158 est :
GetPlayerPos(playerid,X[playerid], Y[playerid], Z[playerid]);
MERCI
MoSteR
-
Au pire tu met tes news dans ta commandes, voir ce que ça donne, ou alors tu utilise une autre lettre pour ta variable....
-
Salut,
selon moi tu les places mal, les aurait tu mit dans OnGameModeInit() ou un truc du genre par hasard?
je te rappelle que tu place sous les includes, define et autres....
++Sim++
-
Pourquoi faire compliquez , quand on peut faire simple ^^
Va sur Forum Samp => Y'a le même systéme que tu cherche => Telecharge le et voilà !
-
Salut,
mais c'est pas comme ça qu'il apprendra à scripter.....
++Sim++
-
Salut,
J'ai dit c'est le même script donc il regarde son erreur et par là suite il va savoir ;)
-
C'est effectivement une très bonne méthode que d'apprendre a scripter en recopiant sans réfléchir, j'approuve My-Ea :p
( c'est de l'ironie ...)
Sinon, mince c'est con que j'ai été obligé de formater il y a une semaine, j'ai perdu tout mes scripts, tout quoi, j'aurais pu te montrer un exemple qui ne fonctionnerais pas, pour que tu trouve comment résoudre ton problème !!
Erf...
Comme Sim la dit, il faut que tu mette tes new dans l'include <a_samp> en haut de ton script, mais vraiment tout en haut, c'est les écriture bleues ( il y a écrit exactement #include <a_samp> )
-
Salut,
J'ai réussi, j'ai simplement rajouté les "new" dans l'include "float". Ca aidera peut être certains qui ont le même problème.
P.S.: Merci à tous.
-
Il suffisait de faire
#define New Float: X ect...
Car si tu fait New Float: X sa ne marchera pas ;)
-
N2o je n'ai pas fait de define et on ne doit pas faire de define pour ça. De toutes façon, j'ai trouvé. Ton post est inutile car ce n'est pas la solution.
-
Salut,
n2o, si tu comprendrais bien le fonctionnement d'un define, tu comprendrais également que ce que tu as fait ne fait que remplacer tous les New de ton script en Float: X, ce qui risquerait inévitable de te cause une liste d'erreur interminable (limite de 26 à la fois)
informe toi avant d'écrire des trucs du genre....
++Sim++