Invité Invité
| Sujet: Gestion de quêtes très simplifié Lun 05 Mai 2008, 23:07 | |
| 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://tonyryu.free.fr/datas/scripts_rmxp/Def_Quete.txtGestion des quêtes : http://tonyryu.free.fr/datas/scripts_rmxp/Gestion_Quete.txtet 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://tonyryu.free.fr/pages/RMXP/quete_gen.htmlJe 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 : - Code:
-
#============================================================================== # ■ 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 : - Code:
-
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 courageu. <> : Fin <> : Fin <>
Et pour finir, un petit screenshoot du rendu : N'hésitez pas à poster des commentaires ou des demandes d'amélioration. |
|