Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > pour les areas Onenter et Onexit!
pour les areas Onenter et Onexit!
Par RAT le 14/12/2002 à 4:14:57 (#2783437)
Car j'ai voulu tester aussi, mais je dois avouer que cela faisait planter mon serveur test.
Je mettais dans le onmoduleload :
Toutes les sauvegardes des NPC par différentes boucles, et je les détruisais dans toutes les area.
puis avec deux script dans le onenter et le onexit des area:
je scriptais pour faire à peu près le même effet que eM.
Mais là, la plupart du temps , je tombais sur un plantage de serveur.
Bon bien sûr à 90% , je suis presque sûr que cela vient des boucles, et qu'en faisant charger les zones plus le calcul des boucles cela doit prendre trop de ressources. Vous n'êtes pas d'accord???
Enfin, si vous pourriez m'aider à trouver une solution, car si c'est vrai que cela libére autant de ressource que cela, j'aimerai bien m'amuser à essayer de faire le script :).
Enfin merci d'avance :D:ange:
Par coolstar le 14/12/2002 à 5:35:23 (#2783573)
Par Azrael07 le 14/12/2002 à 8:24:35 (#2783768)
supprimer tout tes npc est, selon moi, d'une part une tache frolant l'impossible, sachant que pour les recréer(CreatureObject) tu ne pourras pas forcement leurs redonner toutes leurs caratéristiques.
Si tu veux mon avis, applique ca pour les monstres mais laisse les pnj comme ils sont dans ton module.
après sur ton erreur dans ton script je peux pas te dire grand chose vu le manque d'infos que tu donne ;)
Par eMRaistlin le 14/12/2002 à 12:54:42 (#2784928)
Je suis toutefois surpris que ca fasse planter ton serveur, vu que le serveur NwNro tourne sur un PIII 800, et que grace a ce systeme, je peut faire spawner plus de 50 personne par area sans que il n'y ait vraiment de surcharge.
L'essentiel etant de faire des script le plus leger possible, le plus generic possible pour chaque area.
Mais je suis d'accord avec Jeadi : ne tue pas tes NPC importants (ceux qui conservent les variables, par exemple...), et ne gere avc ca que la population (monstres et NPC non indispensables (clients d'auberges/guardes de la ville...etc etc...))
Par Etienne le 15/12/2002 à 9:36:36 (#2791255)
je créer toujours un WayPoints : WP_CENTRE et c'est à partir de lui que je détruit toutes les créature commençant par "al_"
J'ai ainsi une fonction générique de destruction
void main()
{
object oPJ = GetExitingObject();
// Est-ce un PJ ?
if (GetIsPC(oPJ))
// Bon je l'enlve au total de l'AERA ?
SetLocalInt(OBJECT_SELF, "nbPJ", GetLocalInt(OBJECT_SELF, "nbPJ")-1);
// Etait-il le dernier PJ de l'AERA ?
if (GetLocalInt(OBJECT_SELF, "nbPJ") == 0) {
object oTAG = GetObjectByTag("WP_CENTRE");
object oPNJ = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_NOT_PC, oTAG);
int i = 1;
string Prefixe;
while (GetIsObjectValid(oPNJ)) {
AssignCommand(oPNJ, ClearAllActions());
Prefixe = GetStringLeft(GetTag(oPNJ), 2) ;
if (TestStringAgainstPattern(Prefixe, "al")) DestroyObject(oPNJ);
oPNJ = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_NOT_PC, oTAG, i++);
}
}
}
Par Jedaï le 15/12/2002 à 12:30:47 (#2792147)
if (Prefixe == "al") DestroyObject(oPNJ);
au lieu de :
if (TestStringAgainstPattern(Prefixe, "al")) DestroyObject(oPNJ);
Je pense qu'il est toujours bon d'optimiser les scripts récurrents !:)
Par RAT le 15/12/2002 à 13:37:49 (#2792732)
car moi j'avais rajouter un script dans le onmoduleload justement pour ca!
Mais je vous mettrai le code dans la journée, cela vous aidera mieux pour comprendre d'où vient mon problème:).
PS: Etienne! pourquoi tu ne fais pas l'inverse, les npc importants , il y en a moins que les non importants. Cela serait pas plus simple à la base??
JOL Archives 1.0.1
@ JOL / JeuxOnLine