La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 09/05/2024 14:59:27


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
adn2
Acolyte
Inscrit le: 25 Jan 2003
Messages: 23
Répondre en citant
Posté le : 16/06/2006 11:17:46 Sujet du message : problème avec enchainement d'actions

Voila m

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.


Bon alors, ce que le pc est sensé faire en entrant sur un trigger, c'est, dans l'ordre:

-aller au lieu de la cachette.
-se tourner dans la direction indiquée.
-s'assoir par terre.
-dire ce qu'il doit dire.

Mais bien entendu ça foire, et il se content d'aller au lieu de la cachette et de rester planté la sans rien dire. Or, j'ai essayé pas mal de combinaisons avec le ActionDoCommand ou sans, mais rien n'y fait.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 16/06/2006 11:32:03 Sujet du message :

Je crois que ça vient du SetCommandable, essaye sans dans un premier temps, si ça corrige le truc rajoute un delaycommand (de 0.1/0.2 secondes juste histoire que les actions soient ajoutées à la liste).

Après, je sais pas si le fait de lui faire jouer une animation pendant 5000 secondes va pas retarder l'actionWait et le ActionSpeakString suivant, enfin là je sais pas.
 
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 : 16/06/2006 12:19:34 Sujet du message :

Bon, le problème vient bien du SetCommandable qui empeche les actions de se faire. Ceci dit, un DelayCommand de 0.2 ne suffit pas.

Je peux éventuellement le remplacer par un EffectCutSceneDominated, meme si c'est moins propre.
EDIT: En fait, cet effet la aussi empeche le bon fonctionnement du script.Mad
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 16/06/2006 14:17:58 Sujet du message :


Citation :
Après, je sais pas si le fait de lui faire jouer une animation pendant 5000 secondes va pas retarder l'actionWait et le ActionSpeakString suivant, enfin là je sais pas.
C'est le problème, car l'animation est plaçée dans la file d'action, et tant qu'elle n'est pas terminée, l'action suivante ne se déclenchera pas !
Autrement dit, ton PNJ va attendre 5001 secondes avant de pronnoncer la phrase !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Enki
Légende vivante
Inscrit le: 06 Déc 2005
Messages: 432
Répondre en citant
Posté le : 16/06/2006 14:52:42 Sujet du message :

Bonjour !

Alors, pour les chaines d'actions, je te conseille de créer une fonction, je vais te donner un exemple avec ton script. Je m'en sert assez souvent, c'est une astuce très utile.

Je fais ça sur le vif, sans testé, alors, il se peut qu'il y ait des erreurs, à toi de vérifier !


NWScript :
void ChaineAction()
{
location lCachet = GetLocation(GetWaypointByTag("WP_PLACEPC"));
vector vFacePC = GetPosition(GetNearestObjectByTag("FACE_PC")); //FACE_PC est un WP * il vaut mieux utiliser GetNearest.... *

ClearAllActions();
ActionForceMoveToLocation(lCachet);
ActionWait(1.0);
ActionDoCommand(SetFacingPoint(vFacePC));
ActionWait(1.0);
ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0, 50.0);
ActionWait(1.0);
DelayCommand(10.0,SpeakString("chose a dire a la fin"));
SetCommandable(FALSE);
DelayCommand(15.0,SetCommandable(TRUE)); // ne pas oublier cette ligne, sinon tu ne peux plus bouger !
ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0, 5000.0);
}

void main()
{
object oPC = GetEnteringObject();

if(GetIsPC( oPC))
{
AssignCommand(oPC, ChaineAction());
}
}
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.



Et voilà !
 
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 : 16/06/2006 15:32:16 Sujet du message :

Bon, ça marche pas mal, a ceci près qu'il refuse toujours obstinément de s'orienter vers le WP.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 16/06/2006 16:28:30 Sujet du message :

a quoi ça sert de mettre des commentaires si vous l'ai lisez pas Confused

NWScript :
//FACE_PC est un WP * il vaut mieux utiliser GetNearest.... *
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.


GetNearestObjectByTag = ceci signifie avoir un object (donc perso, placeable, etc..) prés de soit

un waypoint n'est pas un object, mais un waypoint. Je suppose que la fonction GetNearestWaypointByTag existe Wink

Black
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 16/06/2006 16:45:11 Sujet du message :

Le waypoint est un objet.

Voilà la liste des objets (source: Lexicon):

Citation :
OBJECT_TYPE_STORE (128)
OBJECT_TYPE_PLACEABLE (64)
OBJECT_TYPE_WAYPOINT (32)
OBJECT_TYPE_AREA_OF_EFFECT (16) (spell effects, like web)
OBJECT_TYPE_DOOR ( 8 )
OBJECT_TYPE_TRIGGER (4)
OBJECT_TYPE_ITEM (2)
OBJECT_TYPE_CREATURE (1)
Dernière édition par L'Erudit le 16/06/2006 18:42:14; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 16/06/2006 17:02:43 Sujet du message :

Avec certain script, la commande *Object* ne fonctionne pas.
_________________
[http]
 
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 : 22/06/2006 16:19:55 Sujet du message :

bon ben j'ai encore un problème du meme style avec un autre script, mais cette fois c'est un PNJ qui est commandé et il est tout a fait commandable.

C'est dans le On Enter d'un trigger, on vérifie si c'est le bon PNJ,

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.


Cette partie est appelée par un AssignCommand(oPNJ, ChainAction)); comme utilisé plus haut. Le problème n'est pas là, c'est que tout se passe bien, il se tourne, joue l'animation...à l'infini. J'ai beau mettre 4 secondes comme duration, jamais il n'enchaine et dit le texte.

PS: je précise qu'il y a d'autres textes ensuite (et une autre animation à la fin) mais je n'ai pas jugé utile de les mettre, car ils devraient pas poser de pb.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 22/06/2006 17:48:56 Sujet du message :

Met des DelayCommand() à la place de tes ActionWaits...
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 22/06/2006 17:49:13 Sujet du message :

Il semble que l'ActionPlayAnimation vide la liste d'action. Essaye avec un PJ tu le vois : t'as 5 icones jusqu'à ce que tu joue l'animation, dès que tu commence elles disparaissent.

Tu t'en sortiras pas de cette manière du coup, faut passer par une suite de DelayCommand bien ajustés je pense.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 24/06/2006 11:48:01 Sujet du message :

Un bug à reporter alors, hum Question
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 24/06/2006 11:53:27 Sujet du message :

oui a prioris la meilleure solution est le delaycommand (perso j'utilise jamais le actionwait..) et surtout la création de fonction... en plus c'est beaucoup plus claire et plus souple.... ça te permet même du coup de gérer la command createobject avec le delay command puisque tu appels la fonction quand tu veux et ça c'est tip top!!!

Viduc
_________________
 
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 34.81ms