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/09/2024 12:20:46
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 |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
Je suis peut - être long à la détente ... Certains ont compris tout de suite comment faire le mode Cutscene en lisant le tuto de Baldurien, mais moi j'ai rien capté ... Est - ce qu'une âme bienveillante pourrait m'indiquer quel script je pourrai utiliser pour lancer ce mode ... ( et si possible en entier, pas des fonctions )
Merci d'avance. _________________ Cogito ergo sum. |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14065 Localisation: Quadran Alpha |
heu
je ne sais plus ! En fait, je vais mettre ce message dans Script pour commencer, puis je vais relire mon code. 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. demarre le mode cutscene pour CREATURE (ie. sans l'interface du jeu) si TRUE, le désactive sinon. _________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
Ben ... Heu ... Ca marche pas bien beaucoup ton truc !
NWScript :
void main() { object oPC = GetPCSpeaker(); object oFollow = GetObjectByTag("ga"); object oDest01 = GetNearestObjectByTag("dest01"); object oDest02 = GetNearestObjectByTag("dest02"); object oDest03 = GetNearestObjectByTag("dest03"); object oDest04 = GetNearestObjectByTag("dest04"); object oDoor = GetNearestObjectByTag("porte1"); object oCreature = oPC if (GetIsPC(oPC)==TRUE) { SetCutsceneMode( oCreature, TRUE ); AssignCommand(oPC,ActionForceFollowObject(oFollow,0.5)); AssignCommand(oFollow,ActionMoveToObject(oDest01, TRUE,0.5)); AssignCommand(oFollow,ActionMoveToObject(oDest02, TRUE,0.5)); AssignCommand(oFollow,ActionSpeakString("On y est presque")); AssignCommand(oFollow,ActionOpenDoor(oDoor)); AssignCommand(oFollow,ActionMoveToObject(oDest03, TRUE,0.5)); AssignCommand(oFollow,ActionSpeakString("Voila, c'est ici")); AssignCommand(oPC,ActionMoveToObject(oDest04, TRUE)); AssignCommand(oFollow, ActionWait(3.0)); SetCutsceneMode( oCreature, FALSE ); AssignCommand(oFollow,ActionStartConversation(oPC)); } } Voila, ça me fait une erreur a la ligne de la condition : gardetemple.nss(11): ERREUR : PARSING VARIABLE LIST Parce que si je veux mettre le CutsceneMode sur CREATURE, il faut bien la définir la variable, non ? Sauf si je me goure, ce qui, ma foi, ne serait pas une surprise ! J'comprends pô ... _________________ Cogito ergo sum. |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
tu as oublié un point-virgule à la ligne
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. Note que la variable de la fonction SetCutsceneMode n'est pas obligée de s'appeler oCreature. Tu pouvais utiliser oPC directement dedans. _________________ 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 | |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
Wahh l'erreur de débutant ... Si je pouvais, ej me taperai tiens !
Bon, et avec ça, ça doit marcher ? Je teste et je vous dis. _________________ Cogito ergo sum. |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14065 Localisation: Quadran Alpha |
(faut les lire les erreurs quand même )
_________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
Voui, mais quand on sait pas ce que ça veut dire, on est pas bien capable de résoudre le problème ...
_________________ Cogito ergo sum. Dernière édition par Lunshire le 14/11/2003 21:16:57; édité 3 fois
|
Revenir en haut | |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
Mais ... Ca marche pas !!!!!!!!!!! J'le crois pas ! Pourquoi ça ne marche pas ? Le script compile et tout ... Si quelqu'un pouvait m'aider, ça m'aiderait ... J'sui drole quand même ...
*Bon OK, je sors* _________________ Cogito ergo sum. |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14065 Localisation: Quadran Alpha |
Parce que toutes tes commandes sont effectuées à la suite. Donc en gros, dés qu'une action sera finie, on fera l'autre sans chronologie.
_________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
Mais, alors en mettant des DelayCommand, mon problème serait résolu ... Je vais faire un script puis je vous le propose en éditant ... a +
[EDIT] NWScript :
void main() { object oPC = GetPCSpeaker(); object oFollow = GetObjectByTag("ga"); object oDest01 = GetNearestObjectByTag("dest01"); object oDest02 = GetNearestObjectByTag("dest02"); object oDest03 = GetNearestObjectByTag("dest03"); object oDest04 = GetNearestObjectByTag("dest04"); object oDoor = GetNearestObjectByTag("porte1"); if (GetIsPC(oPC)==TRUE) { DelayCommand(1.0, SetCutsceneMode(oPC, TRUE)); DelayCommand(2.0,AssignCommand(oPC,ActionForceFollowObject(oFollow,0.5))); DelayCommand(3.0,AssignCommand(oFollow,ActionMoveToObject(oDest01, TRUE,0.5))); DelayCommand(4.0,AssignCommand(oFollow,ActionMoveToObject(oDest02, TRUE,0.5))); DelayCommand(5.0,AssignCommand(oFollow,ActionSpeakString("On y est presque"))); DelayCommand(6.0,AssignCommand(oFollow,ActionOpenDoor(oDoor))); DelayCommand(7.0,AssignCommand(oFollow,ActionMoveToObject(oDest03, TRUE,0.5))); DelayCommand(8.0,AssignCommand(oFollow,ActionSpeakString("Voila, c'est ici"))); DelayCommand(9.0,AssignCommand(oPC,ActionMoveToObject(oDest04, TRUE))); DelayCommand(10.0,AssignCommand(oFollow, ActionWait(3.0))); DelayCommand(11.0,SetCutsceneMode(oPC, FALSE)); DelayCommand(12.0,AssignCommand(oFollow,ActionStartConversation(oPC))); } } Voilà, est - ce que ça a une chance de marcher ? Je peux pas le tester, j'ai passé le CD de SoU à un copain ... _________________ Cogito ergo sum. |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14065 Localisation: Quadran Alpha |
oui. Ensuite, je sais pas ce que ça donnera
_________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
Les DelayCommand c'est pas une idée géniale. Il vaux mieux rester sur la méthode de la queue d'action en transformant les lignes où on passe les CutsceneMode comme suit :
NWScript :
void main() { object oPC = GetPCSpeaker(); object oFollow = GetObjectByTag("ga"); object oDest01 = GetNearestObjectByTag("dest01"); object oDest02 = GetNearestObjectByTag("dest02"); object oDest03 = GetNearestObjectByTag("dest03"); object oDest04 = GetNearestObjectByTag("dest04"); object oDoor = GetNearestObjectByTag("porte1"); object oCreature = oPC; if (GetIsPC(oPC)==TRUE) { AssignCommand(oFollow, ClearAllActions(TRUE)); AssignCommand(oFollow, ActionDoCommand(SetCutsceneMode( oCreature, TRUE ))); AssignCommand(oPC, ClearAllActions(TRUE)); AssignCommand(oPC, ActionForceFollowObject(oFollow, 0.5)); AssignCommand(oFollow, ActionMoveToObject(oDest01, TRUE, 0.5)); AssignCommand(oFollow, ActionMoveToObject(oDest02, TRUE, 0.5)); AssignCommand(oFollow, ActionSpeakString("On y est presque")); AssignCommand(oFollow, ActionOpenDoor(oDoor)); AssignCommand(oFollow, ActionMoveToObject(oDest03, TRUE, 0.5)); AssignCommand(oFollow, ActionSpeakString("Voila, c'est ici")); AssignCommand(oPC, ActionMoveToObject(oDest04, TRUE)); AssignCommand(oFollow, ActionWait(3.0)); AssignCommand(oFollow, ActionDoCommand(SetCutsceneMode( oCreature, FALSE ))); AssignCommand(oFollow, ActionStartConversation(oPC)); } } De cette façon la mise en mode Cutscene et la sortie du mode Cutscene sont intégré à la queue d'action de l'objet oFollow. En tant qu'action, l'instruction n'est joué qu'après l'exécution des autres actions de la queue. Je me suis permi d'insérer un ClearAllActions(TRUE) pour le oFollow et le oPC afin d'être sur que leur queue d'action respective ne comportera pas d'action résiduelles qui pourrait entraver la bonne marche des choses. Le problème de ta précédente solution était que les SetCutsceneMode n'était pas des actions et qu'elle était exécuté dans le déroulement du script, alors que les actions, elles, étaient placées dans la queue d'action pour être jouée ultérieurement. Je ne vais pas réexpliquer cet aspect des choses, je l'ai déjà fait dans ce sujet et les réponses suivantes. Je pense que cette solution devrait fonctionner. _________________ 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 | |
Baldurien L'homme qui chutait sur le macadam Messages: 14065 Localisation: Quadran Alpha |
Le problème c'est que là, si un personnage venait à être bloqué, l'action ne se terminerait pas. Je pense que faire ça pour les cutscene... est très chaud...
_________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
Ben ... Tu proposes quoi comme solution ? Parce que moi, on commence à rentrer dans les hautes sphères et j'suis pommé ... Mais, j'ai une idée qui peut - être est mauvaise, mais bon, ça ne coute rien d'essayer ... Y'aurait pas une variable qui fait que si un perso est bloqué ( problème que soulevait Baldurien ), l'action s'arrête ... Enfin, moi je demande et je fais rien. Je vais essayer de trouver ... Mais si vous trouvez avant, postez, je ne vous en empêce pas !
_________________ Cogito ergo sum. |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
Lunshire a écrit : Ben ... Tu proposes quoi comme solution ? Parce que moi, on commence à rentrer dans les hautes sphères et j'suis pommé ... Mais, j'ai une idée qui peut - être est mauvaise, mais bon, ça ne coute rien d'essayer ... Y'aurait pas une variable qui fait que si un perso est bloqué ( problème que soulevait Baldurien ), l'action s'arrête ... Enfin, moi je demande et je fais rien. Je vais essayer de trouver ... Mais si vous trouvez avant, postez, je ne vous en empêce pas ! Bioware a déjà proposé la solution de ce problème. En mode Cutscene, un joueur qui appuie sur la touche ESCAPE de son clavier déclenche un évènement OnCutsceneAbort. Si l'on ne met aucun script associé à cet évènement, il ne se passera rien. En revanche, on peut y coder la suppression du mode Cutscene de façon à "libérer" le joueur de cette contrainte.
Je dirais toutefois que c'est un cas de figure extrême. Si tu as suffisamment bien préparé tes points de destination et si tu as suffisamment bien testé ta cutscene pour savoir si le PNJ bloque quelque part (ou est interrompu par un PNJ tier, un combat, un monstre ou quoi que ce soit qui provoque le vidage de sa queue d'action), alors il n'y a pas de raison qu'il bloque et donc aucune raison de s'inquiéter de ce problème. Par précaution, met quand même ce script dans le OnCutsceneAbort : 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. C'est très basique, car quelle que soit la cutscene en train de se jouer, n'importe quel joueur (même en multi-joueur, donc) peut en sortir à tout moment (il y a des amélioration possible, mais ça devient de plus en plus complexe). Attention, le fait de sortir du mode Cutscene de cette façon n'annule pas les actions en cours, cela autorise le joueur à reprendre le contrôle de son personnage pour briser la suite d'action si cela lui chante. Si la suite d'action a été interrompu sans que le contrôle soit rendu au joueur, ça aura son utilité. _________________ 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 | |
Baldurien L'homme qui chutait sur le macadam Messages: 14065 Localisation: Quadran Alpha |
Bah voilà suis Lendraste Mais néanmoins je trouve plus propre d'utiliser des Compteurs, alors ensuite je n'ai pas eu encore le loisir de me servir des Queues d'Action, et je dirais certainement le contraire (car en fait, j'entrevois que c'est mieux là ! )
_________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
Ca marche !!!!!!!!!!!!!!!!!!!!!! Merci Lendraste.
Je ne t'embrasse pas mais le coeur y est vraiment !!! _________________ Cogito ergo sum. |
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