La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 01/11/2024 17:28:59


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 24/04/2006 12:53:51 Sujet du message : Maintenir à jour les objets posés dans le module

C'est redoutable, j'avais oublié d'exclure les personnages joueurs Confused
Pour être sûr que vous êtes à jour pour le contenu des plaçables et des boutiques (à défaut de boutiques dynamiques)

Dans le OnEnter
NWScript :

// Zone PLC check script
  if( !GetLocalInt(oArea,"PLCINIT") ){
      SetLocalInt(oArea,"PLCINIT",TRUE);
      SetLocalObject(oMod,"AREAPLCINIT",oArea);
      SignalEvent(oMod,EventUserDefined(800));
  }
  //
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.


dans le script OnUserDefined du module, Evenement 800
NWScript :

// Zone PLC check script
        object oArea = GetLocalObject(oMod,"AREAPLCINIT");
        object oPlc = GetFirstObjectInArea(oArea);
        int j=0;
        while( GetIsObjectValid(oPlc) ){
            if( j > 15 ){
              DeleteLocalInt(oArea,"PLCINIT");
              sMesg = "Check PLC in Area : "+GetTag(oArea)+"-"+GetName(oArea)+
              ", cannot finish.";
              SendMessageToAllDMs(sMesg);
              WriteTimestampedLogEntry(sMesg);
              break;
            }
            if( !GetLocalInt(oPlc,"CHECKED") && GetHasInventory(oPlc) && !GetIsPC(oPlc)){
              int i=0 ;
              int n=0 ;
              object oItem = GetFirstItemInInventory(oPlc);
              while( GetIsObjectValid(oItem) ){
                  SetLocalString(oPlc,"ITEM_"+IntToString(i),GetResRef(oItem));
                  SetLocalString(oPlc,"ITAG_"+IntToString(i),GetTag(oItem));
                  SetLocalInt(oPlc,"ITST_"+IntToString(i),GetItemStackSize(oItem));
                  i++;
                  j++;
                  DestroyObject(oItem,0.1);
                  oItem = GetNextItemInInventory(oPlc);
              }
              SetLocalInt(oPlc,"ITEMCOUNT",i);
              for( n=0 ; n < i ; n++ ){
                  string sResRef = GetLocalString(oPlc,"ITEM_"+IntToString(n));
                  int nStackSize = GetLocalInt(oPlc,"ITST_"+IntToString(n));
                  string sTag = GetLocalString(oPlc,"ITAG_"+IntToString(n));
                  object oNew = CreateItemOnObject(sResRef,oPlc,nStackSize);
                  j++;
                  if( !GetIsObjectValid(oNew) ){
                    sMesg = "Check PLC in area : "+GetTag(oArea)+"-"+GetName(oArea)+
                    ", PLC : "+GetTag(oPlc)+"-"+GetName(oPlc)+
                    ", Can't create Item ResRef : "+sResRef+" &amp; Tag : "+sTag;
                    SendMessageToAllDMs(sMesg);
                    WriteTimestampedLogEntry(sMesg);
                  }
              }
              SetLocalInt(oPlc,"CHECKED",TRUE);
            } // not checked and has inventory ?
            oPlc = GetNextObjectInArea(oArea);
        } // while plc
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.


Je pensais ca allait planter avec le message "OBJECT OID XXXXX : too many instructions" comme d'habitude, c'est la raison de la limitation par (j>15) mais apparemement ca devrait passer avec des valeurs plus grosses.
Ca met quand même le bazar dans le rangement des boutiques et des plaçables ...
 
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 54.182ms