Accueil - Forum - Bibliothèque de ressources
____

La couche de données dynamiques



On crée tout d'abord une classe Game_Quest qui va servir à modéliser une quête qui s'initialise avec les données d'un objet RPG::Quest, et qui au départ n'est pas terminée. Il faut aussi une méthode pour savoir si elle est terminée et une méthode qui permet de terminer la quête et de donner l'argent et l'expérience.

Code Rubyclass Game_Quest
 
  attr_reader :id
  attr_reader :name
  attr_reader :description
  attr_reader :gold
  attr_reader :exp
 
  def initialize(quest_id)
    # On récupère tout d'abord l'objet RPG::Quest pour l'initialisation
    quest = $data_quests[quest_id]
     # et on initialise les données
    @id = quest.id
    @name = quest.name
    @description = quest.description
    @gold = quest.gold
    @exp = quest.exp
    # La quête n'est pas terminée au départ
    @finished = false
  end
 
  # Méthode qui renvoie si la quête est terminée ou non
  def finished?
    return @finished
  end
 
  # Méthode qui permet de terminer la quête
  def finish
    # La quête est terminée
    @finished = true
    # Le groupe gagne de l'argent  
    $game_party.gain_gold(@gold)
    # Les membres du groupe gagnent de l'expérience
    for actor in $game_party.actors
      actor.exp += @exp
    end
  end
 
end


Il reste maintenant à rajouter à la classe Game_Party de quoi recevoir et finir des quêtes.
Code Rubyclass Game_Party
 
  attr_reader :quests
 
  # On rajoute dans Game_Party un tableau qui contient les quêtes reçus
  alias quest_initialize initialize
  def initialize
    quest_initialize
    @quests = []
  end
 
  # Méthode qui pemet de recevoir une quête
  def get_quest(quest_id)
    # On ajoute à la liste des quêtes un nouvel objet Game_Quest
    @quests << Game_Quest.new(quest_id)
  end
 
  # Méthode qui permet de finir une quête
  def finish_quest(quest_id)
    # On récupère une quête d'id quest_id qui n'est pas terminée
    quest = @quests.find { |quest|
      quest.id == quest_id and not quest.finished?
    }
    # Si une telle quête existe, on la termine
    quest.finish if quest != nil
  end
 
end


Pour recevoir une quête d'id quest_id, on utilisera le script
Code Ruby$game_party.get_quest(quest_id)")

et pour la terminer ensuite
Code Ruby$game_party.finish_quest(quest_id)
Informations
Page vue 2052 fois | Auteur : Samarium

RPG Creative version 5 - Libérez votre créativité ! ; Mai 2005 - Mai 2012
0.041s - Optimisé pour une résolution 1024*728 - Tous droits réservés.

Contact - Partenaires - Historique - A propos