Error : Identifier List Full ?

Répondre
Partager Rechercher
Quelqu'un a déjà eu cette erreur ?

Apparemment elle se déclenche lorsque les includes comportent trop de définitions de constantes / variables / fonctions. Or, elle ne se déclenchait pas avant la 1.64.

J'ai repris une ancienne version de mon module qui date de deux mois, parfaitement fonctionnelle, et cette erreur se déclenche maintenant alors qu'elle n'apparaissait pas auparavant.

Sur le forum technique de Bioware, une personne précise qu'il est alors nécessaire de découper plus finement nos includes pour n'y intégrer que le strict nécessaire. Une autre dit qu'il faut passer par l'outil de compilation externe clcompile.exe. Et encore une autre, qu'il ne faut pas utiliser la partie interface pour déclarer les fonctions, mais directement passer à la partie implémentation... bonjour la visibilité...

Déjà que les TMI me mettent carrément en pétard, mais là, je trouve que Bioware pousse le bouchon un peu loin. Ca devient franchement agaçant ces contraintes du NwN-Script...
C'est quoi TMI?

Moi surtout ce que je trouve agaçant, c'est d'avoir un truc qui marche et que lors d'un patch correctifs y a tout plein de truc qui ne marche plus...
Car a priori c'est pas le seul pb, y a eu les sorts (heureusement que le CEP 1.50 est sorti juste derriere pour corriger le pb, mais cela veut dire aussi qu'il faut absolument avoir le CEP ), y a un pb sur les pieges aussi, puis maintenant ce pb la...

C'est super d'attendre tres longtemps pour rien avoir de mieux qu'avant ...

Tiens si j'ai la forme ce soir j'irais voir s'ils ont coriger le bug dans les fonctions sur les items property...
TMI : Too Many Instructions.

En résumé, lorsque NwN a trop de trucs à gérer en même temps, il en laisse tomber un certain nombre... Même si le CPU est très peu chargé, au lieu de séquentialiser, il abandonne complètement certaines tâches.

Du coup, cette erreur oblige à gérer soit même, via des DelayCommand, cette séquentialisation.

Cette faiblesse de NwN me pose pas mal de problèmes, en particulier au niveau de l'initialisation du serveur.
J'ai eut cette erreur avec une recompilation (avec compilateur externe à Aurora, version HotU1.62) du PRC, que j'ai fini par abandonner, car il mettait notre module KO en apportant trop de désagréments et erreurs par rapport aux bonus que les classes et sorts pouvaient apporter.

Les scripts incriminés étaient en général des includes super long, mais alors là, vraiment trés trés long et qui avaient tendances à s'imbriquer les un dans les autres.
Citation :
Publié par Gurvan_Astilane
Les scripts incriminés étaient en général des includes super long, mais alors là, vraiment trés trés long et qui avaient tendances à s'imbriquer les un dans les autres.
Oui c'est exactement ça, j'ai suivi le conseil donné sur le forum technique de Bioware, à savoir découper certains de mes includes, dont l'un faisait plus de 2500 lignes de déclarations de constantes , en plusieurs.

Ca m'a pris une bonne heure pour faire ce ménage, et en passant virer les GetCharacterLevel qui obligent un include supplémentaire alors que GetHitDice est équivalent .

Enfin bon, je trouve que c'est quand même limite de la part du compilateur de Bioware de ne pas pouvoir supporter quelques milliers de constantes / variables / fonctions...

J'ai jeté un oeil aussi sur le forum du PRC, ils suggèrent plutôt d'utiliser le clcompile de Bioware plus que leur compilateur qui n'est pas encore à jour avec la 1.64.
Sheerazade, peux tu nous dire exactement si ce sont des includes de constantes ou des includes de variables ou alors des includes de fonctions ?

j'ai quand à moi des includes qui font près de 12000 lignes de codes (includes de fonctions) et je n'ai pas noté de problème. J'ai un include de variables/constantes de près de 1000 lignes. Tout fonctionne parfaitement.
Les erreurs successives étaient déclenchées sur des fonctions d'includes de fonctions. Mais il m'a suffit de découper un include de constantes contenu dans un des includes pour que le problème disparaisse. Auparavant j'avais aussi supprimé le "nw_i0_generic" que je n'utilisais que pour le GetCharacterLevel dans certaines de mes librairies de fonctions. Autant le remplacer par un GetHitDice, puisque c'est que fait le GetCharacterLevel, qui ne nécessite aucun include. Et au passage, j'ai gagné 1 Mo sur la taille du module .
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés