Hello
En discutant avec lolitablue, on a pensé qu'il serait bien d'avoir un tutoriel en Français sur les quêtes.
On pourra aussi apprendre à bien bâtir un dialogue et manipuler des variables !
Cela devrait pouvoir intéresser les personnes qui voudraient se lancer dans le modding.
Tuto 1
Introduction :
Commençons par une simple quête, récupérer un item et le ramener au personnage qui le demande.
Il faut d'abord créer le personnage et le plus simple est de le situer dans une scène existante comme par exemple une taverne.
Je vais prendre l'exemple de Mixora, un des personnages dans mon mod (Nox RPG).
Création du personnage :
- Il faut le créer dans le module_troops.py du ms (module system) !
Insérer impérativement ce qui suit après la ligne : ["merchants_end","merchants_end","merchants_end",tf_hero,
Donc avant #Used for player enterprises et ["town_1_master_craftsman", "{!}Town 1 Craftsman", "{!}Town 1 Seneschal", tf_hero|tf_is_merchant,
* Explications pour scn_town_6_tavern|entry(1) :
- scn_town_6_tavern est la taverne de Praven dans la Native, entry(1) est le point d'entée où apparaît le personnage.
Note : Il faudra bien sûr éditer la scène pour mettre physiquement l'entry(1) à l'endroit où vous voulez le personnage dans la scène.
Voilà, le nouveau personnage est créé !
Compiler le ms avant de continuer (build_module.bat)
****
Création de la quête :
Par exemple, amener à Mixora du sel pour conserver des aliments (Pour simplifier on prend un item existant).
C'est dans module_quests.py que cela se passe.
Placer ce qui suit après : ("intrigue_against_lord", "Intrigue against Lord", qf_random_quest, "{!}Criticize {s11} in Private"),
Donc avant : #Dynamic quests begin here
Je vous recommande de programmer les textes en Anglais et d'effectuer la traduction en Français plus tard.
* Explications :
"mixora_q1" est la référence de la quête (Mettez ce que vous voulez).
"Bag of salt" est le nom qui sera affiché dans le journal des quêtes.
Traduction du texte de la quête : À la taverne de Praven un gars a besoin de sel pour consever de la nourriture. Lui amener un sac de sel.^Indice : Acheter du sel.
Compiler le ms avant de continuer (build_module.bat).
La quête est validée.
****
Création du dialogue :
C'est dans module_dialogs.py que cela se passe.
Pour un personnage dans une taverne il faut placer le dialogue après le paragraphe #Tavern Talk (with farmers)
Dernière ligne du paragraphe : "Thank you for helping us {sir/madam}. Crush those bandits!", "close_window", []],
Donc avant le paragraphe #Tavern Talk (with troops)
Les lignes précédées d'un # ne sont pas prises en compte mais elles servent à se repérer dans le dialogue.
Le programme est lu de haut en bas. Et le tout début du dialogue est tout en bas (Valeur de la "variable dialogue" à zéro).
Importance des variables :
Création de deux variables. Grâce à la "variable dialogue" du personnage on sait où on en est dans la progression du dialogue ($mixora_a1).
Une deuxième variable est très fortement recommandée pour le suivi de la quête. on l’appellera "variable quête" ($qt_mixora_q1). Pas indispensable pour une quête toute simple mais il vaut mieux prendre l'habitude de la créer.
* Explications :
- Les deux lignes après # Gen
Elles n'ont pas de "variable dialogue" ! Elles ne sont pas indispensables mais peuvent être très utiles en cas de problème, par exemple si on a fait dans la suite du dialogue une erreur dans la "variable dialogue", c'est cette partie de dialogue qui s'affichera. Lors d'un test, on saura alors qu'il y a un problème. Normalement ces deux lignes ne doivent jamais apparaître si on ne s'est pas trompé.
* Le véritable dialogue débute avec les lignes après # Prise quest
La première ligne est très importante. C'est celle qui donnera le "go" du dialogue.
Composition de la ligne :
[anyone, "start", [(eq,"$g_talk_troop", "trp_mixora"),(eq,"$mixora_a1", 0),(eq,"$qt_mixora_q1", 0)], "Texte introduction dialogue.", "mixora_01",[]],
- Un dialogue devra toujours commencer par [anyone, "start",
"start" est ici le fanion de début de ligne.
- Puis par les variables :
[(eq,"$g_talk_troop", "trp_mixora"), -> On attribue à la "variable personnage" ($g_talk_troop) le nom du personnage que l'on a créé (ici trp_mixora).
(eq,"$mixora_a1", 0), -> On crée la "variable dialogue", au départ on lui donne la valeur zéro (C'est la valeur par défaut d'une nouvelle variable).
(eq,"$qt_mixora_q1", 0)], -> On crée la "variable quête", au départ on lui donne la valeur zéro.
- La ligne se poursuit par le "Texte introduction dialogue."
- La ligne doit avoir un fanion de fin, ici c'est "mixora_01", on peut mettre ce que l'on veut. Cela signifie que l'on poursuivra le dialogue avec la ou les lignes ayant ce même fanion mais comme fanion de début de ligne.
Note : Lorsque l'on crée une nouvelle variable, il faudra la faire évoluer au moins une fois sinon elle restera orpheline et sortira en erreur lors de la compilation.
* Les deux lignes qui suivent :
[anyone|plyr, "mixora_01", [], "Yes, I am interested.", "mixora_01a",[]],
[anyone|plyr, "mixora_01", [], "No, I am not interested.", "close_window",[]],
- Une réponse à une introduction de dialogue commencera toujours par [anyone|plyr,
- Puis par le fanion de début de ligne : "mixora_01",
- Puis par le texte de la réponse.
- Et enfin par le fanion de fin de ligne.
Ici deux possibilités de réponses qui s'affichent , en cliquant sur la deuxième vous mettez fin au dialogue. "close_window" est le fanion de fin de dialogue.
En cliquant sur la première réponse (fanion de fin de ligne "mixora_01a") vous poursuivez le dialogue avec la ligne ayant pour fanion de début de ligne "mixora_01a" !
* Poursuite du dialogue avec :
[anyone, "mixora_01a", [], "I explain to you. I have food to be preserved. If possible I would like to have at least a bag of salt. I'll give you a nice reward.", "mixora_01b",[]],
- Une réponse du personnage avec qui on parle débutera toujours par [anyone,
- Puis fanion de début de ligne, puis texte, puis fanion de fin de ligne.
* Donc poursuite du dialogue avec :
[anyone|plyr, "mixora_01b", [], "That's nice offer. I bring you at least a bag of salt!", "mixora_01c",[
(assign,"$mixora_a1", 1), -> On fait évoluer la valeur de la "variable dialogue" à 1, ce qui signifie qu'après la fin de ce dialogue, le nouveau dialogue débutera au prochain [anyone, "start", et (eq,"$mixora_a1", 1),
(assign,"$qt_mixora_q1", 1), -> On fait évoluer la valeur de la "variable quête" à 1, juste pour la valider. Vous pourrez apprendre à vous en servir pour une quête plus complexe (Futur tuto).
(setup_quest_text, "qst_mixora_q1"), -> Cette ligne affichera le nom de la quête mixora_q1 dans le journal des quêtes.
(str_store_string, s2, "@At the tavern in Praven, a guy needs salt to preserve food. Bring him a bag of salt.^Clue: Buying salt."), -> Cette ligne affiche le texte de la quête.
(call_script, "script_start_quest","qst_mixora_q1","trp_mixora"), -> Cette ligne valide la quête mixora_q1 pour le personnage trp_mixora !
(call_script, "script_change_player_relation_with_troop","$g_talk_troop", 5)]], -> La relation avec le personnage avec qui on parle évolue de 5 points.
- Vous avez accepté la quête en cliquant sur cette réponse.
- Vous avez remarqué qu'il y a des crochets [], au début de la ligne et d'autres à la fin de ligne. Les premiers servent à mettre une ou des conditions à l'affichage du texte. Les derniers servent à mettre les conséquences de la réponse qui s'affiche. C'est le cas ici. Voir la signification de chaque conséquence après le signe ->
- Sinon vous avez la possibilité de refuser la quête en cliquant sur la deuxième réponse :
[anyone|plyr, "mixora_01b", [], "I don't have time for that! Farewell.", "close_window",[]],
* La dernière ligne met fin à ce dialogue si on a accepté la quête (Sinon on reprend au début du dialogue, la "variable dialogue" n'a pas évoluée, elle reste à zéro) :
[anyone, "mixora_01c", [],"I count on you!", "close_window",[]],
!!!!!
* Je pense maintenant que vous avez compris que la prochaine fois que vous parlerez avec Mixora, le nouveau dialogue débutera par la ligne :
[anyone, "start", [(eq,"$g_talk_troop", "trp_mixora"),(eq,"$mixora_a1", 1)], "Have you some salt?","mixora_02",[]],
* Il se poursuivra par deux réponses possibles :
[anyone|plyr, "mixora_02", [(player_has_item,"itm_salt")], "Yes I have.", "mixora_02a",[
(assign,"$mixora_a1", 2), -> On fait évoluer la valeur de la "variable dialogue" à 2, ce qui signifie qu'après la fin de ce dialogue, le nouveau dialogue débutera au prochain [anyone, "start", et (eq,"$mixora_a1", 2),
(troop_remove_item, "trp_player", "itm_salt"), -> On enlève l'objet de quête de l'inventaire du héros.
(call_script, "script_change_troop_renown", "trp_player", 5), -> La renommée du héros évolue de 5 points.
(call_script, "script_change_player_honor", 2), -> L'honneur du héros évolue de 2 points.
(call_script, "script_change_player_relation_with_troop","$g_talk_troop", 10), -> La relation avec le personnage avec qui on parle évolue de 10 points.
(call_script, "script_end_quest","qst_mixora_q1"), -> Met fin à la quête mixora_q1, donc disparaît du journal des quêtes.
(troop_add_gold, "trp_player", 1000), -> On attribue au héro de l'argent, ici 1000 deniers.
(add_xp_as_reward, 500)]], -> On attribue 500 points d'expérience au héros.
[anyone|plyr, "mixora_02", [(neg|player_has_item,"itm_salt")], "No, not yet.", "close_window",[]],
- Les premiers crochets contiennent une condition d'affichage pour les deux réponses possibles :
La première réponse s'affiche si vous avez sur vous l'item demandé, ici un sac de sel (player_has_item,"itm_salt"), la deuxième réponse ne s'affiche pas.
La deuxième réponse s'affiche si vous n'avez pas l'item demandé (neg|player_has_item,"itm_salt"), la première réponse ne s'affiche pas.
* La première réponse a bien sûr des conséquences puisque l'on a réussi la quête. Voir la signification de chaque conséquence après le signe ->
* Si la quête est réussie, ce dialogue se termine par la ligne :
[anyone, "mixora_02a", [], "Really? Congratulations {sir/lassie}! Here is your reward, some money.","close_window",[]],
!!!!!
* Si vous avez terminé la quête, toutes les prochaines fois que vous parlerez avec Mixora vous aurez toujours ce dialogue (Sauf si vous le faites évoluer) qui débutera par la ligne :
[anyone, "start", [(eq,"$g_talk_troop", "trp_mixora"),(eq,"$mixora_a1", 2)], "Greetings {playername}.","mixora_bye01",[]],
* Et se terminera par cette réponse :
[anyone|plyr, "mixora_bye01", [], "Greetings to you, Mixora.", "close_window",[]],
********
Traduction des dialogues :
* Suite générique après fin quête (eq,"$mixora_a1", 2) :
"start" Salutations {playername}. "mixora_bye01"
"mixora_bye01" Salutations à vous, Mixora. "close_window"
* Suite du dialogue (eq,"$mixora_a1", 1) :
"start" Avez-vous du sel ? "mixora_02"
"mixora_02" Oui. "mixora_02a"
"mixora_02" Non, pas encore. "close_window"
"mixora_02a" Vraiment ? Félicitations {monsieur/madame} ! Votre récompense, de l'argent. "close_window"
* Début du dialogue (eq,"$mixora_a1", 0) :
"start" Salutations {monsieur/madame}, je suis Mixora et si vous cherchez du travail, je peux vous en proposer un. "mixora_01"
"mixora_01" Oui, je suis {intéressé/intéressée}. "mixora_01a"
"mixora_01" Non, cela ne m'intéresse pas. "close_window"
"mixora_01a" Je vous explique. J'ai des aliments à consever et si c'est possible j'aimerais avoir au moins un sac de sel. Je vous promets une bonne récompense. "mixora_01b"
"mixora_01b" C'est une bonne offre, je vous amène au moins un sac de sel. "mixora_01c"
"mixora_01b" Je n'ai pas de temps à perdre avec cela. Adieu. "close_window"
"mixora_01c" Je compte sur vous ! "close_window"
# Gen :
"start" Salutations {monsieur/madame}, je suis Mixora. "mixora_bye00"
"mixora_bye00" Salutations monsieur. "close_window"
********
Fin du premier tuto !
J'espère qu'il vous aidera à créer des quêtes un peu partout !
Dans le tuto 2 qui suit, on complique la quête.
Tchin !
En discutant avec lolitablue, on a pensé qu'il serait bien d'avoir un tutoriel en Français sur les quêtes.
On pourra aussi apprendre à bien bâtir un dialogue et manipuler des variables !
Cela devrait pouvoir intéresser les personnes qui voudraient se lancer dans le modding.
Tuto 1
Introduction :
Commençons par une simple quête, récupérer un item et le ramener au personnage qui le demande.
Il faut d'abord créer le personnage et le plus simple est de le situer dans une scène existante comme par exemple une taverne.
Je vais prendre l'exemple de Mixora, un des personnages dans mon mod (Nox RPG).
Création du personnage :
- Il faut le créer dans le module_troops.py du ms (module system) !
Insérer impérativement ce qui suit après la ligne : ["merchants_end","merchants_end","merchants_end",tf_hero,
Donc avant #Used for player enterprises et ["town_1_master_craftsman", "{!}Town 1 Craftsman", "{!}Town 1 Seneschal", tf_hero|tf_is_merchant,
Code:
["mixora","Mixora","Mixora",tf_hero, scn_town_6_tavern|entry(1),reserved, fac_commoners,
[itm_leather_jacket,itm_hide_boots],def_attrib|level(2),wp(20),knows_common,0x0000000b8a106250149970a4198a4e9e00000000001eeb2b0000000000000000],
- scn_town_6_tavern est la taverne de Praven dans la Native, entry(1) est le point d'entée où apparaît le personnage.
Note : Il faudra bien sûr éditer la scène pour mettre physiquement l'entry(1) à l'endroit où vous voulez le personnage dans la scène.
Voilà, le nouveau personnage est créé !
Compiler le ms avant de continuer (build_module.bat)
****
Création de la quête :
Par exemple, amener à Mixora du sel pour conserver des aliments (Pour simplifier on prend un item existant).
C'est dans module_quests.py que cela se passe.
Placer ce qui suit après : ("intrigue_against_lord", "Intrigue against Lord", qf_random_quest, "{!}Criticize {s11} in Private"),
Donc avant : #Dynamic quests begin here
Code:
("mixora_q1", "Bag of salt", 0,
"{!}At the tavern in Praven, a guy needs salt to preserve food. Bring him a bag of salt.^Clue: Buying salt."),
* Explications :
"mixora_q1" est la référence de la quête (Mettez ce que vous voulez).
"Bag of salt" est le nom qui sera affiché dans le journal des quêtes.
Traduction du texte de la quête : À la taverne de Praven un gars a besoin de sel pour consever de la nourriture. Lui amener un sac de sel.^Indice : Acheter du sel.
Compiler le ms avant de continuer (build_module.bat).
La quête est validée.
****
Création du dialogue :
C'est dans module_dialogs.py que cela se passe.
Pour un personnage dans une taverne il faut placer le dialogue après le paragraphe #Tavern Talk (with farmers)
Dernière ligne du paragraphe : "Thank you for helping us {sir/madam}. Crush those bandits!", "close_window", []],
Donc avant le paragraphe #Tavern Talk (with troops)
Code:
### Dialogue Mixora, quest Sac de sel
[anyone, "start", [(eq,"$g_talk_troop", "trp_mixora"),(eq,"$mixora_a1", 2)], "Greetings {playername}.","mixora_bye01",[]],
[anyone|plyr, "mixora_bye01", [], "Greetings to you, Mixora.", "close_window",[]],
# Fin quest
[anyone, "start", [(eq,"$g_talk_troop", "trp_mixora"),(eq,"$mixora_a1", 1)], "Have you some salt?","mixora_02",[]],
[anyone|plyr, "mixora_02", [(player_has_item,"itm_salt")], "Yes I have.", "mixora_02a",[
(assign,"$mixora_a1", 2),
(troop_remove_item, "trp_player", "itm_salt"),
(call_script, "script_change_troop_renown", "trp_player", 5),
(call_script, "script_change_player_honor", 2),
(call_script, "script_change_player_relation_with_troop","$g_talk_troop", 10),
(call_script, "script_end_quest","qst_mixora_q1"),
(troop_add_gold, "trp_player", 1000),
(add_xp_as_reward, 500)]],
[anyone|plyr, "mixora_02", [(neg|player_has_item,"itm_salt")], "No, not yet.", "close_window",[]],
[anyone, "mixora_02a", [], "Really? Congratulations {sir/lassie}! Your reward, some money.","close_window",[]],
# Prise quest
[anyone, "start", [(eq,"$g_talk_troop", "trp_mixora"),(eq,"$mixora_a1", 0),(eq,"$qt_mixora_q1", 0)], "Greetings {sir/madam}. I am Mixora, and if you looking for a job, I can propose you one.", "mixora_01",[]],
[anyone|plyr, "mixora_01", [], "Yes, I am interested.", "mixora_01a",[]],
[anyone|plyr, "mixora_01", [], "No, I am not interested.", "close_window",[]],
[anyone, "mixora_01a", [], "I explain to you. I have food to be preserved. If possible I would like to have at least a bag of salt. I'll give you a nice reward.", "mixora_01b",[]],
[anyone|plyr, "mixora_01b", [], "That's nice offer. I bring you at least a bag of salt!", "mixora_01c",[
(assign,"$mixora_a1", 1),
(assign,"$qt_mixora_q1", 1),
(setup_quest_text, "qst_mixora_q1"),
(str_store_string, s2, "@At the tavern in Praven, a guy needs salt to preserve food. Bring him a bag of salt.^Clue: Buying salt."),
(call_script, "script_start_quest","qst_mixora_q1","trp_mixora"),
(call_script, "script_change_player_relation_with_troop","$g_talk_troop", 5)]],
[anyone|plyr, "mixora_01b", [], "I don't have time for that! Farewell.", "close_window",[]],
[anyone, "mixora_01c", [],"I count on you!", "close_window",[]],
# Gen
[trp_mixora, "start", [], "Greetings {sir/madam}. I am Mixora.", "mixora_bye00",[]],
[trp_mixora|plyr, "mixora_bye00", [], "Greetings sir.", "close_window",[]],
Le programme est lu de haut en bas. Et le tout début du dialogue est tout en bas (Valeur de la "variable dialogue" à zéro).
Importance des variables :
Création de deux variables. Grâce à la "variable dialogue" du personnage on sait où on en est dans la progression du dialogue ($mixora_a1).
Une deuxième variable est très fortement recommandée pour le suivi de la quête. on l’appellera "variable quête" ($qt_mixora_q1). Pas indispensable pour une quête toute simple mais il vaut mieux prendre l'habitude de la créer.
* Explications :
- Les deux lignes après # Gen
Elles n'ont pas de "variable dialogue" ! Elles ne sont pas indispensables mais peuvent être très utiles en cas de problème, par exemple si on a fait dans la suite du dialogue une erreur dans la "variable dialogue", c'est cette partie de dialogue qui s'affichera. Lors d'un test, on saura alors qu'il y a un problème. Normalement ces deux lignes ne doivent jamais apparaître si on ne s'est pas trompé.
* Le véritable dialogue débute avec les lignes après # Prise quest
La première ligne est très importante. C'est celle qui donnera le "go" du dialogue.
Composition de la ligne :
[anyone, "start", [(eq,"$g_talk_troop", "trp_mixora"),(eq,"$mixora_a1", 0),(eq,"$qt_mixora_q1", 0)], "Texte introduction dialogue.", "mixora_01",[]],
- Un dialogue devra toujours commencer par [anyone, "start",
"start" est ici le fanion de début de ligne.
- Puis par les variables :
[(eq,"$g_talk_troop", "trp_mixora"), -> On attribue à la "variable personnage" ($g_talk_troop) le nom du personnage que l'on a créé (ici trp_mixora).
(eq,"$mixora_a1", 0), -> On crée la "variable dialogue", au départ on lui donne la valeur zéro (C'est la valeur par défaut d'une nouvelle variable).
(eq,"$qt_mixora_q1", 0)], -> On crée la "variable quête", au départ on lui donne la valeur zéro.
- La ligne se poursuit par le "Texte introduction dialogue."
- La ligne doit avoir un fanion de fin, ici c'est "mixora_01", on peut mettre ce que l'on veut. Cela signifie que l'on poursuivra le dialogue avec la ou les lignes ayant ce même fanion mais comme fanion de début de ligne.
Note : Lorsque l'on crée une nouvelle variable, il faudra la faire évoluer au moins une fois sinon elle restera orpheline et sortira en erreur lors de la compilation.
* Les deux lignes qui suivent :
[anyone|plyr, "mixora_01", [], "Yes, I am interested.", "mixora_01a",[]],
[anyone|plyr, "mixora_01", [], "No, I am not interested.", "close_window",[]],
- Une réponse à une introduction de dialogue commencera toujours par [anyone|plyr,
- Puis par le fanion de début de ligne : "mixora_01",
- Puis par le texte de la réponse.
- Et enfin par le fanion de fin de ligne.
Ici deux possibilités de réponses qui s'affichent , en cliquant sur la deuxième vous mettez fin au dialogue. "close_window" est le fanion de fin de dialogue.
En cliquant sur la première réponse (fanion de fin de ligne "mixora_01a") vous poursuivez le dialogue avec la ligne ayant pour fanion de début de ligne "mixora_01a" !
* Poursuite du dialogue avec :
[anyone, "mixora_01a", [], "I explain to you. I have food to be preserved. If possible I would like to have at least a bag of salt. I'll give you a nice reward.", "mixora_01b",[]],
- Une réponse du personnage avec qui on parle débutera toujours par [anyone,
- Puis fanion de début de ligne, puis texte, puis fanion de fin de ligne.
* Donc poursuite du dialogue avec :
[anyone|plyr, "mixora_01b", [], "That's nice offer. I bring you at least a bag of salt!", "mixora_01c",[
(assign,"$mixora_a1", 1), -> On fait évoluer la valeur de la "variable dialogue" à 1, ce qui signifie qu'après la fin de ce dialogue, le nouveau dialogue débutera au prochain [anyone, "start", et (eq,"$mixora_a1", 1),
(assign,"$qt_mixora_q1", 1), -> On fait évoluer la valeur de la "variable quête" à 1, juste pour la valider. Vous pourrez apprendre à vous en servir pour une quête plus complexe (Futur tuto).
(setup_quest_text, "qst_mixora_q1"), -> Cette ligne affichera le nom de la quête mixora_q1 dans le journal des quêtes.
(str_store_string, s2, "@At the tavern in Praven, a guy needs salt to preserve food. Bring him a bag of salt.^Clue: Buying salt."), -> Cette ligne affiche le texte de la quête.
(call_script, "script_start_quest","qst_mixora_q1","trp_mixora"), -> Cette ligne valide la quête mixora_q1 pour le personnage trp_mixora !
(call_script, "script_change_player_relation_with_troop","$g_talk_troop", 5)]], -> La relation avec le personnage avec qui on parle évolue de 5 points.
- Vous avez accepté la quête en cliquant sur cette réponse.
- Vous avez remarqué qu'il y a des crochets [], au début de la ligne et d'autres à la fin de ligne. Les premiers servent à mettre une ou des conditions à l'affichage du texte. Les derniers servent à mettre les conséquences de la réponse qui s'affiche. C'est le cas ici. Voir la signification de chaque conséquence après le signe ->
- Sinon vous avez la possibilité de refuser la quête en cliquant sur la deuxième réponse :
[anyone|plyr, "mixora_01b", [], "I don't have time for that! Farewell.", "close_window",[]],
* La dernière ligne met fin à ce dialogue si on a accepté la quête (Sinon on reprend au début du dialogue, la "variable dialogue" n'a pas évoluée, elle reste à zéro) :
[anyone, "mixora_01c", [],"I count on you!", "close_window",[]],
!!!!!
* Je pense maintenant que vous avez compris que la prochaine fois que vous parlerez avec Mixora, le nouveau dialogue débutera par la ligne :
[anyone, "start", [(eq,"$g_talk_troop", "trp_mixora"),(eq,"$mixora_a1", 1)], "Have you some salt?","mixora_02",[]],
* Il se poursuivra par deux réponses possibles :
[anyone|plyr, "mixora_02", [(player_has_item,"itm_salt")], "Yes I have.", "mixora_02a",[
(assign,"$mixora_a1", 2), -> On fait évoluer la valeur de la "variable dialogue" à 2, ce qui signifie qu'après la fin de ce dialogue, le nouveau dialogue débutera au prochain [anyone, "start", et (eq,"$mixora_a1", 2),
(troop_remove_item, "trp_player", "itm_salt"), -> On enlève l'objet de quête de l'inventaire du héros.
(call_script, "script_change_troop_renown", "trp_player", 5), -> La renommée du héros évolue de 5 points.
(call_script, "script_change_player_honor", 2), -> L'honneur du héros évolue de 2 points.
(call_script, "script_change_player_relation_with_troop","$g_talk_troop", 10), -> La relation avec le personnage avec qui on parle évolue de 10 points.
(call_script, "script_end_quest","qst_mixora_q1"), -> Met fin à la quête mixora_q1, donc disparaît du journal des quêtes.
(troop_add_gold, "trp_player", 1000), -> On attribue au héro de l'argent, ici 1000 deniers.
(add_xp_as_reward, 500)]], -> On attribue 500 points d'expérience au héros.
[anyone|plyr, "mixora_02", [(neg|player_has_item,"itm_salt")], "No, not yet.", "close_window",[]],
- Les premiers crochets contiennent une condition d'affichage pour les deux réponses possibles :
La première réponse s'affiche si vous avez sur vous l'item demandé, ici un sac de sel (player_has_item,"itm_salt"), la deuxième réponse ne s'affiche pas.
La deuxième réponse s'affiche si vous n'avez pas l'item demandé (neg|player_has_item,"itm_salt"), la première réponse ne s'affiche pas.
* La première réponse a bien sûr des conséquences puisque l'on a réussi la quête. Voir la signification de chaque conséquence après le signe ->
* Si la quête est réussie, ce dialogue se termine par la ligne :
[anyone, "mixora_02a", [], "Really? Congratulations {sir/lassie}! Here is your reward, some money.","close_window",[]],
!!!!!
* Si vous avez terminé la quête, toutes les prochaines fois que vous parlerez avec Mixora vous aurez toujours ce dialogue (Sauf si vous le faites évoluer) qui débutera par la ligne :
[anyone, "start", [(eq,"$g_talk_troop", "trp_mixora"),(eq,"$mixora_a1", 2)], "Greetings {playername}.","mixora_bye01",[]],
* Et se terminera par cette réponse :
[anyone|plyr, "mixora_bye01", [], "Greetings to you, Mixora.", "close_window",[]],
********
Traduction des dialogues :
* Suite générique après fin quête (eq,"$mixora_a1", 2) :
"start" Salutations {playername}. "mixora_bye01"
"mixora_bye01" Salutations à vous, Mixora. "close_window"
* Suite du dialogue (eq,"$mixora_a1", 1) :
"start" Avez-vous du sel ? "mixora_02"
"mixora_02" Oui. "mixora_02a"
"mixora_02" Non, pas encore. "close_window"
"mixora_02a" Vraiment ? Félicitations {monsieur/madame} ! Votre récompense, de l'argent. "close_window"
* Début du dialogue (eq,"$mixora_a1", 0) :
"start" Salutations {monsieur/madame}, je suis Mixora et si vous cherchez du travail, je peux vous en proposer un. "mixora_01"
"mixora_01" Oui, je suis {intéressé/intéressée}. "mixora_01a"
"mixora_01" Non, cela ne m'intéresse pas. "close_window"
"mixora_01a" Je vous explique. J'ai des aliments à consever et si c'est possible j'aimerais avoir au moins un sac de sel. Je vous promets une bonne récompense. "mixora_01b"
"mixora_01b" C'est une bonne offre, je vous amène au moins un sac de sel. "mixora_01c"
"mixora_01b" Je n'ai pas de temps à perdre avec cela. Adieu. "close_window"
"mixora_01c" Je compte sur vous ! "close_window"
# Gen :
"start" Salutations {monsieur/madame}, je suis Mixora. "mixora_bye00"
"mixora_bye00" Salutations monsieur. "close_window"
********
Fin du premier tuto !
J'espère qu'il vous aidera à créer des quêtes un peu partout !
Dans le tuto 2 qui suit, on complique la quête.
Tchin !