Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
Sign in to follow this  
Darth Mongoose

A simple menu graphics tweak

Recommended Posts

I know this is probably something really simple and something to do with replacing the word 'actor' with a specific picture file name somewhere in the code for the menu, but I don't want to cause a mess delving into the code without really knowing what I'm doing.

I'm not after a fancy new menu system, I just want a simple way to change my menu so that instead of the character sprites (which looks weird) I can have face graphics in their place. I've seen this implemented in demos of CMS systems, but I don't want to implement a full blown CMS until I understand what's going on with the coding myself.

Any help would be greatly appreciated.

Share this post


Link to post
Share on other sites

I don't know much, Leon would know. I do know it's more than changing a simple file path. I think you'd need to set-up an "array" for that. I hope I'm right, Leon might be proud. =P

Share this post


Link to post
Share on other sites

kururusmenuzw9.png

 

 

Instructions

Replace Window_Base with this:-

 

 

#==============================================================================

# ** Window_Base Editted by Mac
#------------------------------------------------------------------------------
#  This class is for all in-game windows.
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Object Initialization
#	 x	  : window x-coordinate
#	 y	  : window y-coordinate
#	 width  : window width
#	 height : window height
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
 super()
 @windowskin_name = $game_system.windowskin_name
 self.windowskin = RPG::Cache.windowskin(@windowskin_name)
 self.x = x
 self.y = y
 self.width = width
 self.height = height
 self.z = 100
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
 # Dispose if window contents bit map is set
 return if disposed?
 if self.contents != nil
self.contents.dispose
 end
 super
end
#--------------------------------------------------------------------------
# * Get Text Color
#	 n : text color number (0-7)
#--------------------------------------------------------------------------
def text_color(n)
 case n
 when 0
return Color.new(255, 255, 255, 255)
 when 1
return Color.new(128, 128, 255, 255)
 when 2
return Color.new(255, 128, 128, 255)
 when 3
return Color.new(128, 255, 128, 255)
 when 4
return Color.new(128, 255, 255, 255)
 when 5
return Color.new(255, 128, 255, 255)
 when 6
return Color.new(255, 255, 128, 255)
 when 7
return Color.new(192, 192, 192, 255)
 else
normal_color
 end
end
#--------------------------------------------------------------------------
# * Get Normal Text Color
#--------------------------------------------------------------------------
def normal_color
 return Color.new(255, 255, 255, 255)
end
#--------------------------------------------------------------------------
# * Get Disabled Text Color
#--------------------------------------------------------------------------
def disabled_color
 return Color.new(255, 255, 255, 128)
end
#--------------------------------------------------------------------------
# * Get System Text Color
#--------------------------------------------------------------------------
def system_color
 return Color.new(192, 224, 255, 255)
end
#--------------------------------------------------------------------------
# * Get Crisis Text Color
#--------------------------------------------------------------------------
def crisis_color
 return Color.new(255, 255, 64, 255)
end
#--------------------------------------------------------------------------
# * Get Knockout Text Color
#--------------------------------------------------------------------------
def knockout_color
 return Color.new(255, 64, 0)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
 super
 # Reset if windowskin was changed
 if $game_system.windowskin_name != @windowskin_name
@windowskin_name = $game_system.windowskin_name
self.windowskin = RPG::Cache.windowskin(@windowskin_name)
 end
end
#--------------------------------------------------------------------------
# * Draw Graphic
#	 actor : actor
#	 x	 : draw spot x-coordinate
#	 y	 : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_graphic(actor, x, y)
 bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
 cw = bitmap.width / 4
 ch = bitmap.height / 4
 src_rect = Rect.new(0, 0, cw, ch)
 self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
#--------------------------------------------------------------------------
# * Draw Face
#	 actor : actor
#	 x	 : draw spot x-coordinate
#	 y	 : draw spot y-coordinate
#--------------------------------------------------------------------------
 def draw_face(actor, x, y)
 bitmap = RPG::Cache.picture("Faces/#{actor.character_name}")
 self.contents.blt(x, y, bitmap, Rect.new(0, 0, bitmap.width, bitmap.height))
end
#--------------------------------------------------------------------------
# * Draw Image
#	 actor : actor
#	 x	 : draw spot x-coordinate
#	 y	 : draw spot y-coordinate
#--------------------------------------------------------------------------
 def draw_image(picture, x, y)
 bitmap = RPG::Cache.picture("Images/#{$image_name}")
 self.contents.blt(x, y, bitmap, Rect.new(0, 0, bitmap.width, bitmap.height))
end
#--------------------------------------------------------------------------
# * Draw Name
#	 actor : actor
#	 x	 : draw spot x-coordinate
#	 y	 : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_name(actor, x, y)
 self.contents.font.color = normal_color
 self.contents.draw_text(x, y, 120, 32, actor.name)
end
#--------------------------------------------------------------------------
# * Draw Class
#	 actor : actor
#	 x	 : draw spot x-coordinate
#	 y	 : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_class(actor, x, y)
 self.contents.font.color = normal_color
 self.contents.draw_text(x, y, 236, 32, actor.class_name)
end
#--------------------------------------------------------------------------
# * Draw Level
#	 actor : actor
#	 x	 : draw spot x-coordinate
#	 y	 : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_level(actor, x, y)
 self.contents.font.color = system_color
 self.contents.draw_text(x, y, 32, 32, "Lv")
 self.contents.font.color = normal_color
 self.contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2)
end
#--------------------------------------------------------------------------
# * Make State Text String for Drawing
#	 actor	   : actor
#	 width	   : draw spot width
#	 need_normal : Whether or not [normal] is needed (true / false)
#--------------------------------------------------------------------------
def make_battler_state_text(battler, width, need_normal)
 # Get width of brackets
 brackets_width = self.contents.text_size("[]").width
 # Make text string for state names
 text = ""
 for i in battler.states
if $data_states[i].rating >= 1
  if text == ""
	text = $data_states[i].name
  else
	new_text = text + "/" + $data_states[i].name
	text_width = self.contents.text_size(new_text).width
	if text_width > width - brackets_width
	  break
	end
	text = new_text
  end
end
 end
 # If text string for state names is empty, make it [normal]
 if text == ""
if need_normal
  text = "[Normal]"
end
 else
# Attach brackets
text = "[" + text + "]"
 end
 # Return completed text string
 return text
end
#--------------------------------------------------------------------------
# * Draw State
#	 actor : actor
#	 x	 : draw spot x-coordinate
#	 y	 : draw spot y-coordinate
#	 width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_state(actor, x, y, width = 120)
 text = make_battler_state_text(actor, width, true)
 self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
 self.contents.draw_text(x, y, width, 32, text)
end
#--------------------------------------------------------------------------
# * Draw EXP
#	 actor : actor
#	 x	 : draw spot x-coordinate
#	 y	 : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_exp(actor, x, y)
 self.contents.font.color = system_color
 self.contents.draw_text(x, y, 24, 32, "E")
 self.contents.font.color = normal_color
 self.contents.draw_text(x + 24, y, 84, 32, actor.exp_s, 2)
 self.contents.draw_text(x + 108, y, 12, 32, "/", 1)
 self.contents.draw_text(x + 120, y, 84, 32, actor.next_exp_s)
end
#--------------------------------------------------------------------------
# * Draw HP
#	 actor : actor
#	 x	 : draw spot x-coordinate
#	 y	 : draw spot y-coordinate
#	 width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_hp(actor, x, y, width = 144)
 self.contents.font.color = system_color
 # Draw "HP" text string
 self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
 # Calculate if there is draw space for MaxHP
 if width - 32 >= 108
hp_x = x + width - 108
flag = true
 elsif width - 32 >= 48
hp_x = x + width - 48
flag = false
 end
 # Draw HP
 self.contents.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
 if self.is_a?(Window_KururusMenu)
 self.contents.draw_text(hp_x, y, 175, 32, actor.hp.to_s, 2)
else
 self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
 end
 # Draw MaxHP
 if flag
self.contents.font.color = normal_color
	if self.is_a?(Window_KururusMenu)
self.contents.draw_text(hp_x + 175, y, 12, 32, "/", 1)
self.contents.draw_text(hp_x + 190, y, 48, 32, actor.maxhp.to_s)
	else
self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
 end
 end
end
#--------------------------------------------------------------------------
# * Draw SP
#	 actor : actor
#	 x	 : draw spot x-coordinate
#	 y	 : draw spot y-coordinate
#	 width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_sp(actor, x, y, width = 144)
 # Draw "SP" text string
 self.contents.font.color = system_color
 self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
 # Calculate if there is draw space for MaxHP
 if width - 32 >= 108
sp_x = x + width - 108
flag = true
 elsif width - 32 >= 48
sp_x = x + width - 48
flag = false
 end
 # Draw SP
 self.contents.font.color = actor.sp == 0 ? knockout_color :
actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
if self.is_a?(Window_KururusMenu)
 self.contents.draw_text(sp_x, y, 175, 32, actor.sp.to_s, 2)
else
 self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
  end
 # Draw MaxSP
 if flag
self.contents.font.color = normal_color
if self.is_a?(Window_KururusMenu)
self.contents.draw_text(sp_x + 175, y, 12, 32, "/", 1)
self.contents.draw_text(sp_x + 190, y, 48, 32, actor.maxsp.to_s)
 else
self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
  end
end
end
#--------------------------------------------------------------------------
# * 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
 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
#--------------------------------------------------------------------------
# * Draw Item Name
#	 item : item
#	 x	: draw spot x-coordinate
#	 y	: draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_item_name(item, x, y)
 if item == nil
return
 end
 bitmap = RPG::Cache.icon(item.icon_name)
 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
 self.contents.font.color = normal_color
 self.contents.draw_text(x + 28, y, 212, 32, item.name)
end
end

 

After you've replaced Window_Base, create a new script above Main and paste this into it:-

 

#==============================================================================

#  Kururus Menu System - Created By Mac
#------------------------------------------------------------------------------
#  This class performs menu screen processing.
#==============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# * Object Initialization
#	 menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
 @menu_index = menu_index
end
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
 # Make command window
 s1 = $data_system.words.item
 s2 = $data_system.words.skill
 s3 = $data_system.words.equip
 s4 = "Status"
 s5 = "Limit"
 s6 = "Save"
 s7 = "End Game"
 @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
 @command_window.x = 450
 @command_window.y = 30
 @command_window.index = @menu_index
 # If number of party members is 0
 if $game_party.actors.size == 0
# Disable items, skills, equipment, status and limit
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
@command_window.disable_item(4)
 end
 # If save is forbidden
 if $game_system.save_disabled
# Disable save
@command_window.disable_item(5)
 end
 # Make play time window
 @playtime_window = Window_PlayTime.new
 @playtime_window.x = 210
 @playtime_window.y = 425
 @playtime_window.z = 1000
 # Make image window
 @image_window = Window_Image.new
 @image_window.x = 450
 @image_window.y = 286
 # Make gold window
 @gold_window = Window_Gold.new
 @gold_window.x = 370
 @gold_window.y = 425
 @gold_window.z = 1000
 # Make status window
 @status_window = Window_KururusMenu.new
 @status_window.x = 30
 @status_window.y = 30
 # Execute transition
 Graphics.transition
 # Main loop
 loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
  break
end
 end
 # Prepare for transition
 Graphics.freeze
 # Dispose of windows
 @command_window.dispose
 @playtime_window.dispose
 @image_window.dispose
 @gold_window.dispose
 @status_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
 # Update windows
 @command_window.update
 @playtime_window.update
 @image_window.update
 @gold_window.update
 @status_window.update
 # If command window is active: call update_command
 if @command_window.active
update_command
return
 end
 # If status window is active: call update_status
 if @status_window.active
update_status
return
 end
end
#--------------------------------------------------------------------------
# * Frame Update (when command window is active)
#--------------------------------------------------------------------------
def update_command
 # If B button was pressed
 if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to map screen
$scene = Scene_Map.new
return
 end
 # If C button was pressed
 if Input.trigger?(Input::C)
# If command other than save or end game, and party members = 0
if $game_party.actors.size == 0 and @command_window.index < 4
  # Play buzzer SE
  $game_system.se_play($data_system.buzzer_se)
  return
end
# Branch by command window cursor position
case @command_window.index
when 0  # item
  # Play decision SE
  $game_system.se_play($data_system.decision_se)
  # Switch to item screen
  $scene = Scene_Item.new
when 1  # skill
  # Play decision SE
  $game_system.se_play($data_system.decision_se)
  # Make status window active
  @command_window.active = false
  @status_window.active = true
  @status_window.index = 0
when 2  # equipment
  # Play decision SE
  $game_system.se_play($data_system.decision_se)
  # Make status window active
  @command_window.active = false
  @status_window.active = true
  @status_window.index = 0
when 3  # status
  # Play decision SE
  $game_system.se_play($data_system.decision_se)
  # Make status window active
  @command_window.active = false
  @status_window.active = true
  @status_window.index = 0
when 4  # limit menu
  # Play decision SE
  $game_system.se_play($data_system.decision_se)
  # Make status window active
  @command_window.active = false
  @status_window.active = true
  @status_window.index = 0  
when 5  # save
  # If saving is forbidden
  if $game_system.save_disabled
	# Play buzzer SE
	$game_system.se_play($data_system.buzzer_se)
	return
  end
  # Play decision SE
  $game_system.se_play($data_system.decision_se)
  # Switch to save screen
  $scene = Scene_Save.new
when 6  # end game
  # Play decision SE
  $game_system.se_play($data_system.decision_se)
  # Switch to end game screen
  $scene = Scene_End.new
end
return
 end
end
#--------------------------------------------------------------------------
# * Frame Update (when status window is active)
#--------------------------------------------------------------------------
def update_status
 # If B button was pressed
 if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Make command window active
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
 end
 # If C button was pressed
 if Input.trigger?(Input::C)
# Branch by command window cursor position
case @command_window.index
when 1  # skill
  # If this actor's action limit is 2 or more
  if $game_party.actors[@status_window.index].restriction >= 2
	# Play buzzer SE
	$game_system.se_play($data_system.buzzer_se)
	return
  end
  # Play decision SE
  $game_system.se_play($data_system.decision_se)
  # Switch to skill screen
  $scene = Scene_Skill.new(@status_window.index)
when 2  # equipment
  # Play decision SE
  $game_system.se_play($data_system.decision_se)
  # Switch to equipment screen
  $scene = Scene_Equip.new(@status_window.index)
when 3  # status
  # Play decision SE
  $game_system.se_play($data_system.decision_se)
  # Switch to status screen
  $scene = Scene_Status.new(@status_window.index)
when 4  # limits
  # Play decision SE
  $game_system.se_play($data_system.decision_se)
  # Switch to skill screen
  $scene = Scene_LimitMenu.new(@status_window.index)	
end
return
 end
end
end
#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
#  This window displays party member status on the menu screen.
#==============================================================================
class Window_KururusMenu < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
 super(0, 0, 420, 420)
 self.contents = Bitmap.new(width - 32, height - 32)
 refresh
 self.active = false
 self.index = -1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
 self.contents.clear
 @item_max = $game_party.actors.size
 for i in 0...$game_party.actors.size
x = 64
y = i * 100
actor = $game_party.actors[i]
draw_face(actor, x - 62, y + 18)
draw_actor_name(actor, 12, y - 8)
draw_actor_class(actor, x + 120, y - 8)
draw_actor_level(actor, 320, y - 8)
draw_actor_hp(actor, x + 46, y + 32)
draw_actor_sp(actor, x + 46, y + 48)
 end
end
#--------------------------------------------------------------------------
# * Cursor Rectangle Update
#--------------------------------------------------------------------------
def update_cursor_rect
 if @index < 0
self.cursor_rect.empty
 else
self.cursor_rect.set(0, @index * 100, self.width - 32, 96)
 end
end
end
#==============================================================================
# ** Window_PlayTime
#------------------------------------------------------------------------------
#  This window displays play time on the menu screen.
#==============================================================================
class Window_PlayTime < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
 super(0, 0, 160, 50)
 self.contents = Bitmap.new(width - 32, height - 32)
 refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
 self.contents.clear
 self.contents.font.color = system_color
 self.contents.font.size = 14
 self.contents.draw_text(0, -5, 120, 32, "Play Time")
 @total_sec = Graphics.frame_count / Graphics.frame_rate
 hour = @total_sec / 60 / 60
 min = @total_sec / 60 % 60
 sec = @total_sec % 60
 text = sprintf("%02d:%02d:%02d", hour, min, sec)
 self.contents.font.color = normal_color
 self.contents.draw_text(0, -5, 120, 32, text, 2)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
 super
 if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
 end
end
end
#==============================================================================
# ** Window_Gold
#------------------------------------------------------------------------------
#  This window displays amount of gold.
#==============================================================================
class Window_Gold < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
 super(0, 0, 160, 50)
 self.contents = Bitmap.new(width - 32, height - 32)
 refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
 self.contents.clear
 cx = contents.text_size($data_system.words.gold).width
 self.contents.font.color = normal_color
 self.contents.font.size = 14
 self.contents.draw_text(0, -5, 120-cx-2, 32, $game_party.gold.to_s, 2)
 self.contents.font.color = system_color
 self.contents.draw_text(124-cx, -5, cx, 32, $data_system.words.gold, 2)
end
end
#==============================================================================
# ** Window_Steps
#------------------------------------------------------------------------------
#  This window displays step count on the menu screen.
#==============================================================================
class Window_Image < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
 super(0, 0, 160, 164)
 self.contents = Bitmap.new(width - 32, height - 32)
 refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
 self.contents.clear
 draw_image("", 0, 0)
end
end

 

Note

You must create 2 folders inside "Pictures" one called "Images" and the other "Faces", in images you must place the images you want to change the bottom right images too at any point and in Faces you must place Faces names correctly to the sprites name e.g. by default Arshes = 001-Fighter01 so you would need to call it that.

And finally before you can open your menu you must define an image to the image box to the bottom right, i made this as simple as possible for you, all you need to do is using the call script command and call:-

 

$image_name = "imagenamehere"

 

* Max Face size is 70 x 70

* Max Image size is 128 x 132

 

Credits

Mac

 

 

fgfgfet1.png

 

Demo

Fonts Needed

http://www.mactopiaseeds.com/Fradm.TTF

http://www.mactopiaseeds.com/HATTEN.TTF

http://www.mactopiaseeds.com/SCRIPTBL.TTF

Share this post


Link to post
Share on other sites

Thanks so much! A little less simple than I'd expected, so it's a good job I didn't just jump in and start changing stuff (that would have been disastrous...)

I got it working! Check it out!

post-1912-1211217896_thumb.jpg

 

My menu looks all FF7-y, hooray! :lol:

Thanks again, guys, especially you, Rose Skye. That's just the job.

 

 

EDIT:

Ah, I seem to have found a small problem though. I have no limit break system, so if you try to go to the limit menu, it unsurprisingly crashes the game with an error message. Can I get rid of that option from the menu? Or should I just try to implement limit breaks (if they're not too hard).

Share this post


Link to post
Share on other sites
Post the scripts here and i will see what i can do

The scripts are just there, in the post by Rose. I just copy pasted them according to the instructions given.

Share this post


Link to post
Share on other sites

I don't have XP in front of me at the moment but i think i removed the limit all the way. Test it and let me know

 

# Kururus Menu System - Created By Mac

#------------------------------------------------------------------------------

# This class performs menu screen processing.

#==============================================================================

class Scene_Menu

#--------------------------------------------------------------------------

# * Object Initialization

# menu_index : command cursor's initial position

#--------------------------------------------------------------------------

def initialize(menu_index = 0)

@menu_index = menu_index

end

#--------------------------------------------------------------------------

# * Main Processing

#--------------------------------------------------------------------------

def main

# Make command window

s1 = $data_system.words.item

s2 = $data_system.words.skill

s3 = $data_system.words.equip

s4 = "Status"

s5 = "Save"

s6 = "End Game"

@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])

@command_window.x = 450

@command_window.y = 30

@command_window.index = @menu_index

# If number of party members is 0

if $game_party.actors.size == 0

# Disable items, skills, equipment, status and limit

@command_window.disable_item(0)

@command_window.disable_item(1)

@command_window.disable_item(2)

@command_window.disable_item(3)

end

# If save is forbidden

if $game_system.save_disabled

# Disable save

@command_window.disable_item(4)

end

# Make play time window

@playtime_window = Window_PlayTime.new

@playtime_window.x = 210

@playtime_window.y = 425

@playtime_window.z = 1000

# Make image window

@image_window = Window_Image.new

@image_window.x = 450

@image_window.y = 286

# Make gold window

@gold_window = Window_Gold.new

@gold_window.x = 370

@gold_window.y = 425

@gold_window.z = 1000

# Make status window

@status_window = Window_KururusMenu.new

@status_window.x = 30

@status_window.y = 30

# Execute transition

Graphics.transition

# Main loop

loop do

# Update game screen

Graphics.update

# Update input information

Input.update

# Frame update

update

# Abort loop if screen is changed

if $scene != self

break

end

end

# Prepare for transition

Graphics.freeze

# Dispose of windows

@command_window.dispose

@playtime_window.dispose

@image_window.dispose

@gold_window.dispose

@status_window.dispose

end

#--------------------------------------------------------------------------

# * Frame Update

#--------------------------------------------------------------------------

def update

# Update windows

@command_window.update

@playtime_window.update

@image_window.update

@gold_window.update

@status_window.update

# If command window is active: call update_command

if @command_window.active

update_command

return

end

# If status window is active: call update_status

if @status_window.active

update_status

return

end

end

#--------------------------------------------------------------------------

# * Frame Update (when command window is active)

#--------------------------------------------------------------------------

def update_command

# If B button was pressed

if Input.trigger?(Input::B)

# Play cancel SE

$game_system.se_play($data_system.cancel_se)

# Switch to map screen

$scene = Scene_Map.new

return

end

# If C button was pressed

if Input.trigger?(Input::C)

# If command other than save or end game, and party members = 0

if $game_party.actors.size == 0 and @command_window.index < 4

# Play buzzer SE

$game_system.se_play($data_system.buzzer_se)

return

end

# Branch by command window cursor position

case @command_window.index

when 0 # item

# Play decision SE

$game_system.se_play($data_system.decision_se)

# Switch to item screen

$scene = Scene_Item.new

when 1 # skill

# Play decision SE

$game_system.se_play($data_system.decision_se)

# Make status window active

@command_window.active = false

@status_window.active = true

@status_window.index = 0

when 2 # equipment

# Play decision SE

$game_system.se_play($data_system.decision_se)

# Make status window active

@command_window.active = false

@status_window.active = true

@status_window.index = 0

when 3 # status

# Play decision SE

$game_system.se_play($data_system.decision_se)

# Make status window active

@command_window.active = false

@status_window.active = true

@status_window.index = 0

when 4 # save

# If saving is forbidden

if $game_system.save_disabled

# Play buzzer SE

$game_system.se_play($data_system.buzzer_se)

return

end

# Play decision SE

$game_system.se_play($data_system.decision_se)

# Switch to save screen

$scene = Scene_Save.new

when 5 # end game

# Play decision SE

$game_system.se_play($data_system.decision_se)

# Switch to end game screen

$scene = Scene_End.new

end

return

end

end

#--------------------------------------------------------------------------

# * Frame Update (when status window is active)

#--------------------------------------------------------------------------

def update_status

# If B button was pressed

if Input.trigger?(Input::B)

# Play cancel SE

$game_system.se_play($data_system.cancel_se)

# Make command window active

@command_window.active = true

@status_window.active = false

@status_window.index = -1

return

end

# If C button was pressed

if Input.trigger?(Input::C)

# Branch by command window cursor position

case @command_window.index

when 1 # skill

# If this actor's action limit is 2 or more

if $game_party.actors[@status_window.index].restriction >= 2

# Play buzzer SE

$game_system.se_play($data_system.buzzer_se)

return

end

# Play decision SE

$game_system.se_play($data_system.decision_se)

# Switch to skill screen

$scene = Scene_Skill.new(@status_window.index)

when 2 # equipment

# Play decision SE

$game_system.se_play($data_system.decision_se)

# Switch to equipment screen

$scene = Scene_Equip.new(@status_window.index)

when 3 # status

# Play decision SE

$game_system.se_play($data_system.decision_se)

# Switch to status screen

$scene = Scene_Status.new(@status_window.index)

end

return

end

end

end

#==============================================================================

# ** Window_MenuStatus

#------------------------------------------------------------------------------

# This window displays party member status on the menu screen.

#==============================================================================

class Window_KururusMenu < Window_Selectable

#--------------------------------------------------------------------------

# * Object Initialization

#--------------------------------------------------------------------------

def initialize

super(0, 0, 420, 420)

self.contents = Bitmap.new(width - 32, height - 32)

refresh

self.active = false

self.index = -1

end

#--------------------------------------------------------------------------

# * Refresh

#--------------------------------------------------------------------------

def refresh

self.contents.clear

@item_max = $game_party.actors.size

for i in 0...$game_party.actors.size

x = 64

y = i * 100

actor = $game_party.actors

draw_face(actor, x - 62, y + 18)

draw_actor_name(actor, 12, y - 8)

draw_actor_class(actor, x + 120, y - 8)

draw_actor_level(actor, 320, y - 8)

draw_actor_hp(actor, x + 46, y + 32)

draw_actor_sp(actor, x + 46, y + 48)

end

end

#--------------------------------------------------------------------------

# * Cursor Rectangle Update

#--------------------------------------------------------------------------

def update_cursor_rect

if @index < 0

self.cursor_rect.empty

else

self.cursor_rect.set(0, @index * 100, self.width - 32, 96)

end

end

end

#==============================================================================

# ** Window_PlayTime

#------------------------------------------------------------------------------

# This window displays play time on the menu screen.

#==============================================================================

class Window_PlayTime < Window_Base

#--------------------------------------------------------------------------

# * Object Initialization

#--------------------------------------------------------------------------

def initialize

super(0, 0, 160, 50)

self.contents = Bitmap.new(width - 32, height - 32)

refresh

end

#--------------------------------------------------------------------------

# * Refresh

#--------------------------------------------------------------------------

def refresh

self.contents.clear

self.contents.font.color = system_color

self.contents.font.size = 14

self.contents.draw_text(0, -5, 120, 32, "Play Time")

@total_sec = Graphics.frame_count / Graphics.frame_rate

hour = @total_sec / 60 / 60

min = @total_sec / 60 % 60

sec = @total_sec % 60

text = sprintf("%02d:%02d:%02d", hour, min, sec)

self.contents.font.color = normal_color

self.contents.draw_text(0, -5, 120, 32, text, 2)

end

#--------------------------------------------------------------------------

# * Frame Update

#--------------------------------------------------------------------------

def update

super

if Graphics.frame_count / Graphics.frame_rate != @total_sec

refresh

end

end

end

#==============================================================================

# ** Window_Gold

#------------------------------------------------------------------------------

# This window displays amount of gold.

#==============================================================================

class Window_Gold < Window_Base

#--------------------------------------------------------------------------

# * Object Initialization

#--------------------------------------------------------------------------

def initialize

super(0, 0, 160, 50)

self.contents = Bitmap.new(width - 32, height - 32)

refresh

end

#--------------------------------------------------------------------------

# * Refresh

#--------------------------------------------------------------------------

def refresh

self.contents.clear

cx = contents.text_size($data_system.words.gold).width

self.contents.font.color = normal_color

self.contents.font.size = 14

self.contents.draw_text(0, -5, 120-cx-2, 32, $game_party.gold.to_s, 2)

self.contents.font.color = system_color

self.contents.draw_text(124-cx, -5, cx, 32, $data_system.words.gold, 2)

end

end

#==============================================================================

# ** Window_Steps

#------------------------------------------------------------------------------

# This window displays step count on the menu screen.

#==============================================================================

class Window_Image < Window_Base

#--------------------------------------------------------------------------

# * Object Initialization

#--------------------------------------------------------------------------

def initialize

super(0, 0, 160, 164)

self.contents = Bitmap.new(width - 32, height - 32)

refresh

end

#--------------------------------------------------------------------------

# * Refresh

#--------------------------------------------------------------------------

def refresh

self.contents.clear

draw_image("", 0, 0)

end

end

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...