La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 14:30:08
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
warpShadow Légende vivante Messages: 363 Localisation: Perpignan |
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 | |
Elandil2 Chevalier Messages: 97 Localisation: sur mon ordi loir-et-cher |
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; } 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; } 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); } 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); } 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; } 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 | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Le GetLocalMachin ou le SetLocalMachin ne restera pas lors d'un reboot! il faut utilisé le SetCampaignMachin et le GetCampaignMachin
_________________ [http] |
Revenir en haut | |
Elandil2 Chevalier Messages: 97 Localisation: sur mon ordi loir-et-cher |
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 | |
Ecuyer paumé Acolyte Messages: 27 |
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 | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
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 | |
Anthraxcite Légende vivante Messages: 372 Localisation: Belgique |
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 | |
Seth de Sombrelune Seigneur Messages: 156 |
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) Voilà j'espere que c'est plus clair pour toi ! |
Revenir en haut | |
warpShadow Légende vivante Messages: 363 Localisation: Perpignan |
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 | |
Elandil2 Chevalier Messages: 97 Localisation: sur mon ordi loir-et-cher |
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 | |
Seth de Sombrelune Seigneur Messages: 156 |
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 | |
warpShadow Légende vivante Messages: 363 Localisation: Perpignan |
Bon, ben puisque tout le monde me le dit, j'essaie encore
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 | |
warpShadow Légende vivante Messages: 363 Localisation: Perpignan |
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 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 | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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