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"51]],
                          
"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 :