i asked for a menu when you didnt think night was coming back, sorry about that night anyhow if you guys want to see the script I'll post it
CODE
module Item_Window_Config
# [(0 = item, 1 = wepon, 2 = armor), item id, switch id (only for items)]
# The menu will draw weapons and armors if the party has them. It will
# draw the item if the switch for it is active.
ITEM_LIST = {
"bow" => [1, 1],
0 => [1, 1],
1 => [2, 1],
5 => [1, 1],
"jar0" => [0, 1, 1], # [type, item id, vairaible id]
"jar1" => [0, 1, 2], # variable id is set to -1 if do not have jar,
"jar2" => [0, 1, 3], # 0 if have jar, and 1-999 for item id in jar.
"jar3" => [0, 1, 4],
"jar4" => [0, 1, 5],
"jar5" => [0, 1, 6]
}
end
#==============================================================================
class Scene_Menu
def main
@back_pic = Window_Base.new(-8, -8, 700, 520)
@back_pic.contents = Bitmap.new(700, 520)
@back_pic.opacity = 0
set_back_pic("Item Menu.png")
@item_window = Menu_Item_Win.new
Graphics.transition
loop do
Graphics.update
Input.update
update
break if $scene != self
end
Graphics.freeze
@item_window.dispose
@back_pic.dispose
end
def set_back_pic(img)
back = RPG::Cache.windowskin(img)
@back_pic.contents.clear
@back_pic.contents.blt(0, 0, back, Rect.new(0, 0, back.width, back.height))
@back_pic.update
end
def update
@item_window.update
if Input.trigger?(Input::C)
elsif Input.trigger?(Input::B)
$scene = Scene_Map.new
end
end
end
#==============================================================================
class Menu_Item_Win < Window_Selectable
def initialize
super(-16, -16, 700, 500)
@column_max = 8
@spacing = 18
self.index = -1
@tag = 1
refresh
self.opacity = 0
end
def item
return @data[self.index]
end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $defaultfonttype
self.contents.font.size = $defaultfontsize
@data = []
item = $data_weapons[Item_Window_Config::ITEM_LIST["bow"][1]]
@data.push(item)
actor = $game_party.actors[0]
for id in 0..31
id = Item_Window_Config::ITEM_LIST[id]
if id.nil?
@data.push(nil)
next
end
case id[0]
when 0
if $game_switches[id[2]]
@data.push($data_items[id[1]])
next
end
when 1
if $game_party.weapon_number(id[1]) > 0 or actor.weapon_id == id[1]
@data.push($data_weapons[id[1]])
next
end
when 2
if $game_party.armor_number(id[1]) > 0
@data.push($data_armors[id[1]])
next
end
end
@data.push(nil)
end
for id in 0..5
item = Item_Window_Config::ITEM_LIST["jar#{id}"]
item = item.nil? ? nil : $data_items[item[1]]
@data.push(item)
end
@item_max = @data.size
for i in 0...@item_max
draw_item(i)
end
end
def draw_item(index)
item = @data[index]
tag = index.zero? ? 1 : index > 32 ? 2 : 0
case tag
when 0
index = index - 1
x = 119 + (index % @column_max * (36 + @spacing))
y = 82 + (index / @column_max * (36 + @spacing))
when 1
x = 64
y = 82
when 2
index = index - 1
x = 164 + (index % @column_max * (36 + @spacing))
y = 316
end
self.contents.draw_text(x, y, 24, 32, "#{index}", 2)
return if item.nil?
number = $game_party.item_number(item.id) if item.is_a?(RPG::Item)
rect = Rect.new(x, y, 36, 36)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
opacity = 255
unless number.nil?
self.contents.draw_text(x, y, 24, 32, number.to_s, 2)
opacity = 128 if number.zero?
end
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x + 6, y + 6, bitmap, Rect.new(0, 0, 24, 24), opacity)
end
def update
old_index = @index
if self.active and @item_max > 0
if Input.repeat?(Input::DOWN)
return if @index == -1
if (@index / @column_max) < 4 and @tag != 2
if @index != 24 and @index != 31
@index = (@index + @column_max) % @item_max
end
end
if @index > 31
@index -= 1 if @tag == 0
@tag = 2
end
end
if Input.repeat?(Input::UP)
return if @index == -1
if @index >= @column_max
@index = (@index - @column_max + @item_max) % @item_max
end
if @index < 32 and @tag == 2
@index += 1
@tag = 0
end
end
if Input.repeat?(Input::RIGHT)
if @index == -1
@tag = 0
@index = 0
elsif @tag == 2
@index += 1 if (@index % @column_max) < 5
else
@index += 1 if (@index % @column_max) < 7
end
end
if Input.repeat?(Input::LEFT)
if @index == 0
@tag = 1
@index = -1
elsif @index > -1
@index -= 1 if (@index % @column_max) > 0
end
end
end
if old_index != @index
$game_system.se_play($data_system.cursor_se)
refresh
end
update_help if self.active and @help_window != nil
update_cursor_rect
end
def update_cursor_rect
index = @index
if index < 0
index = index + 1
end
row = index / @column_max
self.top_row = row if row < self.top_row
if row > self.top_row + (self.page_row_max - 1)
self.top_row = row - (self.page_row_max - 1)
end
x, y = 0, 0
case @tag
when 0
x = 119 + (index % @column_max * (36 + @spacing))
y = 82 + (index / @column_max * (36 + @spacing) - self.oy)
when 1
x = 64
y = 82
when 2
x = 164 + (index % @column_max * (36 + @spacing))
y = 316
end
self.cursor_rect.set(x, y, 36, 36)
end
def top_row
return self.oy / (36 + @spacing)
end
def top_row=(row)
row = 0 if row < 0
row = row_max - 1 if row > row_max - 1
self.oy = row * (36 + @spacing)
end
def page_row_max
return 5
end
def page_item_max
return page_row_max * @column_max
end
def row_max
return @item_max / @column_max
end
end
Just a start but it took a long time figuring out how to line all the items up in the index and such. Test it out and let me know how it feels.
Here the img i re scaled for it.

Save it in Window Skin folder by the name Item Menu.
Also sorry but the way i have it set up you can only have 32 items and in your sample pic you have 35, the way its set up it would be hard to add 3 items in and make it look good, how ever i can just add a new row of items and that will bring up the count to 40.
Mr. Wiggles was working on it, this for xasabs.