Noob Saibot 38 Report post Posted April 13, 2010 I found a Script archived by the man himself, Constance of RMXPU.net Advanced Item Menu System Version: 1.1 Introduction A requested script. This is basically a grid system of the item menu that scrolls down once enough items are reached in the window. On the right it shows a detailed report of each item, weapon, and armor according to whatever type it is. Features * Grid Based Icon System * Detailed Statistics Report * Neat Little Target Window * SDK Compatible Screenshots Demo RMXPU.net did not archive one SORRY; Mad Klown Script Click here RMXPU.com Have added a back up below as well! Instructions Place above main. Make sure you have the latest SDK version and the Sylfaen font as well. If you do not have the font installed, click here. FAQ There is a slight lag due to much updating. I know where this is occuring and I will fix this in the near future as well as make the coding simpler. :) Compatibility SDK Compatible Credits and Thanks Thanks goes to: SephirothSpawn for some small coding from the Advanced Monster Beastiary Script. jackatrades for some small coding from the Advanced Item Detail View Script. Slipknot for small coding mod Author's Notes I will not do requests for this script, however, you are free to edit this in any way but please give credit to me and the others mentioned. When I release the lag-free version I will update this topic. Enjoy. :) ~Constance Original Post: RMXPU.net Archive Back Up of Script #============================================================================== # ** Advanced Item Grid Menu #------------------------------------------------------------------------------ # Constance # Version: 1.1 # 11.4.06 #============================================================================== #------------------------------------------------------------------------------ # * SDK Log Script #------------------------------------------------------------------------------ SDK.log('Advanced Item Grid Menu', 'Constance', 1.0, '11.4.06') #------------------------------------------------------------------------------ # * Begin SDK Enable Test #------------------------------------------------------------------------------ if SDK.state('Advanced Item Grid Menu') == true #============================================================================== # ** Window_Base #------------------------------------------------------------------------------ # This class is for all in-game windows. #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * Draw Level2 # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate #-------------------------------------------------------------------------- def draw_actor_level2(actor, x, y) self.contents.font.color = system_color self.contents.draw_text(x, y, 32, 32, "Lv:") self.contents.font.color = normal_color self.contents.draw_text(x + 16, y, 24, 32, actor.level.to_s, 2) end end #============================================================================== # ** Window_Grid_Dummy #------------------------------------------------------------------------------ # Dummy Window for viewing the real grid. #============================================================================== class Window_Grid_Dummy < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 64, 352, 416) self.contents = Bitmap.new(width - 32, height - 32) end end #of class #============================================================================== # ** Window_Statistics #------------------------------------------------------------------------------ # Window for the statistics window for each item. #============================================================================== class Window_Statistics < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(352, 64, 288, 416) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = "Sylfaen" end end #of class #============================================================================== # ** Window_Welcome #------------------------------------------------------------------------------ # Window for the welcome at the top. #============================================================================== class Window_Welcome < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 0, 640, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = "Sylfaen" end end #of class #============================================================================== # ** Window_Selectable2 #------------------------------------------------------------------------------ # This class is the same as Window_Selectable but changes cursor properties for # the grid only. #============================================================================== class Window_Selectable2 < Window_Selectable #-------------------------------------------------------------------------- # * Update Cursor Rectangle #-------------------------------------------------------------------------- def update_cursor_rect # If cursor position is less than 0 if @index < 0 self.cursor_rect.empty return end # Get current row row = @index / @column_max # If current row is before top row if row < self.top_row # Scroll so that current row becomes top row self.top_row = row end # If current row is more to back than back row if row > self.top_row + (self.page_row_max - 1) # Scroll so that current row becomes back row self.top_row = row - (self.page_row_max - 1) end # Calculate cursor width cursor_width = self.width / @column_max - 32 # Calculate cursor coordinates x = @index % @column_max * (cursor_width) y = @index / @column_max * 32 - self.oy # Update cursor rectangle self.cursor_rect.set(x, y, cursor_width, 32) end end #============================================================================== # ** Window_Item #------------------------------------------------------------------------------ # The Item Grid Window. Based off a 10 column coding. #============================================================================== class Window_Item < Window_Selectable2 #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :item #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 64, 640, 416) self.opacity = 0 @column_max = 10 refresh self.index = 0 # If in battle, move window to center of screen # and make it semi-transparent if $game_temp.in_battle self.x = 144 self.y = 64 self.back_opacity = 250 end end #-------------------------------------------------------------------------- # * Get Item #-------------------------------------------------------------------------- def item return @data[self.index] end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] # Add item for i in 1...$data_items.size if $game_party.item_number(i) > 0 @data.push($data_items[i]) end end # Also add weapons and items if outside of battle unless $game_temp.in_battle for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 @data.push($data_weapons[i]) end end for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 @data.push($data_armors[i]) end end end # If item count is not 0, make a bit map and draw all items @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) for i in 0...@item_max draw_item(i) end end end #-------------------------------------------------------------------------- # * Draw Item # index : item number #-------------------------------------------------------------------------- def draw_item(index) item = @data[index] case item when RPG::Item number = $game_party.item_number(item.id) when RPG::Weapon number = $game_party.weapon_number(item.id) when RPG::Armor number = $game_party.armor_number(item.id) end if item.is_a?(RPG::Item) and $game_party.item_can_use?(item.id) self.contents.font.color = normal_color else self.contents.font.color = disabled_color end x = index % 10 * (32) y = index / 10 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 2, y + 7, 24, 32, number.to_s, 2) end #-------------------------------------------------------------------------- # * Help Text Update #-------------------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end end #of class #============================================================================== # ** Window_Target #------------------------------------------------------------------------------ # This window selects a use target for the actor on item and skill screens. #============================================================================== class Window_Target < Window_Selectable #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(202, 170, 288, 160) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = "Sylfaen" self.z += 10 @item_max = $game_party.actors.size @column_max = 4 end #-------------------------------------------------------------------------- # * Cursor Rectangle Update #-------------------------------------------------------------------------- def update_cursor_rect self.contents.clear for i in 0...$game_party.actors.size x = 10 + i * 60 y = 0 actor = $game_party.actors[i] draw_actor_name(actor, x, y) draw_actor_graphic(actor, x + 20, y + 80) draw_actor_level2(actor, x, y + 66) end actor = $game_party.actors[self.index] x = 0 y = 0 draw_actor_hp(actor, x + 60, y + 86) draw_actor_sp(actor, x + 60, y + 106) # Cursor position -1 = all choices, -2 or lower = independent choice # (meaning the user's own choice) if @index <= -2 self.cursor_rect.set(0, (@index + 10) * 60, 60, 96) elsif @index == -1 self.cursor_rect.set(0, 0, 60, @item_max * 116 - 20) else self.cursor_rect.set(@index * 60, 0, 60, 96) end end end #============================================================================== # ** Scene_Item #------------------------------------------------------------------------------ # This class performs item screen processing. #============================================================================== class Scene_Item #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main # Make help window @help_window = Window_Help.new @help_window.z = -10 # Make grid window @item_window = Window_Item.new # Associate help window @item_window.help_window = @help_window # Make dummy grid window @dummy_window = Window_Grid_Dummy.new # Make dummy statistics window @statistics_window = Window_Statistics.new # Make target window @target_window = Window_Target.new @target_window.active = false @target_window.visible = false # Make welcome window @welcome_window = Window_Welcome.new # Draw welcome text @welcome_window.contents.draw_text(0, 0, 255, 32, "Welcome to the Your Inventory Screen.", 1) # Execute transition Graphics.transition # Main loop loop do # Update game screen Graphics.update # Update input information Input.update # Frame update update # Abort loop if screen is changed if $scene != self break end end # Prepare for transition Graphics.freeze # Dispose of windows @welcome_window.dispose @help_window.dispose @item_window.dispose @dummy_window.dispose @statistics_window.dispose @target_window.dispose end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # Update windows @welcome_window.update @help_window.update @item_window.update @target_window.update # If grid window is active: call update_item if @item_window.active update_item update_stats return end # If target window is active: call update_target if @target_window.active update_target return end end #-------------------------------------------------------------------------- # * Stats Text Update # -- If Item = Item -> Item_Values # -- If Item = Weapon -> Weapon_Values # -- If Item = Armor -> Armor_Values #-------------------------------------------------------------------------- def update_stats @x, @y = 0, 0 @statistics_window.contents.clear if @item_window.item != 0 @item = @item_window.item update_item elsif @grid_widnow.item = 0 @statistics_window.contents.clear end case @item when RPG::Item number = $game_party.item_number(@item.id) update_item_values when RPG::Weapon number = $game_party.weapon_number(@item.id) update_weapon_values when RPG::Armor number = $game_party.armor_number(@item.id) update_armor_values end end #-------------------------------------------------------------------------- # * Update Item Values #-------------------------------------------------------------------------- def update_item_values # Clear Window @statistics_window.contents.clear # Create Default Word Values @hp_word = $data_system.words.hp @sp_word = $data_system.words.sp @str_word = $data_system.words.str @dex_word = $data_system.words.dex @agi_word = $data_system.words.agi @int_word = $data_system.words.int @atk_word = $data_system.words.atk @pdef_word = $data_system.words.pdef @mdef_word = $data_system.words.mdef @guard_word = $data_system.words.guard # Create Stats @statistics_window.contents.font.color = Color.new(192, 224, 255, 255) @statistics_window.contents.font.bold = true @statistics_window.contents.draw_text(@x, @y, 212, 32, "Name: ", 0) @statistics_window.contents.draw_text(@x, @y + 42, 212, 32, "Description:", 0) @statistics_window.contents.draw_text(@x, @y + 106, 212, 32, "Item Type: ", 0) @statistics_window.contents.draw_text(@x, @y + 140, 212, 32, "Statistics: ", 0) @statistics_window.contents.font.bold = false @statistics_window.contents.font.color = Color.new(255, 255, 255, 255) @statistics_window.contents.draw_text(@x + 60, @y, 212, 32, @item.name, 0) @statistics_window.contents.draw_text(@x, @y + 62, 252, 32, @item.description, 0) @statistics_window.contents.draw_text(@x + 95, @y + 106, 212, 32, "Item", 0) # Main Words @statistics_window.contents.font.color = Color.new(192, 224, 255, 255) @statistics_window.contents.draw_text(@x, @y + 165, 212, 32, "Enhancements: ", 0) @statistics_window.contents.draw_text(@x, @y + 185, 212, 32, "Range: ", 0) @statistics_window.contents.draw_text(@x, @y + 205, 212, 32, "Recovery: ", 0) @statistics_window.contents.draw_text(@x, @y + 225, 212, 32, "Elements: ", 0) @statistics_window.contents.draw_text(@x, @y + 245, 212, 32, "Status Effects: ", 0) # Values @statistics_window.contents.font.color = Color.new(255, 255, 255, 255) # Enhancements parameter = @item.parameter_type case parameter when 0 @statistics_window.contents.draw_text(@x + 108, @y + 165, 212, 32, "None", 0) when 1 @statistics_window.contents.draw_text(@x + 108, @y + 165, 212, 32, "Max #{@hp_word} + " + @item.parameter_points.to_s, 0) when 2 @statistics_window.contents.draw_text(@x + 108, @y + 165, 212, 32, "Max #{@sp_word} + " + @item.parameter_points.to_s, 0) when 3 @statistics_window.contents.draw_text(@x + 108, @y + 165, 212, 32, "#{@str_word} + " + @item.parameter_points.to_s, 0) when 4 @statistics_window.contents.draw_text(@x + 108, @y + 165, 212, 32, "#{@dex_word} + " + @item.parameter_points.to_s, 0) when 5 @statistics_window.contents.draw_text(@x + 108, @y + 165, 212, 32, "#{@agi_word} + " + @item.parameter_points.to_s, 0) when 6 @statistics_window.contents.draw_text(@x + 108, @y + 165, 212, 32, "#{@int_word} + " + @item.parameter_points.to_s, 0) end # Range scope = @item.scope case scope when 0 @statistics_window.contents.draw_text(@x + 110, @y + 185, 212, 32, "None", 0) when 1 @statistics_window.contents.draw_text(@x + 92, @y + 185, 212, 32, "One Enemy", 0) when 2 @statistics_window.contents.draw_text(@x + 92, @y + 185, 212, 32, "All Enemies", 0) when 3 @statistics_window.contents.draw_text(@x + 92, @y + 185, 212, 32, "One Ally", 0) when 4 @statistics_window.contents.draw_text(@x + 92, @y + 185, 212, 32, "All Allies", 0) when 5 @statistics_window.contents.draw_text(@x + 92, @y + 185, 212, 32, "One Ally", 0) when 6 @statistics_window.contents.draw_text(@x + 92, @y + 185, 212, 32, "All Allies", 0) when 7 @statistics_window.contents.draw_text(@x + 92, @y + 185, 212, 32, "This User", 0) end # HP hp_recover = @item.recover_hp if @item.recover_hp == 0 hp_recover = "0" end if @item.recover_sp == 0 sp_recover = "0" end @statistics_window.contents.font.color = Color.new(255, 255, 255, 255) @statistics_window.contents.draw_text(@x + 110, @y + 205, 212, 32, hp_recover.to_s + " HP", 0) # SP sp_recover = @item.recover_sp @statistics_window.contents.font.color = Color.new(255, 255, 255, 255) @statistics_window.contents.draw_text(@x + 180, @y + 205, 212, 32, sp_recover.to_s + " SP", 0) # Create Elements element = "" flag = false for i in @item.element_set if flag element += ", " end element += $data_system.elements[i] flag = true end if element == "" element = "None" end # Create Status Effects status = "" flag = false for i in @item.plus_state_set if flag status += ", " end status += $data_states[i].name flag = true end if status == "" status = "None" end # Draw Element And Status Effects @statistics_window.contents.draw_text(@x + 110, @y + 230, 420, 24, element, 0) @statistics_window.contents.draw_text(@x + 110, @y + 250, 420, 24, status, 0) end #-------------------------------------------------------------------------- # * Update Weapon Values #-------------------------------------------------------------------------- def update_weapon_values @statistics_window.contents.clear @statistics_window.contents.font.color = Color.new(192, 224, 255, 255) @statistics_window.contents.font.bold = true @statistics_window.contents.draw_text(@x, @y, 212, 32, "Name: ", 0) @statistics_window.contents.draw_text(@x, @y + 42, 212, 32, "Description:", 0) @statistics_window.contents.draw_text(@x, @y + 106, 212, 32, "Item Type: ", 0) @statistics_window.contents.draw_text(@x, @y + 140, 212, 32, "Statistics: ", 0) @statistics_window.contents.font.bold = false @statistics_window.contents.font.color = Color.new(255, 255, 255, 255) @statistics_window.contents.draw_text(@x + 60, @y, 212, 32, @item.name, 0) @statistics_window.contents.draw_text(@x, @y + 62, 252, 32, @item.description, 0) @statistics_window.contents.draw_text(@x + 95, @y + 106, 212, 32, "Weapon", 0) # Main Words @statistics_window.contents.font.color = Color.new(192, 224, 255, 255) @statistics_window.contents.draw_text(@x, @y + 165, 212, 32, "#{@atk_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 185, 212, 32, "#{@pdef_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 205, 212, 32, "#{@mdef_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 225, 212, 32, "#{@str_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 245, 212, 32, "#{@dex_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 265, 212, 32, "#{@agi_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 285, 212, 32, "#{@int_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 305, 212, 32, "Elements: ", 0) @statistics_window.contents.draw_text(@x, @y + 325, 212, 32, "Status Effects: ", 0) # Values @statistics_window.contents.font.color = Color.new(255, 255, 255, 255) # Attack atk = @item.atk @statistics_window.contents.draw_text(@x + 120, @y + 165, 212, 32, atk.to_s, 0) # Physical Defense pdef = @item.pdef @statistics_window.contents.draw_text(@x + 120, @y + 185, 212, 32, pdef.to_s, 0) # Magical Defense mdef = @item.mdef @statistics_window.contents.draw_text(@x + 120, @y + 205, 212, 32, mdef.to_s, 0) # Strength str_plus = @item.str_plus @statistics_window.contents.draw_text(@x + 120, @y + 225, 212, 32, str_plus.to_s, 0) # Dexterity dex_plus = @item.dex_plus @statistics_window.contents.draw_text(@x + 120, @y + 245, 212, 32, dex_plus.to_s, 0) # Agility agi_plus = @item.agi_plus @statistics_window.contents.draw_text(@x + 120, @y + 265, 212, 32, agi_plus.to_s, 0) # Intelligence int_plus = @item.int_plus @statistics_window.contents.draw_text(@x + 120, @y + 285, 212, 32, int_plus.to_s, 0) # Create Elements element = "" flag = false for i in @item.element_set if flag element += ", " end element += $data_system.elements[i] flag = true end if element == "" element = "None" end # Create Status Effects status = "" flag = false for i in @item.plus_state_set if flag status += ", " end status += $data_states[i].name flag = true end if status == "" status = "None" end # Draw Element And Status Effects @statistics_window.contents.draw_text(@x + 110, @y + 310, 420, 24, element, 0) @statistics_window.contents.draw_text(@x + 110, @y + 330, 420, 24, status, 0) end #-------------------------------------------------------------------------- # * Update Armor Values #-------------------------------------------------------------------------- def update_armor_values @statistics_window.contents.clear @statistics_window.contents.font.color = Color.new(192, 224, 255, 255) @statistics_window.contents.font.bold = true @statistics_window.contents.draw_text(@x, @y, 212, 32, "Name: ", 0) @statistics_window.contents.draw_text(@x, @y + 42, 212, 32, "Description:", 0) @statistics_window.contents.draw_text(@x, @y + 106, 212, 32, "Item Type: ", 0) @statistics_window.contents.draw_text(@x, @y + 140, 212, 32, "Statistics: ", 0) @statistics_window.contents.font.bold = false @statistics_window.contents.font.color = Color.new(255, 255, 255, 255) @statistics_window.contents.draw_text(@x + 60, @y, 212, 32, @item.name, 0) @statistics_window.contents.draw_text(@x, @y + 62, 252, 32, @item.description, 0) # Kind of Armor kind_word = $data_system.words.send("armor#{@item.kind + 1}") @statistics_window.contents.draw_text(@x + 95, @y + 106, 212, 32, "Armor -> #{kind_word}", 0) # Main Words @statistics_window.contents.font.color = Color.new(192, 224, 255, 255) @statistics_window.contents.draw_text(@x, @y + 165, 212, 32, "#{@pdef_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 185, 212, 32, "#{@mdef_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 205, 212, 32, "EVA: ", 0) @statistics_window.contents.draw_text(@x, @y + 225, 212, 32, "#{@str_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 245, 212, 32, "#{@dex_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 265, 212, 32, "#{@agi_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 285, 212, 32, "#{@int_word}: ", 0) @statistics_window.contents.draw_text(@x, @y + 305, 212, 32, "Guard Elements: ", 0) @statistics_window.contents.draw_text(@x, @y + 325, 212, 32, "Guard Effects: ", 0) # Values @statistics_window.contents.font.color = Color.new(255, 255, 255, 255) # Physical Defense pdef = @item.pdef @statistics_window.contents.draw_text(@x + 120, @y + 165, 212, 32, pdef.to_s, 0) # Magical Defense mdef = @item.mdef @statistics_window.contents.draw_text(@x + 120, @y + 185, 212, 32, mdef.to_s, 0) # Evasion eva = @item.eva @statistics_window.contents.draw_text(@x + 120, @y + 205, 212, 32, eva.to_s, 0) # Strength str_plus = @item.str_plus @statistics_window.contents.draw_text(@x + 120, @y + 225, 212, 32, str_plus.to_s, 0) # Dexterity dex_plus = @item.dex_plus @statistics_window.contents.draw_text(@x + 120, @y + 245, 212, 32, dex_plus.to_s, 0) # Agility agi_plus = @item.agi_plus @statistics_window.contents.draw_text(@x + 120, @y + 265, 212, 32, agi_plus.to_s, 0) # Intelligence int_plus = @item.int_plus @statistics_window.contents.draw_text(@x + 120, @y + 285, 212, 32, int_plus.to_s, 0) # Create Elements element = "" flag = false for i in @item.guard_element_set if flag element += ", " end element += $data_system.elements[i] flag = true end if element == "" element = "None" end # Create Status Effects status = "" flag = false for i in @item.guard_state_set if flag status += ", " end status += $data_states[i].name flag = true end if status == "" status = "None" end # Draw Element And Status Effects @statistics_window.contents.draw_text(@x + 110, @y + 310, 420, 24, element, 0) @statistics_window.contents.draw_text(@x + 110, @y + 330, 420, 24, status, 0) end #-------------------------------------------------------------------------- # * Frame Update (when item window is active) #-------------------------------------------------------------------------- def update_item # If B button was pressed if Input.trigger?(Input::B) # Play cancel SE $game_system.se_play($data_system.cancel_se) # Switch to menu screen $scene = Scene_Menu.new(0) return end # If C button was pressed if Input.trigger?(Input::C) # Get currently selected data on the item window @item = @item_window.item # If not a use item unless @item.is_a?(RPG::Item) # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # If it can't be used unless $game_party.item_can_use?(@item.id) # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # Play decision SE $game_system.se_play($data_system.decision_se) # If effect scope is an ally if @item.scope >= 3 # Activate target window @item_window.active = false @target_window.visible = true @target_window.active = true # Set cursor position to effect scope (single / all) if @item.scope == 4 || @item.scope == 6 @target_window.index = -1 else @target_window.index = 0 end # If effect scope is other than an ally else # If command event ID is valid if @item.common_event_id > 0 # Command event call reservation $game_temp.common_event_id = @item.common_event_id # Play item use SE $game_system.se_play(@item.menu_se) # If consumable if @item.consumable # Decrease used items by 1 $game_party.lose_item(@item.id, 1) # Draw item window item @item_window.draw_item(@item_window.index) end # Switch to map screen $scene = Scene_Map.new return end end return end end #-------------------------------------------------------------------------- # * Frame Update (when target window is active) #-------------------------------------------------------------------------- def update_target # If B button was pressed if Input.trigger?(Input::B) # Play cancel SE $game_system.se_play($data_system.cancel_se) # If unable to use because items ran out unless $game_party.item_can_use?(@item.id) # Remake item window contents @item_window.refresh end # Erase target window @item_window.active = true @target_window.visible = false @target_window.active = false return end # If C button was pressed if Input.trigger?(Input::C) # If items are used up if $game_party.item_number(@item.id) == 0 # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # If target is all if @target_window.index == -1 # Apply item effects to entire party used = false for i in $game_party.actors used |= i.item_effect(@item) end end # If single target if @target_window.index >= 0 # Apply item use effects to target actor target = $game_party.actors[@target_window.index] used = target.item_effect(@item) end # If an item was used if used # Play item use SE $game_system.se_play(@item.menu_se) # If consumable if @item.consumable # Decrease used items by 1 $game_party.lose_item(@item.id, 1) # Redraw item window item @item_window.draw_item(@item_window.index) end # Remake target window contents @target_window.refresh # If all party members are dead if $game_party.all_dead? # Switch to game over screen $scene = Scene_Gameover.new return end # If common event ID is valid if @item.common_event_id > 0 # Common event call reservation $game_temp.common_event_id = @item.common_event_id # Switch to map screen $scene = Scene_Map.new return end end # If item wasn't used unless used # Play buzzer SE $game_system.se_play($data_system.buzzer_se) end return end end end #of class #============================================================================== # ** Scene_Battle (part 3) #------------------------------------------------------------------------------ # This class performs battle screen processing. #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # * Alias' New Game Method #-------------------------------------------------------------------------- alias con_ais_scene_battle_main main #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main # Make dummy grid window @dummy_window = Window_Grid_Dummy.new # Hide dummy window @dummy_window.visible = false @dummy_window.opacity = 255 # Call Original Method con_ais_scene_battle_main end #-------------------------------------------------------------------------- # * Frame Update (actor command phase : item selection) #-------------------------------------------------------------------------- def update_phase3_item_select # Make item window visible @item_window.visible = true @dummy_window.visible = true # Update item window @item_window.update # If B button was pressed if Input.trigger?(Input::B) # Play cancel SE $game_system.se_play($data_system.cancel_se) # End item selection end_item_select return end # If C button was pressed if Input.trigger?(Input::C) # Get currently selected data on the item window @item = @item_window.item # If it can't be used unless $game_party.item_can_use?(@item.id) # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # Play decision SE $game_system.se_play($data_system.decision_se) # Set action @active_battler.current_action.item_id = @item.id # Make item window invisible @item_window.visible = false # Make dummy window invisible @dummy_window.visible = false # If effect scope is single enemy if @item.scope == 1 # Start enemy selection start_enemy_select # If effect scope is single ally elsif @item.scope == 3 or @item.scope == 5 # Start actor selection start_actor_select # If effect scope is not single else # End item selection end_item_select # Go to command input for next actor phase3_next_actor end return end end #-------------------------------------------------------------------------- # * Start Item Selection #-------------------------------------------------------------------------- def start_item_select # Make item window @item_window = Window_Item.new # Associate help window @item_window.help_window = @help_window # Disable actor command window @actor_command_window.active = false @actor_command_window.visible = false # Show dummy window @dummy_window.visible = true @dummy_window.opacity = 160 @dummy_window.x = 144 end #-------------------------------------------------------------------------- # * End Item Selection #-------------------------------------------------------------------------- def end_item_select # Dispose of item window @item_window.dispose @item_window = nil # Hide help window @help_window.visible = false # Enable actor command window @actor_command_window.active = true @actor_command_window.visible = true # Hide dummy window @dummy_window.visible = false end end #of class #-------------------------------------------------------------------------- # * End SDK Enable Test #-------------------------------------------------------------------------- end Share this post Link to post Share on other sites