Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ################################################################################
- ##### QUEST DATABASE
- ####################
- ################################################################################
- ##### Pour ajouter une nouvelle quête dans la QuestDatabase :
- #
- # /!\ Il faut faire tout ça avant de faire quest(id) /!\
- #
- # Dans un appel de script, faire :
- # add_new_quest(id)
- #
- # La quête est maintenant créée.
- # Il faut ensuite définir les caractéristiques de la quête.
- # Pour cela, rien de plus simple :
- #
- # $data_quests[id].name = "Runaway Bride"
- # $data_quests[id].level = 3
- # $data_quests[id].iconindex = 7
- # $data_quests[id].description = "A local woman was abducted by bandits on the night of her wedding."
- # $data_quests[id].objectives = Quest_Objectives.new([],[])
- # $data_quests[id].objectives.mission[0] = "Talk to Boris"
- # $data_quests[id].objectives.mission[1] = "Search the Haunted Woods for Boris' wife, Ladia"
- # $data_quests[id].objectives.mission[2] = "Slay the Bandits"
- # $data_quests[id].objectives.mission[3] = "Escort Ladia back to Boris"
- # $data_quests[id].objectives.prime = [1, 2]
- # $data_quests[id].categorie = []
- # $data_quests[id].baniere = ""
- # $data_quests[id].teinte = 0
- # $data_quests[id].giver = "Boris"
- # $data_quests[id].location ="the Haunted Woods"
- # $data_quests[id].evcommun = 0
- # $data_quests[id].rewards = Quest_Rewards.new([])
- # $data_quests[id].rewards[1] = [:item, 1, 3]
- # $data_quests[id].rewards[2] = [:gold, 500]
- # $data_quests[id].layout = false
- #
- # Votre Quête est entièrement configurée ? Faites maintenant une sauvegarde et voilà votre quête sauvegardée dans Quests.rvdata2 !
- #
- # /!\ Il faut faire tout ça avant de faire quest(id) /!\
- #
- ################################################################################
- ##### Début du Script
- #####################
- #####################
- # Game Interpreter
- # - Ajout d'une méthode pour créer une nouvelle quête
- #####################
- class Game_Interpreter
- def add_new_quest(id, *args)
- $data_quests[id] = Quest.new(args)
- end
- end
- #####################
- # DataManager
- # - Création et sauvegarde du fichier Quests.rvdata2
- #####################
- module DataManager
- class << self
- alias lnd_quest load_normal_database
- def load_normal_database
- lnd_quest
- load_data_quest # Chargement
- end
- def load_data_quest
- name = "Data/Quests.rvdata2"
- if FileTest.exist?(name)
- $data_quests = load_data(name)
- else
- initialize_data_quests # Si le fichier n'existe pas, on le crée
- end
- end
- alias sgwr_quest save_game_without_rescue
- def save_game_without_rescue(index)
- save_data_quests
- sgwr_quest(index)
- end
- def initialize_data_quests
- File.open(name.to_s, "a+")
- $data_quests = Hash.new # il faut que $data_quests contienne au moins une ligne, sinon ça plante
- save_data_quests # on le sauvegarde
- end
- def save_data_quests
- name = "Data/Quests.rvdata2"
- File.open(name, "w") do |file|
- Marshal.dump($data_quests, file)
- end
- end
- end
- end
- #####################
- # Quest
- # - Object qui correspond aux quêtes
- #####################
- class Quest
- attr_accessor :name, :giver, :description, :questnote, :location, :level, :iconindex, :teinte, :evcommun, :categorie, :banniere,
- :objectives, :rewards, :layout
- def initialize(*args) # Même ordre qu'au-dessus
- @name = args[0] ? args[0] : ""
- @giver = args[1] ? args[1] : ""
- @description = args[2] ? args[2] : ""
- @questnote = args[3] ? args[3] : ""
- @location = args[4] ? args[4] : ""
- @level = args[5] ? args[5] : 0
- @iconindex = args[6] ? args[6] : 0
- @teinte = args[7] ? args[7] : 0
- @evcommun = args[8] ? args[8] : 0
- @categorie = args[9] ? args[9] : 0
- @banniere = args[10] ? args[10] : ""
- @objectives = args[11] ? args[11] : []
- @rewards = args[12] ? args[12] : []
- @layout = args[13] ? args[13] : false
- end
- end
- #####################
- # Quest Rewards
- # - Object qui correspond aux primes des quêtes
- #####################
- class Quest_Rewards
- def initialize(*args) # Même ordre qu'au-dessus
- @rewards = args
- end
- def []=(id, a)
- @rewards[id] = a
- end
- def tb
- @rewards
- end
- end
- #####################
- # Quest Rewards
- # - Object qui correspond aux objectifs des quêtes (et le numéro des objectifs qui ont des primes)
- #####################
- class Quest_Objectives
- attr_accessor :mission, :prime
- def initialize(*args) # Même ordre qu'au-dessus
- @mission = args[0] ? args[0] : []
- @prime = args[1] ? args[1] : []
- end
- end
- #####################
- # QuestData
- # - Ajout de notre $data_quests au script de ModernAlgebra
- #####################
- module QuestData
- class << self
- def setup_quest(quest_id)
- if $data_quests.keys.include?(quest_id)
- q = { :objectives => [], :prime_objectives => [] }
- q[:name] = $data_quests[quest_id].name
- q[:level] = $data_quests[quest_id].level
- q[:iconindex] = $data_quests[quest_id].iconindex
- q[:description] = $data_quests[quest_id].description
- q[:client] = $data_quests[quest_id].giver
- q[:location] = $data_quests[quest_id].location
- $data_quests[quest_id].objectives.mission.each do |obj|
- q[:objectives] << obj
- end
- q[:prime_objectives] = $data_quests[quest_id].objectives.prime
- q[:custom_categories] = $data_quests[quest_id].categorie
- q[:banner] = $data_quests[quest_id].banniere
- q[:banner_hue] = $data_quests[quest_id].teinte
- q[:common_event_id] = $data_quests[quest_id].evcommun
- q[:rewards] = $data_quests[quest_id].rewards.tb
- q[:layout] = false
- return q
- else
- print "Quête non configurée !\n"
- return {}
- end
- end
- end
- end
- ###################
- ##### Fin du Script
- ################################################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement