Dear all,
I am using Soel's Quest Status
http://rmrk.net/index.php/topic,43879.msg498396.html#msg498396 for my status screen. Earlier some of you were able to correct a mistake with the maximum level - I am still grateful for that!
I have another request to make. I don't use any borders or backgrounds for my menu. This means that - upon entering the menu - the game blurs and darkens slightly, and is still visible. Alas! Using Soel's status screen, when choosing no picture as background it turns to solid black! It breaks the overall style.
Does anyone know what I should change in the code to render the background transparent?
Thank you all very much in advance.
Yours,
~ Geoff
Code [altered to show no pictures]:
#===============================================================================
# Status Screen
#----------------------------------------------------------------------------
# Author: Dartdaman
# Version 1.0
# Date: September 23, 2011
# Credit: Me
#===============================================================================
module Portrait
CharacterPortrait = Array.new
CharacterPortrait = {
#actor id #Image name
1 => "Dark_menu",
2 => "Ulrika",
3 => "Bennett",
4 => "Ylva"
}
DefaultPortrait = ""
end
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# new method: now_exp
#--------------------------------------------------------------------------
def bar_now_exp
return (@exp - @exp_list[@level])
end
#--------------------------------------------------------------------------
# new method: next_exp
#--------------------------------------------------------------------------
def bar_next_exp
return (@exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0)
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Get EXP Gauge Color 1
#--------------------------------------------------------------------------
def exp_gauge_color1
return text_color(11)
end
#--------------------------------------------------------------------------
# * Get EXP Gauge Color 2
#--------------------------------------------------------------------------
def exp_gauge_color2
return text_color(18)
end
#--------------------------------------------------------------------------
# * Get EXP Text Color
# actor : actor
#--------------------------------------------------------------------------
def exp_color(actor)
return normal_color
end
#--------------------------------------------------------------------------
# * Draw EXP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : Width
#--------------------------------------------------------------------------
def draw_actor_exp(actor, x, y, width = 120)
draw_actor_exp_gauge(actor, x, y, width)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 40, WLH, "EXP")
self.contents.font.color = exp_color(actor)
last_font_size = self.contents.font.size
xr = x + width
if width < 120
self.contents.draw_text(xr - 44, y, 44, WLH, actor.bar_now_exp, 2)
else
self.contents.draw_text(xr - 99, y, 44, WLH, actor.bar_now_exp, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 55, y, 11, WLH, "/", 2)
self.contents.draw_text(xr - 44, y, 44, WLH, actor.bar_next_exp, 2)
end
end
#--------------------------------------------------------------------------
# * Draw EXP gauge
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : Width
#--------------------------------------------------------------------------
def draw_actor_exp_gauge(actor, x, y, width = 120)
if @actor.level <= 98
gw = width * actor.bar_now_exp / actor.bar_next_exp
else
gw = width
end
gc1 = exp_gauge_color1
gc2 = exp_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end
#--------------------------------------------------------------------------
# * Draw Parameters
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : Type of parameters (0-3)
#--------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type)
case type
when 0
parameter_name = Vocab::atk
parameter_value = actor.atk
when 1
parameter_name = Vocab::def
parameter_value = actor.def
when 2
parameter_name = Vocab::spi
parameter_value = actor.spi
when 3
parameter_name = Vocab::agi
parameter_value = actor.agi
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, WLH, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 60, y, 36, WLH, parameter_value, 2)
end
end
#==============================================================================
# ** Window_Portrait
#------------------------------------------------------------------------------
# This window displays the portrait of the actor.
#==============================================================================
class Window_Soel_Portrait < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(-16, 112, 304, 320)
@actor = actor
self.opacity = 0
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
if Portrait::CharacterPortrait[@actor.id] == nil
if Portrait::DefaultPortrait != ""
draw_status_portrait(Portrait::DefaultPortrait)
end
elsif Portrait::CharacterPortrait[@actor.id] != ""
draw_status_portrait(Portrait::CharacterPortrait[@actor.id])
end
end
#--------------------------------------------------------------------------
# * Draw Status Portrait
#--------------------------------------------------------------------------
def draw_status_portrait(pic_name)
bitmap = Cache.picture(pic_name)
rect = Rect.new(0, 0, 0, 0)
rect.width = bitmap.width
rect.height = bitmap.height
self.contents.blt(0, 0, bitmap, rect)
bitmap.dispose
end
end
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# This window displays status specs on the status screen.
#==============================================================================
class Window_Soel_Status < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 452, 160)
@actor = actor
self.opacity = 0
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_status_back
draw_actor_face(@actor, 19, 8)
draw_actor_name(@actor, 128, 4)
draw_actor_level(@actor, 128, 28)
draw_actor_class(@actor, 261, 4)
draw_actor_hp(@actor, 128, WLH * 2 + 4)
draw_actor_mp(@actor, 128, WLH * 3 + 4)
draw_actor_exp(@actor, 255, WLH * 2 + 4)
draw_actor_state(@actor, 255, WLH * 3 + 4)
end
#--------------------------------------------------------------------------
# * Draw Status Back
#--------------------------------------------------------------------------
def draw_status_back
bitmap = Cache.picture("")
rect = Rect.new(0, 0, 0, 0)
rect.width = bitmap.width
rect.height = bitmap.height
self.contents.blt(x, 0, bitmap, rect)
bitmap.dispose
end
end
#==============================================================================
# ** Window_Equip
#------------------------------------------------------------------------------
# This window displays full equip of the actor.
#==============================================================================
class Window_Soel_Equip < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(220, 150, 257, 228)
@actor = actor
self.opacity = 0
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_equip_back
draw_equipments(0,0)
end
#--------------------------------------------------------------------------
# * Draw Status Back
#--------------------------------------------------------------------------
def draw_equip_back
bitmap = Cache.picture("")
rect = Rect.new(0, 0, 0, 0)
rect.width = bitmap.width
rect.height = bitmap.height
self.contents.blt(0, 0, bitmap, rect)
bitmap.dispose
end
#--------------------------------------------------------------------------
# * Draw Equipment
# x : Draw spot X coordinate
# y : Draw spot Y coordinate
#--------------------------------------------------------------------------
def draw_equipments(x, y)
self.contents.font.color = system_color
self.contents.draw_text(16, 4, 120, WLH, Vocab::equip)
for i in 0..4
draw_item_name(@actor.equips[i], 16, y + 16 + WLH * (i + 1))
end
end
end
#==============================================================================
# ** Window_Para
#------------------------------------------------------------------------------
# This window displays full equip of the actor.
#==============================================================================
class Window_Soel_Para < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(544 - 152, 0, 164, 200)
@actor = actor
self.opacity = 0
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_para_back
draw_parameters(0,0)
end
#--------------------------------------------------------------------------
# * Draw Status Back
#--------------------------------------------------------------------------
def draw_para_back
bitmap = Cache.picture("")
rect = Rect.new(0, 0, 0, 0)
rect.width = bitmap.width
rect.height = bitmap.height
self.contents.blt(0, 0, bitmap, rect)
bitmap.dispose
end
#--------------------------------------------------------------------------
# * Draw Parameters
# x : Draw spot X coordinate
# y : Draw spot Y coordinate
#--------------------------------------------------------------------------
def draw_parameters(x, y)
self.contents.draw_text(16, 4, 120, WLH, "Parameters")
draw_actor_parameter(@actor, 16, 40 + WLH * 0, 0)
draw_actor_parameter(@actor, 16, 40 + WLH * 1, 1)
draw_actor_parameter(@actor, 16, 40 + WLH * 2, 2)
draw_actor_parameter(@actor, 16, 40 + WLH * 3, 3)
end
end
#==============================================================================
# ** Scene_Status
#------------------------------------------------------------------------------
# This class performs the status screen processing.
#==============================================================================
class Scene_Status < Scene_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor_index : actor index
#--------------------------------------------------------------------------
def initialize(actor_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
@status_window = Window_Soel_Status.new(@actor)
@equip_window = Window_Soel_Equip.new(@actor)
@para_window = Window_Soel_Para.new(@actor)
@portrait_window = Window_Soel_Portrait.new(@actor)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@status_window.dispose
@equip_window.dispose
@para_window.dispose
@portrait_window.dispose
end
#--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Menu.new(3)
end
#--------------------------------------------------------------------------
# * Switch to Next Actor Screen
#--------------------------------------------------------------------------
def next_actor
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_Status.new(@actor_index)
end
#--------------------------------------------------------------------------
# * Switch to Previous Actor Screen
#--------------------------------------------------------------------------
def prev_actor
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_Status.new(@actor_index)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
update_menu_background
@status_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::R)
Sound.play_cursor
next_actor
elsif Input.trigger?(Input::L)
Sound.play_cursor
prev_actor
end
super
end
#--------------------------------------------------------------------------
# * Create Menu Background
#--------------------------------------------------------------------------
def create_menu_background
@menuback_delay = 1
@menuback_sprite = Plane.new
@menuback_sprite.bitmap = Cache.picture("")
update_menu_background
end
end