Introduction So I was chatting at the IRC when puppeto4 said something like "There are no new scripts." And before she left she said something like "Make new scripts!" I took the challenge and ta-da. Here you go! =D
So did you ever wanted to know your enemy's current HP during battle? Well, you can now! The script simply shows enemy's HP during Battle at the upper left corner. The best part? It's plug and play. No scripting needed. =]
Features - Plug And Play - Show Enemy's HP - Aliased methods to increaased compatibility. - Version 1.1: -Able to turn of Enemy Windows -Using a Game Switch or -Using a Script Switch - Version 1.2: - Show enemy States - Change X and Y spacing - Change amount of Columns - Option of having No Lag
Customization Will add in the future.
Compatibility Since I aliased most methods the compatibility on Custom Battle Systems should be high. If not, please report it to me.
Screenshot Everyone loves a good screenshot Version 1.2
Ehh that's when it's too clumped. But you can customize this because of the config section I added in the script.
With Woratana's Neo Gauge Script
DEMO It's plug and play remember. ;D If you Insist:
Installation Plug and play. How many times should I repeat myself? =p Instructions on how to activate/deactivate enemy HP window can be found inside the script.
#====================================================================== # 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[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 # #=====================================#
#====================================================================== # Jens009's Enemy Hp Window # Version 1.1 # 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 # 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. =] # #----------------------------------------------------------------------------- # 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 # # #====================================================================== 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 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
#-------------------------------------------------------------------------- # * 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, 160, 300) self.contents = Bitmap.new(width - 32, height - 32) self.opacity = 0 refresh end
def refresh self.contents.clear for i in 0...$game_troop.members.size enemy = $game_troop.members[i] x = 0 y = i * 30 #======================================== # 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) 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) 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_update update alias jens009_update_info_viewport update_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
# 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 #Update Window def update jens009_update @enemy_window.refresh end
# Update Window def update_info_viewport @enemy_window.update jens009_update_info_viewport end
# 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 # #=====================================#
#======================================================================# # Jens009's Enemy Hp Window # # Version 1.0 # # Log: July 29, 2008 # # - Version 1.0: Show Enemy Hp Bars # # Rant: [Code Geass ftw] # # C.C. Still loves Pizza <3 # # Be nice to her Lulu. # # # # Credits to: # # Jens009 (Translation and Modification from Noobitron) # # 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. =] # # Other than that, you can also modify Window_EnemyHP for # # coordinates # #======================================================================#
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
#-------------------------------------------------------------------------- # * 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, 160, 300) self.contents = Bitmap.new(width - 32, height - 32) self.opacity = 0 refresh end
def refresh self.contents.clear for i in 0...$game_troop.members.size enemy = $game_troop.members[i] x = 0 y = i * 30 draw_enemy_hp(enemy, x, y+20, 90) draw_enemy_name(enemy, x, y) 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_update update alias jens009_update_info_viewport update_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
# 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
#Update Window def update jens009_update @enemy_window.refresh end
# Update Window def update_info_viewport @enemy_window.update jens009_update_info_viewport end
# 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 # #=====================================#
class Window_Base < Window #============================================================= # NEO HP/MP GAUGE SETTING # # (+) positive number | (+,-) positive or negative number #============================================================= E_HPMP_GAUGE_HEIGHT = 6 # gauge height (+) (minumum: 6) # Strongly recommend to use HPMP_GAUGE_HEIGHT at least 8 # if you're using GAUGE_INSIDE_BORDER in Neo-Gauge E_HPMP_GAUHE_X_PLUS = 0 # Move gauge horizontally (+,-) E_HPMP_GAUGE_Y_PLUS = ((-1)*(E_HPMP_GAUGE_HEIGHT - 6)) # (+,-) # Change '((-1)*(HPMP_GAUGE_HEIGHT - 6))' to number to move gauge vertically #------------------------------------------------------------ # * Neo Gauge Back Color: Return back colors # Set Gauge back color here~ # #------------------------------------------------------------ def neo_gauge_back_color_e c1 = Color.new(0, 0, 0) # Black [Color1] c2 = Color.new(100, 100, 100) # Dark Gray [Color2] c3 = Color.new(200, 200, 200) # Light Gray [Color3] return c1, c2, c3 end #===================================================================
#-------------------------------------------------------------------------- # [Rewrite] * Draw HP gauge #-------------------------------------------------------------------------- def draw_enemy_hp_gauge(enemy, x, y, width = 120) gwidth = width * enemy.hp / enemy.maxhp cg = neo_gauge_back_color_e c1, c2, c3 = cg[0], cg[1], cg[2] draw_neo_gauge(x + E_HPMP_GAUHE_X_PLUS, y + WLH - 8 + E_HPMP_GAUGE_Y_PLUS, width, E_HPMP_GAUGE_HEIGHT, c1, c2, c3) c1 = Color.new(139,0,0) # Dark Red c2 = Color.new(255,0,0) # Pure Red c3 = Color.new(255,255,0) # Pure Yellow draw_neo_gauge(x, y + WLH - 8 + E_HPMP_GAUGE_Y_PLUS, gwidth, E_HPMP_GAUGE_HEIGHT, c1, c2, c3, false, false, width, 30) end end
FAQ Der's a 1337 bug I founded wat to do? Post it up here and tell me the following:
QUOTE
What made the bug occur? What happened before and after the bug occured? What do you think caused it? Did you fixed the bug? How?
I want to add this cool 1337 feature better than any system outz der.
Suggestions are always welcome. =] Post it up and Let's see what we can do about it.
Terms and Conditions This script is for non-commercial use only. Contact me regarding commercial use. (No, I don't want your money). This is an RRR script exclusive. It must not be posted under any other forums/site besides RRR Give credits where its due.
Other than those terms above, I have nothing to add.
Credits Jens009- Script Author Noobitron- Script reference. Yanxie- Alias tutorial