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/11/2024 16:10:06
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 |
Orkamungus Acolyte Messages: 36 |
Bonjour à tous et toutes.
Voila, je viens ici pour vous demander de l'aide sur un script de chaise dans une taverne que j'ai fait. En fait je veux que quand le pc s'assied sur une table, une serveuse viens le voir pour lui demander ce qu'il veut. En fait j'ai fait que pour une serveuse, mais je ferais après pour plusieurs serveuses. En fait mon problème vient que, quand le pc s'assied la serveuse vient mais le dialogue ne se déclanche pas du fait que le pj est assis. Je ne sais pas comment faire pour que le dialogue se déclanche quand même. Si quelqu'un à une idée, je lui serais reconnaisant de me la faire parvenir. Donc voici le script : NWScript :
void main() { object oPC = GetLastUsedBy (); object oChair = OBJECT_SELF; AssignCommand(oPC, ClearAllActions()); if (GetIsObjectValid(oChair)) { AssignCommand(oPC, ActionSit(oChair)); } object oServ = GetNearestObjectByTag ("Serveuse"); if (IsInConversation(oServ)) { } else { AssignCommand (oServ, ActionMoveToObject(oPC)); DelayCommand (1.0, AssignCommand (oPC, ActionStartConversation (oServ, "aub_dial", FALSE, TRUE))); } } Merci et a bientôt Orkamungus. |
Revenir en haut | |
Orkamungus Acolyte Messages: 36 |
Bonjour.
Voila, n'ayant eu de réponse, j'ai essayer de résoudre mon problème seul. Maintenant, le dialogue s'enclenche, seulement le pj se lève. Donc j'ai essayer de le faire rassoir. le problème est qu'il s'assoie n'importe comment. Au début il est normalement assis, ensuite il s'assoie sur le côté de la chaise. voici le script modifié NWScript :
void main() { object oPC = GetLastUsedBy (); object oChair = OBJECT_SELF; AssignCommand(oPC, ClearAllActions()); if (GetIsObjectValid(oChair)) { AssignCommand(oPC, ActionSit(oChair)); } object oServ = GetNearestObjectByTag ("Serveuse"); string sChair = GetTag (oChair); if (IsInConversation(oServ)) { } else { AssignCommand (oServ, ActionMoveToObject(oPC)); DelayCommand (1.0, AssignCommand (oServ, ActionStartConversation (oPC, "aub_dial", FALSE, TRUE))); DelayCommand (2.0, AssignCommand (oPC, ActionSit (oChair))); } } Voila, merci d'avance pour vos aides. Orkamungus |
Revenir en haut | |
PsyCalimero Ecuyer Messages: 44 |
Côté NWN2 j'ai trouvé ça :
Djezebel a écrit : Et le voici :
Vois si ca marche... Enfin ajoute le a ton script.NWScript : void main() { object oChair = OBJECT_SELF; // "moi la chaise" object oPC = GetLastUsedBy(); //"celui qui m'utilise s'appelle "oPC" " location lLoc = Location(GetArea(oChair), GetPosition(oChair), GetFacing(oChair) + 180); // on fait en sorte que le dossier soit bien dans le dos AssignCommand(oPC,JumpToLocation(lLoc)); PlayCustomAnimation(oPC,"sitidle",1); } |
Revenir en haut | |
Orkamungus Acolyte Messages: 36 |
Merci pour ta réponse.
En fait, le script ne marche toujours pas, se lève mais ne se rassier pas (j'ai du enlever la dernière ligne qui ne compilait pas). le script donnant ca : NWScript :
void main() { object oPC = GetLastUsedBy (); object oChair = OBJECT_SELF; if (GetIsObjectValid(oChair)) { AssignCommand(oPC, ActionSit(oChair)); } object oServ = GetNearestObjectByTag ("Serveuse"); if (IsInConversation(oServ)) { } else { DelayCommand (1.0, AssignCommand (oServ, ActionMoveToObject(oPC))); AssignCommand (oServ, ActionStartConversation (oPC, "aub_dial", FALSE, TRUE)); location lLoc = Location(GetArea(oChair), GetPosition(oChair), GetFacing(oChair) + 180); // on fait en sorte que le dossier soit bien dans le dos AssignCommand(oPC,JumpToLocation(lLoc)); AssignCommand(oPC, ActionSit(oChair)); } } Voila, j'ai aussi essayer en changeant cette 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. par : 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. Et aussi en rajoutant des "DelayCommand". Le script donne donc ca : NWScript :
void main() { object oPC = GetLastUsedBy (); object oChair = OBJECT_SELF; if (GetIsObjectValid(oChair)) { AssignCommand(oPC, ActionSit(oChair)); } object oServ = GetNearestObjectByTag ("Serveuse"); if (IsInConversation(oServ)) { } else { DelayCommand (1.0, AssignCommand (oServ, ActionMoveToObject(oPC))); AssignCommand (oServ, ActionStartConversation (oPC, "aub_dial", FALSE, TRUE)); location lLoc = Location(GetArea(oChair), GetPosition(oChair), GetFacing(oChair) + 180); // on fait en sorte que le dossier soit bien dans le dos DelayCommand (4.0, AssignCommand(oPC,ActionMoveToObject (oChair))); DelayCommand (5.0, AssignCommand(oPC, ActionSit(oChair))); } } Seulement, j'ai mit la serveuse plus loin que dans les autres tests. En fait, si la serveuse n'est pas arrivé avant 4 secondes, c'est raté, le pc ne s'assiera pas. Donc je sais pas si vous avez une idée ? merci d'avance. Orkamungus |
Revenir en haut | |
PsyCalimero Ecuyer Messages: 44 |
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. Nearest signifie en anglais : le plus proche. Quand tu places ta serveuses à plus de 4 sc il y a un tag différent plus proche... Mais ya rien qui s'approche? une chaise ou un truc comme ca? |
Revenir en haut | |
Orkamungus Acolyte Messages: 36 |
Non, juste la serveuse qui arrive en courant pour me demander ce que je veut boire, le problème est que après le pj ne s'assoie pas.
Orkamungus. |
Revenir en haut | |
PsyCalimero Ecuyer Messages: 44 |
Voici un script qui fonctionne :
NWScript :
void main() { object oPC = GetLastUsedBy (); object oChair = OBJECT_SELF; object oServ = GetNearestObjectByTag ("Serveuse"); if (IsInConversation(oServ)) { } else { DelayCommand (0.0, AssignCommand (oServ, ActionMoveToObject(oPC))); AssignCommand(oServ, ActionStartConversation(oPC, "tondialogue")); DelayCommand (10.0, AssignCommand(oPC, ActionSit(oChair))); } } Change simplement le délai dans NWScript : De mannière à ce qu'il soit supérieur au temps que met la serveuse à venir te parler. Une seconde devrait suffire, mais après... c'est à calculer.
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. Sinon là part défaut, la serveuse va venir, et au bout de 10sc le pj s'assoit... A modifier donc ! Bon courage Dernière édition par PsyCalimero le 25/11/2006 20:24:11; édité 1 fois
|
Revenir en haut | |
Orkamungus Acolyte Messages: 36 |
Salut
J'ai essayer en mettant un "SetLocalString" sur un objet que la serveuse possède. et ensuite en mettant dans la dernière phrase du dialogue un deuxième script ou le pc va s'assoir sur la chaise par rapport a ce LocalString, mais le pc ne va toujours pas s'assoir. Voici les scripts : Celui dans le OnUsed de la chaise : NWScript :
void main() { object oPC = GetLastUsedBy (); object oChair = OBJECT_SELF; string sChair = GetTag (oChair); if (GetIsObjectValid(oChair)) { AssignCommand(oPC, ActionSit(oChair)); } object oServ = GetNearestObjectByTag ("Serveuse"); object oChairPC = GetItemPossessedBy (oServ, "chaise_pj"); if (IsInConversation(oServ)) { } else { SetLocalString(oChairPC, sChair, "Chair_PC"); DelayCommand (2.0, AssignCommand (oServ, ActionMoveToObject(oPC))); DelayCommand (3.0, AssignCommand (oServ, ActionStartConversation (oPC, "aub_dial", FALSE, TRUE))); } } Celui dans l'action conséquente du dialogue : NWScript :
void main() { object oPC = GetPCSpeaker(); object oServ = GetNearestObjectByTag ("Serveuse"); object oChairPC = GetItemPossessedBy (oServ, "chaise_pj"); string sChair = GetLocalString(GetObjectByTag ("chaise_pj"), "Chair_PC"); object oChair = GetNearestObjectByTag (sChair); AssignCommand(oPC, ActionSit(oChair)); } Voila, je ne vois pas d'erreur, mais pourtant il y en a une. Quelqu'un la voit ? Merci d'avance. Orkamungus |
Revenir en haut | |
AZAZEL11 Seigneur Messages: 156 |
sur ton deuxième script, sans être un pro je peux te dire que tu identifie mal tes variables.
essai avec ca comme conséquence du dialogue^^ NWScript : void main() { object oPC = GetPCSpeaker(); object oServ = GetNearestObjectByTag ("Serveuse"); //object oChairPC = GetItemPossessedBy (oServ, "chaise_pj"); //string sChair = GetLocalString(GetObjectByTag ("chaise_pj"); object oChair = GetNearestObjectByTag ("chaise_pj"); AssignCommand(oPC, ActionSit(oChair)); } _________________ L'imagination est plus importante que le savoir. (Albert Einstein) |
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