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


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Charietto
Acolyte
Inscrit le: 23 Mai 2006
Messages: 25
Répondre en citant
Posté le : 06/06/2006 14:18:52 Sujet du message : [Résolu] Faire fuir un monstre.

En fait, j'ai plusieurs problèmes différents ici, et donc de multiples questions!


1er problème:

Le PJ rencontre un monstre à l'entrée d'un donjon. Le monstre doit fuir à la première calotte qu'il reçoit vers un WP situé sur un déclencheur (qui le détruit alors qu'il est hors de vue du personnage).
La seconde partie fonctionne bien, mais la première (faire fuir le monstre) ne marche pas systématiquement. Parfois il fuit, parfois il ne fuit pas. Ai-je raté quelque chose dans le script?

Le monstre cesse le combat:

NWScript :
#include "NW_I0_GENERIC"
void main()
{

int nDommage = 20;

object oPC = GetLastDamager();

if ( GetPercentageHPLoss( OBJECT_SELF ) <= nDommage )
    return;

else
{
SurrenderToEnemies ();
SpeakString ("");
ExecuteScript ("script_fuite",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.


La fuite:

NWScript :
void main()
{
object oPNJ= GetObjectByTag("monstre_lache_01");
object oFuite=GetWaypointByTag("WP_fuite_01");
  AssignCommand(oPNJ,ActionMoveToObject(oFuite,TRUE,100.0f));
}
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.


2e problème:

Un monstre s'enfui lorsque le PJ passe sur un déclencheur (ça marche), se dirige vers un WP situé prés d'un groupe de monstres en poussant des cris (ça marche), et devient hostile une fois arrivé sur un déclencheur situé auprés du WP (ça marche). Par contre, bien qu'hostile, il n'attaque pas le PJ; il faut que ce soit le PJ qui initie le combat.

Le script rendant le PNJ hostile (je pense que le problème vient de là):

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.


3e problème:

Bon, celui-là, j'ai fais plusieurs tentatives, mais aucune n'a fonctionné, et je ne vois pas trop comment m'en dépétrer.
2 monstres voient le PJ arriver. Ils sont à proximité d'une porte verrouillée. L'un deux a la clef. Comment faire pour que celui qui a la clef aille à la porte, l'ouvre, passe de l'autre côté suivi de son compagnon, et reverrouille la porte.
Je pensais, naïf que je suis Razz , que le PNJ ouvrirai la porte tout seul comme un grand pour aller au WP situé de l'autre côté (puisque même dans la campagne officielle, on voit des monstres ouvrir les portes tous seuls!), mais non.
J'ai bien vu quelque scripts sur le forum destinés à faire ouvrir ou fermer des portes par un PNJ, mais je ne vois pas comment les lier entre eux pour que les PNJs accomplissent les actions voulues:
Les PNJs voient le PJ (ou le PJ déclenche leur action en passant sur un déclencheur, afin dêtre sur que les PNJ ne commenceront pas leur action trop tard), se déplacent vers un WP situé devant la porte, le PNJ avec la clef ouvre la porte, les 2 vont au WPs situés derrière la porte, le PNJ avec la clef la referme.

Question subsidiaire (Rien à voir avec les 3 premières!):

J'ai trois PNJs dans une pièce, un homme et une femme du peuple, et un aristocrate. Je les ai juste posés sur la carte pour l'instant, je n'ai pas modifié leur script ou changé quoique ce soit, je ne leur ai même pas encore mis leurs dialogues. Je visite la zone ingame pour vérifier un commerçant qui se trouve à proximité, et là, ô surprise, voilà t'y pas que l'aristo vire hostile et commence à se mettre sur la tronche avec la femme du peuple, sous le regard perdu de l'homme du peuple.
Je vérifie leurs factions, les trois font partis de la populace et sont neutres. Alors pourquoi cet affligeant épisode de la lutte des classes?
Dernière édition par Charietto le 06/06/2006 17:16:43; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
adn2
Acolyte
Inscrit le: 25 Jan 2003
Messages: 23
Répondre en citant
Posté le : 06/06/2006 15:24:56 Sujet du message :

Pour le 1, je ferais tout en un seul script, les execute script, j'suis pas très pote avec.

NWScript :

#include "NW_I0_GENERIC"
void main()
{

int nDommage = 20;
object oPC = GetLastDamager();
location lFuite = GetLocation(GetWaypointByTag("WP_fuite_01"));

if ( GetPercentageHPLoss( OBJECT_SELF ) <= nDommage )
    return;
else
{
SurrenderToEnemies ();
SpeakString ("");
ActionForceMoveToLocation(lFuite, TRUE, 100.0f);
}
}
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
 
adn2
Acolyte
Inscrit le: 25 Jan 2003
Messages: 23
Répondre en citant
Posté le : 06/06/2006 15:29:11 Sujet du message :

Pour le 2, tu peux utiliser ActionAttack ou DetermineCombatRound


NWScript :
void main()
{
object oPC = GetFirstPC(); //determine le pc que tu veux attaquer
object oTraitre= GetObjectByTag("traitre_alerte");
ChangeToStandardFaction(oTraitre, STANDARD_FACTION_HOSTILE);
AssignCommand(oTraitre, ActionAttack(oPC));
}
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
 
adn2
Acolyte
Inscrit le: 25 Jan 2003
Messages: 23
Répondre en citant
Posté le : 06/06/2006 15:44:28 Sujet du message :

voila, celui la est moins simple mais il devrait donctionner

NWScript :
//sur le onenter du 1er trigger
void main()
{
object oDoor = GetObjectByTag("tag porte");
object oMonster1 = GetObjectByTag("tag de celui qu'a la cle");
object oMonster2 = GetObjectByTag("tag de son pote");
object oPC = GetEnteringObject();
location lFuite = GetLocation(GetWaypointByTag("WP_FUITE"));

if (GetIsPC(oPC))
{
AssignCommand(oMonster1, ActionOpenDoor(oDoor));
AssignCommand(oMonster2, ActionWait(3.0)); //le tps que lotre ouvre
AssignCommand(oMonster1, ActionDoCommand(ActionForceMoveToLocation(lFuite, TRUE)));
AssignCommand(oMonster2, ActionDoCommand(ActionForceMoveToLocation(lFuite, TRUE)));
DelayCommand(5.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.


puis sur le trigger derrière la porte

NWScript :
void main()
{

object oDoor = GetObjectByTag("tag porte");
object oEnter = GetEnteringObject();

if (GetTag(oEnter) == "tag du monstre")
//arrange toi ac le action wait pr que l'otre soit aussi derriere
//j'ai pas de meilleurs soluce la Confused
{
AssignCommand(oDoor, ActionCloseDoor(oDoor));
SetLocked(oDoor, TRUE);
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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Charietto
Acolyte
Inscrit le: 23 Mai 2006
Messages: 25
Répondre en citant
Posté le : 06/06/2006 17:07:26 Sujet du message :

Merci, ça fonctionne, mes monstres sont vraiment trouillards maintenant!

Pour mon problème de noble hyperaggressif: aucune idée du pourquoi du problème, je l'ai résolu en effaçant ce personnage et en en remmettant un autre à la place. Cette fois il n'est plus aggressif, pourtant, c'est exactement le même à tout point de vue. Chuis perplexe, mais bon, ça marche, donc tout va bien.
 
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 60.475ms