GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: falcko le 18 Juin 2013, 00:28:27
-
Salut,
J'utilise strcat pour que mes dialogues soient dynamiques mais ça ne marche pas ! :sad:
Voici mon code :
stock GetZones(playerid)
{
new zonesa[1200], string[128];
for(new g; g<=NB_GANGZONES; g++)
{
string = "";
if(Zones[g][Team] == 1)
{
format(string, sizeof(string), "{00FF00}%s\n", Zones[g][Nom]);
strcat(zonesa, string, sizeof(string));
}
else if(Zones[g][Team] == 2)
{
format(string, sizeof(string), "{800080}%s\n", Zones[g][Nom]);
strcat(zonesa, string, sizeof(string));
}
else if(Zones[g][Team] == 3)
{
format(string, sizeof(string), "{F4F400}%s\n", Zones[g][Nom]);
strcat(zonesa, string, sizeof(string));
}
else if(Zones[g][Team] == 4)
{
format(string, sizeof(string), "{00FFFF}%s\n", Zones[g][Nom]);
strcat(zonesa, string, sizeof(string));
}
}
ShowPlayerDialog(playerid, DIALOG_ZONES, DIALOG_STYLE_LIST, "Choix du spawn", zonesa, "Valider", "Annuler");
return 1;
}
Et la réponse du serveur IG quand je me fais "spawn" le dialogue avec une commande : "SERVER: Unknown command."
Ça fait plusieurs jours que je planche sur le problème sans trouver de solution...
Merci d'avance.
-
T'as vérifié au niveau du code qui vérifie les commandes utilisateur?
Et aussi fait attention a l'utilisation des mots tels que string en tant que variable je ne sais pas en pawn mais sur certains langages ça peut poser problème (considéré comme un mot-clé qui permet de définir un type)
-
Salut, je vois qu'il ne faut absolument pas faire en programmation, c'est-à-dire utiliser des variables sans les initialiser.
for(new g; g<=NB_GANGZONES; g++)
Deviens.
for(new g = 0; g<=NB_GANGZONES; g++)
Ton
new zonesa[1200], string[128];
Deviens
new zonesa[1200], string[128];
zonesa[0] = 0;
string[0] = 0;
-
Salut, merci de la réponse.
T'as vérifié au niveau du code qui vérifie les commandes utilisateur?
Et aussi fait attention a l'utilisation des mots tels que string en tant que variable je ne sais pas en pawn mais sur certains langages ça peut poser problème (considéré comme un mot-clé qui permet de définir un type)
J'utilise cette variable dans plusieurs de mes scripts qui fonctionnent bien, donc je ne pense pas que le problème vienne de là.
Salut, je vois qu'il ne faut absolument pas faire en programmation, c'est-à-dire utiliser des variables sans les initialiser.
for(new g; g<=NB_GANGZONES; g++)
Deviens.
for(new g = 0; g<=NB_GANGZONES; g++)
Ton
new zonesa[1200], string[128];
Deviens
new zonesa[1200], string[128];
zonesa[0] = 0;
string[0] = 0;
Comme ceci?
stock GetZones(playerid)
{
new zonesa[1200], string[128];
zonesa[0] = 0;
string[0] = 0;
for(new g = 0; g<=NB_GANGZONES; g++)
{
string = "";
if(Zones[g][Team] == 1)
{
format(string, sizeof(string), "{00FF00}%s\n", Zones[g][Nom]);
strcat(zonesa, string, sizeof(string));
}
else if(Zones[g][Team] == 2)
{
format(string, sizeof(string), "{800080}%s\n", Zones[g][Nom]);
strcat(zonesa, string, sizeof(string));
}
else if(Zones[g][Team] == 3)
{
format(string, sizeof(string), "{F4F400}%s\n", Zones[g][Nom]);
strcat(zonesa, string, sizeof(string));
}
else if(Zones[g][Team] == 4)
{
format(string, sizeof(string), "{00FFFF}%s\n", Zones[g][Nom]);
strcat(zonesa, string, sizeof(string));
}
}
ShowPlayerDialog(playerid, DIALOG_ZONES, DIALOG_STYLE_LIST, "Choix du spawn", zonesa, "Valider", "Annuler");
return 1;
}
J'ai essayé mais toujours le même problème.
Concernant la commande que j'utilise, je n'y vois pas de problème :
if(strcmp(cmd, "/getzones", true) == 0)
{
if(UserStats[playerid][Admin] <= 1)
{
SendClientMessage(playerid, COLOR_RED, "Vous n'avez pas l'autorisation d'utiliser cette commande.");
return 1;
}
GetZones(playerid);
return 1;
}
-
Dans ce cas aucune des tes conditions n'est respectée.
-
En clair fait des print/printf pour voir ou est le problème dans tes conditions, dans ton code et ensuite va voir ce qu'il se passe au niveau des conditions en les modifiants ou en modifiant la variable qui ne passe pas la condition.