GTAOnline.net
San Andreas Multiplayer (sa:mp) => Problèmes et bugs => Discussion démarrée 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,
-
Bonjour à toi,
Je suis désolé, mais il te faudrat faire plusieurs Dialog pour le moment.
Cordialement ShaDowxx™
-
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?
-
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™.
-
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:
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
-
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" );
-
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,
-
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.
-
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 ?
-
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");
-
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.
-
essai de couper un peu plus ^^
-
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,
-
Pour ma part je ne sais pas peut-être que quelqu'un d'autre pourrais t'aider ;)
-
Toujours personne pour me donner un petit coup de pouce ? :'(
-
Tu dépasse peut-être les 1024 caractères?
-
Peut être oui mais comment modifier ceci donc?
-
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?
-
Toujours pas de solution à mon problème :( je commence à croire qu'il n'y en à vraiment pas^^
-
[FREEPOST]
La pub est interdite.
-
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...
-
Bonsoir,
Camil-Bano à raison. Optimise t'es commandes et ton Dialogue. Te prends pas la tête avec mon MP.
Cordialement,
-
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,
-
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.
-
Dacc, c'est vraiment génial de ta part :) je te remercie 1000 fois Shadow...
-
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:
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.
-
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 ^^.
-
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
-
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 :/
-
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
-
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?
-
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
-
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,