Advertisement
biward

[iVarlix Request] - QuestDatabase

Apr 29th, 2014
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 6.10 KB | None | 0 0
  1. ################################################################################
  2. ##### QUEST DATABASE
  3. ####################
  4. ################################################################################
  5. ##### Pour ajouter une nouvelle quête dans la QuestDatabase :
  6. #
  7. # /!\ Il faut faire tout ça avant de faire quest(id) /!\
  8. #
  9. # Dans un appel de script, faire :
  10. # add_new_quest(id)
  11. #
  12. # La quête est maintenant créée.
  13. # Il faut ensuite définir les caractéristiques de la quête.
  14. # Pour cela, rien de plus simple :
  15. #
  16. # $data_quests[id].name = "Runaway Bride"
  17. # $data_quests[id].level = 3
  18. # $data_quests[id].iconindex = 7
  19. # $data_quests[id].description = "A local woman was abducted by bandits on the night of her wedding."
  20. # $data_quests[id].objectives = Quest_Objectives.new([],[])
  21. # $data_quests[id].objectives.mission[0] = "Talk to Boris"
  22. # $data_quests[id].objectives.mission[1] = "Search the Haunted Woods for Boris' wife, Ladia"
  23. # $data_quests[id].objectives.mission[2] = "Slay the Bandits"
  24. # $data_quests[id].objectives.mission[3] = "Escort Ladia back to Boris"
  25. # $data_quests[id].objectives.prime = [1, 2]
  26. # $data_quests[id].categorie = []
  27. # $data_quests[id].baniere = ""
  28. # $data_quests[id].teinte = 0
  29. # $data_quests[id].giver = "Boris"
  30. # $data_quests[id].location ="the Haunted Woods"
  31. # $data_quests[id].evcommun = 0
  32. # $data_quests[id].rewards = Quest_Rewards.new([])
  33. # $data_quests[id].rewards[1] = [:item, 1, 3]
  34. # $data_quests[id].rewards[2] = [:gold, 500]
  35. # $data_quests[id].layout = false
  36. #
  37. # Votre Quête est entièrement configurée ? Faites maintenant une sauvegarde et voilà votre quête sauvegardée dans Quests.rvdata2 !
  38. #
  39. # /!\ Il faut faire tout ça avant de faire quest(id) /!\
  40. #
  41. ################################################################################
  42. ##### Début du Script
  43. #####################
  44.  
  45. #####################
  46. # Game Interpreter
  47. # - Ajout d'une méthode pour créer une nouvelle quête
  48. #####################
  49. class Game_Interpreter
  50.   def add_new_quest(id, *args)
  51.     $data_quests[id] = Quest.new(args)
  52.   end
  53. end
  54.  
  55. #####################
  56. # DataManager
  57. # - Création et sauvegarde du fichier Quests.rvdata2
  58. #####################
  59. module DataManager  
  60.   class << self
  61.     alias lnd_quest load_normal_database
  62.     def load_normal_database
  63.       lnd_quest
  64.       load_data_quest # Chargement
  65.     end    
  66.     def load_data_quest
  67.       name = "Data/Quests.rvdata2"
  68.       if FileTest.exist?(name)
  69.         $data_quests = load_data(name)
  70.       else
  71.         initialize_data_quests # Si le fichier n'existe pas, on le crée
  72.       end
  73.     end
  74.    
  75.     alias sgwr_quest save_game_without_rescue
  76.     def save_game_without_rescue(index)
  77.       save_data_quests
  78.       sgwr_quest(index)
  79.     end
  80.    
  81.     def initialize_data_quests
  82.       File.open(name.to_s, "a+")
  83.       $data_quests = Hash.new   # il faut que $data_quests contienne au moins une ligne, sinon ça plante
  84.       save_data_quests          # on le sauvegarde
  85.     end
  86.    
  87.     def save_data_quests
  88.       name = "Data/Quests.rvdata2"
  89.       File.open(name, "w") do |file|
  90.         Marshal.dump($data_quests, file)
  91.       end
  92.     end
  93.   end
  94. end
  95.  
  96. #####################
  97. # Quest
  98. # - Object qui correspond aux quêtes
  99. #####################
  100. class Quest
  101.   attr_accessor :name, :giver, :description, :questnote, :location, :level, :iconindex, :teinte, :evcommun, :categorie, :banniere,
  102.   :objectives, :rewards, :layout
  103.  
  104.   def initialize(*args) # Même ordre qu'au-dessus
  105.     @name = args[0] ? args[0] : ""
  106.     @giver = args[1] ? args[1] : ""
  107.     @description = args[2] ? args[2] : ""
  108.     @questnote = args[3] ? args[3] : ""
  109.     @location = args[4] ? args[4] : ""
  110.     @level = args[5] ? args[5] : 0
  111.     @iconindex = args[6] ? args[6] : 0
  112.     @teinte = args[7] ? args[7] : 0
  113.     @evcommun = args[8] ? args[8] : 0
  114.     @categorie = args[9] ? args[9] : 0
  115.     @banniere = args[10] ? args[10] : ""
  116.     @objectives = args[11] ? args[11] : []
  117.     @rewards = args[12] ? args[12] : []
  118.     @layout = args[13] ? args[13] : false
  119.   end
  120. end
  121.  
  122. #####################
  123. # Quest Rewards
  124. # - Object qui correspond aux primes des quêtes
  125. #####################
  126. class Quest_Rewards
  127.   def initialize(*args) # Même ordre qu'au-dessus
  128.     @rewards = args
  129.   end
  130.   def []=(id, a)
  131.     @rewards[id] = a
  132.   end
  133.   def tb
  134.     @rewards
  135.   end
  136. end
  137.  
  138. #####################
  139. # Quest Rewards
  140. # - Object qui correspond aux objectifs des quêtes (et le numéro des objectifs qui ont des primes)
  141. #####################
  142. class Quest_Objectives
  143.   attr_accessor :mission, :prime
  144.   def initialize(*args) # Même ordre qu'au-dessus
  145.     @mission = args[0] ? args[0] : []
  146.     @prime = args[1] ? args[1] : []
  147.   end
  148. end
  149.  
  150. #####################
  151. # QuestData
  152. # - Ajout de notre $data_quests au script de ModernAlgebra
  153. #####################
  154. module QuestData
  155.   class << self
  156.     def setup_quest(quest_id)
  157.       if $data_quests.keys.include?(quest_id)
  158.         q = { :objectives => [], :prime_objectives => [] }
  159.         q[:name]          = $data_quests[quest_id].name
  160.         q[:level]         = $data_quests[quest_id].level
  161.         q[:iconindex]     = $data_quests[quest_id].iconindex
  162.         q[:description]   = $data_quests[quest_id].description
  163.         q[:client]        = $data_quests[quest_id].giver
  164.         q[:location]      = $data_quests[quest_id].location
  165.         $data_quests[quest_id].objectives.mission.each do |obj|
  166.           q[:objectives] << obj
  167.         end
  168.         q[:prime_objectives]  = $data_quests[quest_id].objectives.prime
  169.         q[:custom_categories] = $data_quests[quest_id].categorie
  170.         q[:banner]            = $data_quests[quest_id].banniere
  171.         q[:banner_hue]        = $data_quests[quest_id].teinte
  172.         q[:common_event_id]   = $data_quests[quest_id].evcommun
  173.         q[:rewards]           = $data_quests[quest_id].rewards.tb
  174.         q[:layout]            = false
  175.         return q
  176.       else
  177.         print "Quête non configurée !\n"
  178.         return {}
  179.       end
  180.     end
  181.   end
  182. end
  183. ###################
  184. ##### Fin du Script
  185. ################################################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement