| Roi |
 |
 |
Inscrit le: 13 Aoû 2006, 00:00 Messages: 2414 Localisation: Montréal, QC Logiciel(s) préféré(s): RMXP, VS2008 Point(s) Fort(s): Script Points d'aide: Illimité
Créations :
- Séparation d'inventaire
- Sprite_Text
Voir ses créations
|
1.3. Exemple de scèneCette scène n'est qu'un exemple de réalisation possible à partir du script Quests System. C'est à chaque projet de réaliser sa propre interface et non au système de vous la fournir. - Code: Tout sélectionner
#=============================================================================== # ■ Scene_Quests #------------------------------------------------------------------------------- # Auteur : Mat # Version : 1.0 # Date : 10/06/2009 #------------------------------------------------------------------------------- # Ce script est un exemple de scène réalisable à partir du script Quests System #===============================================================================
#=============================================================================== # ▼ Window_ListQuests #=============================================================================== class Window_ListQuests < Window_Selectable
attr_accessor :type def initialize super(0, 0, 320, 480) @type = 0 self.visible = false self.active = false end def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for quest in $game_party.quests_list.values if quest.status == type @data.push(quest) end end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize for i in 0...@item_max draw_item(i) end end end def draw_item(index) quest = @data[index] x = 4 + index * (288 + 32) y = index * 32 self.contents.draw_text(x + 28, y, 212, 32, quest.name, 0) end def item return @data[self.index] end end
#=============================================================================== # ▼ Window_QuestInfo #=============================================================================== class Window_QuestInfo < Window_Base attr_writer :quest def initialize super(320, 0, 320, 480) @quest = nil end def refresh if self.contents != nil self.contents.dispose self.contents = nil end if @quest != nil self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize self.contents.draw_text(30, 0, 260, 24, "Description : ", 0) y = 32 @quest.description.each{ |ligne| self.contents.draw_text(10, y, 260, 24, ligne, 0) y += 24 } y += 32 self.contents.draw_text(30, y, 260, 24, "Récompense(s) : ", 0) y += 32 if(@quest.gain_gold > 0) self.contents.draw_text(10, y, 260, 24, "Argent : #{@quest.gain_gold}", 0) y += 24 end if(@quest.gain_exp > 0) self.contents.draw_text(10, y, 260, 24, "Exp : #{@quest.gain_exp}", 0) y += 24 end @quest.gain_item.each{ |item_id, quantity| item = $data_items[item_id] bitmap = RPG::Cache.icon(item.icon_name) self.contents.blt(0, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.draw_text(28, y, 220, 24, item.name, 0) self.contents.draw_text(240, y, 16, 24, "x", 1) self.contents.draw_text(256, y, 24, 24, quantity.to_s, 2) y += 34 } @quest.gain_weapon.each{ |weapon_id, quantity| weapon = $data_weapons[weapon_id] bitmap = RPG::Cache.icon(weapon.icon_name) self.contents.blt(0, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.draw_text(28, y, 220, 24, weapon.name, 0) self.contents.draw_text(240, y, 16, 24, "x", 1) self.contents.draw_text(256, y, 24, 24, quantity.to_s, 2) y += 34 } @quest.gain_armor.each{ |armor_id, quantity| armor = $data_armors[armor_id] bitmap = RPG::Cache.icon(armor.icon_name) self.contents.blt(0, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.draw_text(28, y, 220, 24, armor.name, 0) self.contents.draw_text(240, y, 16, 24, "x", 1) self.contents.draw_text(256, y, 24, 24, quantity.to_s, 2) y += 34 } end end
end
#=============================================================================== # ▼ Scene_Quests #=============================================================================== class Scene_Quests def main menu = ["Quetes en Cours", "Quetes Achevees", "Quetes Abandonnees"] @type_quests_window = Window_Command.new(320, menu) @type_quests_window.height = 480 @list_quests_window = Window_ListQuests.new @quest_info_window = Window_QuestInfo.new Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @list_quests_window.dispose @type_quests_window.dispose @quest_info_window.dispose end def update @type_quests_window.update @list_quests_window.update @quest_info_window.update if @type_quests_window.active update_command return end if @list_quests_window.active update_list return end end def update_command if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return end if Input.trigger?(Input::C) @type_quests_window.active = false @type_quests_window.visible = false @list_quests_window.type = @type_quests_window.index @list_quests_window.refresh @list_quests_window.active = true @list_quests_window.visible = true @list_quests_window.index = 0 end end def update_list if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @list_quests_window.active = false @list_quests_window.visible = false @type_quests_window.active = true @type_quests_window.visible = true @quest_info_window.quest = nil return end @quest_info_window.quest = @list_quests_window.item @quest_info_window.refresh end end
|
|