GTAOnline.net

San Andreas Multiplayer (sa:mp) => Problèmes et bugs => Discussion démarrée par: LegolasS le 05 Septembre 2011, 20:57:20

Titre: Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 05 Septembre 2011, 20:57:20
Bonjour à tous !

Je fait appel à vous car mon problème est le suivant, j'ai voulu faire un menu avec la liste des commandes générales du serveur, seulement, il y en à beaucoup et lorsque je fini ma ligne et que je veut compiler, le compilateur me sort un message erreur du style :

"Input line too long" (after substitutions)

Je voudrais seulement savoir comment est il possible d'agrandir la ligne max, ou un moyen d'aller à la ligne pour que toutes les commandes générales du serveur entre dans le menu.

Si quelqu'un peut m'aider ce serait vraiment sympa de sa part :).

Merci à tous.


Cordialement,
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: ShaDowxx™ le 06 Septembre 2011, 07:28:45
Bonjour à toi,

Je suis désolé, mais il te faudrat faire plusieurs Dialog pour le moment.

Cordialement ShaDowxx™
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 06 Septembre 2011, 07:56:10
D accord et sa change quoi de faire plusieurs dialog? Sa fait plusieurs tableau avec d autre commande a creer ou sa en fait quand meme que 1 seul avec la meme commande et tout ke texte dedans?
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: ShaDowxx™ le 06 Septembre 2011, 11:42:57
Désolé, mais j'ai eu du mal à comprendre mais sinon je t'explique :

Tu aura besoins de deux Dialogue et de la Fonction : OnDialogResponse.
Tu commence déjà par faire une commande avec ShowPlayerDialog
(regarde sur le Wikipédia de SA-MP pour trouver le bon, celui qui a deux boutons et surtout ne prends pas celui qui permet de s'enregistrer tu le remarqueras car il y aura quelque a écrire en bas du Dialogue). Puis après avoir fais ça, tu utilise la Fonction OnDialogResponse et tu continue le ShowPlayerDialog. Si tu ne comprends pas, il y a un Tutorial disponible sur le Wikipédia de encore une fois SA-MP.

Je t'aurrais bien aidé, mais je ne suis pas sur mon bon PC donc tu n'aurra pas de code, je suis encore désolé.

Cordialement ShaDowxx™.
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: steve76 le 06 Septembre 2011, 12:59:21
Salut,

Pas besoin de plusieurs dialogue.

Utilise la fonction : strcat ( http://wiki.sa-mp.com/wiki/Strcat (http://wiki.sa-mp.com/wiki/Strcat) )

Un exemple d'utilisation:
Code: (pawn) [Sélectionner]
new MonDialogue[1024];
strcat(MonDialogue, "1ere partie");
strcat(MonDialogue, "2eme partie");
strcat(MonDialogue, "3eme partie");
et ainsi de suite...
et après tu utilises la variable lors de l'affichage de ton dialogue
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: Ssk le 06 Septembre 2011, 13:04:33
Au pire tu peux faire ça



SendClientMessage( playerid, 0xFFFFFFFF, "je suis un long texte et je saute une ligne" \
"dans le code et oui c'est fonctionel" \
"et il ne faut surtout pas oublier le \ après chaque saut de ligne" );


Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 06 Septembre 2011, 15:29:48
Dacc, merci a tous pour vos reponses, mais y en aurais t il un de vous qui serez d accord pour m aider sur un teamspeak ou sur teamviewer plus tard ou dans la soiree?                                                                                                                                                                                                                                               Cordialement,
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: ShaDowxx™ le 06 Septembre 2011, 17:11:26
Je crois que a réponse sera peu positif. De plus je conseille d'uploader ton code pour que tous le monde puisse le regarder.
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 06 Septembre 2011, 17:57:47
dcmd_gcmds(playerid,params[])
{
#pragma unused params
if(IsSpawned[playerid] != 1)

    {
        SendClientMessage(playerid,COLOR_ERROR,"You must be alive and spawned in order to be able to use this command.");
        return 1;
}
if(IsKidnapped[playerid] == 1)
{
    SendClientMessage(playerid,COLOR_ERROR,"You are kidnapped. You cannot use this command.");
    return 1;
}
if(IsFrozen[playerid] == 1)
{
    SendClientMessage(playerid,COLOR_ERROR,"You have been frozen by a Server Administrator. You cannot use this command.");
    return 1;
}
ShowPlayerDialog(playerid,DIALOG_COMMANDS,DIALOG_STYLE_MSGBOX,"General Commands","{FFFFFF}}/suicide - Permet de vous tuer.\n/112 [MESSAGE] - Permet d'appeler les services d'urgence.\n/phareon - Allume les phares du véhicule.\n/phareoff - Eteindre les phares du véhicule.\n/capotop - Ouvre le capot du véhicule.\n/capotcl - Ferme le capot du véhicule.\n/me - Ecrire une action.\n/w - Chuchotter.\n/cw - Chuchotter en véhicule.\n/pm - Envoi d'un message privé.","Ok","Cancel");
return 1;
}


Voila mon code, si je continu d'écrire des commandes après la dernière commande "/pm" le compilateur me dit l erreur de la ligne trop longue :/... comment faire en gardant le même code ?
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: Ssk le 06 Septembre 2011, 18:14:41
Essaies comme ça


ShowPlayerDialog(playerid,DIALOG_COMMANDS,DIALOG_STYLE_MSGBOX,"General Commands","{FFFFFF}}/suicide - Permet de vous tuer.\n" \
"/112 [MESSAGE] - Permet d'appeler les services d'urgence.\n/phareon - Allume les phares du véhicule.\n" \
"/phareoff - Eteindre les phares du véhicule.\n/capotop - Ouvre le capot du véhicule.\n/capotcl - Ferme le capot du véhicule.\n" \
"/me - Ecrire une action.\n/w - Chuchotter.\n/cw - Chuchotter en véhicule.\n/pm - Envoi d'un message privé.","Ok","Cancel");

Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 06 Septembre 2011, 18:41:29
Re, ce que tu ma donné marche très bien seulement quand j'essaye de le refaire, le compilateur m'indique cette fois ceci :

C:UsersDylanDesktopsamp03csvr_R2-2_win32gamemodesSFCRRPG.pwn(3471) : error 075: input line too long (after substitutions)
C:UsersDylanDesktopsamp03csvr_R2-2_win32gamemodesSFCRRPG.pwn(3472) : error 037: invalid string (possibly non-terminated string)
C:UsersDylanDesktopsamp03csvr_R2-2_win32gamemodesSFCRRPG.pwn(3472) : error 017: undefined symbol "report"
C:UsersDylanDesktopsamp03csvr_R2-2_win32gamemodesSFCRRPG.pwn(3472) : error 017: undefined symbol "de"
C:UsersDylanDesktopsamp03csvr_R2-2_win32gamemodesSFCRRPG.pwn(3472) : fatal error 107: too many error messages on one line

Voici le code refait avec toutes les commandes generales :

ShowPlayerDialog(playerid,DIALOG_COMMANDS,DIALOG_STYLE_MSGBOX,"General Commands","{0000FF}/suicide - Permet de vous tuer.\n" \
"/112 [MESSAGE] - Permet d'appeler les services d'urgence.\n/phareon - Allume les phares du véhicule.\n" \
"/phareoff - Eteindre les phares du véhicule.\n/capotop - Ouvre le capot du véhicule.\n/capotcl - Ferme le capot du véhicule.\n" \
"/me - Ecrire une action.\n/w - Chuchotter.\n/cw - Chuchotter en véhicule.\n/pm - Envoi d'un message privé.\n" \
"/w - Chuchotter.\n/cw - Chuchotter en véhicule.\n/pm - Envoi d'un message privé.\n/report - Permet de reporter un joueur.\n" \
"/armes - Appeler un trafiquant d'armes.\n/drogues - Appeler un trafiquant de drogues.\n/taxi - Appeler un chauffeur de taxi.\n" \
"/fumerweed - Fumer de l'herbe.\n/injecthero - S'injecter de l'héroine.\n/contrat - Placer un contrat sur la tête d'un joueur.\n" \
"/detach - Détacher un joueur Kidnappé.\n/coupercorde - Couper la corde si vous êtes kidnappé.\n" \
"/lvlvoleur - Connaître votre niveau de voleur.\n/volerlieu - Voler un lieu volable.\n/sacados - Permet d'ouvrir son Sac à Dos.\n" \
"/saucisse - Permet de manger une saucisse pour vous soigner.\n/givecash - Donner de l'argent à un joueur.\n" \
"/pc - Affiche la liste de couleur des joueurs.\n/detach - Détacher un joueur Kidnappé.\n" \
"/lvlvoleur - Connaître votre niveau de voleur.\n/volerlieu - Voler un lieu volable.\n/sacados - Permet d'ouvrir son Sac à Dos.\n" \
"/saucisse - Permet de manger une saucisse pour vous soigner.\n /givecash - Donner de l'argent à un joueur.\n" \
"/givegun - Donner une arme à un joueur.\n{FF0000}/regles  - Affiche les règles du serveur.\n /pc - Affiche la liste de couleur des joueurs.","Ok","Cancel");
return 1;


(la ligne 3471 c'est celle ou il la commande /me au debut et la 3472, bas celle du dessous ^^, je vois pas d'ou sa peut venir...) Merci.
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: Ssk le 06 Septembre 2011, 19:25:47
essai de couper un peu plus ^^
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 06 Septembre 2011, 19:28:05
Sa marche toujours pas :( j'ai essayé de mettre qu'une seule commande à la ligne donc très court et de refermer mais le compilateur me refait la même erreur qu'au tout début je comprend pas d’où cela peut venir :/ si quelqu un a une reponse a m apporter ce serait vraiment sympa :). Merci,             Cordialement,
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: bibidu60 le 07 Septembre 2011, 16:16:20
Pour ma part je ne sais pas peut-être que quelqu'un d'autre pourrais t'aider  ;)
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 07 Septembre 2011, 18:34:58
Toujours personne pour me donner un petit coup de pouce ?  :'(
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: Ssk le 07 Septembre 2011, 18:42:52
Tu dépasse peut-être les 1024 caractères?
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 07 Septembre 2011, 18:44:23
Peut être oui mais comment modifier ceci donc?
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 07 Septembre 2011, 19:01:52
Toujours pas, je pense que Ssk a raison, je dépasse les 1024 caractères, mais comment donc agrandir le nombre de caractères par ligne?
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 07 Septembre 2011, 19:09:21
Toujours pas de solution à mon problème :( je commence à croire qu'il n'y en à vraiment pas^^
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: ShaDowxx™ le 07 Septembre 2011, 19:16:29
[FREEPOST]

La pub est interdite.
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 07 Septembre 2011, 19:22:56
Oui... mais je comprend quand même pas, je suis allez sur d'autre serveur et la plus part d'entre eux ont dans leurs menu toutes les commandes générales de leur serveur, comment font il ? y a bien une solution...
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: ShaDowxx™ le 07 Septembre 2011, 19:34:42
Bonsoir,

Camil-Bano à raison. Optimise t'es commandes et ton Dialogue. Te prends pas la tête avec mon MP.

Cordialement,
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 07 Septembre 2011, 19:50:23
Dacc mais par contre je n'ai aucune idée de comment faire une page suivante dans un menu qui ouvre un autre menu...

Double post
Malheureusement toujours le même problème :/ j'ai tout essayé, également avec Beno sur teamspeak mais rien y fait, si quelqu'un pourrait m'expliquer comment faire un Onglet "suivant" dans un menu qui amène vers une 2e page de commande je lui en serait vraiment reconnaissant.

Cordialement,
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: ShaDowxx™ le 07 Septembre 2011, 21:21:00
Demain matin, si j'ai le temps et que on ne le fais pas ce soir, je ferais le code. Je te promet rien par contre.
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 07 Septembre 2011, 21:29:17
Dacc, c'est vraiment génial de ta part :) je te remercie 1000 fois Shadow...
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: steve76 le 07 Septembre 2011, 22:21:41
Utilise la technique que je t'ai donné, juste avant SSK.

Elle marche nickel pour mon serveur, même quand il y a plus de 1024 caractères.

Pour info, tout tes texte contienne 1614 caractères (sur internet, il y a des site pour compter, pratique pour approcher au mieux les valeurs pour tes variables)

Voilà ce que ça donne avec ma technique:

Code: (pawn) [Sélectionner]
new TmpCommandes[1024];
strcat(TmpCommandes, "{0000FF}/suicide - Permet de vous tuer.\n");
strcat(TmpCommandes, "/112 [MESSAGE] - Permet d'appeler les services d'urgence.\n/phareon - Allume les phares du véhicule.\n");
strcat(TmpCommandes, "/phareoff - Eteindre les phares du véhicule.\n/capotop - Ouvre le capot du véhicule.\n/capotcl - Ferme le capot du véhicule.\n");
strcat(TmpCommandes, "/me - Ecrire une action.\n/w - Chuchotter.\n/cw - Chuchotter en véhicule.\n/pm - Envoi d'un message privé.\n");
strcat(TmpCommandes, "/w - Chuchotter.\n/cw - Chuchotter en véhicule.\n/pm - Envoi d'un message privé.\n/report - Permet de reporter un joueur.\n");
strcat(TmpCommandes, "/armes - Appeler un trafiquant d'armes.\n/drogues - Appeler un trafiquant de drogues.\n/taxi - Appeler un chauffeur de taxi.\n");
strcat(TmpCommandes, "/fumerweed - Fumer de l'herbe.\n/injecthero - S'injecter de l'héroine.\n/contrat - Placer un contrat sur la tête d'un joueur.\n");
strcat(TmpCommandes, "/detach - Détacher un joueur Kidnappé.\n/coupercorde - Couper la corde si vous êtes kidnappé.\n");
strcat(TmpCommandes, "/lvlvoleur - Connaître votre niveau de voleur.\n/volerlieu - Voler un lieu volable.\n/sacados - Permet d'ouvrir son Sac à Dos.\n");
strcat(TmpCommandes, "/saucisse - Permet de manger une saucisse pour vous soigner.\n/givecash - Donner de l'argent à un joueur.\n");
strcat(TmpCommandes, "/pc - Affiche la liste de couleur des joueurs.\n/detach - Détacher un joueur Kidnappé.\n");
strcat(TmpCommandes, "/lvlvoleur - Connaître votre niveau de voleur.\n/volerlieu - Voler un lieu volable.\n/sacados - Permet d'ouvrir son Sac à Dos.\n");
strcat(TmpCommandes, "/saucisse - Permet de manger une saucisse pour vous soigner.\n /givecash - Donner de l'argent à un joueur.\n");
strcat(TmpCommandes, "/givegun - Donner une arme à un joueur.\n{FF0000}/regles  - Affiche les règles du serveur.\n /pc - Affiche la liste de couleur des joueurs.");
ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"General Commands",TmpCommandes,"Ok","Cancel");

Pense à vérifier que je n'ai pas oublié de lignes.
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: bibidu60 le 08 Septembre 2011, 00:02:17
Bonjour,

J'ai remplacer le code qui ne fonctionne pas par le votre mais maintenant sa m'indique "warning 209: function "dcmd_gcmds" should return a value"
Voici la partie de code qui pose problème : dcmd_gcmds(playerid,params[])
{
#pragma unused params
if(IsSpawned[playerid] != 1)

    {
        SendClientMessage(playerid,COLOR_ERROR,"You must be alive and spawned in order to be able to use this command.");
        return 1;
}
if(IsKidnapped[playerid] == 1)
{
   SendClientMessage(playerid,COLOR_ERROR,"You are kidnapped. You cannot use this command.");
   return 1;
}
if(IsFrozen[playerid] == 1)
{
   SendClientMessage(playerid,COLOR_ERROR,"You have been frozen by a Server Administrator. You cannot use this command.");
   return 1;
}
new TmpCommandes[1024];
    strcat(TmpCommandes, "{0000FF}/suicide - Permet de vous tuer.\n");
    strcat(TmpCommandes, "/112 [MESSAGE] - Permet d'appeler les services d'urgence.\n/phareon - Allume les phares du véhicule.\n");
    strcat(TmpCommandes, "/phareoff - Eteindre les phares du véhicule.\n/capotop - Ouvre le capot du véhicule.\n/capotcl - Ferme le capot du véhicule.\n");
    strcat(TmpCommandes, "/me - Ecrire une action.\n/w - Chuchotter.\n/cw - Chuchotter en véhicule.\n/pm - Envoi d'un message privé.\n");
    strcat(TmpCommandes, "/w - Chuchotter.\n/cw - Chuchotter en véhicule.\n/pm - Envoi d'un message privé.\n/report - Permet de reporter un joueur.\n");
    strcat(TmpCommandes, "/armes - Appeler un trafiquant d'armes.\n/drogues - Appeler un trafiquant de drogues.\n/taxi - Appeler un chauffeur de taxi.\n");
    strcat(TmpCommandes, "/fumerweed - Fumer de l'herbe.\n/injecthero - S'injecter de l'héroine.\n/contrat - Placer un contrat sur la tête d'un joueur.\n");
    strcat(TmpCommandes, "/detach - Détacher un joueur Kidnappé.\n/coupercorde - Couper la corde si vous êtes kidnappé.\n");
    strcat(TmpCommandes, "/lvlvoleur - Connaître votre niveau de voleur.\n/volerlieu - Voler un lieu volable.\n/sacados - Permet d'ouvrir son Sac à Dos.\n");
    strcat(TmpCommandes, "/saucisse - Permet de manger une saucisse pour vous soigner.\n/givecash - Donner de l'argent à un joueur.\n");
    strcat(TmpCommandes, "/pc - Affiche la liste de couleur des joueurs.\n/detach - Détacher un joueur Kidnappé.\n");
    strcat(TmpCommandes, "/lvlvoleur - Connaître votre niveau de voleur.\n/volerlieu - Voler un lieu volable.\n/sacados - Permet d'ouvrir son Sac à Dos.\n");
    strcat(TmpCommandes, "/saucisse - Permet de manger une saucisse pour vous soigner.\n /givecash - Donner de l'argent à un joueur.\n");
    strcat(TmpCommandes, "/givegun - Donner une arme à un joueur.\n{FF0000}/regles  - Affiche les règles du serveur.\n /pc - Affiche la liste de couleur des joueurs.");
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"General Commands",TmpCommandes,"Ok","Cancel");
}

Si vous pourriez corriger la faute qui fait que sa ne fonctionne pas, je vous en serai reconnaissant.
Sa fonctionne c'est bon mais le problème et que quand je tape /gcmds sa me dit que la commande n'existe pas mais sa m'affiche quand même le tableau avec les commandes générales mais sa me demande ensuite de me reconnecter à chaque fois que je fait /gcmds.
PS: je suis un "pote" à legolass et je demande à sa place ^^.
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: Ssk le 08 Septembre 2011, 07:54:49
1614 caractères pour un dialog c'est pas possible vu que le buffer qui traite les dialogs (dans le code sur serveur sa-mp) est de 1024
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 08 Septembre 2011, 12:21:05
Faux Ssk ^^ Desormais le menu marche super, lorsqu on tape /gcmds sur mon serv toutes les commandes (1614 caracteres) apparaissent bien dans le menu, on a juste remplacé dans le code de bibi le "dialog_style_list" par "dialog_style_msgbox" et sa marche comme on le voulait, seulement maintenant une autre erreur apparait... Lorsqu on tape la commande et qu on fait "Ok" sur le menu pour le fermer, sa nous deconnecte du serveur et sa nous demande de nous reconnecter au serveur... Je vois pas du tout d ou ce probleme peut venir :/
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: Ssk le 08 Septembre 2011, 12:56:25
Excusez je me suis trompé la limite est a 4096 et non 1024 ^^

.text:1000B0C2                 push    1000h // La taille du buffer 0x1000 = 4096 ^^
.text:1000B0C7                 push    eax // Le texte à décompresser
.text:1000B0C8                 call    getStringCompressor
.text:1000B0CD                 mov     ecx, eax
.text:1000B0CF                 call    StringCompressor__DecompressString
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 08 Septembre 2011, 13:03:31
Tu n a aucune idee de pourquoi quand on fait "ok" dans le menu pour le fermer et revenir au jeu, sa nous deconnecte et nous demande de nous reconnecter au serveur?
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: steve76 le 08 Septembre 2011, 14:17:00
Vérifie l'idée de ton dialogue, dans mon exemple, l'ID est un alors que vous aviez mis DIALOG_COMMANDS

Je suppose donc que vous ne l'avez pas remis, et que l'ID 1 dans votre GM correspond au dialogue de connexion
Titre: Re : Erreur : Input line too long (after substitutions) Compilateur Pawn
Posté par: LegolasS le 08 Septembre 2011, 20:08:10
Problème Résolu ! Tout marche à merveille ! je remercie vraiment tout ceux qui ont pris de leur temps pour m'aider et je souhaite à tout le monde une agréable fin de soirée !!

Merci encore !


Cordialement,