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 12:48:53


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Shan-Kuei
Novice
Inscrit le: 27 Avr 2005
Messages: 13
Répondre en citant
Posté le : 06/08/2005 21:31:21 Sujet du message : Emmêlage problématique [100% Réglé]

Hello,

J'ai un problème "d'emmêlage" avec deux scripts de mon petit module.

A la base, j'avais fait un script pour qu'une créature change de réplique lorsqu'un PJ vient la voir pour une seconde fois.

En clair, si le joueur accoste celle-ci pour la première fois, celle-ci répondra: "Bonjour à vous <FirstName>, etc".
Et lorsque le joueur lui reparle pour la seconde fois, elle lui répondra: "De retour ? etc"

Voici la partie technique:

Dans l'éditeur de dialogue j'ai:

Pour la première réplique (celle de bienvenue) dans "action conséquente":

NWScript :
void main()
{

    ClearAllActions();

   
    SetLocalInt(GetPCSpeaker(), "nFirstTimeTalked", 1);

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


Pour la seconde réplique (celle de retour) dans "Condition d'éxecution"

NWScript :
int StartingConditional()
{

    ClearAllActions();

    // Inspecter variables locales
    if(!(GetLocalInt(GetPCSpeaker(), "nFirstTimeTalked") == 1))
        return FALSE;

    return TRUE;
}
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.


Jusque là, tout va bien. Et puis je décide de faire la même chose pour l'aubergiste (une autre créature).

Je met donc en place exactement le même système que celui précedemment. Et là...c'est le drââme.
Lorsque je parle à l'un, et que je parle à l'autre ensuite, ce dernier passe directement à la seconde réplique, et inversement. J'ai donc pensé qu'un "ClearAllAction()" en début de script allait arranger les choses, mais nada.

Je souhaite donc que l'on m'aide à résoudre ce problème (c'est tout con, j'en suis sur Wink )

Merci
Dernière édition par Shan-Kuei le 08/08/2005 17:49:19; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 06/08/2005 23:52:43 Sujet du message :

Non le problème ne viens pas de sa, tu enregistre sur ton joueur une variable.
Pour l'aubergiste tu utilise la même donc sa fait comme si tu avais parler déjà une fois.
Seul moyen changer les nom de variable/Stoquer les variable sur pnj avec nom joueur...
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Shan-Kuei
Novice
Inscrit le: 27 Avr 2005
Messages: 13
Répondre en citant
Posté le : 07/08/2005 15:25:22 Sujet du message :

Hmm..très bien, merci beaucoup !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Shan-Kuei
Novice
Inscrit le: 27 Avr 2005
Messages: 13
Répondre en citant
Posté le : 07/08/2005 20:51:16 Sujet du message :

J'ai maintenant stocké ma variable sur la créature grâce à GetObjectByTag("MonTag")
Ca marche, mais je crains le pire.
Si désormais la variable est stocké sur la créature, imaginons le scénario:

Un joueur arrive, il engage une discussion. Il fait fonctionner la variable, donc, quand il reparle à la créature, il tombe sur le deuxième noeud de dialogue. Ce joueur s'en va.
Quelques minutes après, un autre pj arrive. Donc, si il parle à la créature, il risque de tomber directement sur le deuxième noeud de dialogue, sans avoir entamer la première non ?

Merci de répondre.

Edit: J'ai oublié de le préciser...C'est un très bonne équipe de soutien et d'apprentissage, ici Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Amphiprion
Ecuyer
Inscrit le: 28 Juil 2005
Messages: 56
Répondre en citant
Posté le : 07/08/2005 22:59:51 Sujet du message :

Ben c'est simple, tu stock l'info sur le PC, en utilisant une cle par NPC

SetLocalInt(oPC, "CLE_NPC_1", 1); -> j'ai deja parlé au NPC 1
SetLocalInt(oPC, "CLE_NPC_2", 1); -> j'ai deja parlé au NPC 2
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Shan-Kuei
Novice
Inscrit le: 27 Avr 2005
Messages: 13
Répondre en citant
Posté le : 08/08/2005 12:19:28 Sujet du message :

Quel idiot, j'avais oublié de changer mon nom de variable -_-

Merci en tout cas Wink
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 08/08/2005 12:20:01 Sujet du message :


Shan-Kuei a écrit :
Si désormais la variable est stocké sur la créature, imaginons le scénario:

Un joueur arrive, il engage une discussion. Il fait fonctionner la variable, donc, quand il reparle à la créature, il tombe sur le deuxième noeud de dialogue. Ce joueur s'en va.
Quelques minutes après, un autre pj arrive. Donc, si il parle à la créature, il risque de tomber directement sur le deuxième noeud de dialogue, sans avoir entamer la première non ?
J'avais donner deux solutions, celle de Amphiprion et celle ou on stoque sur le pnj avec nom/ID du PJ

Moi-même a écrit :
Seul moyen changer les nom de variable/Stoquer les variable sur pnj avec nom joueur...
Exemple quand tu stock sa donne sa :
NWScript :
SetLocalInt(OBJECT_SELF, "Talk_"+GetName(oPC), 1);
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.


Quand tu consulte l'info :
NWScript :
if(GetLocalInt(OBJECT_SELF, "Talk_"+GetName(oPC) == 1))
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.


Avantage pour tout les pnj juste tes deux scripts. (Sinon tu stock sur le PC avec le tag du PNJ dans le même style)
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Shan-Kuei
Novice
Inscrit le: 27 Avr 2005
Messages: 13
Répondre en citant
Posté le : 08/08/2005 12:51:22 Sujet du message :

C'est clair que c'est beaucoup plus pratique.
J'avais pas très bien compris ce que tu proposais au début.

En clair, la variable est stockée sur le PNJ, mais s'exécute en fonction du PJ qui parle. Pas besoin de changer le nom de variable, donc.

Merci Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Shan-Kuei
Novice
Inscrit le: 27 Avr 2005
Messages: 13
Répondre en citant
Posté le : 08/08/2005 15:49:57 Sujet du message :

Hum..Je tombe sur un nouveau problème:

NWScript :
void main()
{

  SetLocalInt(OBJECT_SELF, "TalkFirst"+GetName(oPC), 1);

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


Impossible de compiler.

Je pense que c'est dû à l'absence des lignes object =(oPC,..) situés tout en haut. Je n'ai jamais compris en quelles circonstances il fallait les préciser, et quelle était leurs fonctions.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 08/08/2005 16:03:41 Sujet du message :

NWScript :
void main()
{
object oPC = GetPCSpeaker();
SetLocalInt(OBJECT_SELF, "TalkFirst"+GetName(oPC), 1);
}
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.


ou encore :

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 bien simple, oPC, c'est comme la cuillere dans matrix,
ça n'existe pas pour l'editeur.
C'est donc à nous de la définir à la main Wink
_________________
http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Shan-Kuei
Novice
Inscrit le: 27 Avr 2005
Messages: 13
Répondre en citant
Posté le : 08/08/2005 16:12:41 Sujet du message :

Sympa la comparaison Wink
Sympa aussi d'avoir trouvé la solution Wink
 
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 41.047ms