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 11:31:20


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
warpShadow
Légende vivante
Inscrit le: 01 Fév 2005
Messages: 363
Localisation: Perpignan
Répondre en citant
Posté le : 13/12/2005 16:39:37 Sujet du message : evolution et persistance.

salut !

je voudrais créer un dialogue évolutif qui persiste. En gros, un personnage vient parler à un pnj, la première fois le pnj est méfiant, la deuxieme fois neutre, la troisieme fois confiant... et qu'il reste sur confiant (uniquement avec le même PJ), et que ce la resiste même aux reboot... c'est possible ça ?

merci ^^++
_________________
Asphia
Module RP Médiéval Fantastique pour Neverwiner Nights
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Elandil2
Chevalier
Inscrit le: 14 Fév 2005
Messages: 97
Localisation: sur mon ordi loir-et-cher
Répondre en citant
Posté le : 13/12/2005 16:48:23 Sujet du message :

Voila voila !
Il te faut d'abord créer un objey qui restera toujours sur le PJ puis mettre le tag a l'endroit ou je l'ai indiqué dans les scripts.

NWScript :
//Il faut d'abord creer le dialogue que vous voulez faire dire au
//PNJ la 1ere fois que vous le rencontrez.
//Ce script est a mettre dans le condition d'execution du 1er noeud de dialogue.


int StartingConditional()
{

object oObject = GetObjectByTag("TAG");//Ici le tag de ton objet persistant
    int bCondition = GetIsObjectValid(GetPCSpeaker()) &&
                    GetLocalInt(oObject, "NW_L_TALKLEVEL") == 0;
    return bCondition;
}
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.


NWScript :
//Il faut ensuite creer le dialogue que vous voulez faire dire au PNJ
//la seconde fois.
//Ce script est a mettre dans le condition d'execution du 1er noeud de dialogue.


int StartingConditional()
{
    object oObject = GetObjectByTag("TAG");//Ici le tag de ton objet persistant
    int bCondition = GetIsObjectValid(GetPCSpeaker()) &&
                    GetLocalInt(oObject, "NW_L_TALKLEVEL") >= 1;
    return bCondition;
}
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.


NWScript :
//le script suivant est a mettre dans action consequente dans un noeud au
//choix du 1er dialogue !


void main()
{
    object oObject = GetObjectByTag("TAG");//Ici le tag de ton objet persistant

    SetLocalInt(oObject,"NW_L_TALKLEVEL",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.


NWScript :
//le script suivant est a mettre a chaque dernier noeud de discution
//de chaque dialogue

void main()



{
    object oObject = GetObjectByTag("TAG");//Ici le tag de ton objet persistant
SetLocalInt(oObject,"NW_L_TALKLEVEL",GetLocalInt(oObject,"NW_L_TALKLEVEL") + 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.


NWScript :
//Il faut ensuite creer le dialogue que vous voulez faire dire au PNJ
//la troisieme  fois.
//Ce script est a mettre dans le condition d'execution du 1er noeud de dialogue.


int StartingConditional()
{
    object oObject = GetObjectByTag("TAG");//Ici le tag de ton objet persistant
    int bCondition = GetIsObjectValid(GetPCSpeaker()) &&
                    GetLocalInt(oObject, "NW_L_TALKLEVEL") >= 2;
    return bCondition;
}
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 long, désolé mais au moin ca marche bien !
_________________
Rejoignez nous sur notre forum
Aelor, module en construction
Vive Gimli

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 13/12/2005 17:32:17 Sujet du message :

Le GetLocalMachin ou le SetLocalMachin ne restera pas lors d'un reboot! il faut utilisé le SetCampaignMachin et le GetCampaignMachin
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Elandil2
Chevalier
Inscrit le: 14 Fév 2005
Messages: 97
Localisation: sur mon ordi loir-et-cher
Répondre en citant
Posté le : 14/12/2005 12:43:59 Sujet du message :

Oui c'est vrai désolé. Petite erreur de ma part ...
Je ne remet pas tous les scripts ca risque de faire longuet.
_________________
Rejoignez nous sur notre forum
Aelor, module en construction
Vive Gimli

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Ecuyer paumé
Acolyte
Inscrit le: 15 Nov 2005
Messages: 27
Répondre en citant
Posté le : 14/12/2005 12:46:38 Sujet du message :

On est obligé de creer un objet pour avoir un système de variable qui resiste aux reboot? On ne peut pas agir directement sur le PJ en le sauvegardant?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 14/12/2005 13:28:59 Sujet du message :

Le sauvegardé oui, mais tu ne gardera pas les variables mises! La sauvegarde, c'est pour le personnage, pas pour les scripts donné, donc il faut utilisé les Campaign pour faire les bonnes sauvegardes.
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Anthraxcite
Légende vivante
Inscrit le: 12 Juin 2004
Messages: 372
Localisation: Belgique
Répondre en citant
Posté le : 14/12/2005 15:01:05 Sujet du message :

Tu peux sans problème sauvergarder des variables locales sur les items, chaque que les PJ est sauvergardé son inventaire l'est aussi, donc les items qui le composent ainsi que leurs variables. Utilise GetObjectPossessedBy (qui recherchera l'item de sauvergarde sur le joueur) et pas GetObjectByTag (qui lui recherche les objets sur le module).
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 14/12/2005 18:27:24 Sujet du message :

dans ton dialogue, tu crée plusieur branche, sachant que la premiere branche qui doit etre developpée est celle que ton joueur lira en dernier.

ensuite tu crée des scripts simple de dial avec le wizard, en faisant evoluer, par exemple une variable pour definir si ton pj a deja parler avec le pnj, la variable pourrait evoluer de +1 (choisi un Int), les branche de dial s'afficant selon la valaur du int.

Le wizard vas lui definir ta variable (ton Int) en utilisant les GetLocalInt et les SetLocalInt.

Ensuite, une fois que tu a tester ta quete et toute ses branches de dialogue, tu modifie les script en remplaçant les LocalInt par des CampaignInt, donc GetCampaignInt et SetCampaignInt.

Par contre tu doit créer une base de donnée pour tes quetes, moi j'ai créer une base de donnée simplement appelée "Quetes". La syntaxe est différente mais assez simple, je les place dessous en exemple pour te montrer la difference :
NWScript :

int GetLocalInt(object oObject, string sVarName)
int GetCampaignInt(string sCampaignName, string sVarName, object oPlayer=OBJECT_INVALID)

void SetLocalInt(object oObject, string sVarName, int nValue)
void SetCampaignInt(string sCampaignName, string sVarName, int nInt, object oPlayer=OBJECT_INVALID)


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.


Voilà j'espere que c'est plus clair pour toi !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
warpShadow
Légende vivante
Inscrit le: 01 Fév 2005
Messages: 363
Localisation: Perpignan
Répondre en citant
Posté le : 15/12/2005 16:15:10 Sujet du message :

Salut et merci pour vos réponses

Ben... En fait j'ai un peu de mal Oo...

en plus du coup quand j'ajoute les scripts aux noeuds de dialogue, je me perdes dans les miens (il y en a déjà dans le dialogue) en essayant de les combiner, je sais plus ce qui va où... Galère.

Je pense que je vais simplement laisser tomber cette idée. C'était pas mal comme truc, mais ça demande un peu trop pour un simple dragon marchand.

Enfin, je vais voir, je vous tiens au courant.

merci quand même hein ^^ +++
_________________
Asphia
Module RP Médiéval Fantastique pour Neverwiner Nights
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Elandil2
Chevalier
Inscrit le: 14 Fév 2005
Messages: 97
Localisation: sur mon ordi loir-et-cher
Répondre en citant
Posté le : 15/12/2005 21:33:27 Sujet du message :

C'est bête car en réalité c'est tout simple a appliquer ...

Bon, okay , je ^me suis un peu gourré mais quand meme !
_________________
Rejoignez nous sur notre forum
Aelor, module en construction
Vive Gimli

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 15/12/2005 21:39:17 Sujet du message :

c'est domage de laisser tomber si vite, si j'avais laisser tomber au premier eceuil, je n'aurais jamais reussi mon system de repos et autre diablerie du genre.

Je vais tenter de te donner un exemple, les scripts je te laisse le soin, mais je vais developper un exemple avec une variable à 3.
En developpant ton dialogue, tu place en premier la branche qui sera lu en dernier :

- Bien j'ai confience en vous, je vous ouvre mon magasin (1)

- J'hésite encore a vous ouvrir mon magasin (2)

- je n'ai pas confience en vous, je n'ai rien pour vous (3)

- Je ne vous connais pas, partez ! (4)

Dans la condition d'execution de la branche (1), tu teste si ta variable =3
Dans la condition d'execution de la branche (2), tu teste si ta variable =2
Dans la condition d'execution de la branche (3), tu teste si ta variable =1
pas de test pout la branche (4)

Dans le action conséquente de la branche (2) tu fait passer la variable à 3 en fin de conversation
Dans le action conséquente de la branche (3) tu fait passer la variable à 2 en fin de conversation
Dans le action conséquente de la branche (4) tu fait passer la variable à 1 en fin de conversation

Que se passe il :
ton pj a par default sa variable à 0, donc lors de son premier dialogue, le jeu affichera la branche (4) puisque les autre condition ne sont pas remplie, en fin de dial, la variable passe a 1

au prochain dial, le jeu affichera la branche (3) et passera la variable à 2
Ensuite la branche (2) s'affiche et la var passe à 3
Enfin seul la branche (1) sera affichée car la variable sera à 3, jusqu'a ce que tu efface ta base de donnée.

Dans mon exemple, c'est un script d'action conséquente du dial qui modifie la variable, mais tu peu tres bien proposer des petites quete pour faire evoluert ton dialogue et ta variable..

Courage c'est plus facile qu'il n'y parrait !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
warpShadow
Légende vivante
Inscrit le: 01 Fév 2005
Messages: 363
Localisation: Perpignan
Répondre en citant
Posté le : 16/12/2005 12:32:59 Sujet du message :

Bon, ben puisque tout le monde me le dit, j'essaie encore Smile

tu as parlé de base de données... Un rapport avec les bibliothèques de script ? ou c'est autre chose ? et dans ce cas, ça marche comment ?

merci ^^
_________________
Asphia
Module RP Médiéval Fantastique pour Neverwiner Nights
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
warpShadow
Légende vivante
Inscrit le: 01 Fév 2005
Messages: 363
Localisation: Perpignan
Répondre en citant
Posté le : 16/12/2005 12:46:49 Sujet du message :

bon, en fait j'y arrive pas ^^ mais je pense avoir trouvé une parade qui me serait plus accessible niveau script :

- 1ere rencontre : le dragon menace le PJ, et si le PJ reste poli, le dragon lui montre une partie de son magasin (magasin 1).
> Le PJ recçoit un objet "contrat de vente de Zelphyr" (le dragon) de tag et resref "drag1".

- 2eme rencontre : le dragon fait mine de ne pas s'interesser au PJ, et ne lui montre encore une fois qu'une partie de son magasin (magasin 1).
> Condition d'execution : Le PJ doit avoir l'objet de tag "drag1". On détuit cet objet et on lui donne le même, mais de tag "drag2".

- 3eme rencontre : le dragon se résigne et lui montre tout son magasin (magasin2).
> condition d'execution : idem, le PJ doit avoir "drag2", et on lui file "drag3".

- 4eme rencontre et au dela : le dragon connait bien le PJ, et lui montre tout son magasin (magasin2).
> condition : le PJ doit avoir "drag3".


Un peu plus chiant du point de vue de ceux qui maitrisent les variables, j'en suis sûr Laughing
Mais bon, je veux pas non plus vous demander de me pondre chaque script de chaque noeud de dialogue sous prétexte que je n'y arrive pas ^^

Donc ben je vais tester ça

merci encore ^^ ++
_________________
Asphia
Module RP Médiéval Fantastique pour Neverwiner Nights
 
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 45.172ms