• 04 Juin 2026, 01:01:56


Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - falcko

Pages: [1]
1
Scripting SA-MP [Pawn center] / Re : Problème avec strcat
« 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;
    }

2
Scripting SA-MP [Pawn center] / Problème avec strcat
« 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.

3
Scripting SA-MP [Pawn center] / Re : Problème avec strlen?
« le: 04 Janvier 2013, 17:23:22 »
Salut, si elle était fermée, le forum rend l'indentation bizarre.
Le problème est résolu, le message d'erreur était trop long.  :P
Merci !

4
Scripting SA-MP [Pawn center] / Problème avec strlen?
« le: 04 Janvier 2013, 16:13:27 »
Salut,
J'ai créé une commande qui consiste à créer une guerre entre deux teams.
Seulement j'ai un bug avec la vérification, elle est censée renvoyer un message mais ça ne renvoie rien...
J'ai testé avec des format, ça renvoie bien le strlen correct.

Voici mon code :
if(strcmp(cmd, "/arene", true) == 0)
{
  if(UserStats[playerid][Leader] == 0)
    {
      SendClientMessage(playerid, -1, "Vous n'êtes pas leader !");
        return 1;
        }
        if(ArenesCreees+1 > MAX_ARENES)
        {
        SendClientMessage(playerid, COLOR_RED, "Il y a trop d'arènes en cours. Veuillez patienter pour en lancer une.");
          return 1;
        }
        if(GetPVarInt(playerid, "AreneCree") != 0)
        {
        SendClientMessage(playerid, COLOR_RED, "Vous avez déjà créé une arène ou vous avez une demande en attente. Pour la supprimer faites /finarene ou pour refuser l'invitation faites /arenerefuser");
          return 1;
        }
    new tmp1[TMP_SIZE];
    new tmp2[TMP_SIZE];
    new tmp3[TMP_SIZE];
    new tmp4[TMP_SIZE];
    new tmp5[TMP_SIZE];
new Joueur, Lieu, ArmeUne, ArmeDeux, Gilet;
tmp1 = strtok(cmdtext, idx);
tmp2 = strtok(cmdtext, idx);
tmp3 = strtok(cmdtext, idx);
tmp4 = strtok(cmdtext, idx);
tmp5 = strtok(cmdtext, idx);
new string[128];
format(string, sizeof(string), "Tmp1: %s %d Strlen : %d Tmp2: %s %d Strlen: %d Tmp3: %s %d Strlen: %d Tmp4: %s %d Strlen: %d Tmp5: %s %d Strlen: %d", tmp1, tmp1, strlen(tmp1), tmp2, tmp2, strlen(tmp2), tmp3, tmp3, strlen(tmp3), tmp4, tmp4, strlen(tmp4), tmp5, tmp5, strlen(tmp5));
SendClientMessage(playerid, -1, string);
if(strlen(tmp1) == 0 || strlen(tmp2) == 0 || strlen(tmp3) == 0 || strlen(tmp4) == 0 || strlen(tmp5)) return SendClientMessage(playerid, COLOR_GREY, "{33CCFF}USAGE:{FFFFFF} /arene [ID/Nom leader adverse] [Lieu (/lieuxarene)] [Première arme (/armesarene)] [Deuxième arme (/armesarene)] [Gilet (1=oui, 0=non)]");
Joueur = ReturnUser(tmp);
Lieu = strval(tmp2);
ArmeUne = strval(tmp3);
ArmeDeux = strval(tmp4);
Gilet = strval(tmp5);
// Vérification joueur
if(Joueur == playerid) { return SendClientMessage(playerid, COLOR_RED, "Impossible de créer une arène contre vous même."); }
if(!IsPlayerConnected(Joueur)) return SendClientMessage(playerid, COLOR_RED, "Le joueur n'est pas connecté !");
if(UserStats[Joueur][Jail] != 0) return SendClientMessage(playerid, COLOR_RED, "Le joueur est en prison !");
if(UserStats[Joueur][Leader] == 0) return SendClientMessage(playerid, COLOR_RED, "Le joueur n'est pas leader d'une team !");
if(AreneEnCours[Joueur] == 1) return SendClientMessage(playerid, COLOR_RED, "Le joueur est déjà en arène !");
  if(GetPVarInt(Joueur, "AreneCree") != 0 || GetPVarInt(Joueur, "IDArene") != 0) { return SendClientMessage(playerid, COLOR_RED, "Cette personne a déjà créée une arène ou a une demande en attente."); }
// Vérification lieu
if(Lieu < 1 || Lieu > 7) return SendClientMessage(playerid, COLOR_RED, "Entrez un lieu entre 1 et 7. (/lieuxarene pour voir à quoi ils correspondent)");
// Vérification arme 1
if(ArmeUne != 0 && ArmeUne != 24 && ArmeUne != 30 && ArmeUne != 31) return SendClientMessage(playerid, COLOR_RED, "La première arme est incorrecte.");
// Vérification arme 2
if(ArmeDeux != 0 && ArmeDeux != 24 && ArmeDeux != 30 && ArmeDeux != 31) return SendClientMessage(playerid, COLOR_RED, "La seconde arme est incorrecte.");
// Vérification gilet
if(Gilet != 0 && Gilet != 1) return SendClientMessage(playerid, COLOR_RED, "Veuillez entrer 0 si vous ne souhaitez pas de gilet ou 1 si vous souhaitez le gilet full.");
CreateArene(playerid, Joueur, Lieu, ArmeUne, ArmeDeux, Gilet);
    return 1;
}
Dès qu'on tape /arene, il ne retourne rien IG mais quand on met tous les paramètres, cela marche.

Merci d'avance.

5
Bonjour,
En fait je viens de trouver le problème, il suffit que j'utilise un command processor (j'ai pris zcmd) et cela marche bizarre...

Merci quand même.

6
Bonjour,
Mon code est placé dans mon gamemode (je l'ai commencé vierge).

Aucunes erreurs ou warnings à la compilation.

7
Bonjour,
Je poste ce sujet car depuis plusieurs jours je rencontre un problème que je n'ai toujours pas réussi à résoudre.

Alors ce problème provient de OnPlayerCommandText.

Voici ma fonction :
Code: (pawn) [Sélectionner]
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/test", cmdtext, true, 10) == 0)
{
SendClientMessage(playerid, COLOR_WHITE, "Test");
return 1;
}
return 0;
}

Et quand je me connecte pour aller l'essayer, je reçois ce message :
SERVER: Unknown command.

J'ai essayé de mettre return 1; à la fin de la fonction, même message.
J'ai pris différents bouts de la fonction sur d'autres GM, même problème.
J'ai aussi changé le return en mettant par exemple return SendClientMessage(playerid, -1, "Commande inconnue");
Toujours SERVER: Unknown command.

Je ne vois vraiment pas d'où ça peut venir.

Si vous pouvez m'aider je vous en serait reconnaissant car là je sèche un peu.


Merci d'avance.

Pages: [1]