Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Real Time Active Battle (The Systems)

SteveE22 said:
Well, as far as my understanding goes, I do believe the camera zooming is part of the RTAB script. However, the bouncing damage display is an add-on script, as well as the side view and all the other little additions. Since the Add-Ons are all separate scripts that the RTAB does not actually require, you should be able to just delete them.
Actually, the bouncing damage display that Vash wants to replace is the original one built into RTAB. He prefers the FF styled one, and if he's working on a FF Fan-Game... Heh, I'm a fan of 'em too. :D

dayhjawk said:
Does this support more than 4 Characters in battle?
Sorry, the display is set for a 4-member max like the others. I guess if you modded it, you'd be able to see and control more than 4.
 
Made a new project, copy/pasted the script without any add-ons. Go into battle and all the sprites are messed up. They are sized to be what they are in the screen shot.

**Edited**
Ok somehow I have RTAB, Animated Battlers, and the Dmg Display working, not sure how! But I have an issue. All the targets, all go to the same place, and end up below the menu in battle and I can't see anything there. So I am lost, and I am tring to figure out in the code what to change for this.

**Edited Again**
Turned off the camera action, and everything is fine with the targets but now the menu text doesn't appear, thou the command menu text does. Also the targets are in the right places now, but the sprites are messed up... they look like 4x4 sprites and moving.
 
Um... okay...

You got RTAB, Animated Battlers, and the Remodeled Damage Display. But the targets are moving down... below the battlestatus menu. Right?

May I assume you're also using the Stretched Background Removal Patch by Minkoff? While it does return the battle background to it's original non-stretched appearance, it does require that you turn RTAB's camera system off. Not doing so, the battlescreen and the enemies will move down a good 100+ pixels. Pointed out above the patch's spoiler.

To turn the camera system off (which I recommend since you're using Anim. Battlers anyway), go into RTAB's configuration system and set @drive to false.
 
Umm no I turned the camera off, and it fixed it. I don't have the background batch installed. Only issue I am having is with text, check your inbox for a PM.
 
I'm sure you have answered this, but is there any way to switch the positions of the battlers? I'm used to it being the heroes on the right, and the enemies on the left.
 
Ah, an Animated Battlers question. Yep, I answered it before. http://www.dubealex.com/asylum/style_em ... histle.gif[/IMG]


...

Oh, yeah.... http://www.dubealex.com/asylum/style_em ... sa_doh.gif[/IMG] your answer...

Anim Battlers Configuration Settings":2jshvdhc said:
OUTSIDE of the system, you can call one additional feature. By default, when the battle system is invoked, the heroes are positioned on the right side of the screen while the battlers are stationed on the left. But by calling the following RGSS code:
Code:
$game_system.sideview_mirror = 1
You can reverse the position of the heroes and enemies.
 
The ERROR message is telling me that somehow the battler class is being edited or overwritten, so it's most likely the CMS. Script arrangement may matter. Check to see if the error occurs after shuffling the scripts around. I find the best results occur if the CMS scripts are above the RTAB script(s). Also, see what happens if you remove the CMS system and/or caterpillar script.
 
a newbie question im using rm xp postility knights, i know this thread was long long ago but.... ummm i wanna see the life/mp bar or even txt plz post the script :D tnx hope you visit this thread,,...
 

Anonymous

Guest

Download the legal English trial. RMXP is not freeware, and this site will not support software piracy. You have no right to steal something you don't need to survive.
 
Copied from the 1st post:
Compatibility
Um... don't try to use this battlesystem WITH another battlesystem... right?

This script is designed to work with the officially sanctioned versions of RMXP. Japanese translated versions, including Postality Knights RMXP users will not be able to see the fonts in this demo, as the English version no longer needs the archaic $fontname/$fontface system of global variables.
 
Just because i remove the Overdrive system, my rtab does not work anymore.

Code:
    # Variable at substituting the width of the gauge which is drawn
    if actor.rtp == 0
      at = (width + @plus_width) * actor.atp * @rate_width / 10000
    else
      [B]at = (width + @plus_width) * actor.rt * @rate_width / actor.rtp / 100[/B]
    end
    if at > width
      at = width
    end

???? 'RTAB' ? 195 Type Error ???????
nil can't be coerced into Fixnum
 
Strange...:S

No other script is actually 'dependant' on KGC_Overdrive other than the OverDrive Ringer script. Even Clive's HP/MP/ATB with OVERDRIVE bars script isn't dependant on Overdrive... it just works with it.

I'm at work, so I can't check anything NOW... but I did comment 'em out when working on other scripts for compatability and such.
 
i figured it out. i had the Squall Menu. That what causing it to "Bug".

Code:
# script made by squall from rmxp.net / squall@loeher.zzn.com

# don't really need to give me credit for this.

# please paste the script in a new section ABOVE "main"

# this allow to have an unlimited number of actor in party.

# to change the max actors that can be in the party look just below.

# the party is cut down to 4 actor in battles

# some windows are compacted or re-made to fit with some other ones. those are

# Window_Gold and Window_PlayTime. feel free to remove them if you don't like

# the way they are...

# Enjoy!

#==============================================================================
# â–  Game_Party
#==============================================================================

class Game_Party
 #--------------------------------------------------------------------------
 # ● define instance variable
 #--------------------------------------------------------------------------
 attr_accessor :actors
 #--------------------------------------------------------------------------
 # ● add an actor to the party the number (red) is 
 #    the max actors to be in party
 #--------------------------------------------------------------------------
 def add_actor(actor_id)
   actor = $game_actors[actor_id]
   if @actors.size < 12 and not @actors.include?(actor)
     @actors.push(actor)
     $game_player.refresh
   end
 end
end

#==============================================================================
# â–  Window_Base
#==============================================================================

class Window_Base < Window
 #--------------------------------------------------------------------------
 # ● draw character's battle sprite
 #--------------------------------------------------------------------------
 def draw_actor_battlegraphic(actor, x, y, opacity = 255)
   bitmap = RPG::Cache.battler(actor.character_name, actor.character_hue)
   src_rect = Rect.new(0, 0, 111, 111)
   self.contents.blt(x, y, bitmap, src_rect, opacity)
 end
 #--------------------------------------------------------------------------
 # ● draw character's HP meter
 #--------------------------------------------------------------------------
 def draw_actor_hp_meter(actor, x, y, width = 70, type = 0)
   if type == 1 and actor.hp == 0
     return
   end
   self.contents.font.color = system_color
   self.contents.fill_rect(x-1, y+27, width+2,5, Color.new(0, 0, 0, 255))
   w = width * actor.hp / actor.maxhp
   self.contents.fill_rect(x, y+28, w,1, Color.new(174, 68, 89, 255))
   self.contents.fill_rect(x, y+29, w,1, Color.new(156, 61, 80, 255))
   self.contents.fill_rect(x, y+30, w,1, Color.new(138, 53, 70, 255))
 end
 #--------------------------------------------------------------------------
 # ● draw character's SP meter
 #--------------------------------------------------------------------------
 def draw_actor_sp_meter(actor, x, y, width = 70, type = 0)
   if type == 1 and actor.sp == 0
     return
   end
   self.contents.font.color = system_color
   self.contents.fill_rect(x-1, y+27, width+2,5, Color.new(0, 0, 0, 255))
   w = width * actor.sp / actor.maxsp
   self.contents.fill_rect(x, y+28, w,1, Color.new(62, 72, 164, 255))
   self.contents.fill_rect(x, y+29, w,1, Color.new(55, 65, 149, 255))
   self.contents.fill_rect(x, y+30, w,1, Color.new(49, 57, 130, 255))
 end
 #--------------------------------------------------------------------------
 # ● define method to draw squares
 #--------------------------------------------------------------------------
 def draw_square(x, y, width, color)
   self.contents.fill_rect(x, y, width, 1, color)
   self.contents.fill_rect(x, y, 1, width, color)
   self.contents.fill_rect(x + width, y, 1, width + 1, color)
   self.contents.fill_rect(x, y + width, width + 1, 1, color)
 end
end

#==============================================================================
# â–  Window_Gold
#------------------------------------------------------------------------------
#  in this one the text has been replaced by an icon. ^^
#==============================================================================

class Window_Gold < Window_Base
 #--------------------------------------------------------------------------
 # ● initialize
 #--------------------------------------------------------------------------
 def initialize
   super(0, 0, 160, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = $fontface
   self.contents.font.size = $fontsize
   refresh
 end
 #--------------------------------------------------------------------------
 # ● refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   cx = 24
   self.contents.font.color = normal_color
   self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
   self.contents.font.color = system_color
   bitmap = RPG::Cache.icon("032-Item01")
   rect = Rect.new(0, 0, 24, 24)
   self.contents.blt(124-cx, 0, bitmap, rect)
 end
end

#==============================================================================
# â–  Window_PlayTime
#------------------------------------------------------------------------------
#  This window has been compacted a bit to show every command in the menu
#==============================================================================

class Window_PlayTime < Window_Base
 #--------------------------------------------------------------------------
 # ● initialize
 #--------------------------------------------------------------------------
 def initialize
   super(0, 0, 160, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = $fontface
   self.contents.font.size = $fontsize
   refresh
 end
 #--------------------------------------------------------------------------
 # ● refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   @total_sec = Graphics.frame_count / Graphics.frame_rate
   hour = @total_sec / 60 / 60
   min = @total_sec / 60 % 60
   sec = @total_sec % 60
   text = sprintf("%02d:%02d:%02d", hour, min, sec)
   self.contents.font.color = normal_color
   self.contents.draw_text(4, 0, 120, 32, text, 2)
 end
 #--------------------------------------------------------------------------
 # ● redefine update method
 #--------------------------------------------------------------------------
 def update
   super
   if Graphics.frame_count / Graphics.frame_rate != @total_sec
     refresh
   end
 end
end

#==============================================================================
# â–  Window_MenuStatus
#==============================================================================

class Window_MenuStatus < Window_Selectable
 #--------------------------------------------------------------------------
 # ● initialize
 #--------------------------------------------------------------------------
 def initialize
   super(0, 0, 480, 480)
   @column_max = 4
   @item_max = $game_party.actors.size
   self.contents = Bitmap.new(width - 32, row_max * 112)
   self.contents.font.name = $fontface
   self.contents.font.size = $fontsize/1.2
   refresh
   self.active = false
   self.index = -1
 end
 #--------------------------------------------------------------------------
 # ● refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   for i in 0...$game_party.actors.size
     x = i % 4 * 112
     y = i / 4 * 112
     actor = $game_party.actors[i]
     #draw a square to seperate chars, change disabled color with whatever
     #color you want... (method to draw square is below...)
     draw_square(x, y, 111, disabled_color) 
     draw_actor_battlegraphic(actor, x, y, 150)
     draw_actor_graphic(actor, x + 90, y + 50)
     draw_actor_name(actor, x + 5, y)
     self.contents.draw_text(x + 5, y + 20, 112, 32, "HP : #{actor.hp}")
     self.contents.draw_text(x + 5, y + 40, 112, 32, "MP : #{actor.sp}")
     draw_actor_level(actor, x + 5, y + 60)
     draw_actor_state(actor, x + 5, y + 80)
     draw_actor_hp_meter(actor, x + 5, y + 17)
     draw_actor_sp_meter(actor, x + 5, y + 37)
   end
 end
 #--------------------------------------------------------------------------
 # ● define the page's top row
 #--------------------------------------------------------------------------
 def top_row
   return self.oy / 112
 end
 #--------------------------------------------------------------------------
 # ● define the page maximum rows
 #--------------------------------------------------------------------------
 def page_row_max
   return (self.height - 32) / 112
 end
 #--------------------------------------------------------------------------
 # ● defines a method to change the page's top row
 #--------------------------------------------------------------------------
 def top_row=(row)
   if row < 0
     row = 0
   end
   if row > row_max - 1
     row = row_max - 1
   end
   self.oy = row * 112
 end
 #--------------------------------------------------------------------------
 # ● update the cursor movement
 #--------------------------------------------------------------------------
 def update_cursor_rect
   if @index < 0
     self.cursor_rect.empty
     return
   end
   row = @index / @column_max
   if row < self.top_row
     self.top_row = row
   end
   if row > self.top_row + (self.page_row_max - 1)
     self.top_row = row - (self.page_row_max - 1)
   end
   self.cursor_rect.set(@index % 4 * 112, @index / 4 * 112 - self.oy, 112, 112)
 end
end


#==============================================================================
# â–  Window_Target
#==============================================================================

class Window_Target < Window_Selectable
 #--------------------------------------------------------------------------
 # ● initialize
 #--------------------------------------------------------------------------
 def initialize
   super(0, 0, 336, 480)
   @column_max = 2
   @item_max = $game_party.actors.size
   self.contents = Bitmap.new(width - 32, row_max * 112)
   self.contents.font.name = $fontface
   self.contents.font.size = $fontsize/1.2
   self.z += 10
   refresh
 end
 #--------------------------------------------------------------------------
 # ● refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   for i in 0...$game_party.actors.size
     x = i % 2 * 112 + 36
     y = i / 2 * 112
     actor = $game_party.actors[i]
     #draw a square to seperate chars, change disabled color with whatever
     #color you want... (method to draw square is below...)
     draw_square(x, y, 111, disabled_color) 
     draw_actor_battlegraphic(actor, x, y, 50)
     draw_actor_graphic(actor, x + 90, y + 50)
     draw_actor_name(actor, x + 5, y)
     self.contents.draw_text(x + 5, y + 20, 112, 32, "HP : #{actor.hp}")
     self.contents.draw_text(x + 5, y + 40, 112, 32, "MP : #{actor.sp}")
     draw_actor_level(actor, x + 5, y + 60)
     draw_actor_state(actor, x + 5, y + 80)
     draw_actor_hp_meter(actor, x + 5, y + 17)
     draw_actor_sp_meter(actor, x + 5, y + 37)
   end
 end
 #--------------------------------------------------------------------------
 # ● define the page's top row
 #--------------------------------------------------------------------------
 def top_row
   return self.oy / 112
 end
 #--------------------------------------------------------------------------
 # ● define the page maximum rows
 #--------------------------------------------------------------------------
 def page_row_max
   return (self.height - 32) / 112
 end
 #--------------------------------------------------------------------------
 # ● defines a method to change the page's top row
 #--------------------------------------------------------------------------
 def top_row=(row)
   if row < 0
     row = 0
   end
   if row > row_max - 1
     row = row_max - 1
   end
   self.oy = row * 112
 end
 #--------------------------------------------------------------------------
 # ● update the cursor movement
 #--------------------------------------------------------------------------
 def update_cursor_rect
   row = @index / @column_max
   if row < self.top_row
     self.top_row = row
   end
   if row > self.top_row + (self.page_row_max - 1)
     self.top_row = row - (self.page_row_max - 1)
   end
   if @index <= -2
     self.cursor_rect.empty
   elsif @index == -1
     self.cursor_rect.set(0, 0, self.width - 32, @item_max * 116 - 20)
   else
     self.cursor_rect.set(@index % 2 * 112 + 36, @index / 2 * 112 - self.oy, 112, 112)
   end
 end
end

#==============================================================================
# â–  Scene_Menu
#==============================================================================

class Scene_Menu
 #--------------------------------------------------------------------------
 # ● initialize
 #--------------------------------------------------------------------------
 def initialize(menu_index = 0)
   @menu_index = menu_index
   @actor_change = false
 end
 #--------------------------------------------------------------------------
 # ● main
 #--------------------------------------------------------------------------
 def main
   s1 = $data_system.words.item
   s2 = $data_system.words.skill
   s3 = $data_system.words.equip
   s4 = "Status"
   s5 = "Save"
   s6 = "Change party"
   s7 = "Quit"
   @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
   @command_window.index = @menu_index
   if $game_party.actors.size == 0
     @command_window.disable_item(0)
     @command_window.disable_item(1)
     @command_window.disable_item(2)
     @command_window.disable_item(3)
   end
   if $game_system.save_disabled
     @command_window.disable_item(4)
   end
   @playtime_window = Window_PlayTime.new
   @playtime_window.x = 0
   @playtime_window.y = 256 #224
   
   @steps_window = Window_Steps.new
   @steps_window.x = 0
   @steps_window.y = 320

   @gold_window = Window_Gold.new
   @gold_window.x = 0
   @gold_window.y = 416

   @status_window = Window_MenuStatus.new
   @status_window.x = 160
   @status_window.y = 0
   
   Graphics.transition

   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze

   @command_window.dispose
   @playtime_window.dispose
   @steps_window.dispose
   @gold_window.dispose
   @status_window.dispose
 end
 #--------------------------------------------------------------------------
 # ● update the windows
 #--------------------------------------------------------------------------
 def update
   @command_window.update
   @playtime_window.update
   @steps_window.update
   @gold_window.update
   @status_window.update

   if @command_window.active
     update_command
     return
   end
   if @status_window.active
     update_status
     return
   end
 end
 #--------------------------------------------------------------------------
 # ● update the command window
 #--------------------------------------------------------------------------
 def update_command
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $scene = Scene_Map.new
     return
   end
   if Input.trigger?(Input::C)
     if $game_party.actors.size == 0 and @command_window.index < 4
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     case @command_window.index
     when 0  # Item
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Item.new
     when 1  # Skill
       $game_system.se_play($data_system.decision_se)
       @command_window.active = false
       @status_window.active = true
       @status_window.index = 0
     when 2  # Equip
       $game_system.se_play($data_system.decision_se)
       @command_window.active = false
       @status_window.active = true
       @status_window.index = 0
     when 3  # Status
       $game_system.se_play($data_system.decision_se)
       @command_window.active = false
       @status_window.active = true
       @status_window.index = 0
     when 4  # Save
       if $game_system.save_disabled
         $game_system.se_play($data_system.buzzer_se)
         return
       end
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Save.new
     when 5  # End
       $game_system.se_play($data_system.decision_se)
       @command_window.active = false
       @status_window.active = true
       @status_window.index = 0
     when 6 # party actors switch
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_End.new
       end
     return
   end
 end
 #--------------------------------------------------------------------------
 # ● update the status window
 #--------------------------------------------------------------------------
 def update_status
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     @command_window.active = true
     @status_window.active = false
     @status_window.index = -1
     @actor_change = false
     return
   end
   if Input.trigger?(Input::C)
     case @command_window.index
     when 1  # Skill
       if $game_party.actors[@status_window.index].restriction >= 2
         $game_system.se_play($data_system.buzzer_se)
         return
       end
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Skill.new(@status_window.index)
     when 2  # Equip
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Equip.new(@status_window.index)
     when 3  # Status
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Status.new(@status_window.index)
     when 5 # party actors switch
       $game_system.se_play($data_system.decision_se)
       if @actor_change == true
         $game_party.actors[@old_index] = $game_party.actors[@status_window.index]
         $game_party.actors[@status_window.index] = @new_actor
         @actor_change = false
         @status_window.refresh
         return
       end
       @old_index = @status_window.index
       @new_actor = $game_party.actors[@status_window.index]
       @actor_change = true
     end
     return
   end
 end
end

#==============================================================================
# â–  Scene_Battle (Part 1)
#==============================================================================

class Scene_Battle
 #--------------------------------------------------------------------------
 # ● main
 #--------------------------------------------------------------------------
 def main
   $game_temp.in_battle = true
   $game_temp.battle_turn = 0
   $game_temp.battle_event_flags.clear
   $game_temp.battle_abort = false
   $game_temp.battle_main_phase = false
   $game_temp.battleback_name = $game_map.battleback_name
   $game_temp.forcing_battler = nil
   $game_system.battle_interpreter.setup(nil, 0)
   @troop_id = $game_temp.battle_troop_id
   $game_troop.setup(@troop_id)
   #memorize actors in party and cut the party down to 4 actors
   @party_mem = $game_party.actors
   $game_party.actors = $game_party.actors[0..3]
   s1 = $data_system.words.attack
   s2 = $data_system.words.skill
   s3 = $data_system.words.guard
   s4 = $data_system.words.item
   @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
   @actor_command_window.y = 160
   @actor_command_window.back_opacity = 160
   @actor_command_window.active = false
   @actor_command_window.visible = false
   @party_command_window = Window_PartyCommand.new
   @help_window = Window_Help.new
   @help_window.back_opacity = 160
   @help_window.visible = false
   @status_window = Window_BattleStatus.new
   @message_window = Window_Message.new
   @spriteset = Spriteset_Battle.new
   @wait_count = 0
   if $data_system.battle_transition == ""
     Graphics.transition(20)
   else
     Graphics.transition(40, "Graphics/Transitions/" +
       $data_system.battle_transition)
   end
   start_phase1
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   $game_map.refresh
   Graphics.freeze
   @actor_command_window.dispose
   @party_command_window.dispose
   @help_window.dispose
   @status_window.dispose
   @message_window.dispose
   if @skill_window != nil
     @skill_window.dispose
   end
   if @item_window != nil
     @item_window.dispose
   end
   if @result_window != nil
     @result_window.dispose
   end
   @spriteset.dispose
   if $scene.is_a?(Scene_Title)
     Graphics.transition
     Graphics.freeze
   end
   if $BTEST and not $scene.is_a?(Scene_Gameover)
     $scene = nil
   end
 end
 #--------------------------------------------------------------------------
 # ● battle end
 #--------------------------------------------------------------------------
 def battle_end(result)
   $game_temp.in_battle = false
   $game_party.clear_actions
   for actor in $game_party.actors
     actor.remove_states_battle
   end
   $game_troop.enemies.clear
   if $game_temp.battle_proc != nil
     $game_temp.battle_proc.call(result)
     $game_temp.battle_proc = nil
   end
   $game_party.actors = @party_mem
   $scene = Scene_Map.new
 end
end
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top