Voici un nouveau script de gestion de quête très simplifié. La gestion de quête est l'un de mes premiers travaux sur RPGmakerXP. La première version était très complexe à mettre en place, légèrement buggée, et pas forcément esthétique. Corwin, a donc ensuite remodelé le systeme pour qu'il soit plus fonctionnel et surtout bien mieux visuellement. Hors, je me suis rendu compte, que beaucoup de gens avaient des difficultés à le mettre en place.
J'ai donc refait un systéme complet, plus intuitif, ressemblant à la gestion de quêtes sur WoW (Descriptif, objectif(s), récompense(s)). La seule chose a faire, contrairement à l'ancien systeme, et de copier les scripts au dessus du script main et vous avez un systeme fonctionnel. Il reste toujours à définir les quêtes, mais je fournis une page web qui permet de générer le code à copier.
Voici les scripts:
Définition de quêtes : http://www.tonyryudev.com/dev/rmxp/Def_Quete.txt
Gestion des quêtes : http://www.tonyryudev.com/dev/rmxp/Gestion_Quete.txt
et l'image à importer dans le dossier 'Picture' :
Vous êtes parfaitement libre de choisir une autre image, du moment qu'elle à le nom de 'grim1'
Voici le lien qui vous permettra de générer le code correspondant à vous quêtes : http://www.tonyryudev.com/dev/rmxp/quete_gen.html
Je récapitule les commandes à utiliser pour intéragir avec la gestion de quête :
$scene = Scene_Quete.new # Ouvre le livre de quete
$game_party.quete_demarrer(id_quete) # Démarre une quete
$game_party.quete_echouer(id_quete) # Fait echouer la quete
$game_party.quete_finir(id_quete) # Fait réussir la quete et donne les récompenses
$game_party.quete_parler(nom) # Permet de valider l'objectif de parler, quelque soit les quetes
$game_party.quete_termine?(id_quete) # Vérifie si les objectifs sont terminé # Dans commande condition
$game_party.quete_trouve?(id_quete) # Vérifie si la quête est trouvé # Dans commande condition
$game_party.quete_en_cours?(id_quete) # Vérifie si la quête est en cours # Dans commande condition
$game_party.quete_reussie?(id_quete) # Vérifie si la quête est réussi # Dans commande condition
$game_party.quete_echoue?(id_quete) # Vérifie si la quête est échoué # Dans commande condition
Les monstres tués sont automatiquement comptabilisés
Pour ajouter une quête, allez dans le script de définition de quête, et vous y trouverez cette classe au début :
(Ruby) | |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#==============================================================================
# ■ Data_Quete #------------------------------------------------------------------------------ # Contient la définition des quêtes # Version Date Auteur Commentaires # 1.00 12/09/2007 Tonyryu Création # #============================================================================== class Data_Quete attr_reader :tab_def_quete #-------------------------------------------------------------------------- # ● initialize #-------------------------------------------------------------------------- def initialize # Création du tableau de quêtes @tab_def_quete = [] # Définition des quêtes @tab_def_quete[0] = { "nom" => "Allégeance au roi de Flid", "desc" => "Votre arrivée au sein du royaume ne sait"+ "\npas faite sans remous."+ "\nAller porter allégeance au roi de Flid."+ "\n "+ "\nIl serait bon de ne pas trainer.", "but" => [["PARLER",0,"Roi de Flid"],["CHASSER",5,1]], "gain" => [["EXP",2000,],["ARGENT",300,],["OBJ",1,10]]} @tab_def_quete[1] = { "nom" => "Force d'outre-tombe II", "desc" => "Cela fait maintenant 2 semaines que les"+ "\nfantomes envahissent nos plaines, il faut"+ "\nles réexpédier d'où ils viennent. Usez"+ "\nde tous les moyens nécessaires.", "but" => [["CHASSER", 5, 1]], "gain" => [["ARME",1,5],["OBJ",2,1],["EXP",200]]} end end |
Si vous avez déjà généré une quête via la page web, vous pouvez constater que vous retrouver à peu de chose près les mêmes blocs :
Code |
@tab_def_quete[1] = { "nom" => "Force d'outre-tombe II", "desc" => "Cela fait maintenant 2 semaines que les"+ "\nfantomes envahissent nos plaines, il faut"+ "\nles réexpédier d'où ils viennent. Usez"+ "\nde tous les moyens nécessaires.", "but" => [["CHASSER", 5, 1]], "gain" => [["ARME",1,5],["OBJ",2,1],["EXP",200]]} |
Les descriptifs de quêtes, fournis avec le script, sont des exemples, n'hésitez surtout pas à les remplacer par vos définitions.
Attention, il faut juste respecter une chose, l'ID (index) de la quête, utilisé pour le tableau '@tab_def_quete'. La première définition doit avoir l'ID égale à 0, et ensuite il faut incrémenter de 1 en 1.
Voici un petit exemple d'événement :
Event |
Map ID: 1, Nom: MAP001 Evènement ID: 004, Nom: EV004 ------ PAGE 1 ------ Conditions de l'évènement : Apparence: - Character : 010-Lancer02, Ton : 0, Regarde en Bas, Modèle n°0, Opacité : 255, Transparence : Normal Mode de déplacement: - Type de déplacement : Fixe - Vitesse de déplacement: Lent - Fréquence de déplacement: Basse Options: - Animé lorsqu'il se déplace Conditions de déclenchement: - Par la touche action Commandes d'évènement: <>Condition : si Script : '$game_party.quete_trouve?(1)' <>Condition : si Script : '$game_party.quete_reussie?(1)' <>Message : Nous sommes heureux de te compter : : parmis nous!! <> : Sinon <>Condition : si Script : '$game_party.quete_termine?(1)' <>Message : Je vois que tu as fait ce qu'il fallait, : : prend ta récompense. <>Script : $game_party.quete_finir(1) <> : Sinon <>Message : Continue ainsi. <> : Fin <> : Fin <> : Sinon <>Message : Quelques mort-vivants nous agace. : : Veux tu nous aider à les renvoyer : : d'où ils viennent? <>Proposer un choix : Oui, Non : Si [Oui] faire : <>Message : Merci pour ton aide! <>Script : $game_party.quete_demarrer(1) <> : Si [Non] faire : <>Message : Tampis, je t'aurais cru plus courageux. <> : Fin <> : Fin <> |
Et pour finir, un petit screenshoot du rendu :