La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 08/05/2024 22:02:34


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Noon
Héros
Inscrit le: 15 Jan 2005
Messages: 272
Localisation: Entre Vannes et les RO
Répondre en citant
Posté le : 28/11/2006 13:57:30 Sujet du message : [PROB]Vidage de zone et PNJ qui disparaissent

Je recrée mon sujet dans la bonne section.
J'ai un problème avec le script ci-dessous semble t-il, placé dans le onexit de quelques zones. Quand j'attaque des créatures (créées à partir d'un dialogue), parfois celles-ci disparaissent au milieu du combat, toutes en même temps.
Les créatures ont le set de script normal x2_def...
NWScript :
int GetIsPCInArea (object oArea)
{
object oCreature = GetFirstObjectInArea(oArea);
while(GetIsPC(oCreature) == TRUE)
{
  return TRUE;
  oCreature = GetNextObjectInArea(oArea);
}
return FALSE;
}

void VideInv(object oObj);
void main()
{
object oArea = OBJECT_SELF;
if (!GetIsPCInArea (oArea))
{


  object oObj = GetFirstObjectInArea(oArea);
  while(oObj != OBJECT_INVALID) //On recherche tous les drops.
  {
    if(GetTag(oObj) == "BodyBag")
      VideInv(oObj);
    oObj = GetNextObjectInArea(oArea);
  if ((GetObjectType(oObj) == OBJECT_TYPE_CREATURE)||(GetObjectType(oObj) == OBJECT_TYPE_ITEM))
            DestroyObject(oObj);
  }

}
}
void VideInv(object oObj)
{
  object oItem = GetFirstItemInInventory(oObj);
  while(oItem != OBJECT_INVALID) //On vide l'inventaire
  {
    DestroyObject(oItem);
    oItem = GetNextItemInInventory(oObj);
  }
  DestroyObject(oObj, 0.5);

}
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 l'utilise pourun module solo de combat donc pas besoin de compteur de PJ etc, il supprime juste les loots et les créatures.
Donc qu'est-ce qui cloche ? Pourquoi se lancerai-t-il alors que je ne quitte pas la zone (ou alors il continue après que j'ai quitté la zone et quand j'y reviens) ?
_________________
Beshaba me protège, Tymora guide mes tirs.

The Cake is a lie !

Mes modules NwN2:De Vieilles Rencontres! et De Vieilles Rencontres2
Double Avenir sur le Nwvault
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
eldric
Novice
Inscrit le: 26 Oct 2003
Messages: 17
Répondre en citant
Posté le : 29/11/2006 18:55:24 Sujet du message :

NWScript :
int GetIsPCInArea (object oArea)
{
object oCreature = GetFirstObjectInArea(oArea);
while(GetIsPC(oCreature) == TRUE)
{
return TRUE;
oCreature = GetNextObjectInArea(oArea);
}
return FALSE;
}
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.



Ta boucle de vérification d'un joueur présent sur la zone est tout simplement incorrect.
essaye ce script, en remplacement du "GetisPCinarea".

NWScript :
int GetIsPCInArea (object oArea)
{
object oCreature = GetFirstObjectInArea(oArea);
while(GetIsObjectValid(oCreature))
{
if(GetIsPC(oCreature))
return TRUE;
else
oCreature = GetNextObjectInArea(oArea);
}
return FALSE;
}
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.


Edit : D'ailleurs si c'est pour un module solo le "GetIsPCInArea" est un peu inutile. Car il suffit de lancer le script de destruction des monstre/loot dans le onexit de la zone.
_________________
Mieux vos régner en maitre en Enfer plutôt que servir au Paradis !!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Noon
Héros
Inscrit le: 15 Jan 2005
Messages: 272
Localisation: Entre Vannes et les RO
Répondre en citant
Posté le : 29/11/2006 23:42:19 Sujet du message :

Après un rapide essai, ça a l'air de marcher merci. Je testerai plus demain.
Mais sinon je n'ai toujours pas compris pourquoi les PNJ disparaissaient en plein combat alors que le script est sur le OnExit, et pourquoi pas à chaque fois ?
_________________
Beshaba me protège, Tymora guide mes tirs.

The Cake is a lie !

Mes modules NwN2:De Vieilles Rencontres! et De Vieilles Rencontres2
Double Avenir sur le Nwvault
 
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 28.264ms