|
| Enemy HP Bars + Menu Bars[SOLVED] | |
| Author | Message |
---|
Verm Active Member
Posts : 72 Points : 112 Join date : 2011-10-22 Location : United States
| Subject: Enemy HP Bars + Menu Bars[SOLVED] Tue Oct 25, 2011 3:56 am | |
| If possible, I would like somebody to combine these scripts... Enemy HP Bars - Jens009 - Spoiler:
#====================================================================== # Jens009's Enemy Hp Window # Version 1.2 # Log: July 29, 2008 # - Version 1.0: Show Enemy Hp Bars # August 5, 2008 # - Version 1.1: Enable On/Off feature Using a $game_system instance # : Enable On/Off feature using an in-game switch # August 8, 2008 # - Version 1.2: Add New Options # : Change Default Window Size # : Add Enemy States # Rant: [Code Geass ftw] # C.C. Still loves Pizza <3 # Be nice to her Lulu. # Oh.. I haven't done my summer homework yet. T_T # # Credits to: # Jens009 (Translation and Modification) # Puppeto4 (Alias tutorial and for bugging me to create a script) # just kidding puppeto =p # Author's Note: # 9 Methods were aliased. Refer to lines 110-118 # 4 Were not necessary but was needed so that Enemy Window # was not present during item/skill selections. # # # Modification: # If you want to modify the bars, look @lines 42-72.You can see that # I simply took draw_actor_hp and turned it into draw_enemy_hp # This means you can use any bars you desire so long as you define # it correctly. =] # #----------------------------------------------------------------------------- # CONFIG: # # I. Turning the Window On of Off during In-Game: # # There are two kinds of switches you can use depending # upon your liking. I made it so that you either have a # game switch or a script switch that handles the enemy window flag. # # If you want to use a script switch # -set USE_GSWITCH to false # -Use a call script, $game_system.enemy_window = true/false # True = Window Shows up, False = No Enemy Window # # If you want to use a game switch # -Set USE_GSWITCH to true # -Decide what Game Switch ID you want to use # in ENEMY_WINDOW_SWITCH # -Use that game switch to check for showing the Enemy Hp Window # True = Window Shows up, False = No enemy window. # # # BY DEFAULT, USE_GSWITCH is false. # So you are using a Script Switch # # II. ALWAYS_UPDATE # can either be set to true or false. # if true, the enemy window always update for every action # but the battle system will have more lag. # if false, the enemy window only updates at the end of each turn # and everytime the battle selection begins. # Setting it to false will lower compatibility but should still work # for most systems regardless. # # III. Spacing X and Y change # SPACING_X = Changing this number will change the X spacing of the windows # SPACING_Y = Changing this number will change the Y spacing of the windows # IV. COLUMNS # COLUMNS = Draw enemy information by creating 4 columns. # V. SHOW_STATES # if set to true, enemies state will be shown. #====================================================================== module JCONFIG USE_GSWITCH = false # Setting it to false will use the script # switch $game_system.enemy_hp instead. # Setting it to true will use an in-game switch # using the switch ID below. ENEMY_WINDOW_SWITCH = 1 # Switch ID that will be used to check # Enemy Window is only ON, when Switch is ON ALWAYS_UPDATE = true # True = window always updates # False = window updates at end of turn SPACING_X = 90 # X spacing per enemy info SPACING_Y = 44 # Y spacing per enemy info COLUMNS = 4 # By default, Do 4 Columns. SHOW_STATES = true # true will show enemies states # false will not show states end #====================================================================== # Start Game_System Edit #====================================================================== class Game_System attr_accessor :enemy_hp # Show enemy HP on battle alias jens009_system_initialize_enemy_hp initialize #============================================= # Initialize Values #============================================= def initialize # Initialize enemy hp window to true @enemy_hp = true # Call previous methods jens009_system_initialize_enemy_hp end end # END Game system Edit
class Window_Base #==================================== # Define Enemy Name #==================================== def draw_enemy_name(enemy, x, y) self.contents.font.color = normal_color self.contents.draw_text (x, y, 120, 32, enemy.name) end #========================== # Define Enemy State #======================== def draw_enemy_state(enemy, x, y) count = 0 for state in enemy.states draw_icon(state.icon_index, x + 24 * count, y) count += 1 break if (24 * count > width - 24) end end #-------------------------------------------------------------------------- # * Draw Enemy HP # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # width : Width #-------------------------------------------------------------------------- def draw_enemy_hp(enemy, x, y, width = 120) draw_enemy_hp_gauge(enemy, x, y, width) self.contents.font.color = system_color self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a) last_font_size = self.contents.font.size xr = x + width if width < 120 self.contents.draw_text(xr - 44, y, 44, WLH, enemy.hp, 2) else self.contents.draw_text(xr - 99, y, 44, WLH, enemy.hp, 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, enemy.maxhp, 2) end end #-------------------------------------------------------------------------- # * Draw HP gauge # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # width : Width #-------------------------------------------------------------------------- def draw_enemy_hp_gauge(enemy, x, y, width = 120) gw = width * enemy.hp / enemy.maxhp gc1 = hp_gauge_color1 gc2 = hp_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 end #End of Window_Base Class
#=====================================# # Window_EnemyHP # # Class handles window for Enemy's HP # #=====================================# class Window_EnemyHP < Window_Selectable def initialize super ( 0, 0, 545, 300) self.contents = Bitmap.new(width - 32, height - 32) self.opacity = 0 @column_max = JCONFIG::COLUMNS refresh end def refresh self.contents.clear for i in 0...$game_troop.members.size enemy = $game_troop.members[i] x = i % @column_max * (JCONFIG::SPACING_X + @spacing) if JCONFIG::SHOW_STATES y = (i / @column_max * (JCONFIG::SPACING_Y + WLH) ) else y = (i / @column_max * ((JCONFIG::SPACING_Y - 34) + WLH) ) end #======================================== # If Using Game_Switch #========================================= if JCONFIG::USE_GSWITCH and $game_switches[JCONFIGENEMY_WINDOW_SWITCH] draw_enemy_hp(enemy, x, y+20, 90) draw_enemy_name(enemy, x, y) if JCONFIG::SHOW_STATES draw_enemy_state(enemy, x, y +44) end end #========================================== # If Using Script Switch #========================================== if JCONFIG::USE_GSWITCH == false if $game_system.enemy_hp == true # Start check if Window Flag is On draw_enemy_hp(enemy, x, y+20, 90) draw_enemy_name(enemy, x, y) if JCONFIG::SHOW_STATES draw_enemy_state(enemy, x, y +44) end # END CHECK end #End flag check end # END game switche check end end #End Refresh
end #End of Window_EnemyHP Class
#====================================# # Scene_Battle # # New methods that were aliased: # #====================================# class Scene_Battle alias jens009_create_info_viewport create_info_viewport alias jens009_dispose_info_viewport dispose_info_viewport alias jens009_start_item_selection start_item_selection alias jens009_start_skill_selection start_skill_selection alias jens009_end_item_selection end_item_selection alias jens009_end_skill_selection end_skill_selection alias jens009_process_victory process_victory
alias jens009_update_info_viewport update_info_viewport
alias jens009_start_party_command_selection start_party_command_selection alias jens009_execute_action execute_action alias jens009_turn_end turn_end
# Create Information def create_info_viewport jens009_create_info_viewport @enemy_window = Window_EnemyHP.new end # Dispose Information def dispose_info_viewport jens009_dispose_info_viewport @enemy_window.dispose end
#============================================= # Always Update Window #============================================ def update_info_viewport if JCONFIG::ALWAYS_UPDATE == true @enemy_window.refresh jens009_update_info_viewport else jens009_update_info_viewport end end
#============================================= # Update Only When Turn starts and ends #============================================ def start_party_command_selection if JCONFIG::ALWAYS_UPDATE == true jens009_start_party_command_selection else @enemy_window.visible = true @enemy_window.refresh jens009_start_party_command_selection end end
def execute_action if JCONFIG::ALWAYS_UPDATE == true jens009_execute_action else @enemy_window.visible = false jens009_execute_action end end
def turn_end if JCONFIG::ALWAYS_UPDATE == true jens009_turn_end else @enemy_window.refresh jens009_turn_end end end #============================================ # END OF UPDATE CHECK #===========================================
#===================================== # Remove Window During Selection def start_item_selection @enemy_window.visible = false jens009_start_item_selection end # Remove Window During Selection def start_skill_selection @enemy_window.visible = false jens009_start_skill_selection end # True Visibility after slection def end_item_selection jens009_end_item_selection @enemy_window.visible = true end # True Visibility after selection def end_skill_selection jens009_end_skill_selection @enemy_window.visible = true end # Refresh When Victorious def process_victory @enemy_window.refresh jens009_process_victory end
#=====================================# # End of Scene_Battle Method Edits # #=====================================#
end
Menu Bars - Syvkal - Spoiler:
#============================================================================== # ** Syvkal's Menu Bars #------------------------------------------------------------------------------ # by Syvkal # Version 4.1 # 05-20-08 #============================================================================== # # - INTRODUCTION - # # This system implements a series of Plug 'N' Play Menu Bars # The Bars were inspired CogWheel, but all coding was done by me # ( Except Wortana's 'gradient_fill_rect' Bug Fix ) # #------------------------------------------------------------------------------ # # - USAGE - # # This system will work as soon as you put it in the Script Editor # You can edit the script from the Configuration System # However, it has also been made so you can easily make your own bars # # --------------------------------------------------- # # To draw a bar use: # draw_custom_gauge # # Followed by: # (value, max, x, y, color1, color2, width, height, slanted, up) # # value : bar calculation value # max : bar max value # x : draw spot x-coordinate # y : draw spot y-coordinate # color1 : bar gradient color 1 EITHER Color.new(r,g,b,a) # color2 : bar gradient color 2 OR Numeric Text color # width : Width # height : Height # slanted : draw slanted bar # vertical : draw bar vertically # # --------------------------------------------------- # # To draw a ring use: # draw_custom_ring # # Followed by: # (value, max, x, y, color1, color2, radius, height, amount, start, reverse)
# value : bar calculation value # max : bar max value # x : draw spot x-coordinate # y : draw spot y-coordinate # color1 : bar gradient color 1 # color2 : bar gradient color 2 # radius : distance from center point # height : Height # amount : size of ring - default 360� # start : start position - max 360� # reverse : draw ring in reverse # #------------------------------------------------------------------------------ # # - SCRIPTERS USAGE - # # I have added a few extra features to allow scripters to easily use the bars # Seeing as the bars can be drawn Normal, Vertical or in a Ring I've added a # feature to allow you to turn off the bars when drawing an actors HP, MP etc. # When drawing an actors HP etc. simply add 'true' on the end. Like this: # draw_actor_hp(actor, x, y, width, true) # # I've also separated the different bars so they're easier to draw # # draw_actor_hp_gauge(actor, x, y, width) Will draw a normal bar # draw_actor_hp_gauge(actor, x, y, width, true) Will draw a vertical bar # draw_actor_hp_ring(actor, x, y, radius, height, amount, start) # Will draw a ring # #------------------------------------------------------------------------------ # # - SCRIPT CALLS - # # There are no script calls necessary to enable this script # However, you can change any of the constants in game if you wish # This can be done by the Script Call Funtion in an event # # For example: # COG::HPMPSLANT = true # # Will make the HP and MP bars Slant # And setting it to false will turn them back to normal # #============================================================================== module BAR #===================================================# # ** C O N F I G U R A T I O N S Y S T E M ** # #===================================================# # Parameter Max Value P_MAX = 500 # The system uses a 'rate' feature. It is set when drawing a bar # The 'rate' is how much the bar is filled as a decimal (max : 1) # This is used to enable color change as the bar decreased in amount $rate = 0 # Don't touch this # The system uses a series of CONSTANTS that can be edited here # They control the basic gauge colors and the manner the gauge is filled:
# Gauge Border Colors COLOR1 = Color.new(0, 0, 0, 192) # Outer Border COLOR2 = Color.new(255, 255, 192, 192) # Inner Border # Gauge Empty filler COLOR3 = Color.new(0, 0, 0, 12) # Half of Inner Shading COLOR4 = Color.new(64, 0, 0, 92) # Half of Inner Shading # Gauge Settings EMPTY = false # EMPTY gauge (false - Side : true - Vertical) FILLER = false # FILLER gauge (false - Side : true - Vertical) # Border Settings - Applies only to standard bars CORNER = false # Remove corners? # The Parameter colors can be text colors taken from the windowskin or # colors like above. You don't need set your own 'rate' functions # it does it for you # Parameter Gauge Color1 ATKCOLOR1 = 2 DEFCOLOR1 = 17 SPICOLOR1 = 30 AGICOLOR1 = 12 # Parameter Gauge Color2 ATKCOLOR2 = 20 DEFCOLOR2 = 21 SPICOLOR2 = 31 AGICOLOR2 = 4 # The system has been made to use a series of SWITCHES that can be edited here # They control whether certain Bars are Normal or Slanted:
HPMPSLANT = true # Slanted HP and MP Bars? EXPSLANT = true # Slanted Exp Bars? PARSLANT = true # Slanted Parameter Bars? DVVLBSLANT = true # Slanted Limit Break Bars? #===================================================# # ** C O M P L E X C O N F I G U R A T I O N ** # #===================================================# # The system allows you to edit the main gauge colous from here # Functions had to be used instead of Constants so the $rate feature still works # Edit only if you know what you're doing:
def self::hpcolor1 # HP Guage Color1 return Color.new(80 - 24 * $rate, 80 * $rate, 14 * $rate, 192) end def self::hpcolor2 # HP Guage Color2 return Color.new(240 - 72 * $rate, 240 * $rate, 62 * $rate, 192) end def self::mpcolor1 # MP Guage Color1 return Color.new(14 * $rate, 80 - 24 * $rate, 80 * $rate, 192) end def self::mpcolor2 # MP Guage Color2 return Color.new(62 * $rate, 240 - 72 * $rate, 240 * $rate, 192) end def self::expcolor1 # EXP Guage Color1 Color.new(80 * $rate, 80 - 80 * $rate ** 2, 80 - 80 * $rate, 192) end def self::expcolor2 # EXP Guage Color2 Color.new(240 * $rate, 240 - 240 * $rate ** 2, 240 - 240 * $rate, 192) end #===================================================# # ** E N D C O N F I G U R A T I O N ** # #===================================================# end #============================================================================== # ** Game_Actor #------------------------------------------------------------------------------ # Added EXP and Next Level EXP for numeric for calculations #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Get EXP - numeric for calculations #-------------------------------------------------------------------------- def now_exp return @exp - @exp_list[@level] end #-------------------------------------------------------------------------- # * Get Next Level EXP - numeric for calculations #-------------------------------------------------------------------------- def next_exp return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0 end end #============================================================================== # ** Window_Base #------------------------------------------------------------------------------ # Added the 'Draw' functions for each gauge #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * Includes The BAR Module #-------------------------------------------------------------------------- include BAR #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias draw_actor_parameter_original draw_actor_parameter #-------------------------------------------------------------------------- # * Draw HP gauge # vertical : draw bar vertically #-------------------------------------------------------------------------- def draw_actor_hp_gauge(actor, x, y, width = 120, vertical = false) $rate = actor.hp.to_f / actor.maxhp gw = width * actor.hp / actor.maxhp w = vertical ? 6 : width; h = vertical ? width : 6 HPMPSLANT ? self.contents.cogwheel_fill_slant(x, y + WLH - 8, gw, w, h, BAR::hpcolor1, BAR::hpcolor2, vertical) : self.contents.cogwheel_fill_rect(x, y + WLH - 8, gw, w, h, BAR::hpcolor1, BAR::hpcolor2, vertical) end #-------------------------------------------------------------------------- # * Draw MP gauge # vertical : draw bar vertically #-------------------------------------------------------------------------- def draw_actor_mp_gauge(actor, x, y, width = 120, vertical = false) $rate = actor.mp.to_f / [actor.maxmp, 1].max gw = width * actor.mp / [actor.maxmp, 1].max w = vertical ? 6 : width; h = vertical ? width : 6 HPMPSLANT ? self.contents.cogwheel_fill_slant(x, y + WLH - 8, gw, w, h, BAR::mpcolor1, BAR::mpcolor2, vertical) : self.contents.cogwheel_fill_rect(x, y + WLH - 8, gw, w, h, BAR::mpcolor1, BAR::mpcolor2, vertical) end #-------------------------------------------------------------------------- # * Draw Exp gauge # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # width : Width # vertical : draw bar vertically #-------------------------------------------------------------------------- def draw_actor_exp_gauge(actor, x, y, width = 170, vertical = false) $rate = actor.now_exp.to_f / [actor.next_exp, 1].max gw = width * actor.now_exp / [actor.next_exp, 1].max w = vertical ? 6 : width; h = vertical ? width : 6 EXPSLANT ? self.contents.cogwheel_fill_slant(x, y + WLH - 8, gw, w, h, BAR::expcolor1, BAR::expcolor2, vertical) : self.contents.cogwheel_fill_rect(x, y + WLH - 8, gw, w, h, BAR::expcolor1, BAR::expcolor2, vertical) end #-------------------------------------------------------------------------- # * Draw Parameters # hide_bar : draw Parameters without gauge #-------------------------------------------------------------------------- def draw_actor_parameter(actor, x, y, type, hide_bar = false) hide_bar ? nil : draw_actor_parameter_gauge(actor, x, y, type) draw_actor_parameter_original(actor, x, y, type) end #-------------------------------------------------------------------------- # * Draw Parameters gauge # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # type : Type of parameters (0-3) # width : Width # vertical : draw bar vertically #-------------------------------------------------------------------------- def draw_actor_parameter_gauge(actor, x, y, type, width = 160, vertical = false) case type when 0 e1 = actor.atk gc1 = ATKCOLOR1.is_a?(Integer) ? text_color(ATKCOLOR1) : ATKCOLOR1 gc2 = ATKCOLOR2.is_a?(Integer) ? text_color(ATKCOLOR2) : ATKCOLOR2 when 1 e1 = actor.def gc1 = DEFCOLOR1.is_a?(Integer) ? text_color(DEFCOLOR1) : DEFCOLOR1 gc2 = DEFCOLOR2.is_a?(Integer) ? text_color(DEFCOLOR2) : DEFCOLOR2 when 2 e1 = actor.spi gc1 = SPICOLOR1.is_a?(Integer) ? text_color(SPICOLOR1) : SPICOLOR1 gc2 = SPICOLOR2.is_a?(Integer) ? text_color(SPICOLOR2) : SPICOLOR2 when 3 e1 = actor.agi gc1 = AGICOLOR1.is_a?(Integer) ? text_color(AGICOLOR1) : AGICOLOR1 gc2 = AGICOLOR2.is_a?(Integer) ? text_color(AGICOLOR2) : AGICOLOR2 end e2 = P_MAX rate = [e1.to_f / e2.to_f, 1].min gw = width * [e1.to_f / e2.to_f, 1].min r = gc2.red * rate g = (gc2.green - 72) * rate b = gc2.blue * rate a = gc2.alpha w = vertical ? 6 : width; h = vertical ? width : 6 PARSLANT ? self.contents.cogwheel_fill_slant(x, y + WLH - 8, gw, w, h, gc1, Color.new(r, g, b, a), vertical) : self.contents.cogwheel_fill_rect(x, y + WLH - 8, gw, w, h, gc1, Color.new(r, g, b, a), vertical) end #-------------------------------------------------------------------------- # * Draw Custom gauge # value : bar calculation value # max : bar max value # x : draw spot x-coordinate # y : draw spot y-coordinate # color1 : bar gradient color 1 # color2 : bar gradient color 2 # width : Width # height : Height # slanted : draw slanted bar # vertical : draw bar vertically #-------------------------------------------------------------------------- def draw_custom_gauge(value, max, x, y, color1, color2, width=120, height=6, slanted = false, vertical = false) rate = [value.to_f / max.to_f, 1].min gw = width * [value.to_f / max.to_f, 1].min gc1 = color1.is_a?(Integer) ? text_color(color1) : color1 gc2 = color2.is_a?(Integer) ? text_color(color2) : color2 r = gc2.red * rate g = (gc2.green - 72) * rate b = gc2.blue * rate a = gc2.alpha w = vertical ? 6 : width; h = vertical ? width : 6 slanted ? self.contents.cogwheel_fill_slant(x, y + WLH - 8, gw, w, h, gc1, Color.new(r, g, b, a), vertical) : self.contents.cogwheel_fill_rect(x, y + WLH - 8, gw, w, h, gc1, Color.new(r, g, b, a), vertical) end #-------------------------------------------------------------------------- # * Draw Limit Break gauge # vertical : draw bar vertically #-------------------------------------------------------------------------- def draw_actor_lb(actor, x, y, width = 120, vertical = false) return unless actor.lb_gauge_visible? st1 = lb_gauge_normal_start_color; st2 = lb_gauge_max_start_color ed1 = lb_gauge_normal_end_color; ed2 = lb_gauge_max_end_color rate = actor.limitbreak.to_f / [LB_MAX, 1].max gw = width * actor.limitbreak / LB_MAX gc1 = (gw == width ? st2 : Color.new(st1.red,st1.green-(10*rate),st1.blue-(10*rate), 192)) gc2 = (gw == width ? ed2 : Color.new(ed1.red,ed1.green-(10*rate),ed1.blue-(10*rate), 192)) w = vertical ? 6 : width; h = vertical ? width : 6 DVVLBSLANT ? self.contents.cogwheel_fill_slant(x, y + WLH - 8, gw, w, h, gc1, gc2, vertical) : self.contents.cogwheel_fill_rect(x, y + WLH - 8, gw, w, h, gc1, gc2, vertical) end #-------------------------------------------------------------------------- # * Draw HP gauge ring # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # radius : distance from center point # height : Height # amount : size of ring - default 360� # start : start position - max 360� # reverse : draw ring in reverse #-------------------------------------------------------------------------- def draw_actor_hp_ring(actor, x, y, radius, height, amount = 360, start = 0, reverse = false) $rate = actor.hp.to_f / actor.maxhp gw = amount * actor.hp / actor.maxhp self.contents.cogwheel_fill_ring(x, y, gw, radius, height, BAR::hpcolor1, BAR::hpcolor2, amount, start, reverse) end #-------------------------------------------------------------------------- # * Draw MP gauge ring # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # radius : distance from center point # height : Height # amount : size of ring - default 360� # start : start position - max 360� # reverse : draw ring in reverse #-------------------------------------------------------------------------- def draw_actor_mp_ring(actor, x, y, radius, height, amount = 360, start = 0, reverse = false) $rate = actor.mp.to_f / [actor.maxmp, 1].max gw = amount * actor.mp / [actor.maxmp, 1].max self.contents.cogwheel_fill_ring(x, y, gw, radius, height, BAR::mpcolor1, BAR::mpcolor2, amount, start, reverse) end #-------------------------------------------------------------------------- # * Draw Exp gauge ring # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # radius : distance from center point # height : Height # amount : size of ring - default 360� # start : start position - max 360� # reverse : draw ring in reverse #-------------------------------------------------------------------------- def draw_actor_exp_ring(actor, x, y, radius, height, amount = 360, start = 0, reverse = false) $rate = actor.now_exp.to_f / [actor.next_exp, 1].max gw = amount * actor.now_exp / [actor.next_exp, 1].max self.contents.cogwheel_fill_ring(x, y, gw, radius, height, BAR::expcolor1, BAR::expcolor2, amount, start, reverse) end #-------------------------------------------------------------------------- # * Draw Custom gauge ring # value : bar calculation value # max : bar max value # x : draw spot x-coordinate # y : draw spot y-coordinate # color1 : bar gradient color 1 # color2 : bar gradient color 2 # radius : distance from center point # height : Height # amount : size of ring - default 360� # start : start position - max 360� # reverse : draw ring in reverse #-------------------------------------------------------------------------- def draw_custom_ring(value, max, x, y, color1, color2, radius, height, amount = 360, start = 0, reverse = false) rate = [value.to_f / max.to_f, 1].min gw = amount * [value.to_f / max.to_f, 1].min gc1 = color1.is_a?(Integer) ? text_color(color1) : color1 gc2 = color2.is_a?(Integer) ? text_color(color2) : color2 r = gc2.red * rate g = (gc2.green - 72) * rate b = gc2.blue * rate a = gc2.alpha self.contents.cogwheel_fill_ring(x, y, gw, radius, height, gc1, Color.new(r, g, b, a), amount, start, reverse) end #-------------------------------------------------------------------------- # * Draw HP # hide_bar : draw Parameters without gauge #-------------------------------------------------------------------------- def draw_actor_hp(actor, x, y, width = 120, hide_bar = false) hide_bar ? nil : draw_actor_hp_gauge(actor, x, y, width) self.contents.font.color = system_color self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a) self.contents.font.color = hp_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.hp, 2) else self.contents.draw_text(xr - 99, y, 44, WLH, actor.hp, 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.maxhp, 2) end end #-------------------------------------------------------------------------- # * Draw MP # hide_bar : draw Parameters without gauge #-------------------------------------------------------------------------- def draw_actor_mp(actor, x, y, width = 120, hide_bar = false) hide_bar ? nil : draw_actor_mp_gauge(actor, x, y, width) self.contents.font.color = system_color self.contents.draw_text(x, y, 30, WLH, Vocab::mp_a) self.contents.font.color = mp_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.mp, 2) else self.contents.draw_text(xr - 99, y, 44, WLH, actor.mp, 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.maxmp, 2) end end #-------------------------------------------------------------------------- # * Draw Exp # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # width : Width # hide_bar : draw Parameters without gauge #-------------------------------------------------------------------------- def draw_actor_exp(actor, x, y, width = 170, hide_bar = false) hide_bar ? nil : draw_actor_exp_gauge(actor, x, y, width) self.contents.font.color = system_color self.contents.draw_text(x, y, 45, WLH, "Exp") self.contents.font.color = normal_color xr = x + width if width < 170 self.contents.draw_text(xr - 60, y, 60, WLH, actor.next_rest_exp_s, 2) else self.contents.draw_text(xr - 131, y, 60, WLH, actor.exp_s, 2) self.contents.draw_text(xr - 71, y, 11, WLH, "/", 2) self.contents.draw_text(xr - 60, y, 60, WLH, actor.next_exp_s, 2) end end end #============================================================================== # ** Window_SkillStatus #------------------------------------------------------------------------------ # Edited so te Bars don't cut off #============================================================================== class Window_SkillStatus < Window_Base #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear draw_actor_name(@actor, 4, 0) draw_actor_level(@actor, 140, 0) draw_actor_hp(@actor, 238, 0) draw_actor_mp(@actor, 390, 0) end end #============================================================================== # ** Bitmap #------------------------------------------------------------------------------ # Added gauge Calculations #============================================================================== class Bitmap #-------------------------------------------------------------------------- # * Includes The BAR Module #-------------------------------------------------------------------------- include BAR #-------------------------------------------------------------------------- # * Wortana's 'gradient_fill_rect' Bug Fix #-------------------------------------------------------------------------- alias gradient_original gradient_fill_rect unless method_defined?('gradient_original') def gradient_fill_rect(*args) args.pop if !args.last if args.size == 4 || 7 and !args.last gradient_original(*args) end #-------------------------------------------------------------------------- # * CogWheel Style Fill of Rect #-------------------------------------------------------------------------- def cogwheel_fill_rect(x, y, gw, width, height, gc1, gc2, up = false) rect_border(x-2, y-2, width+4, height+4, COLOR1, CORNER) rect_border(x-1, y-1, width+2, height+2, COLOR2, CORNER) gradient_fill_rect(x, y, width, height, COLOR3, COLOR4, EMPTY) gradient_fill_rect(x, y, up ? width : gw, up ? gw : height, gc1, gc2, FILLER) end #-------------------------------------------------------------------------- # * CogWheel Style Fill of Slanted Rect #-------------------------------------------------------------------------- def cogwheel_fill_slant(x, y, gw, width, height, gc1, gc2, up = false) bgx = up ? 2 : 4; bdx = up ? 1 : 2 bgy = up ? 4 : 2; bdy = up ? 2 : 1 bgw = up ? 4 : 8; bdw = up ? 2 : 4 bgh = up ? 8 : 4; bdh = up ? 4 : 2 slant_border(x-bgx, y-bgy, width+bgw, height+bgh, COLOR1, up) slant_border(x-bdx, y-bdy, width+bdw, height+bdh, COLOR2, up) gradient_fill_slant(x, y, width, height, COLOR3, COLOR4, EMPTY, up) gradient_fill_slant(x, y,up ? width : gw,up ? gw : height, gc1, gc2, FILLER, up) end #-------------------------------------------------------------------------- # * CogWheel Style Fill of Ring #-------------------------------------------------------------------------- def cogwheel_fill_ring(x, y, gw, radius, height, gc1, gc2, amount = 360, start = 0, reverse = false) fill_ring(x-2, y-2, radius, height+4, COLOR1, amount, start, reverse) fill_ring(x-1, y-1, radius, height+2, COLOR2, amount, start, reverse) if amount >= 220 gradient_fill_ring(x, y, radius, height, COLOR3, COLOR4, [amount/2, 180].min, start, reverse) gradient_fill_ring(x, y, radius, height, COLOR4, COLOR3, [amount/2, 180].min, start+(amount/2), reverse) else gradient_fill_ring(x, y, radius, height, COLOR3, COLOR4, [amount, 360].min, start, reverse) end if gw >= 220 gw1 = amount/2; gw2 = gw / 2 gradient_fill_ring(x, y, radius, height, gc1, gc2, gw1, start, reverse) gradient_fill_ring(x, y, radius, height, gc2, gc1, gw2, start +(amount/2), reverse) else gradient_fill_ring(x, y, radius, height, gc1, gc2, gw, start, reverse) end end #-------------------------------------------------------------------------- # * Fill of Border #-------------------------------------------------------------------------- def rect_border(x, y, width, height, gc1, edge = false) fill_rect(x + (edge ? 1 : 0), y, width - (edge ? 2 : 0), 2, gc1) fill_rect(x + (edge ? 1 : 0), y+(height-2), width - (edge ? 2 : 0), 2, gc1) fill_rect(x, y+1, 2, height-2, gc1) fill_rect(x +(width-2), y+1, 2, height-2, gc1) end #-------------------------------------------------------------------------- # * Gradient Fill of Slanted Rect #-------------------------------------------------------------------------- def gradient_fill_slant(x, y, width, height, gc1, gc2, vertical = false, up = false) if up for i in 1..width if vertical gradient_fill_rect(x + width - i, y+i+1, 1, (height-2)-width, gc1, gc2, vertical) else color = get_gradient_pixel(gc1, gc2, width, i) fill_rect(x + width - i, y+i+1, 1, (height-2)-width, color) end end else for i in 1..height if vertical color = get_gradient_pixel(gc1, gc2, height, i) fill_rect(x+i+1, y + height - i, (width-2)-height, 1, color) else gradient_fill_rect(x+i+1, y + height - i, (width-2)-height, 1, gc1, gc2) end end end end #-------------------------------------------------------------------------- # * Fill of Slanted Rect #-------------------------------------------------------------------------- def fill_slant(x, y, width, height, gc1, up = false) oh = up ? width : height for i in 1..oh if up fill_rect(x + width -i, y+i, 1, height-width, gc1) else fill_rect(x+i, y + height -i, width-height, 1, gc1) end end end #-------------------------------------------------------------------------- # * Fill of Slanted Border #-------------------------------------------------------------------------- def slant_border(x, y, width, height, gc1, up = false) oh = up ? width : height for i in 1..oh-2 if up fill_rect(x + width-1 -i, y+((height-1)-width)+i, 1, 2, gc1) fill_rect(x + width-1 -i, y+1+i, 1, 2, gc1) fill_rect(x + width-1, y+1, 1, height-width, gc1) fill_rect(x, y+width, 1, height-width, gc1) else fill_rect(x+((width-1)-height)+i, y + height-1 -i, 2, 1, gc1) fill_rect(x+1+i, y + height-1 -i, 2, 1, gc1) fill_rect(x+1, y + height -1, width-height, 1, gc1) fill_rect(x+height, y, width-height, 1, gc1) end end end #-------------------------------------------------------------------------- # * Fill of Ring #-------------------------------------------------------------------------- def fill_ring(ox, oy, radius, height, gc1, amount = 360, start = 0, reverse = false) d = 2.0 * Math::PI / 360 for i in 1..[amount, 360].min s = i + start if reverse x = ox + ( radius * Math.sin( d * s ) ).to_i y = oy - ( radius * Math.cos( d * s ) ).to_i else x = ox - ( radius * Math.cos( d * s ) ).to_i y = oy + ( radius * Math.sin( d * s ) ).to_i end fill_rect(x, y, height, height, gc1) end end #-------------------------------------------------------------------------- # * Gradient Fill of Ring #-------------------------------------------------------------------------- def gradient_fill_ring(ox, oy, radius, height, gc1, gc2, amount = 360, start = 0, reverse = false) d = 2.0 * Math::PI / 360 for i in 1..amount s = i + start if reverse x = ox + ( radius * Math.sin( d * s ) ).to_i y = oy - ( radius * Math.cos( d * s ) ).to_i else x = ox - ( radius * Math.cos( d * s ) ).to_i y = oy + ( radius * Math.sin( d * s ) ).to_i end color = get_gradient_pixel(gc1, gc2, amount, i) fill_rect(x, y, height, height, color) end end #-------------------------------------------------------------------------- # * Get Pixel Color for Gradient Fill #-------------------------------------------------------------------------- def get_gradient_pixel(gc1, gc2, amount, i) red = gc1.red * (amount - i) / amount + gc2.red * i / amount green = gc1.green * (amount - i) / amount + gc2.green * i / amount blue = gc1.blue * (amount - i) / amount + gc2.blue * i / amount alpha = gc1.alpha * (amount - i) / amount + gc2.alpha * i / amount return Color.new(red, green, blue, alpha) end end
...So that the enemy HP bars are the menu bars. Any help with this would be greatly appreciated! |
| | | Leonheart Active Member
Posts : 60 Points : 102 Join date : 2011-10-22
| Subject: Re: Enemy HP Bars + Menu Bars[SOLVED] Wed Oct 26, 2011 5:43 pm | |
| I'm pretty sure this is what the doctor ordered: - Code:
-
#================================================================= # Jens009's Enemy Hp Window # Syvkal's Menu Bars Fix by Leonheart # Version 1.2 # Log: July 29, 2008 # - Version 1.0: Show Enemy Hp Bars # August 5, 2008 # - Version 1.1: Enable On/Off feature Using a $game_system instance # : Enable On/Off feature using an in-game switch # August 8, 2008 # - Version 1.2: Add New Options # : Change Default Window Size # : Add Enemy States # Rant: [Code Geass ftw] # C.C. Still loves Pizza <3 # Be nice to her Lulu. # Oh.. I haven't done my summer homework yet. T_T # # Credits to: # Jens009 (Translation and Modification) # Puppeto4 (Alias tutorial and for bugging me to create a script) # just kidding puppeto =p # Author's Note: # 9 Methods were aliased. Refer to lines 110-118 # 4 Were not necessary but was needed so that Enemy Window # was not present during item/skill selections. # # # Modification: # If you want to modify the bars, look @lines 42-72.You can see that # I simply took draw_actor_hp and turned it into draw_enemy_hp # This means you can use any bars you desire so long as you define # it correctly. =] # #----------------------------------------------------------------------------- # CONFIG: # # I. Turning the Window On of Off during In-Game: # # There are two kinds of switches you can use depending # upon your liking. I made it so that you either have a # game switch or a script switch that handles the enemy window flag. # # If you want to use a script switch # -set USE_GSWITCH to false # -Use a call script, $game_system.enemy_window = true/false # True = Window Shows up, False = No Enemy Window # # If you want to use a game switch # -Set USE_GSWITCH to true # -Decide what Game Switch ID you want to use # in ENEMY_WINDOW_SWITCH # -Use that game switch to check for showing the Enemy Hp Window # True = Window Shows up, False = No enemy window. # # # BY DEFAULT, USE_GSWITCH is false. # So you are using a Script Switch # # II. ALWAYS_UPDATE # can either be set to true or false. # if true, the enemy window always update for every action # but the battle system will have more lag. # if false, the enemy window only updates at the end of each turn # and everytime the battle selection begins. # Setting it to false will lower compatibility but should still work # for most systems regardless. # # III. Spacing X and Y change # SPACING_X = Changing this number will change the X spacing of the windows # SPACING_Y = Changing this number will change the Y spacing of the windows # IV. COLUMNS # COLUMNS = Draw enemy information by creating 4 columns. # V. SHOW_STATES # if set to true, enemies state will be shown. #====================================================================== module JCONFIG USE_GSWITCH = false # Setting it to false will use the script # switch $game_system.enemy_hp instead. # Setting it to true will use an in-game switch # using the switch ID below. ENEMY_WINDOW_SWITCH = 1 # Switch ID that will be used to check # Enemy Window is only ON, when Switch is ON ALWAYS_UPDATE = true # True = window always updates # False = window updates at end of turn SPACING_X = 90 # X spacing per enemy info SPACING_Y = 44 # Y spacing per enemy info COLUMNS = 4 # By default, Do 4 Columns. SHOW_STATES = true # true will show enemies states # false will not show states
end
#====================================================================== # Start Game_System Edit #====================================================================== class Game_System attr_accessor :enemy_hp # Show enemy HP on battle
alias jens009_system_initialize_enemy_hp initialize #============================================= # Initialize Values #============================================= def initialize # Initialize enemy hp window to true @enemy_hp = true # Call previous methods jens009_system_initialize_enemy_hp end
end # END Game system Edit
class Window_Base #==================================== # Define Enemy Name #==================================== def draw_enemy_name(enemy, x, y) self.contents.font.color = normal_color self.contents.draw_text (x, y, 120, 32, enemy.name) end
#========================== # Define Enemy State #======================== def draw_enemy_state(enemy, x, y) count = 0 for state in enemy.states draw_icon(state.icon_index, x + 24 * count, y) count += 1 break if (24 * count > width - 24) end end #-------------------------------------------------------------------------- # * Draw Enemy HP # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # width : Width #-------------------------------------------------------------------------- def draw_enemy_hp(enemy, x, y, width = 120) draw_enemy_hp_gauge(enemy, x, y, width) self.contents.font.color = system_color self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a) last_font_size = self.contents.font.size xr = x + width if width < 120 self.contents.draw_text(xr - 44, y, 44, WLH, enemy.hp, 2) else self.contents.draw_text(xr - 99, y, 44, WLH, enemy.hp, 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, enemy.maxhp, 2) end end #-------------------------------------------------------------------------- # * Draw HP gauge # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # width : Width #-------------------------------------------------------------------------- def draw_enemy_hp_gauge(enemy, x, y, width = 120, vertical = false) $rate = enemy.hp.to_f / enemy.maxhp gw = width * enemy.hp / enemy.maxhp w = vertical ? 6 : width; h = vertical ? width : 6 HPMPSLANT ? self.contents.cogwheel_fill_slant(x, y + WLH - 8, gw, w, h, BAR::hpcolor1, BAR::hpcolor2, vertical) : self.contents.cogwheel_fill_rect(x, y + WLH - 8, gw, w, h, BAR::hpcolor1, BAR::hpcolor2, vertical) end end
#=====================================# # Window_EnemyHP # # Class handles window for Enemy's HP # #=====================================# class Window_EnemyHP < Window_Selectable def initialize super ( 0, 0, 545, 300) self.contents = Bitmap.new(width - 32, height - 32) self.opacity = 0 @column_max = JCONFIG::COLUMNS refresh end
def refresh self.contents.clear for i in 0...$game_troop.members.size enemy = $game_troop.members[i] x = i % @column_max * (JCONFIG::SPACING_X + @spacing) if JCONFIG::SHOW_STATES y = (i / @column_max * (JCONFIG::SPACING_Y + WLH) ) else y = (i / @column_max * ((JCONFIG::SPACING_Y - 34) + WLH) ) end
#======================================== # If Using Game_Switch #========================================= if JCONFIG::USE_GSWITCH and $game_switches[JCONFIG::ENEMY_WINDOW_SWITCH] draw_enemy_hp(enemy, x, y+20, 90) draw_enemy_name(enemy, x, y) if JCONFIG::SHOW_STATES draw_enemy_state(enemy, x, y +44) end end #========================================== # If Using Script Switch #========================================== if JCONFIG::USE_GSWITCH == false if $game_system.enemy_hp == true # Start check if Window Flag is On draw_enemy_hp(enemy, x, y+20, 90) draw_enemy_name(enemy, x, y) if JCONFIG::SHOW_STATES draw_enemy_state(enemy, x, y +44) end # END CHECK end #End flag check end # END game switche check
end end #End Refresh
end #End of Window_EnemyHP Class
#====================================# # Scene_Battle # # New methods that were aliased: # #====================================# class Scene_Battle
alias jens009_create_info_viewport create_info_viewport alias jens009_dispose_info_viewport dispose_info_viewport alias jens009_start_item_selection start_item_selection alias jens009_start_skill_selection start_skill_selection alias jens009_end_item_selection end_item_selection alias jens009_end_skill_selection end_skill_selection alias jens009_process_victory process_victory
alias jens009_update_info_viewport update_info_viewport
alias jens009_start_party_command_selection start_party_command_selection alias jens009_execute_action execute_action alias jens009_turn_end turn_end
# Create Information def create_info_viewport jens009_create_info_viewport @enemy_window = Window_EnemyHP.new end # Dispose Information def dispose_info_viewport jens009_dispose_info_viewport @enemy_window.dispose end
#============================================= # Always Update Window #============================================ def update_info_viewport if JCONFIG::ALWAYS_UPDATE == true @enemy_window.refresh jens009_update_info_viewport else jens009_update_info_viewport end end
#============================================= # Update Only When Turn starts and ends #============================================ def start_party_command_selection if JCONFIG::ALWAYS_UPDATE == true jens009_start_party_command_selection else @enemy_window.visible = true @enemy_window.refresh jens009_start_party_command_selection end end
def execute_action if JCONFIG::ALWAYS_UPDATE == true jens009_execute_action else @enemy_window.visible = false jens009_execute_action end end
def turn_end if JCONFIG::ALWAYS_UPDATE == true jens009_turn_end else @enemy_window.refresh jens009_turn_end end end #============================================ # END OF UPDATE CHECK #===========================================
#===================================== # Remove Window During Selection def start_item_selection @enemy_window.visible = false jens009_start_item_selection end # Remove Window During Selection def start_skill_selection @enemy_window.visible = false jens009_start_skill_selection end # True Visibility after slection def end_item_selection jens009_end_item_selection @enemy_window.visible = true end # True Visibility after selection def end_skill_selection jens009_end_skill_selection @enemy_window.visible = true end # Refresh When Victorious def process_victory @enemy_window.refresh jens009_process_victory end
#=====================================# # End of Scene_Battle Method Edits # #=====================================#
end
Replace your Enemy HP script with this and it should work. No credit needed, I only edited the Draw_Enemy_HP method to draw the correct gauge. It should have no compatibility issues |
| | | Verm Active Member
Posts : 72 Points : 112 Join date : 2011-10-22 Location : United States
| Subject: Re: Enemy HP Bars + Menu Bars[SOLVED] Wed Oct 26, 2011 11:28 pm | |
| Awesome! Thank you very much. |
| | | Leonheart Active Member
Posts : 60 Points : 102 Join date : 2011-10-22
| Subject: Re: Enemy HP Bars + Menu Bars[SOLVED] Thu Oct 27, 2011 3:26 pm | |
| |
| | | luiishu535 Owner
Posts : 254 Points : 372 Join date : 2011-10-22 Age : 29 Location : Halmstad. Sweden
| Subject: Re: Enemy HP Bars + Menu Bars[SOLVED] Sat Oct 29, 2011 10:27 am | |
| This case looks kind of solved. Going to lock this topic. |
| | | Zachfoss Owner
Posts : 178 Points : 268 Join date : 2011-10-22 Age : 30 Location : Canada
| Subject: Re: Enemy HP Bars + Menu Bars[SOLVED] Sat Nov 12, 2011 3:56 pm | |
| Thank you luiishu535 for locking this topic! Less work for me xD |
| | | Sponsored content
| Subject: Re: Enemy HP Bars + Menu Bars[SOLVED] | |
| |
| | | | Enemy HP Bars + Menu Bars[SOLVED] | |
|
Similar topics | |
|
Page 1 of 1 | |
| Permissions in this forum: | You cannot reply to topics in this forum
| |
| |
| |