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


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Finarfin
Voyageur
Inscrit le: 21 Oct 2003
Messages: 3
Répondre en citant
Posté le : 25/10/2003 18:43:06 Sujet du message : Personnage refusant de disparaitre

Bonjour a toi cher lecteur ! Bon , jai besoin de ton aide , car jai un probleme (persistant bien sur, eh ) . Very Happy
Suite a la mort dun premier PNJ , un second est cree , celui ci se dirige ver le PC des quil lapercoit , lui sort son dialogue et sechappe vers la porte (dou sort le PC) et disparait des quil latteint . Cest chouette et ca marche jusquau moment ou il doit disparaitre , et la , c la cata : il disparait , reapparait , disparait , va voir a nouveau mon PC .
Bon, voila le script de fin de conversation :

Code :
void main()
object oLastDoor = GetObjectByTag("Portelouche");
{ ActionMoveToObject(oLastDoor,FALSE);}

{if((GetDistanceBetween(GetObjectByTag("Perso"),GetObjectByTag("Portelouche"))==0)
DestroyObject(OBJECT_SELF);}


Pourquoi la destruction n'est elle pas permanente svp? Mad

[edit de Lendraste :] merci de mettre le code entre balise [ code] [ /code] (sans les espaces après le premier crochet), c'est plus lisible.
 
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 : 26/10/2003 20:52:01 Sujet du message :

[MODE GROSSE_CONNERIE = ON]

Peut être que la distance que tu impose (==0) est trop strict et que le NPJ n'y arrive pas?
T'as essayé avec une autre distance?

[MODE GROSSE_CONNERIE = OFF]
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
 
Finarfin
Voyageur
Inscrit le: 21 Oct 2003
Messages: 3
Répondre en citant
Posté le : 31/10/2003 14:19:31 Sujet du message :

Ben , si je lui dis == 0.05 , ca marche pas mieux . Reflexion faite , je crois que le probleme vient du script on Perception ... donc , comment dire au type que s'il lui a parle une fois , c'est bon , et qu'il arrete de lui parler tout le temps parcequ'il est lourd ? Jai bien essaye en incluant une variable , mais ca marche pas mieux ... il lui court toujours apres ... beuh c po juste .
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 31/10/2003 14:46:52 Sujet du message :

Ce que voulais dire Kiky (à mon avis) est que l'égalité stricte est trop restrictive. La chance pour que la distance soit précisément égale à 0 ou à 0.05 au moment du déclenchement du OnPerception est proche de 0. Il vaux mieux utiliser un opérateur de comparaison comme < ou <= en considérant donc que la distance doit être inférieure à une certaine valeur pour déclencher la destruction.

De toute façon, la solution que tu proposes sur la fin du dialogue me paraît très hautement improbable. Tu lui donnes l'ordre de se déplacer "ActionMove", donc tant qu'il n'a pas atteind la porte, la condition de destruction que tu testes immédiatement après ne sera pas remplie. Ceci vient du fait que ActionMoveToObject est une fonction asynchrone (voir explication ici). Le script qui exécute cette fonction n'attend pas que celle-ci ait produit le résultat escompté pour poursuivre et enchainer sur le test qui figure juste après. Celui-ci est donc forcément faux, d'abord car il est très restrictif et ensuite parce que le PNJ viens à peine de recevoir l'ordre se de rendre prêt de la porte.

Voici une proposition. Tu demandes effectivement à ton PNJ de se rendre à la porte et juste devant elle tu places un trigger (déclencheur en français). il suffira de tester, sur le OnEnter du trigger que c'est ce PNJ qui entre dans la zone afin de le détruire. Comme ceci :
Code :

//A mettre sur le OnEnter du trigger
void main()
{
  object oCreature=GetEnteringObjet();
  if (GetTag(oCreature)=="perso")
  {
    DestroyObject(oCreature);
  }
}


Le code original de la fin de conversation ne contient alors plus que le ActionMoveToObject qui devrait obliger le PNJ à passer sur le Trigger. Il y a d'autres solutions bien sûr.
_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ 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 43.286ms