La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 02/05/2025 22:07:40


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Lunshire
Héros
Inscrit le: 08 Nov 2003
Messages: 259
Localisation: Ben ... Devant mon ordi bien sûr !
Répondre en citant
Posté le : 29/12/2003 14:00:52 Sujet du message : Include et void main ...

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));
}
}
}
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.


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)));
  }

}
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.


Mais ça ne fonctionne pas. je l'ai mis en include comme il faut
NWScript :
#include "discoursbilbon"
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.

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... Embarassed

Merci d'avance. L.
_________________
Cogito ergo sum.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
k0rvet
Ecuyer
Inscrit le: 24 Nov 2003
Messages: 67
Répondre en citant
Posté le : 29/12/2003 14:07:18 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Lunshire
Héros
Inscrit le: 08 Nov 2003
Messages: 259
Localisation: Ben ... Devant mon ordi bien sûr !
Répondre en citant
Posté le : 29/12/2003 14:16:06 Sujet du message :

je ne comprends pas ! Mad Si je supprime le void main, j'ai encore un message d'erreur qui me dit au "if"

Citation :
frodonassis.nss(3): ERREUR : INVALID DECLARATION TYPE
Ca m'énerve ! Ca bug !
_________________
Cogito ergo sum.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
k0rvet
Ecuyer
Inscrit le: 24 Nov 2003
Messages: 67
Répondre en citant
Posté le : 29/12/2003 14:17:30 Sujet du message :

Est-ce que tu pourrais poster ton include ici stp?
On pourrait beaucoup mieux s'en sortir. Very Happy

Enfin ton include et le script y faisant référence hein Embarassed
_________________
Moi j'dis ca, mais bon j'dis rien hein?
..:: Les Chroniques de la Terre du Milieu ::..
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Lunshire
Héros
Inscrit le: 08 Nov 2003
Messages: 259
Localisation: Ben ... Devant mon ordi bien sûr !
Répondre en citant
Posté le : 29/12/2003 14:38:37 Sujet du message :

Désolé. Embarassed
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));
}
}
}
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 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)));
}
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.


Je ne vois pas où est l'erreur, et pourtant il y en a une puisque ça ne compile pas. Cool
_________________
Cogito ergo sum.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Longbow
Grand Sage du Conseil
Inscrit le: 10 Déc 2003
Messages: 638
Localisation: Orléans
Répondre en citant
Posté le : 29/12/2003 14:56:42 Sujet du message :

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 :
ExecuteScript("discoursbilbon", OBJET_SELF);
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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Lunshire
Héros
Inscrit le: 08 Nov 2003
Messages: 259
Localisation: Ben ... Devant mon ordi bien sûr !
Répondre en citant
Posté le : 29/12/2003 15:00:14 Sujet du message :

C'est bien ce que j'avais imaginé. Merci pour cette confirmation mon bon Longbow. Cool
_________________
Cogito ergo sum.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Alenn Tax
Seigneur
Inscrit le: 20 Sep 2003
Messages: 170
Localisation: J'étais loin, mais je suis revenu.
Répondre en citant
Posté le : 29/12/2003 15:05:01 Sujet du message :


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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Lunshire
Héros
Inscrit le: 08 Nov 2003
Messages: 259
Localisation: Ben ... Devant mon ordi bien sûr !
Répondre en citant
Posté le : 29/12/2003 15:09:32 Sujet du message :


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.
Ben, C'EST un waypoint. Pourquoi as-tu posté cela ? ce n'est pas que ça me dérange, au contraire, ça peut aider beaucoup de gens Cool, mais je n'ai jamais dit que j'avais un problème avec le ActionJumpToObject ... Embarassed
_________________
Cogito ergo sum.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
k0rvet
Ecuyer
Inscrit le: 24 Nov 2003
Messages: 67
Répondre en citant
Posté le : 29/12/2003 15:11:27 Sujet du message :

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)));
  }
}
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.


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));
  }
}
}
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, 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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Alenn Tax
Seigneur
Inscrit le: 20 Sep 2003
Messages: 170
Localisation: J'étais loin, mais je suis revenu.
Répondre en citant
Posté le : 29/12/2003 15:16:03 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Lunshire
Héros
Inscrit le: 08 Nov 2003
Messages: 259
Localisation: Ben ... Devant mon ordi bien sûr !
Répondre en citant
Posté le : 29/12/2003 15:18:20 Sujet du message :

Oui, j'en ai une ... Embarassed
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 ... /me siffle ne renvoit à rien du tout. Arrêtez moi si je me trompe ! Very Happy

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. Very Happy Seulement, pour certains, ça arrive plus vite et plus souvent que pour d'autres. Wink En fait, moi, je m'inclus dans les certains... Je suis une défaillance vivante. Mon surnom, c'est Néo ! Very Happy
_________________
Cogito ergo sum.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
k0rvet
Ecuyer
Inscrit le: 24 Nov 2003
Messages: 67
Répondre en citant
Posté le : 29/12/2003 15:25:50 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Lunshire
Héros
Inscrit le: 08 Nov 2003
Messages: 259
Localisation: Ben ... Devant mon ordi bien sûr !
Répondre en citant
Posté le : 29/12/2003 15:35:54 Sujet du message :

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 Laughing. Merci encore.
_________________
Cogito ergo sum.
 
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 75.098ms