NWN2 - La Tour des Arcanes

Limite du nombre de zones d'un module

Répondre
Partager Rechercher
Salut !

On a un problème depuis quelques temps sur le module :
Les fonctions GetFirstArea() et GetNextArea() ne permettent plus de récupérer toutes les zones du module : seules les 69 premières (à peu près) sont scannées, le reste du temps, GetNextArea() renvois OBJECT_INVALID...
Les zones sont listées dans l'ordre de la liste contenue dans le module.ifo (ouvrable avec un éditeur gff), mais s'arrète à la 69e zone, alors que les suivantes sont listées correctement (environ une cinquantaine de zones inaccessibles).

Si on supprime quelques zones du module, les zones suivantes dans la liste sont de nouveau scannées via GetNextArea().

Du coup je me demande si il y a une quelconque limite sur le nombre de zones que GetNextArea() peut récupérer, et si oui, comment la passer.

Note : je n'ai trouvé aucun autre bug lié à ce problème sur le module.

Dernière modification par Crom29 ; 04/03/2013 à 18h54.
Rien de spécial de ce côté là à mon avis :
"Afficher Nom" : Nom complet de la zone, peut contenir accents et espaces
"Tag" : Suceptible pour quelques rares zones de contenir des accents, mais pas dans les zones qui posent problème
"Resref" : pas d'espaces ni de caractères spéciaux.

A mon avis le problème ne vient pas de là, vu que quand je supprime des zones sur le module et que je le lance, les zones suivantes dans la liste sont balayées dans le bon ordre.

J'en profite pour poser une seconde question : Comment modifier le nom de la zone qui s'affiche dans le sélecteur DM? (il semble que ce soit le nom de la zone à sa création, mais je n'ai trouvé aucun moyen de la changer)
Est-ce que tu effectue des instructions dans la boucle GetFirst/GetNextArea ? Si oui, essaie sans. Tu peux aussi tenter de mettre un DelayCommand sur le script quand il arrive à 60 maps et puis continuer la boucle.

Pas beaucoup d'idées pour ma part...
Désolé, il fallait comprendre GetNextArea() partout, et non GetNextObject


Sans instructions (à part les commandes de log pour savoir quelles zones sont balayées), ça ne change rien : seules quelques maps (toujours les mêmes) sont balayées.

J'ai déjà essayé de mettre un DelayCommand, mais pas pour séparer le balayage en deux.
Je testerais ça dès que j'aurais un peu de temps à consacrer
__________________
http://img.xooimage.com/files21/b/4/0/bann_lcda-500x100-12abc53.gif
pas idiot de stocker automatiquement les zones dans MySQL (via OnEnter par exemple)
Je vais également tenter d'installer l'Advanced Script Compiler pour voir si ça résoud le problème
Ouai, j'ai remarqué qu'il refusait de compiler un script quand il ne trouvait pas un include ^^

Sinon pour le problème ça pue...

- L'advanced script compiler n'a strictement rien changé

- Avec des DelayCommands, ça marche mieux, mais pas à 100% : Si on scanne les zones 5 par 5, avec un délai de 30sec toutes les 5 zones, j'arrive à scanner 96 maps sur 114. Un délai plus important ou des packs de scan plus faibles ne changent rien.

- Avec le listage des tag des zones dans une BDD puis récupération de chaque zone via son tag, ça a l'air de réagir un peu comme le duo GetFirstArea et GetNextArea : ça plante vers 70zones scannées.
Cependant j'ai un peu foiré mon script de référencement et une même zones est stockée plusieurs fois. Je corrigerais ça et referais un test mais je reste sceptique...
__________________
http://img.xooimage.com/files21/b/4/0/bann_lcda-500x100-12abc53.gif
Tu peux nous mettre tes scripts ici qu'on regarde ? Ça me paraît bizarre qu'avec le ByTag ça ne fonctionne pas. L'idéal c'est que tu nous mette le plus petit script qui fait planter, si tu peux nous mettre le module avec c'est mieux évidemment.. mais je comprends que tu veuilles pas trop :)

Sinon j'essaierais sur un module à 114 map vides, mais je soupçonne que le problème ne se reproduise pas.
Pour info, je n'ai pas eu de problèmes en essayant chez moi, mais évidemment mes maps sont vides. Le script:
Code:
void lst_area(object o)
{
  int count = 0;
  object area = GetFirstArea();
  while (GetIsObjectValid(area))
  {
    SendMessageToPC(o, "area: " + GetTag(area));
    area = GetNextArea();
    ++count;
  }
  SendMessageToPC(o, IntToString(count) + " maps");
}
Pour moi ton problème vient du fichier module.IFO. Tu peux visionner ce fichier via TLKEdit. Tu y trouveras une liste de map qui est probablement incomplète...

Bon courage !

P.S.: la galère pour créer 114 maps dans l'éditeur...
pfiou t'es courageux ^^

La liste dans le module.ifo est pourtant bien complète.

Je ne peux bien sûr pas te filer le module complet. Je pense que je vais mettre les delaycommands pour scanner les 95 zones sur 114 : ça sera déja mieux que rien ^^


ps: désolé si je met du temps à répondre, je change de PC et je n'ai plus nwn2 pour un petit moment
__________________
http://img.xooimage.com/files21/b/4/0/bann_lcda-500x100-12abc53.gif
Répondre

Connectés sur ce fil

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

Recherche avancée