• 04 Juin 2026, 20:50:23


Auteur Sujet: Message étrange dans le compilateur  (Lu 1834 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Winklevows

  • *
  • Tueur
  • Messages: 64
    • Voir le profil
Message étrange dans le compilateur
« le: 22 Avril 2011, 02:14:58 »
Bonjour,

J'obtiens un message étrange lorsque je compile depuis que j'ai rajouter ce bout de code :

Code: (PAWN) [Sélectionner]
<?php
if(dialogid == DIALOG_COMMANDS)
    {
if(response)
{
new string0[1574];
new string1[402] = "{FFFFFF}/suicide - Permet de vous tuer.\n/911 [MESSAGE] - Permet d'appeler les services d'urgence.\n/phares - Allume/Éteint les phares du véhicule.\n/capot - Ouvre/Ferme le capot du véhicule.\n/coffre - Ouvre/Ferme le coffre du véhicule.\n/me - Écrire une action.\n/w - Chuchotter.\n/cw - Chuchotter en véhicule.\n/pm - Envoi d'un message privé.\n/ircpm - Envoi d'un message privé aux joueurs sur IRC.";
new string2[380] = "\n/report - Permet de reporter un joueur.\n/medecin - Appeler un médecin.\n/mecanicien - Appeler un mécanicien.\n/armes - Appeler un traffiquant d'arme.\n/drogue - Appeler un traffiquant de drogue.\n/taxi - Appeler un chauffeur de taxi.\n/proprietaires - Affiche la liste des propriétaires d'entreprise.\n/fumerweed - Fumer de la weed.\n/injectheroine - S'injecter de l'héroïne.\n";
new string3[381] = "/placehit - Placer un hit sur un joueur.\n/detach - Détacher un joueur kidnappé.\n/coupercorde - Couper la corde si vous êtes kidnappé.\n/compvoleur - Connâitre votre compétence voleur.\n/compterroriste - Connâitre votre compétence terroriste.\n/volerlieu - Voler un lieu volable.\n/sacados - Utiliser votre Sac à Dos.\n/saucisse - Permet de manger une saucisse pour vous soigner.";
new string4[411] = "\n/givecash - Donner de l'argent à un joueur.\n/givegun - Donner une arme à un joueur.\n/rendre - Permet de vous rendre à la police.\n"ECOLOR_YELLOW"/rc - Permet de parler sur le chat des Joueurs Réguliers.\n/afk /back - Permet d'être absent ou de revenir.\n/br /supbr /suptoutbr - Place ou supprime un barrage routier.\n{FF0000}/regles - Affiche les règles de FCRPG.\n/pc - Affiche la liste des couleurs des joueurs.";
format(string0sizeof(string0),"%s%s%s%s"string1,string2,string3,string4);
ShowPlayerDialog(playerid,DIALOG_COMMANDSG,DIALOG_STYLE_MSGBOX,"COMMANDES - GÉNÉRAL:",string0,"Ok","");
return 1;
}
}


Le compilateur répond :

Current directory: C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase

Header size:          14652 bytes
Code size:           717496 bytes
Data size:           995172 bytes
Stack/heap size:      16384 bytes; estimated max. usage=5932 cells (23728 bytes)
Total requirements: 1743704 bytes
================ READY ================

Merci de vos réponses.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Message étrange dans le compilateur
« Réponse #1 le: 22 Avril 2011, 04:12:45 »
Former 4 tableaux (de grande taille) pour être regrouper dans un seul tableau, c'est très gourmand en ressource.
Voilà pourquoi tu reçois ce message ;).
Essaye comme ceci.


if(dialogid == DIALOG_COMMANDS)
{
if(response)
{
new string0[1580] = "{FFFFFF}/suicide - Permet de vous tuer.\n/911 [MESSAGE] - Permet d'appeler les services d'urgence.\n/phares - Allume/Éteint les phares du véhicule.\n/capot - Ouvre/Ferme le capot du véhicule.\n/coffre - Ouvre/Ferme le coffre du véhicule.\n/me - Écrire une action.\n/w - Chuchotter.\n/cw - Chuchotter en véhicule.\n/pm - Envoi d'un message privé.\n/ircpm - Envoi d'un message privé aux joueurs sur IRC.\n/report - Permet de reporter un joueur.\n/medecin - Appeler un médecin.\n/mecanicien - Appeler un mécanicien.\n/armes - Appeler un traffiquant d'arme.\n/drogue - Appeler un traffiquant de drogue.\n/taxi - Appeler un chauffeur de taxi.\n/proprietaires - Affiche la liste des propriétaires d'entreprise.\n/fumerweed - Fumer de la weed.\n/injectheroine - S'injecter de l'héroïne.\n/placehit - Placer un hit sur un joueur.\n/detach - Détacher un joueur kidnappé.\n/coupercorde - Couper la corde si vous êtes kidnappé.\n/compvoleur - Connâitre votre compétence voleur.\n/compterroriste - Connâitre votre compétence terroriste.\n/volerlieu - Voler un lieu volable.\n/sacados - Utiliser votre 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/rendre - Permet de vous rendre à la police.\n"ECOLOR_YELLOW"/rc - Permet de parler sur le chat des Joueurs Réguliers.\n/afk /back - Permet d'être absent ou de revenir.\n/br /supbr /suptoutbr - Place ou supprime un barrage routier.\n{FF0000}/regles - Affiche les règles de FCRPG.\n/pc - Affiche la liste des couleurs des joueurs.";

ShowPlayerDialog(playerid, DIALOG_COMMANDSG, DIALOG_STYLE_MSGBOX, "COMMANDES - GÉNÉRAL:", string0, "Ok", "");

return 1;
}
}

Hors ligne Winklevows

  • *
  • Tueur
  • Messages: 64
    • Voir le profil
Re : Re : Message étrange dans le compilateur
« Réponse #2 le: 22 Avril 2011, 05:26:40 »
Former 4 tableaux (de grande taille) pour être regrouper dans un seul tableau, c'est très gourmand en ressource.
Voilà pourquoi tu reçois ce message ;).

C'est étrange car j'ai exactement ces mêmes 4 tableaux en commande (COMMAND:gcmds(playerid,params[]) {...}) mais là j'ai pas de problème parcontre dès que je met ce code dans OnDialogResponse sa déconne...

Essaye comme ceci.

if(dialogid == DIALOG_COMMANDS)
{
if(response)
{
new string0[1580] = "{FFFFFF}/suicide - Permet de vous tuer.\n/911 [MESSAGE] - Permet d'appeler les services d'urgence.\n/phares - Allume/Éteint les phares du véhicule.\n/capot - Ouvre/Ferme le capot du véhicule.\n/coffre - Ouvre/Ferme le coffre du véhicule.\n/me - Écrire une action.\n/w - Chuchotter.\n/cw - Chuchotter en véhicule.\n/pm - Envoi d'un message privé.\n/ircpm - Envoi d'un message privé aux joueurs sur IRC.\n/report - Permet de reporter un joueur.\n/medecin - Appeler un médecin.\n/mecanicien - Appeler un mécanicien.\n/armes - Appeler un traffiquant d'arme.\n/drogue - Appeler un traffiquant de drogue.\n/taxi - Appeler un chauffeur de taxi.\n/proprietaires - Affiche la liste des propriétaires d'entreprise.\n/fumerweed - Fumer de la weed.\n/injectheroine - S'injecter de l'héroïne.\n/placehit - Placer un hit sur un joueur.\n/detach - Détacher un joueur kidnappé.\n/coupercorde - Couper la corde si vous êtes kidnappé.\n/compvoleur - Connâitre votre compétence voleur.\n/compterroriste - Connâitre votre compétence terroriste.\n/volerlieu - Voler un lieu volable.\n/sacados - Utiliser votre 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/rendre - Permet de vous rendre à la police.\n"ECOLOR_YELLOW"/rc - Permet de parler sur le chat des Joueurs Réguliers.\n/afk /back - Permet d'être absent ou de revenir.\n/br /supbr /suptoutbr - Place ou supprime un barrage routier.\n{FF0000}/regles - Affiche les règles de FCRPG.\n/pc - Affiche la liste des couleurs des joueurs.";

ShowPlayerDialog(playerid, DIALOG_COMMANDSG, DIALOG_STYLE_MSGBOX, "COMMANDES - GÉNÉRAL:", string0, "Ok", "");

return 1;
}
}

Cela ne fonctionne pas :

Current directory: C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes
FCRPG1.28.pwn(17415) : error 075: input line too long (after substitutions)
FCRPG1.28.pwn(17416) : error 037: invalid string (possibly non-terminated string)
FCRPG1.28.pwn(17416) : error 017: undefined symbol "FFFFFF"
FCRPG1.28.pwn(17416) : error 029: invalid expression, assumed zero
FCRPG1.28.pwn(17416) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


5 Errors.
================ READY ================

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Message étrange dans le compilateur
« Réponse #3 le: 25 Avril 2011, 20:24:53 »
Salut,

ah le problèmes des lignes trop longues....

essaie de ne séparer qu'en deux textes.

L'avertissement que tu recevais est dû à une utilisation excessive du stack.
En gros, tu as trop de variables locales (en tout tu as plus de 3000 cellules, soit environ 12 ko).

Tu as deux options si tu veut remettre tes variables :

 - augmenter la taille du stack (#pragma dynamic ....)
 - passer tes variables locales en variables globales.

Je crois que ça passerais avec deux variables pour éviter le problème de la longueur de la ligne. Sinon peut-être reformuler un peu, séparer en plusieurs dialogs etc...

++Sim++





Hors ligne Winklevows

  • *
  • Tueur
  • Messages: 64
    • Voir le profil
Re : Re : Message étrange dans le compilateur
« Réponse #4 le: 26 Avril 2011, 02:48:08 »
Séparer qu'en deux textes ne fonctionne pas, par trois non plus.

Tu as deux options si tu veut remettre tes variables :

 - augmenter la taille du stack (#pragma dynamic ....)
 - passer tes variables locales en variables globales.
++Sim++

Quel solution est la meilleur ?
J'ai passé en variables globales et sa fonctionne mais j'aime pas trop sa, peut être que je me trompe.

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Message étrange dans le compilateur
« Réponse #5 le: 26 Avril 2011, 10:03:40 »
Je te conseil de faire ça en plusieurs dialogue, c'est plus esthétique, et pour le script c'est toujours.

Surtout que je crois que les textes de dialog ne doivent pas faire plus de 1024 caractères.



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Message étrange dans le compilateur
« Réponse #6 le: 26 Avril 2011, 10:40:52 »
L'utilisation de variable globale dans un environnement multitâche est fortement déconseillé.

Voici une solution pour afficher de longs textes dans une boite de dialogue (nécessite #pragma dynamic si le compilateur se plaint) :
MaBoiteDeDialogueAide (playerid)
{
new Global[2048];

/* Construction de la chaine a mettre dans le boite de dialogue */
/* On commence par un strcpy */
strcpy (Global, "Voir les crédits ... (/credits)");

/* On enchaîne avec autant de format que l'on veut (dans la limite de la taille de la chaîne) */
format (Global, sizeof Global, "%s\n%s", Global, "But du mode ... (/but)");
format (Global, sizeof Global, "%s\n%s", Global, "Règles ... (/regles)");
format (Global, sizeof Global, "%s\n%s", Global, "Commandes générales ... (/plus)");
format (Global, sizeof Global, "%s\n%s", Global, "Téléportation ... (/telep)");
format (Global, sizeof Global, "%s\n%s", Global, "Animations ... (/anim ou /animlist)");
format (Global, sizeof Global, "%s\n%s", Global, "Système de compte ... (/caide)");
format (Global, sizeof Global, "%s\n%s", Global, "Death Match ... (/dm)");

/* On affiche la boite de dialogue */
ShowPlayerDialog (playerid, TYPE_DIALOG_AIDE, DIALOG_STYLE_LIST, "Aide en ligne", Global, "Afficher", "Fermer");
}
Ce code est bien évidement adaptable.

Concernant le #pragma dynamic, il ne faut pas hésiter à s'en servir, la pile par défaut de PAWN est minuscule en comparaison à la taille de la mémoire sur un PC.

Sinon, les boites de dialogue sont limitées à 4096 caractères ( 4Ko).

++
Syg
Courtesy of GtaManiac

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Re : Message étrange dans le compilateur
« Réponse #7 le: 27 Avril 2011, 20:12:15 »
Sinon, les boites de dialogue sont limitées à 4096 caractères ( 4Ko).

ah 4096, je pensais que c'était limité à 1024.

( Sinon 4096 caractères stocké dans des variables de 32bit c'est plutôt 16ko )



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Message étrange dans le compilateur
« Réponse #8 le: 28 Avril 2011, 10:30:51 »
Oui, tu as raison, les cellules PAWN font 4 octets.

++
Syg
Courtesy of GtaManiac