
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 02/05/2025 22:07:40
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 vais vous exposer la situation.
J'ai mis dans le OnUsed d'une chaise ce script qui permet au PJ de s'assoir dessus en cliquant sur ce plaçable. NWScript :
void main() { object oPlayer = GetLastUsedBy (); object oTarget = OBJECT_SELF; if (GetIsPC (oPlayer)) { if (GetIsObjectValid(oTarget) && !GetIsObjectValid (GetSittingCreature (oTarget))) { AssignCommand (oPlayer, ActionSit (oTarget)); } } } J'ai voulu également mettre un script qui, lorsque le PJ s'asseyera, un PNJ commencera un discours. Il fallait aussi, je pense le mettre dans le OnUsed. NWScript :
void main() { object oPC=GetLastUsedBy(); object oBilbo=GetObjectByTag("Bilbon"); object oElfHome=GetObjectByTag("fondcombe"); if(GetIsPC(oPC)==TRUE) { DelayCommand(0.0, AssignCommand(oBilbo, ActionSpeakString("Mes amis, aujourd'hui est le jour de mon 111e anniversaire !"))); DelayCommand(2.0, AssignCommand(oBilbo, ActionSpeakString("Helas, 111ans ce fut un temps trop court passer en compagnie de si excellent et de si merveilleux hobbits !"))); DelayCommand(5.0, AssignCommand(oBilbo, ActionSpeakString("Je connais la moitie d'entre vous a moitie moins autant que je le voudrais..."))); DelayCommand(7.0, AssignCommand(oBilbo, ActionSpeakString("et j'aime mieux de la moitie d'entre vous a moitie moins autant que vous ne le meritez !"))); DelayCommand(10.0, AssignCommand(oBilbo, ActionSpeakString("Je... J'ai le regret de vous annoncer que c'est la fin..."))); DelayCommand(12.0, AssignCommand(oBilbo, ActionSpeakString("Je dois m'occuper de certaines affaires, je les ai mises trop longtemps de cote..."))); DelayCommand(15.0, AssignCommand(oBilbo, ActionSpeakString("Je vous dis adieu de tout coeur..."))); DelayCommand(17.0, AssignCommand(oBilbo, ActionSpeakString("Au revoir."))); DelayCommand(18.0, AssignCommand(oBilbo, ActionJumpToObject(oElfHome))); } } Mais ça ne fonctionne pas. je l'ai mis en include comme il faut NWScript :
#include "discoursbilbon" Mais j'ai un message d'erreur disant Citation : frodonassis.nss: ERREUR : DUPLICATE FUNCTION IMPLEMENTATION (main) Je ne sais pas où est l'erreur. Peut-être devrais-je aussi mettre à la fin du premier script un ExecuteScript. Je ne sais pas bien... ![]() Merci d'avance. L. _________________ Cogito ergo sum. |
Revenir en haut | ![]() ![]() ![]() |
k0rvet Ecuyer Messages: 67 |
Vérifie ton fichier include. Il doit y avoir un "void main()" dedans, et il n'en faut pas.
Au besoin, enlève ce "void main()" et re-teste. Autre chose, fais attention lorsque tu modifies un fichier include, il faut que tu le sauvegarde, et que tu recompile TOUS les fichiers qui se servent de cet include pour que les changements soient effectifs. Bon courage. _________________ Moi j'dis ca, mais bon j'dis rien hein? ..:: Les Chroniques de la Terre du Milieu ::.. |
Revenir en haut | ![]() ![]() ![]() ![]() |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
je ne comprends pas !
![]() Citation : frodonassis.nss(3): ERREUR : INVALID DECLARATION TYPE Ca m'énerve ! ![]() _________________ Cogito ergo sum. |
Revenir en haut | ![]() ![]() ![]() |
k0rvet Ecuyer Messages: 67 |
Est-ce que tu pourrais poster ton include ici stp?
On pourrait beaucoup mieux s'en sortir. ![]() Enfin ton include et le script y faisant référence hein ![]() _________________ Moi j'dis ca, mais bon j'dis rien hein? ..:: Les Chroniques de la Terre du Milieu ::.. |
Revenir en haut | ![]() ![]() ![]() ![]() |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
Désolé.
![]() Voila. Le script dans le OnUsed. NWScript :
#include "discoursbilbon" void main() { object oPlayer = GetLastUsedBy (); object oTarget = OBJECT_SELF; if (GetIsPC (oPlayer)) { if (GetIsObjectValid(oTarget) && !GetIsObjectValid (GetSittingCreature (oTarget))) { AssignCommand (oPlayer, ActionSit (oTarget)); } } } Et l'include. NWScript :
object oPC=GetLastUsedBy(); object oBilbo=GetObjectByTag("Bilbon"); object oElfHome=GetObjectByTag("fondcombe"); if(GetIsPC(oPC)==TRUE) { DelayCommand(0.0, AssignCommand(oBilbo, ActionSpeakString("Mes amis, aujourd'hui est le jour de mon 111e anniversaire !"))); DelayCommand(2.0, AssignCommand(oBilbo, ActionSpeakString("Helas, 111ans ce fut un temps trop court passer en compagnie de si excellent et de si merveilleux hobbits !"))); DelayCommand(5.0, AssignCommand(oBilbo, ActionSpeakString("Je connais la moitie d'entre vous a moitie moins autant que je le voudrais..."))); DelayCommand(7.0, AssignCommand(oBilbo, ActionSpeakString("et j'aime mieux de la moitie d'entre vous a moitie moins autant que vous ne le meritez !"))); DelayCommand(10.0, AssignCommand(oBilbo, ActionSpeakString("Je... J'ai le regret de vous annoncer que c'est la fin..."))); DelayCommand(12.0, AssignCommand(oBilbo, ActionSpeakString("Je dois m'occuper de certaines affaires, je les ai mises trop longtemps de cote..."))); DelayCommand(15.0, AssignCommand(oBilbo, ActionSpeakString("Je vous dis adieu de tout coeur..."))); DelayCommand(17.0, AssignCommand(oBilbo, ActionSpeakString("Au revoir."))); DelayCommand(18.0, AssignCommand(oBilbo, ActionJumpToObject(oElfHome))); } Je ne vois pas où est l'erreur, et pourtant il y en a une puisque ça ne compile pas. ![]() _________________ Cogito ergo sum. |
Revenir en haut | ![]() ![]() ![]() |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum... Hum.. Toujours à 39°...
Juste une proposition... plutôt que de t'agaçer avec un Include pourquoi ne pas utiliser dans le Premier script 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. _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | ![]() ![]() ![]() ![]() |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
C'est bien ce que j'avais imaginé. Merci pour cette confirmation mon bon Longbow.
![]() _________________ Cogito ergo sum. |
Revenir en haut | ![]() ![]() ![]() |
Alenn Tax Seigneur ![]() Messages: 170 Localisation: J'étais loin, mais je suis revenu. |
Lunshire a écrit : object oElfHome=GetObjectByTag("fondcombe"); L'objet qui a le tag "fondcombe" c'est quoi ? une zone ?
Essaye avec un Waypoint, c'est ce qui marche le mieux avec la fonction ActionJumpToObject. _________________ "La libertée d'expression n'a jamais existé en Russie. Alors, je ne vois pas comment elle pourrait étre bafouée." - Vladimir Poutine |
Revenir en haut | ![]() ![]() ![]() ![]() |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
Alenn Tax a écrit : Lunshire a écrit : object oElfHome=GetObjectByTag("fondcombe"); L'objet qui a le tag "fondcombe" c'est quoi ? une zone ?
Essaye avec un Waypoint, c'est ce qui marche le mieux avec la fonction ActionJumpToObject. ![]() ![]() _________________ Cogito ergo sum. |
Revenir en haut | ![]() ![]() ![]() |
k0rvet Ecuyer Messages: 67 |
Bon, c'est pas bien grave. Tu fait appel à un include qui ne contient pas de fonction, juste un morceau de code. Et les includes c'est pas fait pour ca en fait.
Il faudrait plutot modifier ton include pour transformer le discours de Bilbo en fonction: NWScript :
void Discours(object oPC, object oBilbo, object oElfHome); void Discours(object oPC, object oBilbo, object oElfHome) { if(GetIsPC(oPC)==TRUE) { DelayCommand(0.0, AssignCommand(oBilbo, ActionSpeakString("Mes amis, aujourd'hui est le jour de mon 111e anniversaire !"))); DelayCommand(2.0, AssignCommand(oBilbo, ActionSpeakString("Helas, 111ans ce fut un temps trop court passer en compagnie de si excellent et de si merveilleux hobbits !"))); DelayCommand(5.0, AssignCommand(oBilbo, ActionSpeakString("Je connais la moitie d'entre vous a moitie moins autant que je le voudrais..."))); DelayCommand(7.0, AssignCommand(oBilbo, ActionSpeakString("et j'aime mieux de la moitie d'entre vous a moitie moins autant que vous ne le meritez !"))); DelayCommand(10.0, AssignCommand(oBilbo, ActionSpeakString("Je... J'ai le regret de vous annoncer que c'est la fin..."))); DelayCommand(12.0, AssignCommand(oBilbo, ActionSpeakString("Je dois m'occuper de certaines affaires, je les ai mises trop longtemps de cote..."))); DelayCommand(15.0, AssignCommand(oBilbo, ActionSpeakString("Je vous dis adieu de tout coeur..."))); DelayCommand(17.0, AssignCommand(oBilbo, ActionSpeakString("Au revoir."))); DelayCommand(18.0, AssignCommand(oBilbo, ActionJumpToObject(oElfHome))); } } De cette manière, ton include contient une fonction que tu peux dorénavant appeler de n'importe quel script en placant en entête #include "discoursbilbon" . Voici ton script modifié: NWScript :
void main() { #include "discoursbilbon" object oPC=GetLastUsedBy(); object oBilbo=GetObjectByTag("Bilbon"); object oElfHome=GetObjectByTag("fondcombe"); object oTarget = OBJECT_SELF; if (GetIsPC (oPC)) { if (GetIsObjectValid(oTarget) && !GetIsObjectValid (GetSittingCreature (oTarget))) { AssignCommand (oPC, ActionSit(oTarget)); DelayCommand(3.0, Discours(oPC, oBilbo, oElfHome)); } } } Bon, j'ai pas testé (pas NWN sous la main) mais ca devrait rouler. Si tu as des questions, n'hésites pas... _________________ Moi j'dis ca, mais bon j'dis rien hein? ..:: Les Chroniques de la Terre du Milieu ::.. Dernière édition par k0rvet le 29/12/2003 15:17:29; édité 1 fois
|
Revenir en haut | ![]() ![]() ![]() ![]() |
Alenn Tax Seigneur ![]() Messages: 170 Localisation: J'étais loin, mais je suis revenu. |
Autant pour moi ... Ch'uis comme LongBow, j'ai 39° passé de fiévre ... Alors ch'uis pas trop frais. Désolé !
_________________ "La libertée d'expression n'a jamais existé en Russie. Alors, je ne vois pas comment elle pourrait étre bafouée." - Vladimir Poutine |
Revenir en haut | ![]() ![]() ![]() ![]() |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
Oui, j'en ai une ...
![]() Le fait de mettre quelque chose après un void, rend le script qui suit sous forme de fonction d'après ce que j'ai compris... Un void main (), si je me rappelle bien de mes cours ... ![]() ![]() Pourtant, il y a un void quand même ... ce n'est pas le void qui transforme un script en fonction ? Alenn Tax a écrit : Autant pour moi ... Ch'uis comme LongBow, j'ai 39° passé de fiévre ... Alors ch'uis pas trop frais. Désolé ! Boaf c'est pas grave. On a tous un jour ou l'autre une petite défaillance. ![]() ![]() ![]() _________________ Cogito ergo sum. |
Revenir en haut | ![]() ![]() ![]() |
k0rvet Ecuyer Messages: 67 |
En fait le void défini le type qui est retourné ex:
void maFonction() => ne renvoi rien int maFonction() => renvoi un entier string maFonction() => renvoi un string Le void ne transforme pas un script en fonction, il défini juste ce qui va en retourner. _________________ Moi j'dis ca, mais bon j'dis rien hein? ..:: Les Chroniques de la Terre du Milieu ::.. |
Revenir en haut | ![]() ![]() ![]() ![]() |
Lunshire Héros Messages: 259 Localisation: Ben ... Devant mon ordi bien sûr ! |
Merci bien Maître K0rvet. Vous venez de m'ouvrir un horizon que je n'imaginais pas même dans mes rêves les plus doux. En clair, ça veut dire je mendormirais mois *** ce soir
![]() _________________ Cogito ergo sum. |
Revenir en haut | ![]() ![]() ![]() |


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