La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 15:35:51
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Mortbrutale Novice Messages: 6 |
bonjour,
j'ai cherché ici un script de vidage de zone et j en ai trouvé un, mais, j 'ai un probleme avec le on exit et la boucle d'attachement car il von tous les 2 dans le on exit on exit NWScript :
//:: //// //:: Update Lylver 2006-02-05 //:: nouvelle fonction qui remplace NoPlayerInArea //:: => NbPlayerorDMInArea //:: Lylver 2005-09-13 //:: pour TN Bouchon II //:: Lylver 2005-04-28 //:: nouvelle fonction de test PJ dans zone //:: Lylver 2005-01-15 //:: OnExit Area //:: GC et gestion des groupes de PJs //:: Lylver 2005-02-07 //:: ly_onexit_area.nss #include "ly_lib_area" void main() { object oPC = GetExitingObject() ; string sArea = GetTag(OBJECT_SELF) ; int bInteractive = GetIsPC(oPC) || GetIsDM(oPC) || GetIsDMPossessed(oPC) ; if( bInteractive ){ ExecuteScript("ly_onexit_loop",OBJECT_SELF); } // sous-fonction pour le GC else { // traitement des PNJs qui sortent de leur zone a la poursuite des PJs ou // par ceux qui patrouillent hors de vue des joueurs : duree de vie 180 secondes if( GetIsEncounterCreature(oPC) && !GetIsObjectValid(GetMaster(oPC)) ){ /* if( NoPlayerInArea(OBJECT_SELF) ){ SetLocalInt(oPC,"DESTROY& amp;amp; quot;,180) ; // au cas ou la difference serait necessaire } else { SetLocalInt(oPC,"DESTROY& amp;amp; quot;,180) ; } */ SetLocalInt(oPC,"DESTROY",180) ; WriteTimestampedLogEntry("Zone "+sArea+" OnExit : "+GetName(oPC)+" marked for destroy") ; } return ; } } et boucle d'attachement NWScript :
//// //:: Update Lylver 2006-02-05 //:: nouvelle fonction qui remplace NoPlayerInArea //:: =&gt; NbPlayerorDMInArea //:: Lylver 2005-09-13 //:: pour TN Bouchon II //:: Lylver 2005-04-28 //:: nouvelle fonction de test PJ dans zone //:: Lylver 2005-01-15 //:: OnExit Area //:: Activation du GC : boucle d'attachement //:: ly_onexit_loop.nss #include "ly_lib_area" void main() { object oMod = GetModule() ; object oArea = OBJECT_SELF ; string sArea = GetTag(oArea) ; int nPJ; int CleanQ = GetLocalInt(oMod,"CLEANQ" + sArea) ; int CleanR = GetLocalInt(oMod,"CLEANR" + sArea) ; int CleanP = GetLocalInt(oMod,"CLEANP") ; if( CleanQ > 0 ){ // GC should be here if( GetLocalObject(oMod,"CLEANQ") == oArea ){ // GC ici : suppression de demande surnumeraire DeleteLocalInt(oMod,"CLEANR" + sArea) ; // reset a neutre if( GetLocalObject(oMod,"CLEANR") == oArea ){ DeleteLocalObject(oMod,"CLEANR") ; // free GC [espere operation atomique] } // WriteTimestampedLogEntry(" ; ;Warning : GC OnExitLoop : "+sArea+" GC here : cancelling outnumbered request") ; } else { // cas d'erreur DeleteLocalInt(oMod,"CLEANQ" + sArea) ; // WriteTimestampedLogEntry(" ; ;Warning : GC OnExitLoop : "+sArea+" found area counter without object, resetting.") ; } return ; // GC is busy on our zone or repaired mismatch } if( CleanR < 0 ){ // traite l'annulation demandee DeleteLocalInt(oMod,"CLEANR" + sArea) ; // reset a neutre if( GetLocalObject(oMod,"CLEANR") == oArea ){ DeleteLocalObject(oMod,"CLEANR") ; // free GC [espere operation atomique] } // SendMessageToPC(GetExitingObje ct(), "OnExit : GC called but ordered stop : " + sArea) ; CleanR = 0 ; // poursuit, test PJ plus loin } if( CleanR == 0 ){ // etat standard // nPJ = CheckPJInArea(OBJECT_SELF) ; fonction NoPlayerInArea 5* plus rapide if( NbPlayerorDMInArea(oArea) == 0){ // controle // raz variable de statut if( GetLocalInt(oArea,"PC_HERE") == 1) DeleteLocalInt(oArea,"PC_HERE") ; // if( nPJ &gt; 0 ) WriteTimestampedLogEntry(" ; ;Erreur : GC OnExitLoop Resultat CheckPJ et NoPlayer different"); } else { // WriteTimestampedLogEntry(" ; ;Warning : GC OnExitLoop : PJ here, no hooking") ; return ; // pas de hooking : il y a du monde } } if( CleanR > 0 ){ // je suis deja passe ou alors un deuxieme PJ vient de sortir if( NbPlayerorDMInArea(oArea) == 0 ){ // controle // raz variable de statut if( GetLocalInt(oArea,"PC_HERE") == 1) DeleteLocalInt(oArea,"PC_HERE") ; } else { // stop ! : quelqu'un est la, pas besoin de nettoyer DeleteLocalInt(oMod,"CLEANR" + sArea) ; // reset a neutre if( GetLocalObject(oMod,"CLEANR") == oArea ){ DeleteLocalObject(oMod,"CLEANR") ; // free GC [espere operation atomique] } // WriteTimestampedLogEntry(" ; ;Warning : GC OnExitLoop Stop Other Hooking") ; return ; // stop other running hooking : il y a du monde } } // Warning : overload if( CleanR > 300 ) WriteTimestampedLogEntry("Warning : GC OnExitLoop Slow Hooking") ; // hooking, ajout de prioritisation if( (GetLocalObject(oMod,"CLEANR") == OBJECT_INVALID) && (CleanR >= CleanP) ){ // semaphore vide SetLocalObject(oMod,"CLEANR", oArea) ; // signal GC [espere operation atomique] // WriteTimestampedLogEntry(" ; ;Warning : GC OnExitLoop "+sArea+" Hooking") ; return ; // yes I'm hooked ! } if( GetLocalObject(oMod,"CLEANR") == oArea ){ // semaphore pris par moi-meme // WriteTimestampedLogEntry(" ; ;Warning : GC OnExitLoop "+sArea+" already hooked") ; return ; // yes I've been hooked ! } // semaphore pas libre, increment compteur : accelere GC SetLocalInt(oMod,"CLEANR" + sArea,++CleanR) ; if( CleanR > CleanP ) SetLocalInt(oMod,"CLEANP",CleanR) ; // monte la priorite a soi-meme // pour prendre une option // WriteTimestampedLogEntry(" ; ;Warning : GC OnExitLoop "+sArea+" nb "+IntToString(CleanR)+&am p;amp;qu ot; Hooking failed : recheck in 6 secondes") ; // SendMessageToAllDMs("OnEx it : GC called : " + sArea + IntToString(CleanR)) ; DelayCommand(6.0,ExecuteScript("ly_onexit_loop", oArea)) ; // recheck in 6 seconds } pourriez vous les compiler ensemble svp merci d'avance |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Page 1 sur 1 ¤
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum