09-17-2012, 11:01 AM
Hello,
I was wondering if someone could help me. I'm using a compact menu script created by The Sleeping Leonhart (Version: 1.2) to combine all magic, item and armor selection into one menu.
The cursor used to select various items which works fine on Items and Magic, but not the Equip section.
The difference with the equip section is that it has two tiers of selection. You choose equip then you pick the armor type (accessory, henshin etc). The cursor is visible when selecting armor type but then disappears when picking from an armor type selection. The selection still works but the cursor disappears.
I've attached ascript I am using - if a screenshot would be helpful of the required behaviour I can add this too.
If someone is able to help I'd appreciate it.
Thanks
I was wondering if someone could help me. I'm using a compact menu script created by The Sleeping Leonhart (Version: 1.2) to combine all magic, item and armor selection into one menu.
The cursor used to select various items which works fine on Items and Magic, but not the Equip section.
The difference with the equip section is that it has two tiers of selection. You choose equip then you pick the armor type (accessory, henshin etc). The cursor is visible when selecting armor type but then disappears when picking from an armor type selection. The selection still works but the cursor disappears.
I've attached ascript I am using - if a screenshot would be helpful of the required behaviour I can add this too.
If someone is able to help I'd appreciate it.
Thanks
Code:
#========================================================================
=
=====
# ** Compact Menu
#------------------------------------------------------------------------------
# Autore: The Sleeping Leonhart
# Versione: 1.2
# Data di rilascio: 26/07/2008
#------------------------------------------------------------------------------
# Description:
# Menu that permits the use of objects, magic and armours all on one screen.
#------------------------------------------------------------------------------
# Insturctions:
# Edit the images to adapt the menu to your liking.
# The images of party memebers have to be placed in the pictures section and
# have to be named the same as their battler graphic.
#==============================================================================
class Game_Actor < Game_Battler
def now_exp
return @exp - @exp_list[@level]
end
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
class Window_Base < Window
def draw_actor_exps(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 28, 32, "Exp")
self.contents.font.color = normal_color
if actor.now_exp != 0
text = (actor.now_exp.to_f / actor.next_exp.to_f)*100.00
text = text.round
else
text = 0
end
self.contents.draw_text(x + 40, y, 84, 32, text.to_s+"%")
end
def draw_actor_parameter(actor, x, y, type)
case type
when 0
parameter_name = $data_system.words.atk
parameter_value = actor.atk
when 1
parameter_name = $data_system.words.pdef
parameter_value = actor.pdef
when 2
parameter_name = $data_system.words.mdef
parameter_value = actor.mdef
when 3
parameter_name = $data_system.words.str
parameter_value = actor.str
when 4
parameter_name = $data_system.words.dex
parameter_value = actor.dex
when 5
parameter_name = $data_system.words.agi
parameter_value = actor.agi
when 6
parameter_name = $data_system.words.int
parameter_value = actor.int
when 7
parameter_name = "Evasion"
parameter_value = actor.eva
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 88, y, 36, 32, parameter_value.to_s, 2)
end
end
class Window_MenuStatus < Window_Selectable
def initialize(actor)
super(220, 48, 480, 96+32)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 0
@actor = actor
refresh
self.active = false
self.index = -1
end
def refresh
self.contents.clear
@item_max = 1
x = 0
y = 0
actor = @actor
self.contents.font.size = 18
draw_actor_name(actor, x, y)
draw_actor_hp(actor, x + 92, y)
draw_actor_sp(actor, x + 236, y)
draw_actor_state(actor, x, y + 18)
draw_actor_level(actor, x, y + 36)
draw_actor_exps(actor, x, y + 54)
draw_actor_parameter(actor, x + 92, y + 16, 0)
draw_actor_parameter(actor, x + 92, y + 32, 1)
draw_actor_parameter(actor, x + 92, y + 48, 2)
draw_actor_parameter(actor, x + 92, y + 64, 6)
draw_actor_parameter(actor, x + 236, y + 16, 3)
draw_actor_parameter(actor, x + 236, y + 32, 4)
draw_actor_parameter(actor, x + 236, y + 48, 5)
draw_actor_parameter(actor, x + 236, y + 64, 7)
end
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(0, @index * 96, self.width - 32, 96)
end
end
end
class Window_MenuSkill < Window_Selectable
def initialize(actor)
super(287, 299, 278, 56)
@actor = actor
@column_max = 10
@row_max = 1
refresh
self.opacity = 0
self.index = 0
end
def skill
return @data[self.index]
end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...@actor.skills.size
skill = $data_skills[@actor.skills[i]]
if skill != nil
@data.push(skill)
end
end
@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
def draw_item(index)
skill = @data[index]
if @actor.skill_can_use?(skill.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = index % 10 * 24
y = index / 10 * 24
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.font.size = 14
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x+12,y+8,128,24,skill.sp_cost.to_s)
end
def update_help
@help_window.set_text(self.skill == nil ? "" : self.skill.name+": "+self.skill.description)
end
def update_cursor_rect
if self.active
self.cursor_rect.set(@index % 10 * 24, 0, 24, 24)
self.oy = index / 10 * 24
else
self.cursor_rect.set(0, 0, 0, 0)
end
end
end
class Window_MenuItem < Window_Selectable
def initialize
super(287, 355, 278, 56+24)
@column_max = 10
refresh
self.index = 0
self.opacity = 0
end
def item
return @data[self.index]
end
def refresh
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
@data.push($data_items[i])
end
end
@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
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 * 24
y = index / 10 * 24
rect = Rect.new(x, y, 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.font.size = 14
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 12, y + 4, 24, 32, number.to_s)
end
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.name+": "+self.item.description)
end
def update_cursor_rect
if self.active
if @index < 0
self.cursor_rect.empty
return
end
row = @index / @column_max
if row < self.top_row
self.top_row = row
end
if row > self.top_row + 1
self.top_row = row - 1
end
cursor_width = self.width / @column_max - 32
self.oy = (self.oy/32)*24
x = @index % @column_max * 24
y = @index / @column_max * 24 - (self.oy/24)*24
self.cursor_rect.set(x, y, 24, 24)
else
self.cursor_rect.set(0, 0, 0, 0)
end
end
end
class Window_Target < Window_Selectable
def initialize
super(0, 0, $game_party.actors.size*48+32, 96)
self.contents = Bitmap.new(width - 32, height - 32)
self.z += 10
@column_max = @item_max = $game_party.actors.size
refresh
end
def refresh
self.contents.clear
for i in 0...$game_party.actors.size
x = 48*i+24
y = 52
actor = $game_party.actors[i]
draw_actor_graphic(actor, x, y)
end
end
def update_cursor_rect
if @index <= -2
self.cursor_rect.set((@index + 10) * 48, 0, 48, 64)
elsif @index == -1
self.cursor_rect.set(0, 0, @item_max * 48, 64)
else
self.cursor_rect.set(@index * 48, 0, 48, 64)
end
end
end
class Window_MenuEquipped < Window_Selectable
def initialize(actor)
super(272, 158, 368, 26*2+32)
self.contents = Bitmap.new(width - 32, 32 * 5 - 32)
self.opacity = 0
self.active = false
self.index = 0
@item_max = 5
@column_max = 1
@actor = actor
refresh
end
def item
return @data[self.index]
end
def refresh
self.contents.clear
@data = []
@data.push($data_weapons[@actor.weapon_id])
@data.push($data_armors[@actor.armor1_id])
@data.push($data_armors[@actor.armor2_id])
@data.push($data_armors[@actor.armor3_id])
@data.push($data_armors[@actor.armor4_id])
@item_max = @data.size
self.contents.font.color = system_color
self.contents.font.size = 16
self.contents.draw_text(16, 26 * 0, 92, 32, $data_system.words.weapon)
self.contents.draw_text(16, 26 * 1, 92, 32, $data_system.words.armor1)
self.contents.draw_text(16, 26 * 2, 92, 32, $data_system.words.armor2)
self.contents.draw_text(16, 26 * 3, 92, 32, $data_system.words.armor3)
self.contents.draw_text(16, 26 * 4, 92, 32, $data_system.words.armor4)
draw_item_name(@data[0], 92, 26 * 0)
draw_item_name(@data[1], 92, 26 * 1)
draw_item_name(@data[2], 92, 26 * 2)
draw_item_name(@data[3], 92, 26 * 3)
draw_item_name(@data[4], 92, 26 * 4)
end
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.name+": "+self.item.description)
end
def update_cursor_rect
if self.active
y = @index % 2 * 26
self.cursor_rect.set(12, y + 9, 244, 16)
self.oy = (@index - @index % 2) * 26
else
self.cursor_rect.set(0, 0, 0, 0)
end
end
end
class Window_MenuEquip < Window_Selectable
def initialize(actor, type)
super(287, 243-24, 272, 80)
@actor = actor
@column_max = 10
@row_max = 2
@equip_type = type
self.index = 0
self.opacity = 0
self.active = false
refresh
end
def item
return @data[self.index]
end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
if @equip_type == 0
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
@data.push($data_weapons[i])
end
end
end
if @equip_type != 0
armor_set = $data_classes[@actor.class_id].armor_set
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and armor_set.include?(i)
if $data_armors[i].kind == @equip_type-1
@data.push($data_armors[i])
end
end
end
end
@data.push(nil)
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max-1
draw_item(i)
end
end
def draw_item(index)
item = @data[index]
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
x = index % 10 * 24
y = index / 10 * 24
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.font.size = 14
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x+12,y+8,128,24, number.to_s)
end
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.name+": "+self.item.description)
end
def update_cursor_rect
if self.active
self.cursor_rect.set(@index % 10 * 24, 0, 24, 24)
self.oy = index / 10 * 24
else
self.cursor_rect.set(0, 0, 0, 0)
end
end
end
class Scene_Menu
def initialize(menu_index = 0)
@menu_index = menu_index
end
def main
@actor_index = 0
@target = ""
scene_window
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
scene_dispose
end
def scene_window
@actor = $game_party.actors[@actor_index]
@map = Spriteset_Map.new
@bg = Sprite.new
@bg.bitmap = Bitmap.new("Graphics/Pictures/MenuBG3")
@pg = Sprite.new
@pg.bitmap = Bitmap.new("Graphics/Pictures/"+@actor.battler_name)
@pg.y = 64
@arrow = Sprite.new
@arrow.x = 264
@arrow.y = 170
@arrow.bitmap = Bitmap.new("Graphics/Pictures/Arrow")
@lr = Sprite.new
@lr.bitmap = Bitmap.new("Graphics/Pictures/LR") if $game_party.actors.size > 1
s1 = ""
@command_window = Window_Command.new(160, [s1, s1, s1, s1, s1])
@menu_index = 3 if @menu_index == 4
@menu_index = 4 if @menu_index == 5
@command_window.index = @menu_index
@command_window.visible = false
if $game_party.actors.size == 0
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
if $game_system.save_disabled
@command_window.disable_item(4)
end
@help_window = Window_Help.new
@help_window.opacity = 0
@item_window = Window_MenuItem.new
@skill_window = Window_MenuSkill.new(@actor)
@status_window = Window_MenuStatus.new(@actor)
@target_window = Window_Target.new
@right_window = Window_MenuEquipped.new(@actor)
@item_window1 = Window_MenuEquip.new(@actor, 0)
@item_window2 = Window_MenuEquip.new(@actor, 1)
@item_window3 = Window_MenuEquip.new(@actor, 2)
@item_window4 = Window_MenuEquip.new(@actor, 3)
@item_window5 = Window_MenuEquip.new(@actor, 4)
@skill_window.help_window = @help_window
@item_window.help_window = @help_window
@right_window.help_window = @help_window
@item_window1.help_window = @help_window
@item_window2.help_window = @help_window
@item_window3.help_window = @help_window
@item_window4.help_window = @help_window
@item_window5.help_window = @help_window
@item_equip_window = @item_window1
@item_window1.visible = false
@item_window2.visible = false
@item_window3.visible = false
@item_window4.visible = false
@item_window5.visible = false
@item_window.active = false
@help_window.visible = false
@skill_window.active = false
@target_window.visible = false
@target_window.active = false
end
def scene_dispose
@command_window.dispose
@item_window.dispose
@item_window1.dispose
@item_window2.dispose
@item_window3.dispose
@item_window4.dispose
@item_window5.dispose
@skill_window.dispose
@status_window.dispose
@target_window.dispose
@right_window.dispose
@help_window.dispose
@map.dispose
@bg.dispose
@pg.dispose
@arrow.dispose
@lr.dispose
end
def update
@command_window.update
@item_window.update
@item_window1.update
@item_window2.update
@item_window3.update
@item_window4.update
@item_window5.update
@skill_window.update
@status_window.update
@target_window.update
@right_window.update
@map.update
case @right_window.index
when 0
@item_equip_window.visible = false
@item_equip_window = @item_window1
@item_equip_window.visible = true
when 1
@item_equip_window.visible = false
@item_equip_window = @item_window2
@item_equip_window.visible = true
when 2
@item_equip_window.visible = false
@item_equip_window = @item_window3
@item_equip_window.visible = true
when 3
@item_equip_window.visible = false
@item_equip_window = @item_window4
@item_equip_window.visible = true
when 4
@item_equip_window.visible = false
@item_equip_window = @item_window5
@item_equip_window.visible = true
end
if $game_party.actors.size > 1
if Input.trigger?(Input::R)
$game_system.se_play($data_system.cursor_se)
@actor_index += 1
@actor_index %= $game_party.actors.size
scene_dispose
scene_window
return
end
if Input.trigger?(Input::L)
$game_system.se_play($data_system.cursor_se)
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
scene_dispose
scene_window
return
end
end
if @command_window.active
update_command
return
end
if @item_window.active
update_item
return
end
if @skill_window.active
update_skill
return
end
if @right_window.active
update_right
return
end
if @item_equip_window.active
update_equip_item
return
end
if @target_window.active
update_item_target if @target == "item"
update_skill_target if @target == "skill"
return
end
end
def update_command
case @command_window.index
when 2
@help_window.set_text("Display & Use Items")
@arrow.x = 264
@arrow.y = 360
when 1
@help_window.set_text("Display & Use Magic")
@arrow.x = 264
@arrow.y = 300
when 0
@help_window.set_text("Display & Equip Armour, Accessories & Charms")
@arrow.x = 264
@arrow.y = 170
when 3
@help_window.set_text("Change Party Members")
@arrow.x = 556
@arrow.y = 464
when 4
@help_window.set_text("Options")
@arrow.x = 590
@arrow.y = 464
end
if Input.trigger?(Input::
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
if $game_party.actors.size == 0 and @command_window.index < 4
$game_system.se_play($data_system.buzzer_se)
return
end
case @command_window.index
when 2
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@item_window.active = true
when 1
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@skill_window.active = true
when 0
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@right_window.active = true
when 3
$game_system.se_play($data_system.decision_se)
$game_temp.use_custom_graphic = true
$scene = Scene_Party.new
when 4
$game_system.se_play($data_system.decision_se)
$scene = Scene_Option.new
end
return
end
end
def update_item
if Input.trigger?(Input::
$game_system.se_play($data_system.cancel_se)
@item_window.active = false
@item_window.help_window.visible = false
@command_window.active = true
return
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 = 287
@target_window.y = 355
@target_window.visible = true
@target_window.active = true
@target = "item"
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
def update_item_target
if Input.trigger?(Input::
$game_system.se_play($data_system.cancel_se)
unless $game_party.item_can_use?(@item.id)
@item_window.refresh
end
@target = ""
@item_window.active = true
@target_window.visible = false
@target_window.active = false
return
end
if Input.trigger?(Input::C)
if $game_party.item_number(@item.id) == 0
$game_system.se_play($data_system.buzzer_se)
return
end
if @target_window.index == -1
used = false
for i in $game_party.actors
used |= i.item_effect(@item)
end
end
if @target_window.index >= 0
target = $game_party.actors[@target_window.index]
used = target.item_effect(@item)
end
if used
$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
@target_window.refresh
if $game_party.all_dead?
$scene = Scene_Gameover.new
return
end
if @item.common_event_id > 0
$game_temp.common_event_id = @item.common_event_id
$scene = Scene_Map.new
return
end
@status_window.refresh
end
unless used
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
def update_skill
if Input.trigger?(Input::
$game_system.se_play($data_system.cancel_se)
@skill_window.active = false
@skill_window.help_window.visible = false
@command_window.active = true
return
end
if Input.trigger?(Input::C)
@skill = @skill_window.skill
if @skill == nil or not @actor.skill_can_use?(@skill.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
if @skill.scope >= 3
@skill_window.active = false
@target_window.x = 287
@target_window.y = 299
@target_window.visible = true
@target_window.active = true
@target = "skill"
if @skill.scope == 4 || @skill.scope == 6
@target_window.index = -1
elsif @skill.scope == 7
@target_window.index = @actor_index - 10
else
@target_window.index = 0
end
else
if @skill.common_event_id > 0
$game_temp.common_event_id = @skill.common_event_id
$game_system.se_play(@skill.menu_se)
@status_window.refresh
@skill_window.refresh
@target_window.refresh
$scene = Scene_Map.new
return
end
end
return
end
end
def update_skill_target
if Input.trigger?(Input::
$game_system.se_play($data_system.cancel_se)
@skill_window.active = true
@target_window.visible = false
@target_window.active = false
@target = ""
return
end
if Input.trigger?(Input::C)
unless @actor.skill_can_use?(@skill.id)
$game_system.se_play($data_system.buzzer_se)
return
end
if @target_window.index == -1
used = false
for i in $game_party.actors
used |= i.skill_effect(@actor, @skill)
end
end
if @target_window.index <= -2
target = $game_party.actors[@target_window.index + 10]
used = target.skill_effect(@actor, @skill)
end
if @target_window.index >= 0
target = $game_party.actors[@target_window.index]
used = target.skill_effect(@actor, @skill)
end
if used
$game_system.se_play(@skill.menu_se)
@actor.sp -= @skill.sp_cost
@status_window.refresh
@skill_window.refresh
@target_window.refresh
if $game_party.all_dead?
$scene = Scene_Gameover.new
return
end
if @skill.common_event_id > 0
$game_temp.common_event_id = @skill.common_event_id
$scene = Scene_Map.new
return
end
end
unless used
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
def update_right
if Input.trigger?(Input::
$game_system.se_play($data_system.cancel_se)
@right_window.active = false
@right_window.help_window.visible = false
@command_window.active = true
return
end
if Input.trigger?(Input::C)
if @actor.equip_fix?(@right_window.index)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
@right_window.active = false
@item_equip_window.active = true
return
end
end
def update_equip_item
if Input.trigger?(Input::
$game_system.se_play($data_system.cancel_se)
@right_window.active = true
@item_equip_window.help_window.visible = false
@item_equip_window.active = false
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.equip_se)
type = @right_window.index
item = @item_equip_window.item
@actor.equip(type, item == nil ? 0 : item.id)
@right_window.active = true
@item_equip_window.active = false
@right_window.refresh
@item_equip_window.refresh
@status_window.refresh
return
end
end
end