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 19:20:24
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 |
Eldorane Héros Messages: 298 Localisation: Moselle |
Salut à tous,
Dans le même esprit que le premier script de transformation qu'on m'a donné ici, je souhaite maintenant l'adapter à une autre situation : sur une carte se trouve une femme nommée "Dame Blanche" encerclée par 4 orcs qui la menacent. Le PNJ entre dans la carte et tue les orcs (normal) afin de liberer la dame. Mais lorsque les 4 orcs sont morts, la dame se transforme et devient une dame noire pas gentil et tout... Alors pur ce faire j'ai mis dans le ONEnter de la 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 initialiser la variable qui contrôle si les 4 orcs sont morts ou pas dans le ONDeath des orcs : NWScript :
void main() { int nInt = GetLocalInt(OBJECT_SELF, "orcs_morts"); nInt++; SetLocalInt(OBJECT_SELF, "orcs_morts", nInt); } donc ça incrémente la variable de +1 à chaque mort d'un orc. et dans le Heartbreak de la Dame Blanche : NWScript :
void main() { // Si variable = 4 (donc les orcs sont morts) : if(!(GetLocalInt(GetPCSpeaker(), "orcs_morts") == 4)) { // Alors destruction dame blanche : object oTarget1 = GetObjectByTag("DameBlanche"); DestroyObject(oTarget1, 0.0); // Apparition a la place de la dame noire : location lTarget; object oTarget = GetWaypointByTag("wp_dame"); lTarget = GetLocation(oTarget); CreateObject(OBJECT_TYPE_CREATURE, "DameNoire", lTarget); effect eEffect1 = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1); DelayCommand(0.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect1, lTarget)); } } Cette dame blanche appartient à une faction Neutre donc elle ne devrait pas être attaquée par les orcs. (au fait pour faire une faction neutre il faut bien mettre à 100 tous les barregraphs ?) Seulement voilà, lorsque je lance le module, la dame blanche n'est pas là et si je tue les orcs il ne se passe rien ! Dernière édition par Eldorane le 16/04/2005 02:25:40; édité 1 fois
|
Revenir en haut | |
kiky.le.magnifique Homme très gay Messages: 907 Localisation: Camping de la nation martienne... |
En vrac :
ton script dans le OnEnter ne peux fonctionner, GetPCSpeaker() ne s'utilisant que dans le cadre d'un dialogue. Remplace le par GetEnteringObject() (ou un truc du genre ) Tu met donc ta variable sur le joueur qui entre, ok. ton script dans le OnDead des orcs n'est pas logique vu ton script en OnEnter. Dans le OnEnter tu met la variable sur le joueur, alors que dans le OnDead de l'orc, tu met ça sur le OBJECT_SELF, c'est à dire l'orc! ç'est pas possible! Cherche un truc dans le genre GetLastKiller(OBJECT_SELF) à la place Si quand t'arrive la dame blanche n'est plus là, je ne voit qu'une raison possible : elle s'est fait buter! une bonne façon de le savoir, c'est de la rendre immortelle, en cochant "Intrigue" dans ses propriétés, si lorsque tu arrive ce sont les orcs qui ont disparu, c'est que la damme blanche c'est défendu Essaie de voir si c'est pas plutot 50-50 qu'il faut mettre dans les factions, je ne sais pas j'ai jamais touché à ça, mais si ça correspond à un pourcentage, alors 50% semble logique (j'en sais rien mais peut être ) Bon courage pour la suite _________________ http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin! |
Revenir en haut | |
grosraoul Ecuyer Messages: 60 |
n'oublie pas que pour les factions il faut preciser les réciprocités.
la dame peut adorer les orc (100 de réputation orc pour la dame) mais les orc peuvent l'attaquer a vue (0 de réputation de la dame pour les orc), il y'a une case a coché dans l'editeur de faction pour preciser ça . |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Si dans le OnEnter de la zone tu mets un truc du genre GetEnteringObject, il faut aussi vérifier que l'objet entrant est un joueur (GetIsPC) car sinon tout objet entrant provoquera l'exécution du script et à mon avis il va se déclencher pour chaque NPC, plaçables,... que tu aura mis !!
Pour savoir su quel objet mettre la variable dans ce cas là je le mettrai plutôt sur le module (GetModule). Voilà donc ce que je propose : Dans le OnEnter de la zone ou plutôt sur le OnEnter d'un trigger sur lequel le joueur est obligé de passer (car sinon si le joueur sort de la zone et revient, le script va se redéclencher à moins de mettre en place une variable qui prmet de savoir si ça déjà été initialisé... c'est pas simple Je pense d'ailleurs que cette étape n'est pas utile car par défaut les variables Int sont initialisées à 0. Supposons qu'on l'initialise : NWScript :
void main() { // Recupere l'objet entrant object oPC = GetEnteringObject(); // Si c'est le joueur if (GetIsPC(oPC)) { // Initialisation de la variable SetLocalInt(GetModule(), "orcs_morts", 0); DestroyObject(OBJECT_SELF); } } Dans le OnDeath des orcs : NWScript :
void main() { int nInt = GetLocalInt(OBJECT_SELF, "orcs_morts"); nInt++; SetLocalInt(GetModule(), "orcs_morts", nInt); } Voilà, là ça devrait marcher. Pour ta dame blanche morte, ça doit effectivement être un problème de faction. _________________ 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 | |
Eldorane Héros Messages: 298 Localisation: Moselle |
En fait non, j'ai vérifié : elle disparait carément lorsque je lance le module !
|
Revenir en haut | |
kiky.le.magnifique Homme très gay Messages: 907 Localisation: Camping de la nation martienne... |
... bip bip bip ... 3615 D-BrouiL ... Mets en deux cote à cote. _________________ http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin! |
Revenir en haut | |
Eldorane Héros Messages: 298 Localisation: Moselle |
Bien vue Kiky !! Mais dans mon cas l'erreur provient du script de transformation. Je l'ai corrigé et ça donne ceci :
NWScript :
void main() { // Si variable = 4 (donc les orcs sont morts) : if((GetLocalInt(GetModule(), "orcs_morts") == 4)) { // Alors destruction dame blanche : object oTarget1 = GetObjectByTag("DameBlanche"); DestroyObject(oTarget1, 0.0); // Apparition a la place de la dame noire : location lTarget; object oTarget = GetWaypointByTag("wp_dame"); lTarget = GetLocation(oTarget); CreateObject(OBJECT_TYPE_CREATURE, "DameNoire", lTarget); effect eEffect1 = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1); DelayCommand(0.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect1, lTarget)); } } Mais il reste un pb : lorsque les 4 orcs sont morts, la dame blanche disparait mais rien n'apparait ! Pourtant j'ai bien créé un NPC nommé DameNoire dont le tag est également DameNoire... |
Revenir en haut | |
grosraoul Ecuyer Messages: 60 |
Eldorane,
pour la fonction createobject, il faut specifier le resref de l'objet et non le tag. |
Revenir en haut | |
Eldorane Héros Messages: 298 Localisation: Moselle |
et quel est la différence ?
|
Revenir en haut | |
grosraoul Ecuyer Messages: 60 |
en general , par défaut , le tag est noté avec la premiere lettre en majuscule comme le nom , le resref est noté sans majuscule et en supprimant les caractères avec accent.
le resref est unique de plus, le tag non. exemple : Nom = Tag : Araignée Putride resref = araigneeputride mais le problème est pas la, car tu peux le changer ça,on s'en fiche en fait , mais si dans ton script tu mets le tag c'est pas bon ,faut mettre le resref, que tu trouve dans les propriétes de la créature aussi , dans je ne sais plus quel onglet. |
Revenir en haut | |
Eldorane Héros Messages: 298 Localisation: Moselle |
Merci ! j'ai trouvé !!
|
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