JeuxOnLineForumsPlusConnectés : 414 (sites) | 849 (forums)Créer un compte
Neverwinter Nights
Maskado
Répondre
Partager Outils Rechercher
marion
Roi / Reine
 
Post

Besoin d'aide sur les pattern

Bonjour tous !
J'ai lu le sujet d'explication sur les patterns, (très bien fait), mais je n'ai pas trouvé ce que je cherchais.

J'aimerais, dans une conversation avec un PNJ, que l'on tape un message dans le canal "parler", et que je puisse récuperer dans un script ce message sous forme de chaine de caractères (un peu comme un sujet avait été fait sur une histoire d'enigmes), c'est juste pour pouvoir réutiliser cette "string" après (et donc la stocker dans une variable).

J'espere que la chose est possible. Merci d'avance.
Lien direct vers le message - Vieux
Avatar de Twist
Twist
Empereur
 
Avatar de Twist
 
Et comment que c'est possible !

De mémoire, d'autres me corrigeront si j'oublie quelque chose. Les étapes sont :

- permettre à son PNJ d'entendre et de retenir certains types de caractères. Pour cela, dans le script OnSpawn du PNJ, on place :

Code PHP:
SetListenPattern(OBJECT_SELF,"**",2001); 
- permettre à son PNJ d'enregistrer les phrases qu'il entend. Pour cela, dans le script OnConversation du PNJ, on place également un petit :

Code PHP:
if (GetListenPatternNumber()==2001)
{
string nMot=GetMatchedSubstring(0);
SetLocalString(OBJECT_SELF,"mot",nMot);

Voici pour la base. Note qu'avec ce système, ton PNJ va enregistrer toutes les phrases qu'il entend, la dernière écrasant la précédente. Mais la base est là. Grâce au sujet sur les pattern expliquant bien le principe des filtres me semble-t-il, tu peux trier le type de phrase que tu souhaites enregistrer en modifiant les "**".
Lien direct vers le message - Vieux
marion
Roi / Reine
 
Oh super ! c'est exactement ce que je cherchais !
En réalité je veux juste qu'il enregistre des nombres (c'est pour un systeme de Loto, ou l'on entrerai les chiffres que l'on joue...)
Encore merci.
Lien direct vers le message - Vieux
marion
Roi / Reine
 
Nouveau problème.
Bon j'ai largement avancé là dessus. Je parviens à récuperer la chaine de caractères entrés par le joueur.

cependant, j'aimerai qu'elle apparaisse dans un dialogue, pas un SpeakTokStr ou autre ActionSpeakString, qui place le texte au dessus du perso en question (pas de fenetre qui s'ouvre).

J'ai plus où moins réussi à obtenir ce que je voulais grâce aux Custom Tokens (Merci pour la bibliothèque la dessus, super vraiment), mais je trouve cela trop fastidieux. Je voulais donc savoir s'il existait un moyen de caser une "string" dans une conversation avec un PJ sans utiliser de Custom Token.

Merci d'avance.
__________________
marion.
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Non, je crois bien que c'est l'unique moyen d'insérer des chaînes de caractères qui ne soient pas toujours les mêmes.
Cela dit si tu utilise un seul custom token pour toute la réplique, ça permet de rendre les choses moins fastidieuses. C'était le conseil à deux balles du jour
Lien direct vers le message - Vieux
marion
Roi / Reine
 
J'ai un Custom token pour la chaine entiere (jy avais pensé aussi ).

Le seul problème que je rencontre (il est minime) est qu'en fait j'entre une chaine de caractères, pendant une conversation, stockée dans une variable locale, et dans un custom token.

Et je cherche à ce que la réplique suivante du PNJ contienne ce que j'ai dit. Je n'y suis pas parvenue, sauf si je quitte la conversation et que je la reprend. Je posterai le script ou je bloque ce soir.
Lien direct vers le message - Vieux
Avatar de 'Az
'Az [P.H.]
Alpha & Oméga
 
Avatar de 'Az
 
je suis pas sur de bien comprend ce que tu veux, mais.... un SetCustomToken dans l'initialisation de la conversation (genre lors du teste d'affichage de la phrase) devrait te permettre de modifier dynamiquement n'importe quel Custom Token.

Sans vouloir faire de la pub pour mes productions, si tu veux des exemples concrès d'utilisation de CustomToken (sans la bibliothèque de jedai, et sans les patterns, tu peux aller faire un tour du coté des sources du DiaSe, qui repose sur un système dynamique de CustomTokens

bon courage !
Lien direct vers le message - Vieux
marion
Roi / Reine
 
J'explique mon but :
Je veux faire un jeu de Loterie, un peu comme le loto, ou le PJ entrerai ses chiffres lors d'une conversation avec un PNJ. Ensuite je veux que le PNJ lui réponde Lesquels il vient de jouer, pour confirmer, et il pourrai les lui redonner à nimporte quel moment.

Dans le OnSpawn du PNJ j'ai mis :

Code PHP:
SetListenPattern(OBJECT_SELF"*n,*n,*n,*n,*n"2003); 
Cela implique qu'on doive entrer les numéros séparés par des virgules, sans espaces (plus simple pour gerer les substring apres.)

Dans le OnConversation de ce PNJ :

Code PHP:
if (GetListenPatternNumber() == 2003)
    {
    
string s01 GetMatchedSubstring(0); // 1er nombre
    
string s02 GetMatchedSubstring(2); // 2eme nombre
    
string s03 GetMatchedSubstring(4); // 3eme nombre
    
string s04 GetMatchedSubstring(6); // 4eme nombre
    
string s05 GetMatchedSubstring(8); // 5eme nombre

    // les cinq nombres joues
    
string s10 s01 ", " s02 ", " s03 ", " s04 " et " s05;

    
object oModule GetModule();
    
object oPC GetPCSpeaker();
    
SetLocalInt(oPC"jeu_loto"10); // Le PJ verifie s'il a joue

    // Variable Locale contenant les numeros joues
    
SetLocalString(oModule"nums"s10);

    
// Custom Token pour la conversation
    
AddCustomToken(202"{modstring(nums:}");
    } 
La variable "loto joue" est juste la pour permettre au PNJ de verifié si on a effectivement joué, et donc pour nous repeter les nombres.

La phrase suivante du dialogue est "Vous avez joué <CUSTOM202>" ou quelque chose d'approchant. cependant comme je disais mon problèeme est qu'il ne l'affiche pas la premiere fois que l'on joue, et à chaque fois il retourne les nombres que l'on a joué lors de la derniere conversation (pas ceux que l'on vient d'écrire).

J'éspère avoir été assez claire. Azrael, je vais jeter un coup d'oeil, ça m'a l'air pas mal ton truc.
Lien direct vers le message - Vieux
Avatar de 'Az
'Az [P.H.]
Alpha & Oméga
 
Avatar de 'Az
 
erf, alors serais-ce pasque les CustomTokens s'initialisent avant la lancée du script OnConversation ?

il ne me semble pas avoir remarqué ce genre de chose, mais peut être après tout.

Essaye de faire ca dans un script a part, et de lancer le script de conversation par un ExecuteScript, on sait jamais...
Lien direct vers le message - Vieux
Répondre

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +2. Il est actuellement 01h56.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite