Sorry I haven't been on in a while, Onfurom if you're still wondering the default buttons are Q = left and W = right.
But I can change that for you:
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
# ? Scene_Biography
# ? Author: Bigace360
# ? Version: 2.3
# ? Date: Dec. 7, 2011
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
# VERSION HISTORY #
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
#
# v.1.0 (Dec. 7, 2010)
# ~ Original script completed
# v.1.1 (Jan. 8, 2012)
# ~ Improved coding
# v.2.0 (Jan. 22, 2012)
# ~ The code has been rewriten so it's easier to use and takes up less lines.
# ~ Added "slice_text" method by Blizzard, which automatically break to next
# line when needed
# v.2.3 (Feb. 14, 2012)
# ~ You can align your paragraph's in the module [Right, Center, Left]
# ~ You can now add a custom layount to your Biography screen.
# ~ Improved coding
#
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
# To call the Biography Menu
# $scene = Scene_Biography.new(@status_window.index)
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
# ? Module ACE
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
module ACE #Customization Begins
# [X, Y, Suffix for portrait graphics]
PORTRAIT = [300, 545, "_P"] #If the image isn't found in the folder
#then the script will use the batter image.
# [Font Type, Font size]
FONT_TYPE = ['Verdana',16]
# [His, Bio]
History_Bio = [5, 250] #Y Coordinates for the History and Bio Paragraphs
# Bio_Window = [Position X, Position Y, Width, Height, Opacity, Trasparent Edge]
Bio_Window = [0, 0, 640, 480, 255, false]
# Image filename for window layout, must be on the Windowskin folder
Bio_Window_Bg = ''
# Position of the layout image
# Bio_Window_Bg_Postion = [Position X, Position Y]
Bio_Window_Bg_Postion = [0 , 0]
Para_Alignment = 0 # 0=Right, 1=Center, 2=Left
CHARACTER_STATS = ['Name:', 'Class:', 'Age:', 'Gender:', 'Race:',' Height:',
'Weight:', 'Weapon:', 'From:', 'Speciality:']
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#
# when ID then "STRING"
#
# ID is the enemy ID and STRING is a string with the information that should be
# displayed. Type all the information into one string, the script will slice
# the text by itself. Note that special characters like a " (double quote)
# need the use of the escape character \ (backslash). If you get and error
# with your string or the character doesn't appear right on the screen, try to
# use the escape character (i.e. for a " it would be \" instead of just ").
# The backslash itself needs an escape character (i.e. \\).
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Configure the values used for the above array for each character. Just make
# sure the value that corresponds to each stat is at the same index in the [].
def self.character_info(id)
info = case id
when 1 then ['Aluxes Smith', 'Fighter', '19', 'Male', 'Human', '5\'10"', '165 lbs.', 'Sword','England', 'Swordplay']
when 2 then ['Basil Doe', 'Lancer', '24', 'Male', 'Human', '6\'0"', '169 lbs.', 'Spear', 'America', 'Lanceplay']
when 3 then ['Cyrus Ray', 'Warrior', '21', 'Male', 'Human', '5\'7"', '197 lbs.', 'Axes', 'New Zealand','Axeplay']
when 4 then ['Dorothy Griffen', 'Thief', '19', 'Female', 'Human', '5\'7"', '119 lbs.', 'Knives', 'Canada', 'Robbery']
when 5 then ['Estelle Green', 'Hunter', '16', 'Female', 'Elf', '5\'8"', '116 lbs.', 'Great Bows', 'Ireland', 'Archery']
when 6 then ['Felix Clarke', 'Gunner', '20', 'Male', 'Human', '5\'7"', '135 lbs.', 'Guns', 'France', 'Gunnery']
when 7 then ['Gloria Clarke','Cleric', '18', 'Female', 'Human', '5\'4"', '119 lbs.', 'Wands', 'Germany', 'White magic']
when 8 then ['Hilda May', 'Mage', '20', 'Female', 'Human', '5\'5"', '113 lbs.', 'Staff', 'Berlin', 'Black Magic']
end
return info != nil ? info : []
end
# Short paragraph/description of character. Uses Blizzard's slice_text method
# to automatically break to next line when needed, so do not concern yourself
# with that.
def self.character_bio(id)
text = case id
when 1 then 'This is an actors biography description text in different lines must be separated by comas.This is an actors biography description text in different lines must be separated by comas.This is an actors biography description text in different lines must be separated by comas.This is an actors biography description text in different lines must be separated by comas.'
when 2 then 'This is an actors biography description text in different lines must be separated by comas.'
when 3 then 'This is an actors biography description text in different lines must be separated by comas.'
when 4 then 'This is an actors biography description text in different lines must be separated by comas.'
when 5 then 'This is an actors biography description text in different lines must be separated by comas.'
when 6 then 'This is an actors biography description text in different lines must be separated by comas.'
when 7 then 'This is an actors biography description text in different lines must be separated by comas.'
when 8 then 'This is an actors biography description text in different lines must be separated by comas.'
end
return text != nil ? text : ''
end
def self.character_history(id)
text = case id
when 1 then 'This is an actors history description text in different lines must be separated by comas.'
when 2 then 'This is an actors history description text in different lines must be separated by comas.'
when 3 then 'This is an actors history description text in different lines must be separated by comas.'
when 4 then 'This is an actors history description text in different lines must be separated by comas.'
when 5 then 'This is an actors history description text in different lines must be separated by comas.'
when 6 then 'This is an actors history description text in different lines must be separated by comas.'
when 7 then 'This is an actors history description text in different lines must be separated by comas.'
when 8 then 'This is an actors history description text in different lines must be separated by comas.'
end
return text != nil ? text : ''
end
end
$ace_script = {} if $ace_script == nil
$ace_script["Biography"] = true
###############################################################################
# ? Customization Ends
###############################################################################
class Bitmap
attr_accessor :bg_color
unless @bigace_bitmap_initialize
@bigace_bitmap_initialize = true
alias_method :cl_initialize, :initialize
def initialize(a, b = nil)
cl_initialize(a, b) if b != nil
cl_initialize(a) unless b != nil
@bg_color = Color.new(61,52,109)
end
end
#------------(slice_text method by Blizzard)-------
def slice_text(text, width)
words = text.split(' ')
return words if words.size == 1
result, current_text = [], words.shift
words.each_index {|i|
if self.text_size("#{current_text} #{words[i]}").width > width
result.push(current_text)
current_text = words[i]
else
current_text = "#{current_text} #{words[i]}"
end
result.push(current_text) if i >= words.size - 1}
return result
end
#--------------------------------------------------
def text_bordered(x, y, width, height, text, align = 1)
color2 = font.color.clone
font.color = @bg_color
draw_text(x + 1, y + 1, width, height, text, align)
draw_text(x + 1, y - 1, width, height, text, align)
draw_text(x - 1, y + 1, width, height, text, align)
draw_text(x - 1, y - 1, width, height, text, align)
font.color = color2
draw_text(x, y, width, height, text, align)
end
end
class Window_Base < Window
include ACE
def nada(actor); face = RPG::Cache.battler(actor.battler_name, actor.battler_hue); end
def draw_heroface(actor,x,y)
face = RPG::Cache.picture(actor.name + PORTRAIT[2]) rescue nada(actor)
cw, ch = face.width, face.height
if face == RPG::Cache.battler(actor.battler_name, actor.battler_hue)
self.contents.blt(x + 40 , y - ch - 240, face, Rect.new(0, 0, cw, ch))
else
self.contents.blt(x , y - ch, face, Rect.new(0, 0, cw, ch))
end
end
end
class Window_Biography < Window_Base
include ACE
def initialize(actor)
super(Bio_Window[0], Bio_Window[1], Bio_Window[2], Bio_Window[3])
self.contents = Bitmap.new(width - 32, height - 32)
@background_image = Sprite.new
@background_image.bitmap = RPG::Cache.windowskin(Bio_Window_Bg)
@background_image.x = self.x + Bio_Window_Bg_Postion[0]
@background_image.y = self.y + Bio_Window_Bg_Postion[1]
@background_image.z = self.z - 1
@background_image.visible = self.visible
self.back_opacity = Bio_Window_Settings[4]
self.opacity = Bio_Window_Settings[4] if Bio_Window_Settings[5]
self.contents.font.name, self.contents.font.size = FONT_TYPE[0], FONT_TYPE[1]
@actor = actor
refresh
end
def refresh
self.contents.clear
stats = CHARACTER_STATS
info = ACE.character_info(@actor.id)
self.contents.font.color = system_color
y = 20
self.contents.font.bold = true
stats.each_index {|i| self.contents.text_bordered(0, i*(y*2), 128, y, stats[i],0)}
self.contents.text_bordered(200, History_Bio[0], 128, y, 'BIOGRAPHY:',0)
self.contents.text_bordered(200, History_Bio[1], 128, y, 'HISTORY:',0)
self.contents.font.bold = false
self.contents.font.color = normal_color
#-----------------------------
info.each_index {|i| self.contents.text_bordered(8, y+i*(y*2), 128, y, info[i],0)}
#-----------------------------
bio = self.contents.slice_text(ACE.character_bio(@actor.id), 370)
bio.each_index {|i| self.contents.text_bordered(220, (10+y)+i*y, 370, y, bio[i],Para_Alignment)}
#-----------------------------
his = self.contents.slice_text(ACE.character_history(@actor.id), 370)
his.each_index {|i| self.contents.text_bordered(220, (255+y)+i*y, 370, y, his[i],Para_Alignment)}
end
def dispose
super
@background_image.dispose if @background_image != nil
end
def visible=(n)
super
@background_image.visible = n if @background_image != nil
end
end
class Window_Face < Window_Base
def initialize(actor)
super(0, -20, 600, 520)
self.contents = Bitmap.new(width - 32, height - 32)
@actor, self.opacity, self.contents_opacity, self.z = actor, 0, 140, 99
refresh
end
def refresh
self.contents.clear
draw_heroface(@actor, PORTRAIT[0], PORTRAIT[1])
end
end
class Scene_Biography
def initialize(actor_index = 0); @actor_index = actor_index; end
def main
@actor = $game_party.actors[@actor_index]
@status_face, @biog_window = Window_Face.new(@actor), Window_Biography.new(@actor)
Graphics.transition
loop {Graphics.update; Input.update; update; break if $scene != self}
Graphics.freeze
[@biog_window, @status_face].each {|window| window.dispose}
end
def update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(3)
elsif Input.trigger?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
@actor_index += 1
@actor_index %= $game_party.actors.size
$scene = Scene_Biography.new(@actor_index)
elsif Input.trigger?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
$scene = Scene_Biography.new(@actor_index)
end
end
end