Um simples, porém eficiente script para o RPG Maker XP que, ao adicionado no seu game/projeto, modifica levemente o menu padrão deste maker de forma a agrupar os itens que o herói possui, de acordo com a natureza destes.
Ele pode ser customizado, procurando estas linhas no script:
#------------------------------------------------------------------------ KIND_NAMES = ["Items", "Armas", "Eqp de Defesa"] #------------------------------------------------------------------------
Definição dos nomes dos comandos de menu.
#------------------------------------------------------------------------ KIND_KINDS = [0, 1, 2] #------------------------------------------------------------------------
Define a ordem das funções.
0 = ITEM.
1 = ARMAS.
2 = Equipamentos de defesa.
#------------------------------------------------------------------------ @help_window.set_text(KIND_NAMES[self.index] + " - Selecione o item desejado.") #------------------------------------------------------------------------
Nesta linha, você pode modificar o texto que irá aparecer na ajuda da janela.
Para instalar o script, basta instalar o código dele acima do Main
.
###################################################################### ############################ XRXS #################################### ###################################################################### #Script permite organizar os itens pelas suas características de #funções. ###################################################################### module XRXS_MP2_Fixed_Variable #Definição dos nomes dos comandos de menu. KIND_NAMES = ["Itens", "Armas", "Eqp de Defesa"] #Ordem das funções. #0 = ITEM. #1 = ARMAS. #2 = Equipamentos de defesa. KIND_KINDS = [0, 1, 2] end ###################################################################### class Window_Item < Window_Selectable include XRXS_MP2_Fixed_Variable alias xrxs_mp2_initialize initialize def initialize xrxs_mp2_initialize if not $scene.is_a?(Scene_Battle) self.y += 64 self.height -= 64 end @itemkind = KIND_KINDS[0] refresh end alias xrxs_mp2_refresh refresh def refresh if @itemkind == nil xrxs_mp2_refresh return end if self.contents != nil self.contents.dispose self.contents = nil end @data = [] @item_max = data_sdgs(@itemkind) 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 def set_itemkind_index(itemkind_index) @itemkind = KIND_KINDS[itemkind_index] refresh end def data_sdgs(itemkind) @data = [] if $scene.is_a?(Scene_Battle) get_data(0, false) elsif itemkind.is_a?(Numeric) or itemkind.nil? get_data(itemkind, false) elsif itemkind.is_a?(Array) for i in 0...itemkind.size get_data(itemkind[i], false) end end return @data.size end def get_data(itemkind, refresh = false) case itemkind when nil set_own_item_data set_own_weapon_data set_own_armor_data when 0 set_own_item_data when 1 set_own_weapon_data when 2 set_own_armor_data when 11 set_own_throw_weapons_data when 20 set_own_armor_shield_data when 21 set_own_armor_helm_data when 22 set_own_armor_mail_data when 23 set_own_armor_accessory_data when 31 set_own_item_noscope_data when 32 set_own_item_battleonly_data when 33 set_own_item_menuonly_data when 34 set_own_item_unusable_data when 35 set_own_item_commonevent_data when 36 set_own_item_zeroprice_data when 37 set_own_item_parameterup_data when 38 set_own_item_recovers_data when 39 set_own_item_elements_data when -20 last_data = @data.dup @data.clear set_own_armor_shield_data @data = last_data - @data when -21 last_data = @data.dup @data.clear set_own_armor_helm_data @data = last_data - @data when -22 last_data = @data.dup @data.clear set_own_armor_mail_data @data = last_data - @data when -23 last_data = @data.dup @data.clear set_own_armor_accessory_data @data = last_data - @data when -31 last_data = @data.dup @data.clear set_own_item_noscope_data @data = last_data - @data when -32 last_data = @data.dup @data.clear set_own_item_battleonly_data @data = last_data - @data when -33 last_data = @data.dup @data.clear set_own_item_menuonly_data @data = last_data - @data when -34 last_data = @data.dup @data.clear set_own_item_unusable_data @data = last_data - @data when -35 last_data = @data.dup @data.clear set_own_item_commonevent_data @data = last_data - @data when -36 last_data = @data.dup @data.clear set_own_item_zeroprice_data @data = last_data - @data when -37 last_data = @data.dup @data.clear set_own_item_parameterup_data @data = last_data - @data when -38 last_data = @data.dup @data.clear set_own_item_recovers_data @data = last_data - @data when -39 last_data = @data.dup @data.clear set_own_item_elements_data @data = last_data - @data else if refresh xrxs_mp2_refresh else @data = [] end end return end def set_own_item_data for i in 1...$data_items.size if $game_party.item_number(i) > 0 @data.push($data_items[i]) end end end def set_own_weapon_data for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 @data.push($data_weapons[i]) end end end def set_own_armor_data for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 @data.push($data_armors[i]) end end end def set_own_armor_shield_data for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 if $data_armors[i].kind == 0 and !@data.include?($data_armors[i]) @data.push($data_armors[i]) end end end end def set_own_armor_helm_data for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 if $data_armors[i].kind == 1 and !@data.include?($data_armors[i]) @data.push($data_armors[i]) end end end end def set_own_armor_mail_data for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 if $data_armors[i].kind == 2 and !@data.include?($data_armors[i]) @data.push($data_armors[i]) end end end end def set_own_armor_accessory_data for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 if $data_armors[i].kind == 3 and !@data.include?($data_armors[i]) @data.push($data_armors[i]) end end end end def set_own_item_noscope_data for i in 1...$data_items.size if $game_party.item_number(i) > 0 if $data_items[i].scope == 0 and !@data.include?($data_items[i]) @data.push($data_items[i]) end end end end def set_own_item_battleonly_data for i in 1...$data_items.size if $game_party.item_number(i) > 0 if $data_items[i].occasion == 1 and !@data.include?($data_items[i]) @data.push($data_items[i]) end end end end def set_own_item_menuonly_data for i in 1...$data_items.size if $game_party.item_number(i) > 0 if $data_items[i].occasion == 2 and !@data.include?($data_items[i]) @data.push($data_items[i]) end end end end def set_own_item_unusable_data for i in 1...$data_items.size if $game_party.item_number(i) > 0 if $data_items[i].occasion == 3 and !@data.include?($data_items[i]) @data.push($data_items[i]) end end end end def set_own_item_commonevent_data for i in 1...$data_items.size if $game_party.item_number(i) > 0 if $data_items[i].common_event_id > 0 and !@data.include?($data_items[i]) @data.push($data_items[i]) end end end end def set_own_item_zeroprice_data for i in 1...$data_items.size if $game_party.item_number(i) > 0 if $data_items[i].price == 0 and !@data.include?($data_items[i]) @data.push($data_items[i]) end end end end def set_own_item_parameterup_data for i in 1...$data_items.size if $game_party.item_number(i) > 0 if $data_items[i].parameter_type > 0 and !@data.include?($data_items[i]) @data.push($data_items[i]) end end end end def set_own_item_recovers_data for i in 1...$data_items.size if $game_party.item_number(i) > 0 if ($data_items[i].recover_hp_rate > 0 or $data_items[i].recover_hp > 0 or $data_items[i].recover_sp_rate > 0 or $data_items[i].recover_sp > 0 or $data_items[i].minus_state_set.size > 0) and !@data.include?($data_items[i]) @data.push($data_items[i]) end end end end def set_own_item_elements_data for i in 1...$data_items.size if $game_party.item_number(i) > 0 if $data_items[i].element_set.size > 0 and !@data.include?($data_items[i]) @data.push($data_items[i]) end end end end end class Window_Itemkind < Window_Selectable include XRXS_MP2_Fixed_Variable def initialize super(0, 64, 640, 64) self.contents = Bitmap.new(width - 32, height - 32) @commands = KIND_NAMES @item_max = KIND_NAMES.size @column_max = KIND_NAMES.size @disabled = [] for i in 0...@item_max @disabled[i] = false end self.active = true self.index = 0 refresh end def disable(index) @disabled[index] = true refresh end def disabled?(index) return @disabled[index] end def refresh self.contents.clear for i in 0...KIND_NAMES.size draw_item(i, (@disabled[i] ? disabled_color : normal_color)) end end def draw_item(index, color) self.contents.font.color = color x = 304 + (index - KIND_NAMES.size/2.0) * 600/KIND_NAMES.size rect = Rect.new(x, 0, 600/KIND_NAMES.size, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) self.contents.draw_text(rect, @commands[index], 1) end def update_cursor_rect if index != -1 return unless self.active x = 304 + (index - KIND_NAMES.size/2.0) * 600/KIND_NAMES.size self.cursor_rect.set(x, 0, 600/KIND_NAMES.size, 32) update_help end end def update_help return if @help_window.nil? @help_window.set_text(KIND_NAMES[self.index] + " - Selecione o item desejado.") end end class Scene_Item include XRXS_MP2_Fixed_Variable def main @help_window = Window_Help.new @item_window = Window_Item.new @kind_window = Window_Itemkind.new @item_window.help_window = @help_window @kind_window.help_window = @help_window for i in 0...KIND_NAMES.size @kind_window.disable(i) if @item_window.data_sdgs(KIND_KINDS[i]) == 0 end @target_window = Window_Target.new @target_window.visible = false @target_window.active = false @kind_window.active = true @item_window.active = false @item_window.index = -1 @now_itemkind = nil Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @help_window.dispose @item_window.dispose @target_window.dispose @kind_window.dispose end alias xrxs_mp2_update update def update xrxs_mp2_update if @now_itemkind != @kind_window.index @item_window.set_itemkind_index(@kind_window.index) @now_itemkind = @kind_window.index end @kind_window.update if @kind_window.active update_kind return end end alias xrxs_mp2_update_item update_item def update_item if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @kind_window.active = true @item_window.active = false @item_window.index = -1 Input.update return end xrxs_mp2_update_item end def update_kind if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(0) return end if Input.trigger?(Input::C) if @kind_window.disabled?(@kind_window.index) $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) @item_window.active = true @item_window.index = 0 @kind_window.active = false return end end end
Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!