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 13:03:30
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 |
mork Seigneur Messages: 205 Localisation: A landeda, pres de brest |
Salut a tous
Je suis en train de travaille sur un dialogue de serveuse dans une auberge. Voici l'idée : -Que voulez vous ? --Une bonne bière fraiche ! ---Bien, c'est 5 po, autre chose ?* ----Oui -----**Retour au menu ----Non -----C'est (+Nombre de pièce d'or)** ------Les voici*** *Script de l'ActionConséquente : NWScript :
void main() { object oObject = GetObjectByTag ("COMMANDE");//L'objet pour enregistrer la commande SetLocalInt(oObject, "note", 5); } ** là est le problème ^^ ***Toujours dans l'ActionConséquente : NWScript :
void main() { int nTot = GetLocalInt (GetObjectByTag("COMMANDE"), "note"); TakeGoldFromCreature(nTot, GetPCSpeaker(), TRUE); } Donc pour le ** J'ai essaye avec un <CUSTOM#> Mais ca ne fonctionne pas. Pour ceux qui ne l'auront pas compris, j'aimerai que la serveuse dise combien de pièces d'or il doit payer. Si quelqu'un a une idée, ce serait sympas ! Merci d'avance. Mork _________________ Aléthéia | Ceux qui cherchent la vie trouveront la mort, ceux qui cherchent la mort trouveront la mort |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Tu as essayé la fonction SetCustomToken ?
_________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
mork Seigneur Messages: 205 Localisation: A landeda, pres de brest |
Oui, j'avais fait :
------C'est <CUSTOM#>.** **Dans l'action conséquente j'avais mit un truc du genre : 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. Mais ca compilait pas _________________ Aléthéia | Ceux qui cherchent la vie trouveront la mort, ceux qui cherchent la mort trouveront la mort |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Normal, le second argument que tu envoie est un int (entier).
Dans la fonction le type demandé en seconde position est un string (chaîne de caractère), c'est ici qu'il faut convertir le int en string pour qu'il soit "lisible". Utilise la fonction IntToString() avec ta variable à l'intérieur et c'est bon _________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
edisnotdead Grand Chevalier Messages: 132 |
mork a écrit : 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. Mais ca compilait pas # n est pas un int GetLocalInt(GetObjectByTag("COMMANDE"), "note") n est pas un string mais un int 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.
exemple 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. en gros pour recupe un int en string je croi qu il existe inttostring ou un truc dans le genre |
Revenir en haut | |
edisnotdead Grand Chevalier Messages: 132 |
lol sacré ivellios toujours une longueur d avance ^^
|
Revenir en haut | |
-MeteZ- Seigneur Messages: 205 Localisation: Région Parisienne (95) |
Tien bah je donne le script que j'ai fait pour une serveuse qui prend une commande (et oui c'est ton jour de chance )
Je part du principe que 4 alcool sont en vente. Serveuse : Bonjour. -"Je voudrai commander" -"Je n'est pas encore choisi" Dans le Action conséquente de "Je voudrai commander" : NWScript :
void main() { SetLocalInt(OBJECT_SELF, "COMMANDE_BIERE", 0); SetLocalInt(OBJECT_SELF, "COMMANDE_ROSE", 0); SetLocalInt(OBJECT_SELF, "COMMANDE_VODKA", 0); SetLocalInt(OBJECT_SELF, "COMMANDE_BLANC", 0); } (On remet les commandes a zéro.) Ensuite il y a deux solutions pour la serveuse. 1. "Oui qu'avez vous choisi ?" 2. "Le montant total s'élève à <CUSTOM1500>. Que prendrez avec ceci ?" Aucune conditions sur les choix. Donc le dialogue 1 s'ouvre. Là on list les choix d'alcool qui se présente au joueur. En dernière option: il peut quitter le dialogue. Sur chacun des choix d'alcool on met en action conséquente : NWScript :
void main() { int iBiere = GetLocalInt(OBJECT_SELF, "COMMANDE_BIERE"); iBiere++; SetLocalInt(OBJECT_SELF, "COMMANDE_BIERE", iBiere); int iRose = GetLocalInt(OBJECT_SELF, "COMMANDE_ROSE"); // On retrouve les anciens choix int iVodka = GetLocalInt(OBJECT_SELF, "COMMANDE_VODKA"); int iBlanc = GetLocalInt(OBJECT_SELF, "COMMANDE_BLANC"); int iPrixAPayer = iBiere * 5 + iRose * 10 + iVodka * 15 + iBlanc * 20; // On calcul le prix total a payer SetCustomToken(1500, IntToString(iPrixAPayer)); // Le set custom 1500 qui contient le montant total de l'addition } (Dans l'exemple il n'y a que l'action conséquente de la bière mais dans le dialogue il y en a un identique pour chaque alcool en pensant bien a changer les valeurs nécessaires.) Dans la branche suivante du choix de l'alcool on colle en tant que lien le discours de la serveuse un peu plus haut : 2. "Le montant total s'élève à <CUSTOM1500>. Que prendrez avec ceci ?" A cette branche on colle en tant que lien les choix de d'alcool de l'utilisateur. Récapitulatif: Jusqu'a là l'utilisateur peut stocker ses alcools et le montant total est a chaque fois calculé. C'est enfaite une boucle Mais il nous manque quelque chose : Payer et voir la liste d'alcools commandé. Alors on va remedier a ca: Dans 2. "Le montant total s'élève à <CUSTOM1500>. Que prendrez avec ceci ?" Après la liste des liens des alcools on met deux choix supplémentaires à l'utilisateur : 1. "Vous pouvez répétez mes anciens choix ?" 2.C'est tout. Je vais payer. Intérressons nous d'abord à 1. "Vous pouvez répétez ..." Dans le action conséquents de celui ci on liste le nombre d'alcools commandés de tels sortes a pouvoir les utiliser dans des custom token NWScript :
void main() { int iBiere = GetLocalInt(OBJECT_SELF, "COMMANDE_BIERE"); int iRose = GetLocalInt(OBJECT_SELF, "COMMANDE_ROSE"); int iVodka = GetLocalInt(OBJECT_SELF, "COMMANDE_VODKA"); int iBlanc = GetLocalInt(OBJECT_SELF, "COMMANDE_BLANC"); SetCustomToken(1501, IntToString(iBiere)); SetCustomToken(1502, IntToString(iRose)); SetCustomToken(1503, IntToString(iVodka)); SetCustomToken(1504, IntToString(iBlanc)); } Vous l'aurez compris, la serveuse répond : "Bien sûr, vous avez commander <CUSTOM1501> bière de Mur'ben, <CUSTOM1502> vin rosé de Roussillon, <CUSTOM1503> vodka de Rospolvki et <CUSTOM1504> blanc des Landes". L'utilisateur a le choix de continuer a commander ou de payer. Pour payer vous faîtes un lien sur "C'est tout je vais payer" vu plus en haut. Pour continuer vous faîtes un lien sur le dialogue de la serveuse 2. "Le montant total s'élève à <CUSTOM1500>. Que prendrez avec ceci ?" (vu très haut dans le dialogue) Voilà il nous reste plus qu'a faire le script pour que l'utilisateur paye. Jusque là toutes les boucles inter-réagissent entre elles de façon à ce que l'utilisateur puisse faire ce qu'il veut. Voilà le script pour payer. NWScript :
void main() { int iBiere = GetLocalInt(OBJECT_SELF, "COMMANDE_BIERE"); int iRose = GetLocalInt(OBJECT_SELF, "COMMANDE_ROSE"); int iVodka = GetLocalInt(OBJECT_SELF, "COMMANDE_VODKA"); int iBlanc = GetLocalInt(OBJECT_SELF, "COMMANDE_BLANC"); int iPrixAPayer = iBiere * 5 + iRose * 10 + iVodka * 15 + iBlanc * 20; SetCustomToken(1500, IntToString(iPrixAPayer)); if(GetGold(GetPCSpeaker()) < iPrixAPayer) { ActionSpeakString("Vous n'avez pas l'argent pour payer votre note !"); } else { ActionSpeakString("Merci !"); TakeGoldFromCreature(iPrixAPayer, GetPCSpeaker(), TRUE); int boucle = 0; while(boucle != iBiere) { CreateItemOnObject("biredemurben", GetPCSpeaker(), 1); boucle++; } boucle = 0; while(boucle != iRose) { CreateItemOnObject("ros", GetPCSpeaker(), 1); boucle++; } boucle = 0; while(boucle != iVodka) { CreateItemOnObject("vodka", GetPCSpeaker(), 1); boucle++; } boucle = 0; while(boucle != iBlanc) { CreateItemOnObject("blanc", GetPCSpeaker(), 1); boucle++; } } } J'espère que ca aura aider quelqu'un _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | |
mork Seigneur Messages: 205 Localisation: A landeda, pres de brest |
Salut a tous et a toutes !
Après m'ettre absenté je vois que j'ai eu quelques reponses, et je tiens a dire un grand merci a tout le monde ! Tout ca va me servir ! @+ _________________ Aléthéia | Ceux qui cherchent la vie trouveront la mort, ceux qui cherchent la mort trouveront la mort |
Revenir en haut | |
-MeteZ- Seigneur Messages: 205 Localisation: Région Parisienne (95) |
J'espère que mon post d'au dessus sur la serveuse n'est pas trop confu . De toute façon tu prend juste les scripts et tu les ajustes en fonction de tes besoins.
_________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
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