07-09-2005, 01:00 PM
This is a locked, single-post thread from Creation Asylum. Archived here to prevent its loss.
No support is given. If you are the owner of the thread, please contact administration.
No support is given. If you are the owner of the thread, please contact administration.
K now I have completed !!!!version 2!!!!!!!!!
It can hold any number of party members.
I sorted out every KNOWN BUG AND ERROR but plz report any and I will try to fix them.
I have included a shot of version 2 along with the demo itself.
Post all responses plz.
Hop U like.
I have listed instructions to using the script and they work fine I have tested them.
But if you still cannot get the script to work perfectly just PM your proband I prromise i will help you.
Ok heres the script itself.
I only recently realised that I never got around to posting it so here it is.
Code:
# Breath Of Fire Dragon Quarter Menu Version 2 By Squall789 (me)
#------------------------------------------------------------------------------
#It is the Menu From Capcoms Breath Of Fire Dragon Quarter by Squall789 (me)
#==============================================================================
#-------------------------------------------------------------------------------
# - This Menu has been ccreated by me (Squall 789)
# - Sorry didnt include "Trap or the use of the Party Exp but was too hard atm.
# - I will try with the trap system soon but at the moment im working on the party Exp
# - Some features were added that I did not make.
# - The Hp/Sp/Xp bars were created by cogwheel and I just changed their size an location.
# - The Faces Function was not mine it was snipped from Acedentprone's FF7 Menu (Great menu).
# - The Mapname Window was created by Dubealex (Scripting Legend lol) i think.
# - If you need the menu Custom edited then mail me with what you want and I'll tell you if I can do it.
# - If you want to add more characters to your team then ul have to make face sets for them.
# - Actually the Mapname Function might have been created by Maki for the Ring Menu.
# - You will have to delete your "Window_Menustatus" class from your script list otherwise this menu will error like hell.
# - I havent finished making the Battle Stats Window But Will be Done in a Few days But u can just delete it from the menu.
# - If anyone wants this customed especially I may do so depending on when it is and what they want changed.
# - Anyways. . . . Let the Scripting Begin lol.
#-------------------------Version 2 Edits---------------------------------------
# - Now accounts for any number of party members (will have to make smaller boxes for over 4 chracter tho)
# - Completely rewrote the show Character section (hell of a lot longer lol)
# - Created seperate windows for: Hp, Ap bars, Character Graphic, Character face.
# - Animated other Windows "mainly the Location help window"
# - Added twice as many comments to the script to help any customization
# - - - - - - - - - - - - - - Version 2 Notes - - - - - - - - - - - - - - -
# - Customization of this is all a bit tricky so just email me and I will try and do it for you
# - BEFORE THIS SCRIPT CAN WORKS PROPERLY YOU "MUST DELETE WINDOW_MENU_STATUS" from the class on the left (they conflict)
# - Feel free to re-edit any of the script, if you wnant to repost this on any forums plz ask me first.
# - If you custom it then Please could you refer to me as the creator of the menu.
# - Also could any edits be sent to me so I can check them over (helps improve my scripting)
# - Email me the edited scripts + instruction or just a working demo
# - I would love to see what people more advanced at scripting than me or even see what newbiew can DO.
class Scene_Menu
#--------------------------------------------------------------------------
# - Object initialization
# menu_index : Cursor initial position of command
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# - Main processing
#--------------------------------------------------------------------------
def main
# Drawing up the command window
s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = "Party"
s5 = "Save"
s6 = "Battle Stats" # Sorry The function still hasnt been included (will do real soon)
s7 = "Quit"
#--------------------------- edit-------------------------------
# Command menu
# Size = Screen height - border sizes -
# GameStatus menu - Spacing from GameStatus
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7]) # 160
@command_window.x = - 20 - @command_window.width # 180 default
@command_window.y = 210
@command_window.z = 630 # 110 at at default
@command_window.index = @menu_index
@command_window.windowskin = RPG::Cache.windowskin("Dragon skin")
# When party number of people 0 is
if $game_party.actors.size == 0
# Nullifying the item, skill, equipment and status
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
# In case of saving prohibition
if $game_system.save_disabled
# Saving is made invalid
@command_window.disable_item(4)
end
# Drawing up the play time window
@playtime_window = Window_PlayTime.new
@playtime_window.x = 890
@playtime_window.y = 394
@playtime_window.z = 640
@playtime_window.opacity = 0
@playtime_window.windowskin = RPG::Cache.windowskin("Dragon skin")
# Drawing up the Gold window
@gold_window = Window_Gold.new
@gold_window.x = 890
@gold_window.y = 264
@gold_window.z = 640
@gold_window.height = 199
@gold_window.opacity = 0
@gold_window.windowskin = RPG::Cache.windowskin("Dragon skin")
#drawing up the map_name Window
@map = Window_Mapname.new
@map.x = 890
@map.y = 180 # 180 deafault
@map.z = 640 # decides wether window is on top of others or below
@map.height = 50
@map.width = 290
@map.windowskin = RPG::Cache.windowskin("Dragon skin")
#Drawing up the Contents for the Party XP Window
@party_exp_window = Window_party_exp.new
@party_exp_window.x = 890
@party_exp_window.y = 262
@party_exp_window.z = 640
@party_exp_window.opacity = 255
@party_exp_window.height = 214 # must be over 221 to look right!
@party_exp_window.windowskin = RPG::Cache.windowskin("Dragon skin")
#-------------------------------------------------------------------------------
#- Help Windows Show Begin - Begin Customization Here
#-------------------------------------------------------------------------------
# - Before editing this section I wud advise you to create a bakup of the script so you can repast it in to correct any errors you make
#Drawing up the "location" Text Window 1
@Window_location_text = Window_location_text.new
@Window_location_text.x = 890 # 532 default
@Window_location_text.y = 152 #152 # must be 28 below map location
@Window_location_text.z = 640
@Window_location_text.height = 44
@Window_location_text.windowskin = RPG::Cache.windowskin("Dragon skin")
#Drawing up the Data_text Window
@Window_data_text = Window_data_text.new
@Window_data_text.x = 900 # 890 a sec
@Window_data_text.y = 248 #248 must be 38 above
@Window_data_text.z = 640
@Window_data_text.width = 70
@Window_data_text.height = 44
@Window_data_text.windowskin = RPG::Cache.windowskin("Dragon skin")
#Drawing up the Command_Text Window
@Window_command_text = Window_command_text.new
@Window_command_text.x = -120 # 86 default
@Window_command_text.y = 182 #182
@Window_command_text.z = 640
@Window_command_text.windowskin = RPG::Cache.windowskin("Dragon skin")
#Drawing up the Background Window
@Background_window = Background_window.new
@Background_window.x = 0
@Background_window.y = 0
@Background_window.z = 0
@Background_window.opacity = 255
@Background_window.windowskin = RPG::Cache.windowskin("BackgroundSkin")
#Drawing up the actor Windows !!!Be careful when editing this section!!!!
@Window_exp_box = Window_exp_box.new
@Window_exp_box.x = - 10
@Window_exp_box.y = - 200
@Window_exp_box.z = 640
@Window_exp_box.opacity = 0
#Drawing up the Exp And Ap bars
@Window_party_box = Window_party_box.new
@Window_party_box.x = - 10
@Window_party_box.y = - 200
@Window_party_box.z = 650
@Window_party_box.opacity = 0
#-------------------------------------------------------------------------------
#- Help Windows Show End - End Of Customization
#-------------------------------------------------------------------------------
# Drawing up the status window
@status_window = Window_MenuStatus.new
@status_window.x = - 10 #160 default
@status_window.y = - 200 # - 120
@status_window.z = 600
#@status_window.width = 450
# Transition execution
Graphics.transition
# Main loop
loop do
# Renewing the game picture
Graphics.update
# Updating the information of input
Input.update
# フレーム更新
update
# When the picture changes, discontinuing the loop
if $scene != self
break
end
end
# Transition preparation
Graphics.freeze
# Releasing the window
@command_window.dispose
@playtime_window.dispose
@gold_window.dispose
@status_window.dispose
@party_exp_window.dispose
@map.dispose
@Window_command_text.dispose
@Window_data_text.dispose
@Window_location_text.dispose
@Window_exp_box.dispose
@Window_party_box.dispose
@Background_window.dispose
end
#--------------------------------------------------------------------------
#Defining the delay
#--------------------------------------------------------------------------
def delay(seconds)
for i in 0...(seconds * 1)
sleep 0.01
Graphics.update
end
end
#--------------------------------------------------------------------------
# - Frame renewal
#--------------------------------------------------------------------------
def update
# Renewing the window
@command_window.update
@status_window.update
@playtime_window.update
@gold_window.update
@party_exp_window.update
@map.update
@Window_exp_box.update
@Window_party_box.update
#Moving Windows inplace (only when open Menu not when Exit)
#Moving Status Window
if @status_window.y < 0 # 60 before ok
@status_window.y += 16 # 16
end
#Moving the Window_exp_box
if @Window_exp_box.y < 0 # 50
@Window_exp_box.y +=16
end
#Moving the Ap, Hp bars
if @Window_party_box.y < 0 # 50
@Window_party_box.y +=16
end
#Moving command Window
if @command_window.x < - 9
@command_window.x += 34 #= 60
end
#Moving Party Exp Window
if @party_exp_window.x > 460
@party_exp_window.x -= 20
end
#Moving Gold Window
if @gold_window.x > 460
@gold_window.x -= 20
end
#Moving Playtime Window
if @playtime_window.x > 460
@playtime_window.x -= 20
end
#Moving the "location" window
if @Window_location_text.x > 534
@Window_location_text.x -= 20
end
#Moving Map Window
if @map.x > 349
@map.x -= 20
end
#Moving the Data_Help Window
if @Window_data_text.x > 540 # 560
@Window_data_text.x -= 20
end
#Moving the Command Help Window
if @Window_command_text.x < - 14
@Window_command_text.x += 208
end
# When the command window is active,: Update_command is called
if @command_window.active
update_command
return
end
# When the status window is active,: Update_status is called
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------------
# - When frame renewal (the command window is active)
#--------------------------------------------------------------------------
def update_command
# The B when button is pushed
if Input.trigger?(Input::B)
# Performing cancellation SE
$game_system.se_play($data_system.cancel_se)
# Change to map picture
$scene = Scene_Map.new
return
end
# When C button is pushed
if Input.trigger?(Input::C)
# When party number of people with 0,its command other than saving and game end
if $game_party.actors.size == 0 and @command_window.index < 4
# Performing buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# It diverges at cursor position of the command window
case @command_window.index
when 0 # Item
# Performing decision SE
$game_system.se_play($data_system.decision_se)
# Change to item picture
$scene = Scene_Item.new
when 1 # Skill
# Performing decision SE
$game_system.se_play($data_system.decision_se)
# The status window is made active
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2 # Equipment
# Performing decision SE
$game_system.se_play($data_system.decision_se)
# The status window is made active
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3 # Status
# Performing decision SE
$game_system.se_play($data_system.decision_se)
# The status window is made active
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 4 # Saving
# In case of saving prohibition
if $game_system.save_disabled
# Performing buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Performing decision SE
$game_system.se_play($data_system.decision_se)
# Change to saving picture
$scene = Scene_Save.new
when 5 # Battle Stats
# Performing decision SE
$game_system.se_play($data_system.decision_se)
# Change to Battle Stats Info screen
# Havent actually gotten round to adding this particular option yet!!!!!!
when 6 # Game end
# Performing decision SE
$game_system.se_play($data_system.decision_se)
# Change to game end picture
$scene = Scene_End.new
end
return
end
end
#--------------------------------------------------------------------------
# - When frame renewal (the status window is active)
#--------------------------------------------------------------------------
def update_status
# The B when button is pushed
if Input.trigger?(Input::B)
# Performing cancellation SE
$game_system.se_play($data_system.cancel_se)
# The command window is made active
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
# When C button is pushed
if Input.trigger?(Input::C)
# It diverges at cursor position of the command window
case @command_window.index
when 1 # Skill
# When conduct restriction of this actor is 2 or more
if $game_party.actors[@status_window.index].restriction >= 2
# Performing buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Performing decision SE
$game_system.se_play($data_system.decision_se)
# Change to skill picture
$scene = Scene_Skill.new(@status_window.index)
when 2 # Equipment
# Performing decision SE
$game_system.se_play($data_system.decision_se)
# Change to equipment picture
$scene = Scene_Equip.new(@status_window.index)
when 3 # Status
# Performing decision SE
$game_system.se_play($data_system.decision_se)
# Change to status picture
$scene = Scene_Status.new(@status_window.index)
end
return
end
end
end
#-------------------------------------------------------------------------------
# - This is the Class that Handles the Creation of character Faces
#Create a new folder in the Characters folder, and call it Faces
#Adding faces: add a 80x80 picture with the same name as the characterset it
#corrosponds with in the Faces folder
#- ie: Arshes is 001-Fighter01 ect.
#If you do not want Faces, go to line 102
#and change delete the # of draw_actor_graphic
#and put a # infront of draw_actor_face
class Window_Base < Window
def draw_actor_face(actor, x, y)
face = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
fw = face.width
fh = face.height
src_rect = Rect.new(0, 0, fw, fh) #0, 0
self.contents.blt(x - fw / 133, y - fh, face, src_rect) # 23
end
end
def draw_actor_battler_graphic(actor, x, y)
bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)# 2
end
#-------------------------------------------------------------------------------
# - This is the class that creates and calculates the Total party Exp
#-------------------------------------------------------------------------------
class Window_party_exp < Window_Base # Begins
#--------------------------------------------------------------------------
# - Object initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 200) #0, 0, 160, 200
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# - Refreshment
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = black_color
self.contents.draw_text(- 36, 56, 120, 32, "Party XP", 2) # 62
self.contents.font.color = black_color
$game_variables[12] = $game_actors[1].exp + $game_actors[2].exp + $game_actors[3].exp
self.contents.draw_text(8, 98, 120, 32,$game_variables[12].to_s, 2)
end
end # End of Window_party_exp
#========================================
#■ Game_Map
#--------------------------------------------------------------------------------
# Setting functions for the Map # needed to create Location bar in menu
#========================================
class Game_Map
def name
$map_infos[@map_id]
end
end
#========================================
#■ Window_Title
#--------------------------------------------------------------------------------
# Setting functions for the Title
#========================================
class Scene_Title
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
end
#==============================================================================
# ■ Window_Mapname
#------------------------------------------------------------------------------
# Draws the Map name
#==============================================================================
class Window_Mapname < Window_Base
#--------------------------------------------------------------------------
# Set up
#--------------------------------------------------------------------------
def initialize
super(0, 0, 280, 50) # 360, 60
self.contents = Bitmap.new(width - 52, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# Draws info on screen
#--------------------------------------------------------------------------
def refresh
self.contents.clear
# Map Name
#map = $game_map.name
self.contents.font.color = black_color
self.contents.draw_text(0, - 8, 210, 32, $game_map.name) #120, 0, 170, 32
end
end
#--------------------------------------------------------------------------
# This creates the description windows delete if unwanted
# - ▼ - Window "Location" text Begins
#--------------------------------------------------------------------------
# Makes the Extra Window holding the text "location"
class Window_location_text < Window_Base
def initialize
super(0, 0, 89, 42) #92 & 42
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Arial Rounded MT Bold"
self.contents.font.color = black_color
self.contents.font.size = 16
self.contents.draw_text(0, - 11, 160, 32, "Location")
end
end
#--------------------------------------------------------------------------
# # - ▼ - Window_data_text Begins
#--------------------------------------------------------------------------
# Makes the Extra Window holding the text "Data"
class Window_data_text < Window_Base
def initialize
super(0, 0, 62, 42) # 360, 60
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Arial Rounded MT Bold"
self.contents.font.color = black_color
self.contents.font.size = 16
self.contents.draw_text(0, - 11, 160, 32, "Data")
end
end
#--------------------------------------------------------------------------
# # - ▼ - Window_command_text Begins
#--------------------------------------------------------------------------
# Makes the Extra Window holding the text "Command"
class Window_command_text < Window_Base
def initialize
super(0, 0, 98, 42)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Arial Rounded MT Bold"
self.contents.font.color = black_color
self.contents.font.size = 16
self.contents.draw_text(0, - 11, 160, 32, "Command")
end
end
#-------------------------------------------------------------------------------
# - ▲- Window_help_text Ends !.!All the Help Text Windows End Here!.!
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# - This creates the Party Exp boxes - IMPORTANT DONT DELETE!
#-------------------------------------------------------------------------------
class Window_party_box < Window_Base
def initialize
super (0, 0, 880, 880)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Arial"
self.contents.font.color = black_color
self.contents.font.size = 16
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 0
x = i * 160
actor = $game_party.actors[i]
draw_actor_hp(actor, x + 8, y + 6)
draw_actor_sp(actor, x + 18, y + 36)
# draw_actor_name(actor, x + 20, - 14)
end
end
end
#-------------------------------------------------------------------------------
# - Refreshing the window - IMPORTANT DONT DELETE!
#-------------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 0
x = i * 160
actor = $game_party.actors[i]
draw_actor_hp(actor, x + 8, y + 6)
draw_actor_sp(actor, x + 18, y + 36)
self.contents.font.size = 18
end
end
#-------------------------------------------------------------------------------
# - This creates the actor Graphic !IMPORTANT DONT DELETE!
#-------------------------------------------------------------------------------
class Window_exp_box < Window_Base
def initialize
super (0, 0, 880, 680)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Arial"
self.contents.font.color = black_color
self.contents.font.size = 16
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 10
x = i * 160
actor = $game_party.actors[i]
draw_actor_graphic(actor, x + 12, y + 56)
end
end
end
#-------------------------------------------------------------------------------
# - Refreshing the window !IMPORTANT DONT DELETE!
#-------------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 10
x = i * 160
actor = $game_party.actors[i]
draw_actor_graphic(actor, x + 12, y + 56)
end
end
#-------------------------------------------------------------------------------
# - Background_Window - This creates the background window
#-------------------------------------------------------------------------------
#This creates the Background Window (You can chose your own Windowskin for this)
class Background_window < Window_Base
def initialize
super(0, 0, 640, 680)
#@windowname.windowskin = RPG::Cache.windowskin(@"001-Blue01")
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Arial Rounded MT Bold"
self.contents.font.color = system_color
self.contents.font.size = 16
end
end
# HP/SP/EXP bars Ver 1.00
# by Cogwheel.
# Custom edited by Squall789
# http by p://members.jcom.home.ne.jp/cogwheel/
#==============================================================================
# ¡ Game_Actor (most of this stuff is hard to change but I will try)
#------------------------------------------------------------------------------
# Although most of the comments are in JP it is still not that difficult
# I have labled the stuff that you may want to customize.
#==============================================================================
#==============================================================================
# ¡ Window_Base
#------------------------------------------------------------------------------
# I think this adds a new function to the Window_Base Class
#==============================================================================
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
#--------------------------------------------------------------------------
# HP bar Setup
#--------------------------------------------------------------------------
# ƒIƒŠƒWƒiƒ‹‚ÌHP•`‰æ‚ð draw_actor_hp_original ‚Æ–¼‘O•ÏX
alias :draw_actor_hp_original :draw_actor_hp
def draw_actor_hp(actor, x, y, width = 145)
# •Ï”rate‚É Œ»Ý‚ÌHP/MHP‚ð‘ã“ü
if actor.maxhp != 0
rate = actor.hp.to_f / actor.maxhp
else
rate = 0
end
# plus_x:XÀ•W‚̈ʒu•â³ rate_x:XÀ•W‚̈ʒu•â³(%) plus_y:YÀ•W‚̈ʒu•â³
# plus_width:•‚Ì•â³ rate_width:•‚Ì•â³(%) height:c•
# align1:•`‰æƒ^ƒCƒv1 0:¶‹l‚ß 1:’†‰›‘µ‚¦ 2:‰E‹l‚ß
# align2:•`‰æƒ^ƒCƒv2 0:ã‹l‚ß 1:’†‰›‘µ‚¦ 2:‰º‹l‚ß
# align3:ƒQ[ƒWƒ^ƒCƒv 0:¶‹l‚ß 1:‰E‹l‚ß
plus_x = 32
rate_x = 0
plus_y = 30 # 25 default, change to make look better
plus_width = 0 # never changed this but i dont think you really need to
rate_width = 65 #change to make bar longer or shorter
height = 8 # 7 was default, change to make bar thiner or thicker
align1 = 0
align2 = 1
align3 = 0
# ƒOƒ‰ƒf[ƒVƒ‡ƒ“Ý’è grade1:‹óƒQ[ƒW grade2:ŽÀƒQ[ƒW
# (0:‰¡‚ɃOƒ‰ƒf[ƒVƒ‡ƒ“ 1:c‚ɃOƒ‰ƒf[ƒVƒ‡ƒ“ 2:ŽÎ‚߂ɃOƒ‰ƒf[ƒVƒ‡ƒ“(Œƒd)j
grade1 = 1 # grade 1 default
grade2 = 0
# FÝ’èBcolor1:ŠO˜gCcolor2:’†˜g
# color3:‹óƒQ[ƒWƒ_[ƒNƒJƒ‰[Ccolor4:‹óƒQ[ƒWƒ‰ƒCƒgƒJƒ‰[
# color5:ŽÀƒQ[ƒWƒ_[ƒNƒJƒ‰[Ccolor6:ŽÀƒQ[ƒWƒ‰ƒCƒgƒJƒ‰[
color1 = Color.new(0, 0, 0, 192)
color2 = Color.new(255, 255, 192, 192)
color3 = Color.new(0, 0, 0, 192)
color4 = Color.new(64, 0, 0, 192)
color5 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
# •Ï”sp‚É•`‰æ‚·‚éƒQ[ƒW‚Ì•‚ð‘ã“ü
if actor.maxhp != 0
hp = (width + plus_width) * actor.hp * rate_width / 100 / actor.maxhp
else
hp = 0
end
# ƒQ[ƒW‚Ì•`‰æ
gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
width, plus_width + width * rate_width / 100,
height, hp, align1, align2, align3,
color1, color2, color3, color4, color5, color6, grade1, grade2)
# ƒIƒŠƒWƒiƒ‹‚ÌHP•`‰æˆ—‚ðŒÄ‚Ño‚µ
draw_actor_hp_original(actor, x, y, width)
end
#--------------------------------------------------------------------------
# SP Bar Setup
#--------------------------------------------------------------------------
# ƒIƒŠƒWƒiƒ‹‚ÌSP•`‰æ‚ð draw_actor_sp_original ‚Æ–¼‘O•ÏX
alias :draw_actor_sp_original :draw_actor_sp
def draw_actor_sp(actor, x, y, width = 144)
# •Ï”rate‚É Œ»Ý‚ÌSP/MSP‚ð‘ã“ü
if actor.maxsp != 0
rate = actor.sp.to_f / actor.maxsp
else
rate = 1
end
# plus_x:XÀ•W‚̈ʒu•â³ rate_x:XÀ•W‚̈ʒu•â³(%) plus_y:YÀ•W‚̈ʒu•â³
# plus_width:•‚Ì•â³ rate_width:•‚Ì•â³(%) height:c•
# align1:•`‰æƒ^ƒCƒv1 0:¶‹l‚ß 1:’†‰›‘µ‚¦ 2:‰E‹l‚ß
# align2:•`‰æƒ^ƒCƒv2 0:ã‹l‚ß 1:’†‰›‘µ‚¦ 2:‰º‹l‚ß
# align3:ƒQ[ƒWƒ^ƒCƒv 0:¶‹l‚ß 1:‰E‹l‚ß
plus_x = 32
rate_x = 0
plus_y = 30
plus_width = 0 # change to needs
rate_width = 65 # change to your preferences
height = 8 # bigger number make bar thicker
align1 = 0
align2 = 1
align3 = 0
# ƒOƒ‰ƒf[ƒVƒ‡ƒ“Ý’è grade1:‹óƒQ[ƒW grade2:ŽÀƒQ[ƒW
# (0:‰¡‚ɃOƒ‰ƒf[ƒVƒ‡ƒ“ 1:c‚ɃOƒ‰ƒf[ƒVƒ‡ƒ“ 2:ŽÎ‚߂ɃOƒ‰ƒf[ƒVƒ‡ƒ“(Œƒd)j
grade1 = 1
grade2 = 0
# FÝ’èBcolor1:ŠO˜gCcolor2:’†˜g
# color3:‹óƒQ[ƒWƒ_[ƒNƒJƒ‰[Ccolor4:‹óƒQ[ƒWƒ‰ƒCƒgƒJƒ‰[
# color5:ŽÀƒQ[ƒWƒ_[ƒNƒJƒ‰[Ccolor6:ŽÀƒQ[ƒWƒ‰ƒCƒgƒJƒ‰[
color1 = Color.new(0, 0, 0, 192)
color2 = Color.new(255, 255, 192, 192)
color3 = Color.new(0, 0, 0, 192)
color4 = Color.new(0, 64, 0, 192)
color5 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
color6 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
# •Ï”sp‚É•`‰æ‚·‚éƒQ[ƒW‚Ì•‚ð‘ã“ü
if actor.maxsp != 0
sp = (width + plus_width) * actor.sp * rate_width / 100 / actor.maxsp
else
sp = (width + plus_width) * rate_width / 100
end
# ƒQ[ƒW‚Ì•`‰æ
gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
width, plus_width + width * rate_width / 100,
height, sp, align1, align2, align3,
color1, color2, color3, color4, color5, color6, grade1, grade2)
# ƒIƒŠƒWƒiƒ‹‚ÌSP•`‰æˆ—‚ðŒÄ‚Ño‚µ
draw_actor_sp_original(actor, x, y, width)
end
#--------------------------------------------------------------------------
# EXP Bar setup (I didnt actually use this but I thought others might want to
#--------------------------------------------------------------------------
# ƒIƒŠƒWƒiƒ‹‚ÌEXP•`‰æ‚ð draw_actor_sp_original ‚Æ–¼‘O•ÏX
alias :draw_actor_exp_original :draw_actor_exp
def draw_actor_exp(actor, x, y, width = 204)
# •Ï”rate‚É Œ»Ý‚Ìexp/nextexp‚ð‘ã“ü
if actor.next_exp != 0
rate = actor.now_exp.to_f / actor.next_exp
else
rate = 1
end
# plus_x:XÀ•W‚̈ʒu•â³ rate_x:XÀ•W‚̈ʒu•â³(%) plus_y:YÀ•W‚̈ʒu•â³
# plus_width:•‚Ì•â³ rate_width:•‚Ì•â³(%) height:c•
# align1:•`‰æƒ^ƒCƒv1 0:¶‹l‚ß 1:’†‰›‘µ‚¦ 2:‰E‹l‚ß
# align2:•`‰æƒ^ƒCƒv2 0:ã‹l‚ß 1:’†‰›‘µ‚¦ 2:‰º‹l‚ß
# align3:ƒQ[ƒWƒ^ƒCƒv 0:¶‹l‚ß 1:‰E‹l‚ß
plus_x = 0
rate_x = 0
plus_y = 25
plus_width = 0 # edit to suite your needs
rate_width = 50 # edit to suite your needs
height = 7 #larger numbers make the box bigger
align1 = 0
align2 = 1
align3 = 0
# ƒOƒ‰ƒf[ƒVƒ‡ƒ“Ý’è grade1:‹óƒQ[ƒW grade2:ŽÀƒQ[ƒW
# (0:‰¡‚ɃOƒ‰ƒf[ƒVƒ‡ƒ“ 1:c‚ɃOƒ‰ƒf[ƒVƒ‡ƒ“ 2:ŽÎ‚߂ɃOƒ‰ƒf[ƒVƒ‡ƒ“(Œƒd)j
grade1 = 1
grade2 = 0
# FÝ’èBcolor1:ŠO˜gCcolor2:’†˜g
# color3:‹óƒQ[ƒWƒ_[ƒNƒJƒ‰[Ccolor4:‹óƒQ[ƒWƒ‰ƒCƒgƒJƒ‰[
# color5:ŽÀƒQ[ƒWƒ_[ƒNƒJƒ‰[Ccolor6:ŽÀƒQ[ƒWƒ‰ƒCƒgƒJƒ‰[
color1 = Color.new(0, 0, 0, 192)
color2 = Color.new(255, 255, 192, 192)
color3 = Color.new(0, 0, 0, 192)
color4 = Color.new(64, 0, 0, 192)
color5 = Color.new(80 * rate, 80 - 80 * rate ** 2, 80 - 80 * rate, 192)
color6 = Color.new(240 * rate, 240 - 240 * rate ** 2, 240 - 240 * rate, 192)
# •Ï”exp‚É•`‰æ‚·‚éƒQ[ƒW‚Ì•‚ð‘ã“ü
if actor.next_exp != 0
exp = (width + plus_width) * actor.now_exp * rate_width /
100 / actor.next_exp
else
exp = (width + plus_width) * rate_width / 100
end
# ƒQ[ƒW‚Ì•`‰æ
gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
width, plus_width + width * rate_width / 100,
height, exp, align1, align2, align3,
color1, color2, color3, color4, color5, color6, grade1, grade2)
# ƒIƒŠƒWƒiƒ‹‚ÌEXP•`‰æˆ—‚ðŒÄ‚Ño‚µ
draw_actor_exp_original(actor, x, y)
end
#--------------------------------------------------------------------------
# œ ƒQ[ƒW‚Ì•`‰æ
#--------------------------------------------------------------------------
def gauge_rect(x, y, rect_width, width, height, gauge, align1, align2, align3,
color1, color2, color3, color4, color5, color6, grade1, grade2)
case align1
when 1
x += (rect_width - width) / 2
when 2
x += rect_width - width
end
case align2
when 1
y -= height / 2
when 2
y -= height
end
# ˜g•`‰æ
self.contents.fill_rect(x, y, width, height, color1)
self.contents.fill_rect(x + 1, y + 1, width - 2, height - 2, color2)
if align3 == 0
if grade1 == 2
grade1 = 3
end
if grade2 == 2
grade2 = 3
end
end
if (align3 == 1 and grade1 == 0) or grade1 > 0
color = color3
color3 = color4
color4 = color
end
if (align3 == 1 and grade2 == 0) or grade2 > 0
color = color5
color5 = color6
color6 = color
end
# ‹óƒQ[ƒW‚Ì•`‰æ
self.contents.gradation_rect(x + 2, y + 2, width - 5, height - 5,
color3, color4, grade1)
if align3 == 1
x += width - gauge
end
# ŽÀƒQ[ƒW‚Ì•`‰æ
self.contents.gradation_rect(x + 2, y + 2, gauge - 4, height - 4,
color5, color6, grade2)
end
end
#------------------------------------------------------------------------------
# @BitmapƒNƒ‰ƒX‚ÉV‚½‚È‹@”\‚ð’ljÁ‚µ‚Ü‚·B
#==============================================================================
class Bitmap
#--------------------------------------------------------------------------
# œ ‹éŒ`‚ðƒOƒ‰ƒf[ƒVƒ‡ƒ“•\Ž¦
# color1 : ƒXƒ^[ƒgƒJƒ‰[
# color2 : ƒGƒ“ƒhƒJƒ‰[
# align : 0:‰¡‚ɃOƒ‰ƒf[ƒVƒ‡ƒ“
# 1:c‚ɃOƒ‰ƒf[ƒVƒ‡ƒ“
# 2:ŽÎ‚߂ɃOƒ‰ƒf[ƒVƒ‡ƒ“iŒƒd‚ɂ‚«’ˆÓj
#--------------------------------------------------------------------------
def gradation_rect(x, y, width, height, color1, color2, align = 0)
if align == 0
for i in x...x + width
red = color1.red + (color2.red - color1.red) * (i - x) / (width - 1)
green = color1.green +
(color2.green - color1.green) * (i - x) / (width - 1)
blue = color1.blue +
(color2.blue - color1.blue) * (i - x) / (width - 1)
alpha = color1.alpha +
(color2.alpha - color1.alpha) * (i - x) / (width - 1)
color = Color.new(red, green, blue, alpha)
fill_rect(i, y, 1, height, color)
end
elsif align == 1
for i in y...y + height
red = color1.red +
(color2.red - color1.red) * (i - y) / (height - 1)
green = color1.green +
(color2.green - color1.green) * (i - y) / (height - 1)
blue = color1.blue +
(color2.blue - color1.blue) * (i - y) / (height - 1)
alpha = color1.alpha +
(color2.alpha - color1.alpha) * (i - y) / (height - 1)
color = Color.new(red, green, blue, alpha)
fill_rect(x, i, width, 1, color)
end
elsif align == 2
for i in x...x + width
for j in y...y + height
red = color1.red + (color2.red - color1.red) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
green = color1.green + (color2.green - color1.green) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
blue = color1.blue + (color2.blue - color1.blue) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
alpha = color1.alpha + (color2.alpha - color1.alpha) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
color = Color.new(red, green, blue, alpha)
set_pixel(i, j, color)
end
end
elsif align == 3
for i in x...x + width
for j in y...y + height
red = color1.red + (color2.red - color1.red) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
green = color1.green + (color2.green - color1.green) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
blue = color1.blue + (color2.blue - color1.blue) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
alpha = color1.alpha + (color2.alpha - color1.alpha) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
color = Color.new(red, green, blue, alpha)
set_pixel(i, j, color)
end
end
end
end
end
#==============================================================================
# ¡ Spriteƒ‚ƒWƒ…[ƒ‹ im not really sure on this as the description wasn't english
#------------------------------------------------------------------------------
# I think it the setup for the different colors for different stats (js a guess)
#==============================================================================
module RPG
class Sprite < ::Sprite
def damage(value, critical)
dispose_damage
if value.is_a?(Numeric)
damage_string = value.abs.to_s
else
damage_string = value.to_s
end
bitmap = Bitmap.new(160, 48)
bitmap.font.name = "Arial Black"
bitmap.font.size = 32
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
if value.is_a?(Numeric) and value < 0
bitmap.font.color.set(176, 255, 144)
else
bitmap.font.color.set(255, 255, 255)
end
bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
if critical
bitmap.font.size = 20
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
bitmap.font.color.set(255, 255, 255)
bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
end
@_damage_sprite = ::Sprite.new
@_damage_sprite.bitmap = bitmap
@_damage_sprite.ox = 80 + self.viewport.ox
@_damage_sprite.oy = 20 + self.viewport.oy
@_damage_sprite.x = self.x + self.viewport.rect.x
@_damage_sprite.y = self.y - self.oy / 2 + self.viewport.rect.y
@_damage_sprite.z = 3000
@_damage_duration = 40
end
def animation(animation, hit)
dispose_animation
@_animation = animation
return if @_animation == nil
@_animation_hit = hit
@_animation_duration = @_animation.frame_max
animation_name = @_animation.animation_name
animation_hue = @_animation.animation_hue
bitmap = RPG::Cache.animation(animation_name, animation_hue)
if @@_reference_count.include?(bitmap)
@@_reference_count[bitmap] += 1
else
@@_reference_count[bitmap] = 1
end
@_animation_sprites = []
if @_animation.position != 3 or not @@_animations.include?(animation)
for i in 0..15
sprite = ::Sprite.new
sprite.bitmap = bitmap
sprite.visible = false
@_animation_sprites.push(sprite)
end
unless @@_animations.include?(animation)
@@_animations.push(animation)
end
end
update_animation
end
def loop_animation(animation)
return if animation == @_loop_animation
dispose_loop_animation
@_loop_animation = animation
return if @_loop_animation == nil
@_loop_animation_index = 0
animation_name = @_loop_animation.animation_name
animation_hue = @_loop_animation.animation_hue
bitmap = RPG::Cache.animation(animation_name, animation_hue)
if @@_reference_count.include?(bitmap)
@@_reference_count[bitmap] += 1
else
@@_reference_count[bitmap] = 1
end
@_loop_animation_sprites = []
for i in 0..15
sprite = ::Sprite.new
sprite.bitmap = bitmap
sprite.visible = false
@_loop_animation_sprites.push(sprite)
end
update_loop_animation
end
def animation_set_sprites(sprites, cell_data, position)
for i in 0..15
sprite = sprites[i]
pattern = cell_data[i, 0]
if sprite == nil or pattern == nil or pattern == -1
sprite.visible = false if sprite != nil
next
end
sprite.visible = true
sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
if position == 3
if self.viewport != nil
sprite.x = self.viewport.rect.width / 2
sprite.y = self.viewport.rect.height - 160
else
sprite.x = 320
sprite.y = 240
end
else
sprite.x = self.x + self.viewport.rect.x -
self.ox + self.src_rect.width / 2
sprite.y = self.y + self.viewport.rect.y -
self.oy + self.src_rect.height / 2
sprite.y -= self.src_rect.height / 4 if position == 0
sprite.y += self.src_rect.height / 4 if position == 2
end
sprite.x += cell_data[i, 1]
sprite.y += cell_data[i, 2]
sprite.z = 2000
sprite.ox = 96
sprite.oy = 96
sprite.zoom_x = cell_data[i, 3] / 100.0
sprite.zoom_y = cell_data[i, 3] / 100.0
sprite.angle = cell_data[i, 4]
sprite.mirror = (cell_data[i, 5] == 1)
sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
sprite.blend_type = cell_data[i, 7]
end
end
end
end
#--------------------------------------------------------------------------------
# * Window_MenuStatus
#------------------------------------------------------------------------------
#It is the window which indicates the stats of the party member in menu screen.
#==============================================================================
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# - Object initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 680, 480) # 640, 480
self.contents = Bitmap.new(width - 32, height - 32) # - 32, - 32
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
self.contents.font.color = black_color
self.opacity = 0
@column_max = 4
@item_max = 4
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# - All party members (FIX) !You all asked for it here it is!
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...$game_party.actors.size
x = 0
x = i * 160 #x + 50
actor = $game_party.actors[i]
draw_actor_face(actor, x + 2, y + 80)
self.opacity = 0 # musy be changed to 255 when checking to make block curser
self.contents.font.color = black_color
end
end
end
#--------------------------------------------------------------------------
# - Rectangle renewal of cursor
#--------------------------------------------------------------------------
def update_cursor_rect
self.cursor_rect.set(160 + index * 260, 190, 428, 432)
end
here.
All instructions ect are either in this post or in the Script comments.
Breath_Of_Fire_Menu_v2.rar (Size: 249.71 KB / Downloads: 5)