Allora dato che per i miei due videogiochi ho utilizzato uno script inventario in stile Resident Evil su RPG Maker VX Ace, e siccome mi piacerebbe sviluppare un terzo capitolo su MV, vorrei che qualcuno mi aiutasse a riscrivere il codice per MV.
C'è qualcuno disposto ad aiutarmi? Lo script è questo.
module RE_MENU
BAR_POSITION_X = 3
BAR_POSITION_Y = 0
end
module Special_Map
Archive_ID = 12
Archive_x = 17
Archive_y = 13
Option_ID = 11
Option_x = 17
Option_y = 13
Map_ID_Variable = 6
Coord_x_Variable = 7
Coord_y_Variable = 8
def self.set_coordinates
$game_variables[Map_ID_Variable] = $game_map.map_id
$game_variables[Coord_x_Variable] = $game_player.x
$game_variables[Coord_y_Variable] = $game_player.y
end
end
class Scene_Menu < Scene_MenuBase
alias re_inventory_create_command_window create_command_window
def create_command_window
re_inventory_create_command_window
@command_window.set_handler(:inventory, method(:command_inventory))
end
def command_inventory
SceneManager.call(Scene_RE_Menu)
end
end
class Window_MenuCommand < Window_Command
alias re_inventory_add_main_commands add_main_commands
def add_main_commands
add_command("RE Inventory", :inventory, main_commands_enabled)
re_inventory_add_main_commands
end
end
class Scene_RE_Menu < Scene_Base
attr_reader :help_window
def start
super
Special_Map.set_coordinates
load_windowskin
$game_party.last_item.object = nil
create_menu_window
create_face_window
create_name_window
create_life_window
create_help_window
create_weapon_window
create_ammo_window
create_equip_window
create_use_window
create_item_window
@item_index = 0
@item_window.select(-1)
@menu_window.select(1)
@menu_window.activate
create_background
end
def load_windowskin
@windowskin = Bitmap.new("Graphics/System/re_menu_skin")
@windowskin2 = Bitmap.new("Graphics/System/re_menu_ski2")
end
def create_menu_window
@menu_window = Window_RE_Command.new(167,10)
@menu_window.windowskin = @windowskin
@menu_window.set_handler(:option, method(:open_option))
@menu_window.set_handler(:item, method(:go_inventory))
@menu_window.set_handler(:exit, method(:return_map))
@menu_window.set_handler(:cancel, method(:return_scene))
end
def create_face_window
@face_window = Window_Base.new(0,43,100,100)
@face_window.windowskin = @windowskin
@face_window.padding = 8
@face_window.contents = Bitmap.new(84,84)
@face_window.draw_actor_face($game_party.members[0],-6,-6)
@face_window.hide
end
def create_name_window
@name_window = Window_Base.new(0,138,100,48)
@name_window.windowskin = @windowskin
@name_window.draw_text(-16,0,100,24,$game_party.members[0].name,1)
@name_window.hide
end
def create_life_window
@life_window = Window_Base.new(100,54,259,50)
@life_window.windowskin = @windowskin
life_refresh
end
def create_help_window
@help_window = Window_Help2.new(3,305,358,Graphics.height - 30)
@help_window.windowskin = @windowskin
end
def create_weapon_window
@weapon_window = Window_Base.new(0,53,Graphics.width-440,90)
@weapon_window.windowskin = @windowskin
@weapon_window.draw_RE_weapon($game_player.actor.weapons[0],0,0) if $game_player.actor.weapons[0]
end
def create_ammo_window
@ammo_window = Window_Base.new(430,90+48,Graphics.width-430,48)
@ammo_window.windowskin = @windowskin
ammo_refresh
@ammo_window.hide
end
def create_equip_window
@equip_window = Window_RE_Equip.new(248,130+48)
@equip_window.windowskin = @windowskin2
@equip_window.set_handler(:cancel, method(:item_back))
@equip_window.set_handler(:equip, method(:equip_weapon))
@equip_window.set_handler(:remove, method(:remove_weapon))
@equip_window.set_handler(:reload, method(:reload_weapon))
@equip_window.deactivate
@equip_window.hide
end
def create_use_window
@use_window = Window_RE_Use.new(248,130+48)
@use_window.windowskin = @windowskin2
@use_window.set_handler(:cancel, method(:item_back))
@use_window.set_handler(:use, method(:use_item))
@use_window.deactivate
@use_window.hide
end
def create_item_window
@item_window = Window_RE_Item.new(359,20+33,191,395-48) #(353,40+48,191,375-48) New Version (353,10+33,191,400-48)
@item_window.windowskin = @windowskin
@item_window.set_handler(:ok, method(:on_item_ok))
@item_window.set_handler(:cancel, method(:exit_inventory))
@item_window.refresh
end
def create_background
@background_sprite = Sprite.new
@background_sprite.bitmap = Cache.picture ("Background Inventory")
@background_sprite.x = 0
@background_sprite.y = 0
end
def item_back
@use_window.hide
@equip_window.hide
@item_window.refresh
@item_window.activate
end
def on_item_ok
$game_party.last_item.object = @item_window.item
if @item_window.item.is_a?(RPG::Item)
@use_window.set_item(@item_window.item)
@use_window.refresh
@use_window.activate
@use_window.show
elsif @item_window.item.is_a?(RPG::Weapon)
@equip_window.set_item(@item_window.item)
@equip_window.refresh
@equip_window.activate
@equip_window.show
else
RPG::SE.stop
@item_window.activate
end
end
def item
@item_window.item
end
def equip_weapon
$game_player.actor.change_equip(0,@item_window.item)
weapon_refresh
item_back
end
def remove_weapon
$game_player.actor.change_equip(0,nil)
weapon_refresh
item_back
end
def reload_weapon
weapon = $weapons.find{|weapon| weapon.weapon.name == $data_weapons[item.id].name}
$game_party.items.each { |item|
if item.id == weapon.magazine.id
$game_party.lose_item(weapon.magazine,1)
weapon.bullets += weapon.max
Audio.se_play("Audio/Se/#{weapon.wav_name}_reload", 100, 100)
break
end
}
if weapon == $game_player.equipped_weapon
weapon_refresh
else
ammo_refresh
end
item_back
end
def ammo_refresh
@ammo_window.contents.clear
if $game_player.equipped_weapon != nil
string = sprintf( "Munizioni : %d",$game_player.equipped_weapon.bullets)
else
string =""
end
@ammo_window.draw_text(0,0,Graphics.width-430,24,string,0)
end
def weapon_refresh
@weapon_window.contents.clear
@weapon_window.draw_RE_weapon($game_player.actor.weapons[0],0,0) if $game_player.actor.weapons[0]
ammo_refresh
end
def item_target_actors
if !item.for_friend?
[]
elsif item.for_all?
$game_party.members
else
[$game_player.actor]
end
end
#--------------------------------------------------------------------------
# * Use Item on Actor
#--------------------------------------------------------------------------
def use_item_to_actors
user = $game_player.actor
item_target_actors.each do |target|
item.repeats.times { target.item_apply(user, item) }
end
end
#--------------------------------------------------------------------------
# * Use Item
#--------------------------------------------------------------------------
def use_item
Sound.play_use_item
$game_player.actor.use_item(item)
use_item_to_actors
check_common_event
check_gameover
weapon_refresh
life_refresh
RPG::BGS.stop
item_back
end
#--------------------------------------------------------------------------
# * Determine if Common Event Is Reserved
# Transition to the map screen if the event call is reserved.
#--------------------------------------------------------------------------
def check_common_event
SceneManager.goto(Scene_Map) if $game_temp.common_event_reserved?
end
def life_refresh
bar1 = Bitmap.new("Graphics/System/life_bar")
bar2 = Bitmap.new("Graphics/System/blood_bar")
x = RE_MENU::BAR_POSITION_X
y = RE_MENU::BAR_POSITION_Y
@life_window.contents.blt(x,y,bar2,bar2.rect)
rate = $game_player.actor.hp*1.0/$game_player.actor.mhp
rect = Rect.new(0,0,bar1.width * rate,bar1.height)
@life_window.contents.blt(x,y,bar1,rect)
end
def go_inventory
@item_window.select(0)
@menu_window.select(-1)
@menu_window.deactivate
@item_window.activate
end
def exit_inventory
@help_window.clear
@item_index = @item_window.index
@item_window.select(-1)
@item_window.deactivate
@menu_window.select(1)
@menu_window.activate
end
def open_option
$game_player.transparent = true
$game_system.save_bgm
RPG::BGS.stop
$game_player.reserve_transfer(Special_Map::Option_ID,Special_Map::Option_x,Special_Map::Option_y)
$game_player.perform_transfer
SceneManager.call(Scene_Map)
$game_switches[10] = false
end
def open_archive
$game_player.transparent = true
$game_system.save_bgm
RPG::BGS.stop
$game_player.reserve_transfer(Special_Map::Archive_ID,Special_Map::Archive_x,Special_Map::Archive_y)
$game_player.perform_transfer
SceneManager.call(Scene_Map)
$game_switches[10] = false
end
def return_map
map = $game_variables[Special_Map::Map_ID_Variable]
x = $game_variables[Special_Map::Coord_x_Variable]
y = $game_variables[Special_Map::Coord_y_Variable]
if $game_map.map_id != map #se esco da un menu...
$game_player.reserve_transfer(map,x,y) #ritorna nella mappa
$game_system.replay_bgm #Riparte la bgm
$game_switches[980] = true #si attiva la switch per togliere la dissolvenza
$game_temp.reserve_common_event(43) #Si attiva l'evento comune per togliere la dissolvenza
end
return_scene
end
end
class Window_RE_Equip < Window_Command
def initialize(x,y)
super(x,y)
end
def window_width
return (Graphics.width-430)
end
def make_command_list
add_command("Equip", :equip, equip_ok?)
add_command("Rimuovi", :remove, remove_ok?)
add_command("Ricarica", :reload, reload_ok?)
end
def reload_ok?
if @item
a = $weapons.find{|weapon| weapon.weapon.name == $data_weapons[@item.id].name}
a && a.bullets == 0
else
b = false
end
end
def equip_ok?
@item != $game_player.actor.weapons[0]
end
def remove_ok?
@item == $game_player.actor.weapons[0]
end
def set_item(item)
@item = item
end
end
class Window_RE_Use < Window_Command
def initialize(x,y)
super(x,y)
end
def window_width
return (Graphics.width-430)
end
def make_command_list
add_command("Usa", :use, use_ok?)
end
def use_ok?
actor = $game_player.actor
actor.usable?(@item) && actor.item_test(actor,@item)
end
def set_item(item)
@item = item
end
end
#==============================================================================
# ** Window_ItemList
#------------------------------------------------------------------------------
# This window displays a list of party items on the item screen.
#==============================================================================
class Window_RE_Item < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
@help_window = SceneManager.scene.help_window
@data = []
end
#--------------------------------------------------------------------------
# * Get Digit Count
#--------------------------------------------------------------------------
def col_max
return 2
end
def item_width
return 80
end
def item_height
return 80
end
def spacing
return 0
end
#--------------------------------------------------------------------------
# * Get Number of Items
#--------------------------------------------------------------------------
def item_max
@data ? @data.size : 1
end
#--------------------------------------------------------------------------
# * Get Item
#--------------------------------------------------------------------------
def item
@data && index >= 0 ? @data[index] : nil
end
#--------------------------------------------------------------------------
# * Include in Item List?
#--------------------------------------------------------------------------
def include?(item)
return true
end
#--------------------------------------------------------------------------
# * Create Item List
#--------------------------------------------------------------------------
def make_item_list
actor = $game_party.members[0]
@data = actor.weapons
@data += $game_party.all_items.select {|item| include?(item) }
# @data.push(nil) if include?(nil)
end
#--------------------------------------------------------------------------
# * Restore Previous Selection Position
#--------------------------------------------------------------------------
def select_last
select(@data.index($game_party.last_item.object) || 0)
end
#--------------------------------------------------------------------------
# * Draw Item
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
if item
rect = item_rect(index)
if item.is_a?(RPG::Weapon)
draw_RE_weapon(item,rect.x,rect.y+10)
else
draw_RE_item(item,rect.x,rect.y+10)
end
end
end
#--------------------------------------------------------------------------
# * Update Help Text
#--------------------------------------------------------------------------
def update_help
@help_window.set_item(item)
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
make_item_list
create_contents
draw_all_items
select_last
end
end
class Window_Help2 < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(x,y,width,height)
super(x,y,width,height)
end
#--------------------------------------------------------------------------
# * Set Text
#--------------------------------------------------------------------------
def set_text(text)
if text != @text
@text = text
refresh
end
end
#--------------------------------------------------------------------------
# * Clear
#--------------------------------------------------------------------------
def clear
set_text("")
end
#--------------------------------------------------------------------------
# * Set Item
# item : Skills and items etc.
#--------------------------------------------------------------------------
def set_item(item)
set_text(item ? item.name + "" + item.description : "")
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
self.contents.font.size = 20
# draw_text_ex(4, 0, @text)
a = @text.scan(/(.+)/)
draw_text(4,0, width , 24, a[0][0]) if a[0]
draw_text(4,24, width , 24, a[1][0]) if a[1]
end
end
class Window_Base
def draw_RE_weapon(item, x, y, enabled = true)
bmp = Bitmap.new(90,70)
bmp.fill_rect(bmp.rect,Color.new(255,255,255))
bitmap = Cache.RE_weapon(item.name) rescue bmp
a = $weapons.find{|weapon| weapon.weapon.name == $data_weapons[item.id].name}
image = Bitmap.new(90,70)
image.blt((80-bitmap.width)/2,(60-bitmap.height)/2,bitmap,bitmap.rect)
image.draw_text(-15,40,85,20,a.bullets,2) if a
rect = Rect.new(0,0,90,70)
contents.blt(x, y, image, rect, enabled ? 255 : translucent_alpha)
bmp.dispose
end
def draw_RE_item(item, x, y, enabled = true)
bmp = Bitmap.new(90,70)
bmp.fill_rect(bmp.rect,Color.new(255,255,255))
bitmap = Cache.RE_item(item.name) rescue bmp
image = Bitmap.new(90,70)
image.blt((80-bitmap.width)/2,(60-bitmap.height)/2,bitmap,bitmap.rect)
image.draw_text(-15,40,85,20,$game_party.item_number(item),2)
rect = Rect.new(0,0,90,70)
contents.blt(x,y,image, rect, enabled ? 255 : translucent_alpha)
bmp.dispose
end
end
class Window_RE_Command < Window_HorzCommand
def window_width
return Graphics.width
end
def make_command_list
add_command("", :option)
add_command("", :item)
add_command("", :exit)
end
def col_max
return 6
end
def spacing
return 1
end
def item_width
(width - standard_padding * 1 + spacing) / col_max - spacing #10
end
end
module Cache
def self.RE_weapon(filename)
load_bitmap("Graphics/Weapons/", filename)
end
def self.RE_item(filename)
load_bitmap("Graphics/Items/", filename)
end
end
Question
Misterdiablo94
Allora dato che per i miei due videogiochi ho utilizzato uno script inventario in stile Resident Evil su RPG Maker VX Ace, e siccome mi piacerebbe sviluppare un terzo capitolo su MV, vorrei che qualcuno mi aiutasse a riscrivere il codice per MV.
C'è qualcuno disposto ad aiutarmi? Lo script è questo.
module RE_MENU BAR_POSITION_X = 3 BAR_POSITION_Y = 0 end module Special_Map Archive_ID = 12 Archive_x = 17 Archive_y = 13 Option_ID = 11 Option_x = 17 Option_y = 13 Map_ID_Variable = 6 Coord_x_Variable = 7 Coord_y_Variable = 8 def self.set_coordinates $game_variables[Map_ID_Variable] = $game_map.map_id $game_variables[Coord_x_Variable] = $game_player.x $game_variables[Coord_y_Variable] = $game_player.y end end class Scene_Menu < Scene_MenuBase alias re_inventory_create_command_window create_command_window def create_command_window re_inventory_create_command_window @command_window.set_handler(:inventory, method(:command_inventory)) end def command_inventory SceneManager.call(Scene_RE_Menu) end end class Window_MenuCommand < Window_Command alias re_inventory_add_main_commands add_main_commands def add_main_commands add_command("RE Inventory", :inventory, main_commands_enabled) re_inventory_add_main_commands end end class Scene_RE_Menu < Scene_Base attr_reader :help_window def start super Special_Map.set_coordinates load_windowskin $game_party.last_item.object = nil create_menu_window create_face_window create_name_window create_life_window create_help_window create_weapon_window create_ammo_window create_equip_window create_use_window create_item_window @item_index = 0 @item_window.select(-1) @menu_window.select(1) @menu_window.activate create_background end def load_windowskin @windowskin = Bitmap.new("Graphics/System/re_menu_skin") @windowskin2 = Bitmap.new("Graphics/System/re_menu_ski2") end def create_menu_window @menu_window = Window_RE_Command.new(167,10) @menu_window.windowskin = @windowskin @menu_window.set_handler(:option, method(:open_option)) @menu_window.set_handler(:item, method(:go_inventory)) @menu_window.set_handler(:exit, method(:return_map)) @menu_window.set_handler(:cancel, method(:return_scene)) end def create_face_window @face_window = Window_Base.new(0,43,100,100) @face_window.windowskin = @windowskin @face_window.padding = 8 @face_window.contents = Bitmap.new(84,84) @face_window.draw_actor_face($game_party.members[0],-6,-6) @face_window.hide end def create_name_window @name_window = Window_Base.new(0,138,100,48) @name_window.windowskin = @windowskin @name_window.draw_text(-16,0,100,24,$game_party.members[0].name,1) @name_window.hide end def create_life_window @life_window = Window_Base.new(100,54,259,50) @life_window.windowskin = @windowskin life_refresh end def create_help_window @help_window = Window_Help2.new(3,305,358,Graphics.height - 30) @help_window.windowskin = @windowskin end def create_weapon_window @weapon_window = Window_Base.new(0,53,Graphics.width-440,90) @weapon_window.windowskin = @windowskin @weapon_window.draw_RE_weapon($game_player.actor.weapons[0],0,0) if $game_player.actor.weapons[0] end def create_ammo_window @ammo_window = Window_Base.new(430,90+48,Graphics.width-430,48) @ammo_window.windowskin = @windowskin ammo_refresh @ammo_window.hide end def create_equip_window @equip_window = Window_RE_Equip.new(248,130+48) @equip_window.windowskin = @windowskin2 @equip_window.set_handler(:cancel, method(:item_back)) @equip_window.set_handler(:equip, method(:equip_weapon)) @equip_window.set_handler(:remove, method(:remove_weapon)) @equip_window.set_handler(:reload, method(:reload_weapon)) @equip_window.deactivate @equip_window.hide end def create_use_window @use_window = Window_RE_Use.new(248,130+48) @use_window.windowskin = @windowskin2 @use_window.set_handler(:cancel, method(:item_back)) @use_window.set_handler(:use, method(:use_item)) @use_window.deactivate @use_window.hide end def create_item_window @item_window = Window_RE_Item.new(359,20+33,191,395-48) #(353,40+48,191,375-48) New Version (353,10+33,191,400-48) @item_window.windowskin = @windowskin @item_window.set_handler(:ok, method(:on_item_ok)) @item_window.set_handler(:cancel, method(:exit_inventory)) @item_window.refresh end def create_background @background_sprite = Sprite.new @background_sprite.bitmap = Cache.picture ("Background Inventory") @background_sprite.x = 0 @background_sprite.y = 0 end def item_back @use_window.hide @equip_window.hide @item_window.refresh @item_window.activate end def on_item_ok $game_party.last_item.object = @item_window.item if @item_window.item.is_a?(RPG::Item) @use_window.set_item(@item_window.item) @use_window.refresh @use_window.activate @use_window.show elsif @item_window.item.is_a?(RPG::Weapon) @equip_window.set_item(@item_window.item) @equip_window.refresh @equip_window.activate @equip_window.show else RPG::SE.stop @item_window.activate end end def item @item_window.item end def equip_weapon $game_player.actor.change_equip(0,@item_window.item) weapon_refresh item_back end def remove_weapon $game_player.actor.change_equip(0,nil) weapon_refresh item_back end def reload_weapon weapon = $weapons.find{|weapon| weapon.weapon.name == $data_weapons[item.id].name} $game_party.items.each { |item| if item.id == weapon.magazine.id $game_party.lose_item(weapon.magazine,1) weapon.bullets += weapon.max Audio.se_play("Audio/Se/#{weapon.wav_name}_reload", 100, 100) break end } if weapon == $game_player.equipped_weapon weapon_refresh else ammo_refresh end item_back end def ammo_refresh @ammo_window.contents.clear if $game_player.equipped_weapon != nil string = sprintf( "Munizioni : %d",$game_player.equipped_weapon.bullets) else string ="" end @ammo_window.draw_text(0,0,Graphics.width-430,24,string,0) end def weapon_refresh @weapon_window.contents.clear @weapon_window.draw_RE_weapon($game_player.actor.weapons[0],0,0) if $game_player.actor.weapons[0] ammo_refresh end def item_target_actors if !item.for_friend? [] elsif item.for_all? $game_party.members else [$game_player.actor] end end #-------------------------------------------------------------------------- # * Use Item on Actor #-------------------------------------------------------------------------- def use_item_to_actors user = $game_player.actor item_target_actors.each do |target| item.repeats.times { target.item_apply(user, item) } end end #-------------------------------------------------------------------------- # * Use Item #-------------------------------------------------------------------------- def use_item Sound.play_use_item $game_player.actor.use_item(item) use_item_to_actors check_common_event check_gameover weapon_refresh life_refresh RPG::BGS.stop item_back end #-------------------------------------------------------------------------- # * Determine if Common Event Is Reserved # Transition to the map screen if the event call is reserved. #-------------------------------------------------------------------------- def check_common_event SceneManager.goto(Scene_Map) if $game_temp.common_event_reserved? end def life_refresh bar1 = Bitmap.new("Graphics/System/life_bar") bar2 = Bitmap.new("Graphics/System/blood_bar") x = RE_MENU::BAR_POSITION_X y = RE_MENU::BAR_POSITION_Y @life_window.contents.blt(x,y,bar2,bar2.rect) rate = $game_player.actor.hp*1.0/$game_player.actor.mhp rect = Rect.new(0,0,bar1.width * rate,bar1.height) @life_window.contents.blt(x,y,bar1,rect) end def go_inventory @item_window.select(0) @menu_window.select(-1) @menu_window.deactivate @item_window.activate end def exit_inventory @help_window.clear @item_index = @item_window.index @item_window.select(-1) @item_window.deactivate @menu_window.select(1) @menu_window.activate end def open_option $game_player.transparent = true $game_system.save_bgm RPG::BGS.stop $game_player.reserve_transfer(Special_Map::Option_ID,Special_Map::Option_x,Special_Map::Option_y) $game_player.perform_transfer SceneManager.call(Scene_Map) $game_switches[10] = false end def open_archive $game_player.transparent = true $game_system.save_bgm RPG::BGS.stop $game_player.reserve_transfer(Special_Map::Archive_ID,Special_Map::Archive_x,Special_Map::Archive_y) $game_player.perform_transfer SceneManager.call(Scene_Map) $game_switches[10] = false end def return_map map = $game_variables[Special_Map::Map_ID_Variable] x = $game_variables[Special_Map::Coord_x_Variable] y = $game_variables[Special_Map::Coord_y_Variable] if $game_map.map_id != map #se esco da un menu... $game_player.reserve_transfer(map,x,y) #ritorna nella mappa $game_system.replay_bgm #Riparte la bgm $game_switches[980] = true #si attiva la switch per togliere la dissolvenza $game_temp.reserve_common_event(43) #Si attiva l'evento comune per togliere la dissolvenza end return_scene end end class Window_RE_Equip < Window_Command def initialize(x,y) super(x,y) end def window_width return (Graphics.width-430) end def make_command_list add_command("Equip", :equip, equip_ok?) add_command("Rimuovi", :remove, remove_ok?) add_command("Ricarica", :reload, reload_ok?) end def reload_ok? if @item a = $weapons.find{|weapon| weapon.weapon.name == $data_weapons[@item.id].name} a && a.bullets == 0 else b = false end end def equip_ok? @item != $game_player.actor.weapons[0] end def remove_ok? @item == $game_player.actor.weapons[0] end def set_item(item) @item = item end end class Window_RE_Use < Window_Command def initialize(x,y) super(x,y) end def window_width return (Graphics.width-430) end def make_command_list add_command("Usa", :use, use_ok?) end def use_ok? actor = $game_player.actor actor.usable?(@item) && actor.item_test(actor,@item) end def set_item(item) @item = item end end #============================================================================== # ** Window_ItemList #------------------------------------------------------------------------------ # This window displays a list of party items on the item screen. #============================================================================== class Window_RE_Item < Window_Selectable #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(x, y, width, height) super(x, y, width, height) @help_window = SceneManager.scene.help_window @data = [] end #-------------------------------------------------------------------------- # * Get Digit Count #-------------------------------------------------------------------------- def col_max return 2 end def item_width return 80 end def item_height return 80 end def spacing return 0 end #-------------------------------------------------------------------------- # * Get Number of Items #-------------------------------------------------------------------------- def item_max @data ? @data.size : 1 end #-------------------------------------------------------------------------- # * Get Item #-------------------------------------------------------------------------- def item @data && index >= 0 ? @data[index] : nil end #-------------------------------------------------------------------------- # * Include in Item List? #-------------------------------------------------------------------------- def include?(item) return true end #-------------------------------------------------------------------------- # * Create Item List #-------------------------------------------------------------------------- def make_item_list actor = $game_party.members[0] @data = actor.weapons @data += $game_party.all_items.select {|item| include?(item) } # @data.push(nil) if include?(nil) end #-------------------------------------------------------------------------- # * Restore Previous Selection Position #-------------------------------------------------------------------------- def select_last select(@data.index($game_party.last_item.object) || 0) end #-------------------------------------------------------------------------- # * Draw Item #-------------------------------------------------------------------------- def draw_item(index) item = @data[index] if item rect = item_rect(index) if item.is_a?(RPG::Weapon) draw_RE_weapon(item,rect.x,rect.y+10) else draw_RE_item(item,rect.x,rect.y+10) end end end #-------------------------------------------------------------------------- # * Update Help Text #-------------------------------------------------------------------------- def update_help @help_window.set_item(item) end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh make_item_list create_contents draw_all_items select_last end end class Window_Help2 < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(x,y,width,height) super(x,y,width,height) end #-------------------------------------------------------------------------- # * Set Text #-------------------------------------------------------------------------- def set_text(text) if text != @text @text = text refresh end end #-------------------------------------------------------------------------- # * Clear #-------------------------------------------------------------------------- def clear set_text("") end #-------------------------------------------------------------------------- # * Set Item # item : Skills and items etc. #-------------------------------------------------------------------------- def set_item(item) set_text(item ? item.name + "" + item.description : "") end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh contents.clear self.contents.font.size = 20 # draw_text_ex(4, 0, @text) a = @text.scan(/(.+)/) draw_text(4,0, width , 24, a[0][0]) if a[0] draw_text(4,24, width , 24, a[1][0]) if a[1] end end class Window_Base def draw_RE_weapon(item, x, y, enabled = true) bmp = Bitmap.new(90,70) bmp.fill_rect(bmp.rect,Color.new(255,255,255)) bitmap = Cache.RE_weapon(item.name) rescue bmp a = $weapons.find{|weapon| weapon.weapon.name == $data_weapons[item.id].name} image = Bitmap.new(90,70) image.blt((80-bitmap.width)/2,(60-bitmap.height)/2,bitmap,bitmap.rect) image.draw_text(-15,40,85,20,a.bullets,2) if a rect = Rect.new(0,0,90,70) contents.blt(x, y, image, rect, enabled ? 255 : translucent_alpha) bmp.dispose end def draw_RE_item(item, x, y, enabled = true) bmp = Bitmap.new(90,70) bmp.fill_rect(bmp.rect,Color.new(255,255,255)) bitmap = Cache.RE_item(item.name) rescue bmp image = Bitmap.new(90,70) image.blt((80-bitmap.width)/2,(60-bitmap.height)/2,bitmap,bitmap.rect) image.draw_text(-15,40,85,20,$game_party.item_number(item),2) rect = Rect.new(0,0,90,70) contents.blt(x,y,image, rect, enabled ? 255 : translucent_alpha) bmp.dispose end end class Window_RE_Command < Window_HorzCommand def window_width return Graphics.width end def make_command_list add_command("", :option) add_command("", :item) add_command("", :exit) end def col_max return 6 end def spacing return 1 end def item_width (width - standard_padding * 1 + spacing) / col_max - spacing #10 end end module Cache def self.RE_weapon(filename) load_bitmap("Graphics/Weapons/", filename) end def self.RE_item(filename) load_bitmap("Graphics/Items/", filename) end endLink to comment
Share on other sites
0 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now