Version: Initial
By: Landarma
Introduction
A small collection of my custom menu scene scripts. Including my old Simple CMS and new skill and status scenes.
Features
- SDK compatible
- For the rest, see the screenshots.
Screenshots

Using with DerVVulfman's Grouping and Details

I know it's not pretty, but I don't have any other idea..
Demo
Demo Download - 4Shared
Script
About menu scripts, see my old CMS thread at Script Archive.
Code:
Â
# L's Custom Skill Scene
#--------------------------------------------------------------------------
# * Begin SDK Log
#--------------------------------------------------------------------------
SDK.log("L's Skill Scene", 'L', 'Initial', '2009-02-26')
Â
#--------------------------------------------------------------------------
# * Begin SDK Requirement Check
#--------------------------------------------------------------------------
SDK.check_requirements(2.0, [1, 3])
Â
#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if SDK.enabled?("L's Skill Scene")
Â
#==============================================================================
# * Window_Skill_Header (Currently Dummy)
#==============================================================================
class Window_Skill_Header < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
  super(0, 0, 640, 64)
  #Create Bitmap
  self.contents = Bitmap.new(width - 32, height - 32)
  #Refresh and add the contents to window
  refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
  #Clear Bitmap
  self.contents.clear
 end
end
Â
Â
#==============================================================================
# * Window_SkillStatus
#==============================================================================
class Window_SkillStatus < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(actor)
  super(0, 64, 240, 352)
  #Create Bitmap
  self.contents = Bitmap.new(width - 32, height - 32)
  #Refresh and add the contents to window
  @actor = actor
  refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
  #Clear Bitmap
  self.contents.clear
  #Draw actor's status
  draw_actor_name(@actor, 16, 0)
  draw_actor_level(@actor, 128, 0)
  draw_actor_graphic(@actor, 96, 128)
  draw_actor_class(@actor, 16, 160)
  draw_actor_state(@actor, 16, 192)
  draw_actor_hp(@actor, 16, 224)
  draw_actor_sp(@actor, 16, 256)
 end Â
end
Â
Â
#==============================================================================
# * Window_Skill
#==============================================================================
class Window_Skill < Window_Selectable
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(actor)
  if $game_temp.in_battle
   super(0, 128, 640, 352)
  else
   super(240, 64, 400, 352)
  end
  #Create Bitmap
  self.contents = Bitmap.new(width - 32, height - 32)
  @actor = actor
  if $game_temp.in_battle
   @column_max = 2
  else
   @column_max = 1
  end
  #Refresh and add the contents to window
  refresh
  self.index = 0
  # If in battle, move window to center of screen
  # and make it semi-transparent
  if $game_temp.in_battle
   self.y = 64
   self.height = 256
   self.back_opacity = 160
  end
 end
 #--------------------------------------------------------------------------
 # * Acquiring Skill
 #--------------------------------------------------------------------------
 def skill
  return @data[self.index]
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 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
  # If item count is not 0, make a bit map and draw all items
  @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
 #--------------------------------------------------------------------------
 # * Draw Item
 #   index : item number
 #--------------------------------------------------------------------------
 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 = 4 + index % 2 * (288 + 32)
  y = index / 2 * 32
  rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  bitmap = RPG::Cache.icon(skill.icon_name)
  opacity = self.contents.font.color == normal_color ? 255 : 128
  self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
  if $game_temp.in_battle
   self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
  else
   self.contents.draw_text(x + 310, y, 48, 32, skill.sp_cost.to_s, 2)
  end
 end
 #--------------------------------------------------------------------------
 # * Help Text Update
 #--------------------------------------------------------------------------
 def update_help
  @help_window.set_text(self.skill == nil ? "" : self.skill.description)
 end
end
Â
Â
#==============================================================================
# ** Scene_Skill
#------------------------------------------------------------------------------
# Â This class performs skill screen processing.
#==============================================================================
Â
class Scene_Skill < SDK::Scene_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #   actor_index : actor index
 #--------------------------------------------------------------------------
 def initialize(actor_index = 0, equip_index = 0)
  @actor_index = actor_index
  super()
 end
 #--------------------------------------------------------------------------
 # * Main Processing : Variable Initialization
 #--------------------------------------------------------------------------
 def main_variable
  super
  # Get actor
  @actor = $game_party.actors[@actor_index]
 end
 #--------------------------------------------------------------------------
 # * Main Processing : Window Initialization
 #--------------------------------------------------------------------------
 def main_window
  super
  # Make help window, status window, and skill window
  @header_window = Window_Skill_Header.new
  @help_window = Window_Help.new
  @help_window.y = 416
  @status_window = Window_SkillStatus.new(@actor)
  @status_window.y = 64
  @skill_window = Window_Skill.new(@actor)
  @skill_window.y = 64
  @skill_window.height = 352
  # Associate help window
  @skill_window.help_window = @help_window
  # Make target window (set to invisible / inactive)
  @target_window = Window_Target.new
  @target_window.visible = false
  @target_window.active = false
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
  super
  # If skill window is active: call update_skill
  if @skill_window.active
   update_skill
   return
  # If skill target is active: call update_target
  elsif @target_window.active
   update_target
   return
  end
 end
end
Â
#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
Â
Code:
Â
# L's Custom Status Screen
#--------------------------------------------------------------------------
# * Begin SDK Log
#--------------------------------------------------------------------------
SDK.log("L's Custom Status Screen", 'L', 'Initial', '2009-02-27')
Â
#--------------------------------------------------------------------------
# * Begin SDK Requirement Check
#--------------------------------------------------------------------------
SDK.check_requirements(2.0, [1, 3])
Â
#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if SDK.enabled?("L's Custom Status Screen")
Â
class Window_Base < Window
 SYSTEM_WORD_EVA = "Evade" #
 #--------------------------------------------------------------------------
 # * Draw Parameter
 #   actor : actor
 #   x   : draw spot x-coordinate
 #   y   : draw spot y-coordinate
 #   type  : parameter type (0-6)
 #--------------------------------------------------------------------------
 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 = SYSTEM_WORD_EVA #
   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 + 120, y, 36, 32, parameter_value.to_s, 2)
 end
end
Â
Â
#==============================================================================
# * Window_Actor_NamePlate
#==============================================================================
class Window_Actor_NamePlate < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(actor)
  super(240, 0, 400, 64)
  #Create Bitmap
  self.contents = Bitmap.new(width - 32, height - 32)
  @actor = actor
  #Refresh and add the contents to window
  refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
  #Clear Bitmap
  self.contents.clear
  draw_actor_name(@actor, 16, 0)
  draw_actor_class(@actor, 240, 0)
 end
end
Â
Â
#==============================================================================
# * Window_Actor_Info1
#==============================================================================
class Window_Actor_Info1 < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(actor)
  super(0, 0, 240, 480)
  #Create Bitmap
  self.contents = Bitmap.new(width - 32, height - 32)
  @actor = actor
  #Refresh and add the contents to window
  refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
  #Clear Bitmap
  self.contents.clear
  self.contents.draw_text(64, 64, 120, 32, "- No Picture - ")
  draw_actor_state(@actor, 16, 224)
  draw_actor_level(@actor, 16, 256)
  draw_actor_hp(@actor, 16, 352, 172)
  draw_actor_sp(@actor, 16, 384, 172)
  self.contents.font.color = system_color
  self.contents.draw_text(16, 288, 80, 32, "EXP")
  self.contents.draw_text(16, 320, 80, 32, "NEXT")
  self.contents.font.color = normal_color
  self.contents.draw_text(16 + 80, 288, 84, 32, @actor.exp_s, 2)
  self.contents.draw_text(16 + 80, 320, 84, 32, @actor.next_rest_exp_s, 2)
 end
end
Â
Â
#==============================================================================
# * Window_Actor_Info2
#==============================================================================
class Window_Actor_Info2 < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(actor)
  super(240, 64, 400, 416)
  #Create Bitmap
  self.contents = Bitmap.new(width - 32, height - 32)
  self.contents.font.size = 21
  @actor = actor
  #Refresh and add the contents to window
  refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
  #Clear Bitmap
  self.contents.clear
  self.contents.font.color = system_color
  self.contents.draw_text(0, 0, 96, 32, "Status")
  self.contents.font.color = normal_color
  draw_actor_parameter(@actor, 0, 32, 0)
  draw_actor_parameter(@actor, 0, 64, 1)
  draw_actor_parameter(@actor, 0, 96, 2)
  draw_actor_parameter(@actor, 0, 184, 3)
  draw_actor_parameter(@actor, 0, 216, 4)
  draw_actor_parameter(@actor, 0, 248, 5)
  draw_actor_parameter(@actor, 0, 280, 6)
  draw_actor_parameter(@actor, 0, 128, 7)
  self.contents.font.color = system_color
  self.contents.draw_text(200, 0, 96, 32, "Equipment")
  self.contents.font.color = normal_color
  draw_item_name($data_weapons[@actor.weapon_id], 200 + 16, 32)
  draw_item_name($data_armors[@actor.armor1_id], 200 + 16, 64)
  draw_item_name($data_armors[@actor.armor2_id], 200 + 16, 96)
  draw_item_name($data_armors[@actor.armor3_id], 200 + 16, 128)
  draw_item_name($data_armors[@actor.armor4_id], 200 + 16, 160)
 end
end
Â
Â
#==============================================================================
# ** Scene_Status
#------------------------------------------------------------------------------
# Â This class performs status screen processing.
#==============================================================================
Â
class Scene_Status < SDK::Scene_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #   actor_index : actor index
 #--------------------------------------------------------------------------
 def initialize(actor_index = 0, equip_index = 0)
  @actor_index = actor_index
 end
 #--------------------------------------------------------------------------
 # * Main Processing : Variable Initialization
 #--------------------------------------------------------------------------
 def main_variable
  super
  # Get actor
  @actor = $game_party.actors[@actor_index]
 end
 #--------------------------------------------------------------------------
 # * Main Processing : Window Initialization
 #--------------------------------------------------------------------------
 def main_window
  super
  # Make status window
  @window_actor_name = Window_Actor_NamePlate.new(@actor)
  @window_actor_state1 = Window_Actor_Info1.new(@actor)
  @window_actor_state2 = Window_Actor_Info2.new(@actor)
 end
end
Â
#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
Â
Instructions
These scripts require RMXP SDK 2.x. Copy and paste script under SDK, above 'main'. It's a simple 'copy & paste', but you may need some tweaking(like showing face or battler picture in Scene_Status).
FAQ
Q: Can you make them non-SDK?
A: I have no plan. But it's not hard to convert them.
Q: What is the purpose of 'Window_Skill_Header'?
A: It's just a dummy, a placeholder. You can add some text there, or remove it from the scene(you have to change height of 'Window_SkillStatus' and 'Window_Skill' if you do that)
Q: 'No Picture'? WTF?
A: You can add face picture, but since I didn't provide the 'draw_actor_face' method, you have to add the method and picture.
Compatibility
So far, this is compatible to:
- Any CMS that changes main menu only
- Grouping and Details by DerVVulfman. Although you have to edit window position to make it look right.
(compatibility with KGC_SkillGrouping is yet unconfirmed)
Credits and Thanks
Thanks to:
Mr. Mo for Window Scene Wizard
and other scripters for showing me how to make these scenes
Authoress' Notes
Since I'm away from the scene now, maybe there won't be enough support for my scripts.
Terms and Conditions
Feel free to use. Credit would be fine.