La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 22/09/2024 17:29:55


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 16/04/2005 02:09:48 Sujet du message : Faire partir des PNJ de la zone [règlé]

Salut,

il y a longtemps j'avais demandé un script pour faire partir un PNJ puis lorsqu'il est assé loin le faire diparaitre définitivement de cette zone :


NWScript :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.


Pour mon module, il y aura plusieurs cas où plusieurs PNJ devront tous quitter la zone à la fin d'un dialogue.
Comment puis-je affecter ce script à tous les PNJ présents ?
_________________

Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication !

_________________
Dernière édition par Eldorane le 20/04/2005 23:03:29; édité 2 fois
 
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 : 16/04/2005 02:39:10 Sujet du message :

Si tes PNJs sont groupés dans une surface pas trop grande, je te recommande une boucle utilisant
NWScript :
float fRadius = 20.0;
location lPC = GetLocation(GetPCSpeaker());
object oPNJ = GetFirstObjectInShape(SHAPE_SPHERE, fRadius, lPC);
while( GetIsObjectValid(oPNJ) ){
  if( !GetIsPC(GetFactionLeader(oPNJ)) ) DestroyObject(oPNJ) ;
  oPNJ = GetNextObjectInShape(SHAPE_SPHERE, fRadius, lPC);
}
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.


ou pour vraiment faire le tour de la zone
NWScript :
object oArea = GetArea(GetPCSpeaker());
object oPNJ = GetFirstObjectInArea(oArea);
while( GetIsObjectValid(oPNJ) ){
  if( GetObjectType(oPNJ) == OBJECT_TYPE_CREATURE ){
      if( !GetIsPC(GetFactionLeader(oPNJ)) ) DestroyObject(oPNJ) ;
  }
  oPNJ = GetNextObjectInArea(oArea);
}
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.


J'espère que le comportement de !GetIsPC(GetFactionLeader(oPNJ)) est correct, j'ai pas testé, celà me parait un empilement de fonction élégant pour éviter de nettoyer les associés créature des joueurs.
Dernière édition par lylver le 16/04/2005 02:58:51; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 16/04/2005 02:57:27 Sujet du message :

Je suppose que ce script fait directement disparaître les PNJs, on peu pas rajouter un petit déplacement vers un WP unique ? Very Happy
_________________

Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication !

_________________
 
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 : 16/04/2005 03:01:47 Sujet du message :

met tes actions PNJ la où j'ai mis le AssignCommand, faudra peut-être un ClearAllActions pour être sûr

NWScript :
void main(){
object oArea = GetArea(GetPCSpeaker());
object oPNJ = GetFirstObjectInArea(oArea);
while( GetIsObjectValid(oPNJ) ){
  if( GetObjectType(oPNJ) == OBJECT_TYPE_CREATURE ){
      if( !GetIsPC(GetFactionLeader(oPNJ)) ){
        AssignCommand(oPNJ, ActionMoveToLocation(GetLocation(GetObjectByTag("Tag_WP"))));
        DestroyObject(oPNJ,2.0) ; // delai en secondes
      }
  }
  oPNJ = GetNextObjectInArea(oArea);
}
}
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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Laxam
Légende vivante
Inscrit le: 12 Avr 2004
Messages: 425
Localisation: Lyon
Répondre en citant
Posté le : 16/04/2005 09:52:46 Sujet du message :

Sinon si tu connais leur Tag, tu récupères les NPC avec un GetObjectByTag et tu fais la suite du script.... ça évite les boucles qui sont un peu plus gourmandes en ressource.. tout dépend le nombre de NPC.

J'ai fait ça dans mon module, dans la grotte aux gobelins quand on délivre les enfants.
_________________
Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM
La première version française de la doc du NPC Activities (version 2.0)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 16/04/2005 12:09:33 Sujet du message :

Oui, mais comme je compte utiliser ce script plusieurs fois sur des zones où 5 voir 6 PNJ devront disparaître, ce script m'évitera de spécifier leurs Tags !

Merci !!
_________________

Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication !

_________________
 
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 86.216ms