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 10:25:26


  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 : 11/10/2004 16:07:02 Sujet du message : Transformation de PNJ autre version [reglé]

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 :

void main()
{
  SetLocalInt(GetPCSpeaker(), "orcs_morts", 0);
}
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);
}
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.


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));

    }
}
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.




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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 11/10/2004 16:29:25 Sujet du message : Re: Transformation de PNJ autre version

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 Embarassed )
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 Wink

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 Wink
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 Razz )

Bon courage pour la suite Wink
_________________
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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
grosraoul
Ecuyer
Inscrit le: 10 Sep 2004
Messages: 60
Répondre en citant
Posté le : 11/10/2004 17:56:43 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Laxam
Légende vivante
Inscrit le: 12 Avr 2004
Messages: 425
Localisation: Lyon
Répondre en citant
Posté le : 11/10/2004 18:18:42 Sujet du message :

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);
  }
}
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 OnDeath des orcs :

NWScript :
void main()
{
int nInt = GetLocalInt(OBJECT_SELF, "orcs_morts");
nInt++;
SetLocalInt(GetModule(), "orcs_morts", nInt);
}
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.


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 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 : 12/10/2004 05:42:00 Sujet du message :

En fait non, j'ai vérifié : elle disparait carément lorsque je lance le module !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 12/10/2004 07:33:03 Sujet du message :

Surprised
...
bip bip bip
...
3615 D-BrouiL
...
Mets en deux cote à cote. Embarassed
_________________
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 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 : 12/10/2004 15:06:37 Sujet du message :

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));

    }
}
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.



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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
grosraoul
Ecuyer
Inscrit le: 10 Sep 2004
Messages: 60
Répondre en citant
Posté le : 12/10/2004 15:17:23 Sujet du message :

Eldorane,
pour la fonction createobject, il faut specifier le resref de l'objet et non le tag.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 12/10/2004 16:11:30 Sujet du message :

Surprised et quel est la différence ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
grosraoul
Ecuyer
Inscrit le: 10 Sep 2004
Messages: 60
Répondre en citant
Posté le : 12/10/2004 16:27:14 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 12/10/2004 16:44:56 Sujet du message :

Merci ! j'ai trouvé !!
Smile
 
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 44.156ms