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


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Xuyl
Acolyte
Inscrit le: 24 Juin 2003
Messages: 26
Localisation: Montpellier / France
Répondre en citant
Posté le : 24/06/2003 21:33:16 Sujet du message : Problème avec SpeakString

Bonjour,
En fait je souhaite qu'a ma vue du PJ, le PNJ dise par exemple "Bonjour" !
Donc facile dans le onPerception du mec je fais :
Code :

void main()
{
    string sNom = "Bonjour";
    int nTalkVolume = TALKVOLUME_TALK;

    SpeakString(sNom, nTalkVolume);

}


Aucun problème, quand il le voit il dit bien Bonjour, seulement il le dit deux fois, le script se répète ou la fonction ?
Enfin bref je comprends pas pourquoi il le fais deux fois.
Quelqun a une idée ?
merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Yahoo Messenger Ignorer l'utilisateur
 
Xuyl
Acolyte
Inscrit le: 24 Juin 2003
Messages: 26
Localisation: Montpellier / France
Répondre en citant
Posté le : 24/06/2003 22:08:08 Sujet du message :

J'ai un autre petit problème aussi Very Happy
En fait je souhaite exporter une variable afin de la réutilier dans un autre script, toujours pour le meme objet...
Dans le script ou il y a cette variable je fais un SetLocalString(OBJECT_SELF, Mot, Mot) non ?
Et pour la récupérer dans un autre script je dois faire string Mot1 = GetLocalString(OBJECT_SELF, Mot) non ?
En tous cas ça marche pas Sad La variable qu'il récupère est vide...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Yahoo Messenger Ignorer l'utilisateur
 
Xuyl
Acolyte
Inscrit le: 24 Juin 2003
Messages: 26
Localisation: Montpellier / France
Répondre en citant
Posté le : 24/06/2003 22:55:24 Sujet du message :

Pour l'exportation de variable, c est bon j'ai réussi par contre je comprends toujours pas pourquoi il éxécute deux fois le script !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Yahoo Messenger Ignorer l'utilisateur
 
aldech
Gagnant du Concours Gothic 3
Inscrit le: 25 Nov 2002
Messages: 61
Localisation: Le Havre
Répondre en citant
Posté le : 24/06/2003 23:41:21 Sujet du message :

Je comprends pas pourquoi, il le dit deux fois non plus, un petit script pour éviter ce problème :

Code :

void main()
{
    string sNom = "Bonjour";
    int nTalkVolume = TALKVOLUME_TALK;

    object oPC = GetLastPerceived(); // obtient la dernière créature perçu

    if (GetIsPC(oPC)) // vérifie que la créature perçu est un PJ et non un PNJ ou un monstre
    {
        string sTag = GetTag(oPC); // récupération du tag du PJ

        int iSalut = GetLocalInt(OBJECT_SELF,sTag); // récupération de la valeur de la variable qui a pour nom le tag du PJ

        if (iSalut == 0) // test de iSalut, si égal à 0, c'est la première fois donc le PJ dit bonjour sinon il ne dit pas bonjour
        {
            SpeakString(sNom, nTalkVolume);
            SetLocalInt(OBJECT_SELF,sTag,1); // met à 1 la variable pour ne pas redire Bonjour la prochaine fois que le PNJ perçoit le PJ
        }
    }
}


EDIT : un PJ peut être vu ou entendu, ou les deux donc peut être que l'évenement onperception réagit aux deux.

EDIT2 : rajout commentaires au script
Dernière édition par aldech le 25/06/2003 08:20:20; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Xuyl
Acolyte
Inscrit le: 24 Juin 2003
Messages: 26
Localisation: Montpellier / France
Répondre en citant
Posté le : 25/06/2003 00:02:48 Sujet du message :

Merci beaucoup pour ton aide.
Mais peux tu m'expliquez ce que tu fais précisement dans ton script ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Yahoo Messenger Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 25/06/2003 07:22:42 Sujet du message :

Il y a juste une condition de rajoutée (if GetIsPC(oPC)) qui vérifie que la créature à laquelle s'applique ce script est un joueur et non un PNJ (personnage non joueur), puis une variable locale (iSalut), qui quand elle a la valeur 0 déclenche le script, et ne fait rien quand elle a pris la valeur 1. Ca permet de vérifier que le script s'est bien déclenché une fois, et donc ne se déclenchera plus. C'est très pratique Laughing
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Xuyl
Acolyte
Inscrit le: 24 Juin 2003
Messages: 26
Localisation: Montpellier / France
Répondre en citant
Posté le : 25/06/2003 08:21:17 Sujet du message :

La je suis au boulot donc je peux pas tester.. Mais merci pour l'aide.
Est ce qu'avec cette technique, si le joueur s'éloigne fortement du PNJ tout en restant dans la même zone et reviens le voir il va relancer le script de OnPerception ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Yahoo Messenger Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 25/06/2003 08:38:47 Sujet du message :

Non, puisque le "bonjour" n'est prononcé que si la variable est à 0, et on la fait passer à 1 une fois la phrase lancée Wink
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Xuyl
Acolyte
Inscrit le: 24 Juin 2003
Messages: 26
Localisation: Montpellier / France
Répondre en citant
Posté le : 25/06/2003 08:49:12 Sujet du message :

Ok, bon c'est parfait. Merci beaucoup.
Quand on utilise ce genre de variables locales, elles restent à la dernière valeur donnée tant qu'on ne change pas de zone ou tant que dans un scipt on ne donne pas une autre valeur ? ou encore autre chose je ne sais pas...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Yahoo Messenger Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 25/06/2003 09:04:02 Sujet du message :

Elles restent tout le temps, même si tu sauvegardes et que tu recharges, elle resteront à leur dernière valeur définies (heureusement d'ailleurs Wink )

Le seul truc chiant étant qu'elles ne suivent pas le joueur lorsqu'il change de module, donc c'est plus délicat quand tu essaie de faire plusieurs modules connectés ensemble...
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Xuyl
Acolyte
Inscrit le: 24 Juin 2003
Messages: 26
Localisation: Montpellier / France
Répondre en citant
Posté le : 25/06/2003 09:10:10 Sujet du message :

Bien merci je comprends. Donc si je veux réarmer ce script il faudrais que je mette une sorte de timer qui remettrai la variable à sa valeur initiale.
J'ai une autre question (oui je sais ça en fait beaucoup mais je débute et je m'en pose pleins Very Happy )
Si je souhaite faire dire plusieurs choses à un objet mais qu'il ne me déballe pas tout d'un coup, je dois donc donc mettre une fonction qui s'appelle ActionWait ou un truc comme ça entre les deux SpeakString c'est ça ?
Au passage merci à tous, c est vraiment sympa d'aider des noobs comme moi.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Yahoo Messenger Ignorer l'utilisateur
 
aldech
Gagnant du Concours Gothic 3
Inscrit le: 25 Nov 2002
Messages: 61
Localisation: Le Havre
Répondre en citant
Posté le : 25/06/2003 09:33:54 Sujet du message :


Cassin a écrit :
Elles restent tout le temps, même si tu sauvegardes et que tu recharges, elle resteront à leur dernière valeur définies (heureusement d'ailleurs Wink )

Le seul truc chiant étant qu'elles ne suivent pas le joueur lorsqu'il change de module, donc c'est plus délicat quand tu essaie de faire plusieurs modules connectés ensemble...
Dans mon script la variable est stockè sur le PNJ, il me semble puisque j'utilise OBJECT_SELF et non oPC, donc même si le PJ change

de zone ou de module, la variable et sa valeur sont conservés ? moi je pense que oui, mais j'ai pas testé.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 25/06/2003 09:45:25 Sujet du message :

Aldech : non, même si la variable est stockée sur le PJ elle ne sera pas conservée si le joueur change de module. Par contre elle le sera tant qu'il restera dans ton module (il peut changer de zone 300 fois s'il le veut, ça ne changera rien Wink )


Xuyl : si tu veux que le PNJ salue le joueur chaque fois qu'il vois, plutôt que de te faire chier à réinitialiser la variable, supprime la, ça sera beaucoup plus facile Wink

Et si tu as d'autres questions, ouvre un nouveau topic sinon on ne va plus s'y retrouver Wink
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
aldech
Gagnant du Concours Gothic 3
Inscrit le: 25 Nov 2002
Messages: 61
Localisation: Le Havre
Répondre en citant
Posté le : 25/06/2003 09:53:48 Sujet du message :


Cassin a écrit :
Aldech : non, même si la variable est stockée sur le PJ elle ne sera pas conservée si le joueur change de module. Par contre elle le sera tant qu'il restera dans ton module (il peut changer de zone 300 fois s'il le veut, ça ne changera rien Wink
Oui, un seul module en mémoire donc si on change de module... effectivement je viens de tester
mais d'un module persistant à un autre, est ce que là cela fonctionne ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 25/06/2003 10:02:49 Sujet du message :

Il y a des techniques pour, je crois, mais je ne suis pas spécialiste en la matière...

Et puis ça mériterait un autre topic, ça n'a plus rien à voir avec le sujet initial Wink
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur 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 30.906ms