La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 18/05/2024 04:58:19


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Mortbrutale
Novice
Inscrit le: 27 Juil 2006
Messages: 6
Répondre en citant
Posté le : 29/08/2006 14:47:00 Sujet du message : on exit+ boucle d'attachement

bonjour , j'ai cherché sur le forum un script de vidage de zone et j en ai trouvé un,
cependantj ai un probleme avec le on exit + boucle d'attachement qui se mettent tout les deux 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 ;
  }
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


boucle d'attachement
NWScript :
//Confused//
//:: 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
//:: 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 &amp;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
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


pourriez vous me compiler les deux ensemble svp merci d'avance
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Mortbrutale
Novice
Inscrit le: 27 Juil 2006
Messages: 6
Répondre en citant
Posté le : 30/08/2006 18:11:23 Sujet du message : ?

personne ne sait ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 30/08/2006 20:30:03 Sujet du message :

si moi Razz
Va plutôt là-bas : j'ai une version plus à jour
TN Scripts
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Mortbrutale
Novice
Inscrit le: 27 Juil 2006
Messages: 6
Répondre en citant
Posté le : 31/08/2006 12:42:18 Sujet du message :

oui mais c'est que pour le vidage des magasins ca ?
moi je voudrai pour le vidage de zone ( monstre + drop)
merci d'avance
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 31/08/2006 16:58:48 Sujet du message :

Bon je vois qu'il faut une petite traduction

Ce message est un spoiler, et risque de vous informer de choses que vous auriez dû apprendre par vous même (fin d'un jeu, film, etc). À vos risques et périls (ludiques), vous pouvez le voir en cliquant sur cet avertissement.
Spoiler :

Citation :

Beta set of scripts for modules.
This is a compilation of tools that are :

- GC : a garbage collector for Bodybag cleaning, Lost Item moving, PNJ & Monsters sweeping

- Area Heart-Beat Handling : activate a script (if you put a local string on the area named FHB_SCRIPT)

- dynamic shop : store created from palette, unicity of items in the module at a given time & module space saving. You need to create an empty area with one waypoint tagged TN_SHOP.
Use shop_local_var in the NPC dialogue, shop_set_idx_xx.nss (you can create many) to select between store.
Put local strings as needed on the NPC.
Don't forget to put the open and close script on the store

- static spawn : a system to spawn a creature when a PC enter the area, useful for NPCs. This keep area easy to edit and handle facing for creature spawned. This is not like "NPC Activities".

You will need to put ATAG local string on area of your module, ly_onenter_area and ly_onexit_area on each area you want the system to handle.
Prefer to use "numeric" translatable ATAG : eg. 0102, this could be used easyly when translated with StringToInt (case function)
You will need to use OnModuleHeartBeat Event : incorporate tn_mod_hb script.
this script is designed to save time.

beta3 : fixed ly_static_spawn.nss & ly_lib_pnj.nss : changed default value for iAction. The zero value serves now for multiple spawns, other values blocks it

- GC : a garbage collector for Bodybag cleaning, Lost Item moving, PNJ & Monsters sweeping
Traduction : nettoie les loots, range les items perdus, nettoie PNJ et Monstres
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
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


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 46.109ms