Menu objets séparant objets usuelles et objets importants.
Auteur : Wawower
Instructions : Placez tout simplement ce script au dessus de main et en dessous du script 'Menu translucide' de xrxs si vous l'utilisez.
Pour specifier quelles objets doivent faire parties de la categorie trésor, ajoutez [t] à leur nom.
Realisée pour la commande : viewtopic.php?f=92&t=102532- Code: Tout sélectionner
class RPG::Item
def name
return @name.gsub('[t]', '')
end
def type
return (@name.include?('[t]') ? 1 : 0)
end
end
class Window_ItemType < Window_Selectable
def initialize
super(0, 64, 640, 64)
@column_max = 2
@item_max = 2
self.contents = Bitmap.new(width - 32, height - 32)
contents.font.name = $fontface
contents.font.size = $fontsize
refresh
self.index = 0
end
def refresh
contents.clear
contents.draw_text(0, 0, 304, 32, 'Objets', 1)
contents.draw_text(304, 0, 304, 32, 'Trésors', 1)
end
end
class Window_Item < Window_Selectable
def initialize
super(0, 128, 640, 352)
@column_max = 2
self.active = $game_temp.in_battle
if active
refresh
self.y = 64
self.height = 256
self.back_opacity = 160
else
refresh(0)
self.index = -1
end
end
alias classic_refresh refresh
def refresh(type=nil)
if type.nil?
classic_refresh
else
return if @type == type
@type = type
refresh_type(type)
end
end
def refresh_type(type)
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 1...$data_items.size
if $game_party.item_number(i) > 0
if $data_items[i].type == type
@data.push($data_items[i])
end
end
end
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
@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 set_index
self.index = 0 if @data.size > 0
end
def update_help
empty = ( self.item == nil or self.index < 0 )
@help_window.set_text( empty ? "" : self.item.description)
end
end
class Scene_Item
def main
create_spriteset if Object.const_defined?(:XRXS_MP7_Module)
@help_window = Window_Help.new
@itemtype_window = Window_ItemType.new
@item_window = Window_Item.new
@item_window.help_window = @help_window
@target_window = Window_Target.new
@target_window.visible = false
@target_window.active = false
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@help_window.dispose
@itemtype_window.dispose
@item_window.dispose
@target_window.dispose
dispose_spriteset if Object.const_defined?(:XRXS_MP7_Module)
end
def update
@help_window.update
@itemtype_window.update
@item_window.update
@target_window.update
if @itemtype_window.active
update_type
return
end
if @item_window.active
update_item
return
end
if @target_window.active
update_target
return
end
end
def update_type
@item_window.refresh(@itemtype_window.index)
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(0)
elsif Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@itemtype_window.active = false
@item_window.active = true
@item_window.refresh(@itemtype_window.index)
@item_window.set_index
end
end
def update_item
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@itemtype_window.active = true
@item_window.active = false
@item_window.index = -1
@item_window.update_help
end
if Input.trigger?(Input::C)
@item = @item_window.item
unless @item.is_a?(RPG::Item)
$game_system.se_play($data_system.buzzer_se)
return
end
unless $game_party.item_can_use?(@item.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
if @item.scope >= 3
@item_window.active = false
@target_window.x = (@item_window.index + 1) % 2 * 304
@target_window.visible = true
@target_window.active = true
if @item.scope == 4 || @item.scope == 6
@target_window.index = -1
else
@target_window.index = 0
end
else
if @item.common_event_id > 0
$game_temp.common_event_id = @item.common_event_id
$game_system.se_play(@item.menu_se)
if @item.consumable
$game_party.lose_item(@item.id, 1)
@item_window.draw_item(@item_window.index)
end
$scene = Scene_Map.new
return
end
end
return
end
end
end