Jin Ancien staffeux
Messages postés : 8557 Date d'inscription : 08/12/2010 Jauge LPC :
| Sujet: [XP]Menu équipement amélioré Mer 13 Fév 2013 - 2:21 | |
| En voilà encore un autre \o/ Ce script vous permet d'afficher toutes les stats du héros lorsque vous l'équipez. Un screen : - Spoiler:
Le script (à placer au dessus de main, toujours =) ): Auteur : Jin - Spoiler:
- Code:
-
#============================================================================== # Window_EquipLeft #==============================================================================
class Window_EquipLeft < Window_Base def initialize(actor) super(0, 64, 272, 416) self.contents = Bitmap.new(width - 32, height - 32) @actor = actor refresh end def refresh self.contents.clear draw_actor_name(@actor, 4, 0) draw_actor_level(@actor, 4, 32) draw_actor_parameter(@actor, 4, 64, 0) draw_actor_parameter(@actor, 4, 96, 1) draw_actor_parameter(@actor, 4, 128, 2) draw_actor_parameter(@actor, 4, 160, 3) draw_actor_parameter(@actor, 4, 192, 4) draw_actor_parameter(@actor, 4, 224, 5) draw_actor_parameter(@actor, 4, 256, 6) if @new_atk != nil self.contents.font.color = (@new_atk < @actor.atk)? text_color(2) : text_color(3) if (@new_atk == @actor.atk) self.contents.font.color = normal_color end self.contents.draw_text(160, 64, 40, 32, "->", 1) self.contents.draw_text(200, 64, 36, 32, @new_atk.to_s, 2) end if @new_pdef != nil self.contents.font.color = (@new_pdef < @actor.pdef)? text_color(2) : text_color(3) if (@new_pdef == @actor.pdef) self.contents.font.color = normal_color end self.contents.draw_text(160, 96, 40, 32, "->", 1) self.contents.draw_text(200, 96, 36, 32, @new_pdef.to_s, 2) end if @new_mdef != nil self.contents.font.color = (@new_mdef < @actor.mdef)? text_color(2) : text_color(3) if (@new_mdef == @actor.mdef) self.contents.font.color = normal_color end self.contents.draw_text(160, 128, 40, 32, "->", 1) self.contents.draw_text(200, 128, 36, 32, @new_mdef.to_s, 2) end if @new_str != nil self.contents.font.color = (@new_str < @actor.str)? text_color(2) : text_color(3) if (@new_str == @actor.str) self.contents.font.color = normal_color end self.contents.draw_text(160, 160, 40, 32, "->", 1) self.contents.draw_text(200, 160, 36, 32, @new_str.to_s, 2) end if @new_dex != nil self.contents.font.color = (@new_dex < @actor.dex)? text_color(2) : text_color(3) if (@new_dex == @actor.dex) self.contents.font.color = normal_color end self.contents.draw_text(160, 192, 40, 32, "->", 1) self.contents.draw_text(200, 192, 36, 32, @new_dex.to_s, 2) end if @new_agi != nil self.contents.font.color = (@new_agi < @actor.agi)? text_color(2) : text_color(3) if (@new_agi == @actor.agi) self.contents.font.color = normal_color end self.contents.draw_text(160, 224, 40, 32, "->", 1) self.contents.draw_text(200, 224, 36, 32, @new_agi.to_s, 2) end if @new_int != nil self.contents.font.color = (@new_int < @actor.int)? text_color(2) : text_color(3) if (@new_int == @actor.int) self.contents.font.color = normal_color end self.contents.draw_text(160, 256, 40, 32, "->", 1) self.contents.draw_text(200, 256, 36, 32, @new_int.to_s, 2) end end def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex, new_agi, new_int) if @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef or @new_str != new_str or @new_dex != new_dex or @new_agi != new_agi or @new_int != new_int @new_atk = new_atk @new_pdef = new_pdef @new_mdef = new_mdef @new_str = new_str @new_dex = new_dex @new_agi = new_agi @new_int = new_int refresh end end end
#============================================================================== # Scene_Equip #==============================================================================
class Scene_Equip def initialize(actor_index = 0, equip_index = 0) @actor_index = actor_index @equip_index = equip_index end
def main @actor = $game_party.actors[@actor_index] @help_window = Window_Help.new @left_window = Window_EquipLeft.new(@actor) @right_window = Window_EquipRight.new(@actor) @item_window1 = Window_EquipItem.new(@actor, 0) @item_window2 = Window_EquipItem.new(@actor, 1) @item_window3 = Window_EquipItem.new(@actor, 2) @item_window4 = Window_EquipItem.new(@actor, 3) @item_window5 = Window_EquipItem.new(@actor, 4) @right_window.help_window = @help_window @item_window1.help_window = @help_window @item_window2.help_window = @help_window @item_window3.help_window = @help_window @item_window4.help_window = @help_window @item_window5.help_window = @help_window @right_window.index = @equip_index refresh Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @help_window.dispose @left_window.dispose @right_window.dispose @item_window1.dispose @item_window2.dispose @item_window3.dispose @item_window4.dispose @item_window5.dispose end def refresh @item_window1.visible = (@right_window.index == 0) @item_window2.visible = (@right_window.index == 1) @item_window3.visible = (@right_window.index == 2) @item_window4.visible = (@right_window.index == 3) @item_window5.visible = (@right_window.index == 4) item1 = @right_window.item case @right_window.index when 0 @item_window = @item_window1 when 1 @item_window = @item_window2 when 2 @item_window = @item_window3 when 3 @item_window = @item_window4 when 4 @item_window = @item_window5 end if @right_window.active @left_window.set_new_parameters(nil, nil, nil, nil, nil, nil, nil) end if @item_window.active item2 = @item_window.item last_hp = @actor.hp last_sp = @actor.sp @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id) new_atk = @actor.atk new_pdef = @actor.pdef new_mdef = @actor.mdef new_str = @actor.str new_dex = @actor.dex new_agi = @actor.agi new_int = @actor.int @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id) @actor.hp = last_hp @actor.sp = last_sp @left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex, new_agi, new_int) end end def update @left_window.update @right_window.update @item_window.update refresh if @right_window.active update_right return end if @item_window.active update_item return end end def update_right if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(2) return end if Input.trigger?(Input::C) if @actor.equip_fix?(@right_window.index) $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) @right_window.active = false @item_window.active = true @item_window.index = 0 return end if Input.trigger?(Input::R) $game_system.se_play($data_system.cursor_se) @actor_index += 1 @actor_index %= $game_party.actors.size $scene = Scene_Equip.new(@actor_index, @right_window.index) return end if Input.trigger?(Input::L) $game_system.se_play($data_system.cursor_se) @actor_index += $game_party.actors.size - 1 @actor_index %= $game_party.actors.size $scene = Scene_Equip.new(@actor_index, @right_window.index) return end end def update_item if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @right_window.active = true @item_window.active = false @item_window.index = -1 return end if Input.trigger?(Input::C) $game_system.se_play($data_system.equip_se) item = @item_window.item @actor.equip(@right_window.index, item == nil ? 0 : item.id) @right_window.active = true @item_window.active = false @item_window.index = -1 @right_window.refresh @item_window.refresh return end end end
#============================================================================== # Window_EquipItem #==============================================================================
class Window_EquipItem < Window_Selectable
def initialize(actor, equip_type) super(272, 256, 369, 224) @actor = actor @equip_type = equip_type @column_max = 1 refresh self.active = false self.index = -1 end def item return @data[self.index] end def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] if @equip_type == 0 weapon_set = $data_classes[@actor.class_id].weapon_set for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 and weapon_set.include?(i) @data.push($data_weapons[i]) end end end if @equip_type != 0 armor_set = $data_classes[@actor.class_id].armor_set for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 and armor_set.include?(i) if $data_armors[i].kind == @equip_type-1 @data.push($data_armors[i]) end end end end @data.push(nil) @item_max = @data.size self.contents = Bitmap.new(width - 32, row_max * 32) for i in 0...@item_max-1 draw_item(i) end end def draw_item(index) item = @data[index] x = 4 y = index * 32 case item when RPG::Weapon number = $game_party.weapon_number(item.id) when RPG::Armor number = $game_party.armor_number(item.id) end bitmap = RPG::Cache.icon(item.icon_name) self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.font.color = normal_color self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end end
En espérant que ce vous soit utile =) |
|