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

Titre: Problème avec strcat
Posté 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 :
Code: (pawn) [Sélectionner]
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.
Titre: Re : Problème avec strcat
Posté par: rafffel le 18 Juin 2013, 07:33:34
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)

Titre: Re : Problème avec strcat
Posté par: Ssk le 18 Juin 2013, 10:52:33
Salut, je vois qu'il ne faut absolument pas faire en programmation, c'est-à-dire utiliser des variables sans les initialiser.

Code: (pawn) [Sélectionner]
for(new g; g<=NB_GANGZONES; g++)Deviens.
Code: (pawn) [Sélectionner]
for(new g = 0; g<=NB_GANGZONES; g++)
Ton
Code: (pawn) [Sélectionner]
new zonesa[1200], string[128];Deviens

Code: (pawn) [Sélectionner]
new zonesa[1200], string[128];
zonesa[0] = 0;
string[0] = 0;
Titre: Re : Problème avec strcat
Posté par: falcko le 18 Juin 2013, 14:19:06
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.

Code: (pawn) [Sélectionner]
for(new g; g<=NB_GANGZONES; g++)Deviens.
Code: (pawn) [Sélectionner]
for(new g = 0; g<=NB_GANGZONES; g++)
Ton
Code: (pawn) [Sélectionner]
new zonesa[1200], string[128];Deviens

Code: (pawn) [Sélectionner]
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;
    }
Titre: Re : Problème avec strcat
Posté par: Ssk le 18 Juin 2013, 18:17:11
Dans ce cas aucune des tes conditions n'est respectée.
Titre: Re : Problème avec strcat
Posté par: Xolokos le 01 Juillet 2013, 20:19:41
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.