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.

[XP] FMBS XRXS Fully Working + Custom Enhancement

revee

Member

i found bugs,
when there's more than one actor in battle, only one person animate the winning pose..
and =
when used magic, can it wait for certain period(casting), and then unleash the magic to the nearest enemy?
 
revee":tp86js1p said:
i found bugs,
when there's more than one actor in battle, only one person animate the winning pose..
nope i guess they're not a bug, it'll animated because that actor is the last person who caused damage to enemy. i'll make it all animated if you want

when used magic, can it wait for certain period(casting), and then unleash the magic to the nearest enemy?

yes, it can just check my commented in part 6 SKILL for more details
 

revee

Member

mm THATS GREAT
and would be more if:
you change the meteor animation with escaping...
show the name of the enemy
when using item, there's a number of healed HP/TP
when battle starts, show enemy places (like crushD one)
and 3D battle back (like crushD too)
winning window like tales of eternia^_^
and i think hiliart wanted to make new advanced demo
(he/she says in that spanish language)
thanks a LOT!!!
 
revee":2ztnae82 said:
mm THATS GREAT
and would be more if:
you change the meteor animation with escaping...
show the name of the enemy
when using item, there's a number of healed HP/TP
when battle starts, show enemy places (like crushD one)
and 3D battle back (like crushD too)
winning window like tales of eternia^_^
and i think hiliart wanted to make new advanced demo
(he/she says in that spanish language)
thanks a LOT!!!
could you send me crushD script ? just for reference
 

revee

Member

Hey iqbal, i translate what hiliart (the spanish language above to you)

Thanks iqbal_0k to improve system FMBS_ITEM_FIX… reason why I see demo and tutorial that presents/displays ( for a time already) to passed through several forums… hehehe… I hope that you complete improvements that you realise are spectacular, as for me I am developing a tutorial but advanced and demo with you complete improvements that you have realised and some details that and found lately… revee… The names of skill can be shown, but as the system works on the basis of skills (the system does not recognize basic attacks or special), mostraria you too many names and this produciria lag, besides not being very attractive at sight. Also different voices for each attack can be created… you only must revizar script… and with respect to battle result type such of eternia or director cut, I am working in that… Serious an affability that somebody but was added in improving this system of battle, but so far I am very happy that somebody but, aside from my, as much was excited by this battle system… is a great system that few use by their degree of complexity and the lack of information… Good for saying to iqbal_0k… thanks, sige with that passion again… luck… Xaoooo pescao - Hiliart (Member of the GD Spiral Dreams) -
 
Revee here's some of your request
Code:
=begin
  FMBS CUSTOM Battle Enhancement ver BETA                     By B@!LWORLD A.K.A Iqbal_0k
  Requested by revee in rmxp.org
  
  credit and thanks : XRXS for this great battle system
  
  FEATURE (June 10 2008) : - Change meteor boulder to escape ... completed
                             You can escape by running to left side
                           - delete escape command in battle menu ... completed
                           - Show enemy location when battle is starting
                             (make camera move to enemy after that go to
                              hero you controlled) ... in progress need to initialize xrxs camera from begining
                           - Show enemy name pop up when battle is starting
                             then vanish (no i didn't make a window it will
                             reduce your fps trust me) ... completed
                           - Replace Escape timer with escape probability ... completed
                             (i think it's too easy when you face higher level of enemy
                              then you decide to escape so easyly)
                           - Customizeable in script event or in this script
                             
                             that's it for now time to finish my homework and go to bed

  HOW TO USE : Put this script above fix script and below default fmbs script
  
  AUTHOR NOTES :
     - i'll post another feature later (no demo at this time)
     - for best result dont use extra enhancement like my fmbs action message
       or set $fmbs_bm to false from its configuration (so it will not reducing your fps too much)
       maybe i can update my action message later with some dynamic feature
=end

=begin
                            CONFIGURATION
=end
  $use_custom_escape = true # if you not use this, it can still remove meteor like boulder's
  $show_name_pop_up = true

# END CONFIGURATION
#==============================================================================
# ¦ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
  alias enhancement_initialize initialize
  def initialize(troop_id, member_index)
    @actor_in_battlefield = false
    @x_pos          =   $data_troops[troop_id].members[member_index].x - 320
    @y_pos          = -($data_troops[troop_id].members[member_index].y - 304)
    @z_pos          =    0
    @field_x_offset = -192
    @field_y_offset = -144
    @zoom           = 1.00
    enhancement_initialize(troop_id, member_index)
  end
end
#==============================================================================
# ? Window_ActiveMenu
#==============================================================================
class Window_ActiveMenu < Window_Selectable
  alias delete_escape_index initialize
  def initialize    
    delete_escape_index
    #MAXIMUM OF MENU COMMAND
    if $use_custom_escape == true
      @item_max = 3
      @column_max = 3
    end
  end
  
  #Remove escape icons
  alias escape_refresh_enhance refresh
  def refresh
    if $use_custom_escape == true
      @window_screenback.visible = true
      self.contents.clear
      # this one for item icons
      bitmap = RPG::Cache.icon("021-Potion01")
      self.contents.blt(  0, 4, bitmap, Rect.new(0, 0, 24, 24))
      # for skill icons
      bitmap = RPG::Cache.icon("044-Skill01")
      self.contents.blt( 32, 4, bitmap, Rect.new(0, 0, 24, 24))
      #for equip icons
      bitmap = RPG::Cache.icon("001-Weapon01")
      self.contents.blt( 64, 4, bitmap, Rect.new(0, 0, 24, 24))
    else
      escape_refresh_enhance      
    end
  end
end

class Scene_Battle
  alias iqbal_custom_start_phase1 start_phase1  
  def start_phase1
    iqbal_custom_start_phase1
    if $show_name_pop_up == true
      @duration = 0
      if @duration < 300
        @spriteset.stop_update_animation
        for battler in $game_troop.enemies        
          battler.damage = battler.name
          battler.damage_pop = true
          @duration + 10
        end
      else
        @spriteset.start_update_animation
      end
    end
  end
  
  alias remove_select_escape_enhance update_phase3_activemenu
  def update_phase3_activemenu
    if $use_custom_escape == true
      @window_activemenu.visible = true
      @window_activemenu.update
      if Input.trigger?(Input::B)
        # play cancel se
        $game_system.se_play($data_system.cancel_se)
        @xcam_z_destination = 185
        @window_activemenu.active = false
        @window_activemenu.visible = false
        @phase = 1
      end
      if Input.trigger?(Input::C)
        case @window_activemenu.index
          when 0 # ITEM WINDOWS
            # Play OK SE
            $game_system.se_play($data_system.decision_se)
            @window_activemenu.visible = false
            @window_activemenu.active  = false
            @active_battler = @handle_battler
            @actor_index = 0
            start_item_select
            @item_window.z = 303
          when 1 # SKILL WINDOWS
            # PLAY OK SE
            $game_system.se_play($data_system.decision_se)
            @window_activemenu.visible = false
            call_menu_skill(0)
          when 2  # EQUIP WINDOWS
            # PLAY OK SE
            $game_system.se_play($data_system.decision_se)
            @window_activemenu.visible = false
            call_menu_equip(0)        
          end
      end
    else
      remove_select_escape_enhance
    end
  end
  
  def update_coordinates
    battlers_x_min =  512
    battlers_x_max = -512
    battlers_y_min =  1024 #1024
    battlers_y_max = -512
    for battler in $game_party.actors + $game_troop.enemies + @battle_bullets
      next if battler.nil?
      next if battler.motion.downing
      # ??
      if battler.dead? or
        (battler.is_a?(Game_BattleBullet) and !battler.is_a?(Game_ShootingTarget))
      else
        battlers_x_min = [battler.x_pos - battler.body_rect.x, battlers_x_min].min
        battlers_x_max = [battler.x_pos - battler.body_rect.x + battler.body_rect.width, battlers_x_max].max
        battlers_y_min = [battler.y_pos, battlers_y_min].min
        battlers_y_max = [battler.y_pos - battler.body_rect.y, battlers_y_max].max
      end
      next if battler.motion.hit_stop_duration > 0
            
      if battler.is_a?(Game_BattleBullet)
        battler_rect    = Rect.new(0,0,1,1)
      else
        battler_rect    = battler.body_rect.dup
        battler_rect.x += battler.x_pos
        battler_rect.y -= battler.y_pos
      end
      
      if battler.motion.now_jumps == 0
        if battler.now_x_speed > 0
          battler.now_x_speed = [battler.now_x_speed - battler.frict_x_break, 0].max
        elsif battler.now_x_speed < 0
          battler.now_x_speed = [battler.now_x_speed + battler.frict_x_break, 0].min
        end
      elsif battler.motion.now_jumps > 0 and battler.motion.controllable?
        if battler.now_x_speed > 0
          battler.now_x_speed = [battler.now_x_speed - battler.air_x_resistance, 0].max
        elsif battler.now_x_speed < 0
          battler.now_x_speed = [battler.now_x_speed + battler.air_x_resistance, 0].min
        end
      end
      variation = battler.relative_x_destination + battler.now_x_speed.floor

      side = XRXS_BS1::BF_SIDE + (BURST_SMASH_ENABLE ? 256 : 0)
      max = side
      min = @phase == 6 ? -640 : -1 * side
      for block in @field_blocks
        if rects_over_y?(battler_rect, block)
          x = block.x + block.width + battler_rect.width/2
          if x <= battler.x_pos+1 and x > min
            min = x
          end
          x = block.x - battler_rect.width/2
          if battler.x_pos-1 <= x and x < max
            max = x
          end
        end
      end
      
      battler.x_pos += variation
      if battler.x_pos < min
        battler.x_pos = min
        if battler.motion.blowning
          battler.now_x_speed *= -1/2
          do_crashing_shake
        end
      elsif battler.x_pos > max
        battler.x_pos = max
        if battler.motion.blowning
          battler.now_x_speed *= -1/2
          do_crashing_shake
        end
      end
      max = XRXS_BS1::BF_TOP + (METEOR_SMASH_ENABLE ? 256 : 0)
      min = XRXS_BS1::BF_BOTTOM
      for block in @field_blocks
        if rects_over_x?(battler_rect, block)
          if battler.y_pos >= -block.y and -block.y > min
            min = -block.y
          end
          y = -(block.y + block.height)
          if battler.y_pos < y and y < max
            max = y
          end
        end
      end
      if battler.motion.boardthrough_duration <= 0
        for board in @field_boards
          if rects_over_x?(battler_rect, board)
            if battler.previous_y_pos >= -board.y and -board.y > min
              min = -board.y
            end
          end
        end
      end
      max -= battler_rect.height
      if battler.y_pos != min
        if battler.motion.now_jumps == 0
          battler.motion.now_jumps = 1
        end
        if battler.now_y_speed >= -battler.air_y_maximum
          battler.now_y_speed = [battler.now_y_speed - battler.air_y_velocity, -battler.air_y_maximum].max
          if battler.now_y_speed <= 0 and
             battler.motion.handling_priority == 0 and
             !battler.dead? and !battler.motion.blowning and 
             battler.now_form_id/10 != 5
            battler.motion.do_jumping_fall
          end
        end
      end
      variation = battler.relative_y_destination + battler.now_y_speed.floor
      battler.y_pos = [[battler.y_pos + variation, min].max, max].min
      battler.y_min = min
      if battler.y_pos == min
        battler.now_y_speed = 0
      end      
      next if battler.is_a?(Game_BattleBullet)
      
      if battler.y_pos == min and battler.motion.now_jumps > 0
        if battler.motion.downing
          battler.now_x_speed = 0
          battler.now_y_speed = 9
          battler.motion.now_jumps   = 0
          battler.motion.downing  = true
          battler.motion.blowning = false
          elsif battler.motion.blowning
          battler.now_y_speed = 9
          battler.motion.do_down
        else
          battler.now_x_speed = 0
          battler.now_y_speed = 0
          battler.motion.now_jumps = 0
          battler.motion.do_landing_step if !battler.dead?
        end
      elsif battler.y_pos == max and 
            battler.now_y_speed > battler.now_x_speed.abs
        if battler.motion.blowning
          battler.now_y_speed *= -1/2
          do_crashing_shake
        else
          battler.now_y_speed = 0
        end
      end

      battler.previous_x_pos = battler.x_pos
      battler.previous_y_pos = battler.y_pos
      
      next if @phase == 5 or @phase == 6
       
       if  BURST_SMASH_ENABLE and battler.x_pos <= XRXS_BS1::BF_SIDE * -1
         if $use_custom_escape == true
            # MAKE ESCAPE
          @Probability = rand(100)
          if @Probability >= 69
            if $game_temp.battle_can_escape == true
                   @spriteset.stop_update_animation
                   @phase = 6
                   @xcam_x_destination = $xcam_x
                   @xcam_y_destination = $xcam_y
                   @xcam_z_destination = $xcam_z
                   @xcam_watch_battler = nil
                  for battler in $game_party.actors + $game_troop.enemies
                      battler.motion.do_straighten if battler.motion.directable?
                  end
                   @handle_battler.motion.do_escape
                   # Play escape SE
                  $game_system.se_play($data_system.escape_se)
                  @windows.visible = false if $fmbs_bm == true
                  @phase6_wait_count = 80
                  return
            elsif $game_temp.battle_can_escape == false
                  battler.motion.do_straighten if battler.motion.directable?
                  battler.motion.do_backstep
            end
          else
            battler.motion.do_straighten if battler.motion.directable?
            battler.motion.do_backstep
          end
        else
            battler.motion.do_straighten if battler.motion.directable?
            battler.motion.do_backstep
        end
      end
      
       if  BURST_SMASH_ENABLE and battler.x_pos >= XRXS_BS1::BF_SIDE   
           battler.motion.do_straighten if battler.motion.directable?
           battler.motion.do_backstep
       end
         
       if METEOR_SMASH_ENABLE and battler.y_pos >= XRXS_BS1::BF_TOP
          battler.motion.do_straighten if battler.motion.directable?
          battler.motion.do_crouch_to_jump
       end
       
       if METEOR_SMASH_ENABLE and battler.y_pos <= XRXS_BS1::BF_BOTTOM
         #MAKE METEOR SMASH and hurt battler
          battler.hp -= battler.maxhp * METEOR_SMASH_DAMAGE / 100
          battler.motion.do_meteor
          battler.dp = 0
       end
        
      if battler.is_a?(Game_Actor)
        allies = $game_party.actors
      else
        allies = $game_troop.enemies
      end
      
      for target in allies
        break if battler.motion.now_jumps > 0
        next  if target.motion.now_jumps > 0
        next if target == battler
        if battler.motion.handling_priority == 0 and
           target.motion.handling_priority == 0 and
           !battler.motion.dashing and 
           !target.motion.dashing
          next
        end
        target_rect     = target.body_rect.dup
        target_rect.x  += target.x_pos
        target_rect.y  -= target.y_pos
        if rects_over?(battler_rect.dup, target_rect.dup)
        if battler.z_pos <= target.z_pos
              battler.z_pos = [battler.z_pos - 4,-8].max
            target.z_pos  = [target.z_pos + 4,  8].min
          else
            battler.z_pos = [battler.z_pos + 4, 8].min
            target.z_pos  = [target.z_pos - 4, -8].max #4
          end
        end
      end
      if battler.z_pos != 0
        battler.z_pos /= 10
      end
      next if battler.dead?
      battler_rect    = battler.body_rect.dup
      battler_rect.x += battler.x_pos
      battler_rect.y -= battler.y_pos
      
      for target in $game_party.actors + $game_troop.enemies
        break if battler.motion.now_jumps > 0
        next if target.motion.now_jumps > 0
        next if target == battler
        next if target.dead?
        next if (battler.z_pos - target.z_pos).abs >= 8
        next if target.motion.handling_priority > 0 or target.motion.unfrictbreak_duration > 0
        target_rect     = target.body_rect.dup
        target_rect.x  += target.x_pos
        target_rect.y  -= target.y_pos
        if rects_over?(battler_rect.dup, target_rect.dup)
          if battler.x_pos < target.x_pos
            battler.x_pos -= 2
            target.x_pos  += 2
          else
            battler.x_pos += 2
            target.x_pos  -= 2
          end
        end
     end        
      side = XRXS_BS1::BF_SIDE + (BURST_SMASH_ENABLE ? 256 : 0)
      x_min = -1 * side - battler.body_rect.x
      x_max =      side - battler.body_rect.x - battler.body_rect.width
      battler.x_pos = [[battler.x_pos, x_min].max, x_max].min
    end
    return if @phase == 5 or @phase == 6
    @xcam_x_destination = (battlers_x_max + battlers_x_min)/2
    @xcam_y_destination = (battlers_y_max/2 + battlers_y_min)/2
    max_distance = [(battlers_x_min - battlers_x_max).abs,(battlers_y_min - battlers_y_max).abs].max
    @xcam_z_destination = [[(max_distance * 185.0 / 480).floor, XCAM_DISTANCE_MIN].max, XCAM_DISTANCE_MAX].min
  end
end

it'll remove meteor like effect and pop up enemy name when battle is starting
 
Hello ... to make all make the pose of victory, go to FullCBS part-2 (near the line 931), in the part where it says  alias xrxs_bs1_update_phase5 update_phase5 and replaces that structure complete by this:

Code:
 alias xrxs_bs1_update_phase5 update_phase5
  def update_phase5
    # ホワイトアウト
    if @phase5_whiteout_duration >= 0
      @phase5_whiteout_duration -= 1
      if @phase5_whiteout_duration == 0
#===============================================================================
        @handle_battler          = $game_party.actors[0]
        @handle_battler1         = $game_party.actors[1]
        @handle_battler2         = $game_party.actors[2]
#===============================================================================
        actor_list = [@final_battler]
        for actor in $game_party.actors
          if actor != @final_battler
            actor_list.push(actor)
          end
        end
        for i in 0...actor_list.size
          actor = actor_list[i]
          case i
          when 0
            actor.x_pos = -90
            actor.y_pos = 0
            actor.z_pos = 0
            actor.direction = 1
          when 1
            actor.x_pos = -170
            actor.y_pos = 0
            actor.z_pos = 0
            actor.direction = 1
          when 2
            actor.x_pos = -10
            actor.y_pos = 0
            actor.z_pos = 0
            actor.direction =  1
          end
        end
        # トランジション準備
        Graphics.freeze
        # カメラ
        $xcam_x = - 32
        $xcam_y =   32
        $xcam_z =  185
        @xcam_x_destination = -96
        @xcam_y_destination =  32
        @xcam_z_destination = 185
        @xcam_watch_battler = nil
        # 色調を復旧
        $game_screen.start_tone_change(@pretone, 0)
        # 全員のモーションをキャンセル
        for actor in $game_party.actors
        actor.motion.clear if actor.motion.directable?
        end
        # 全ての飛び道具を消滅
        for bullet in @battle_bullets.dup
        bullet = nil
        end
        @battle_bullets.clear
        @spriteset.battle_bullet_update(@battle_bullets)
        # ステータスウィンドウを表示
        @status_window.visible = false
        elsif @phase5_whiteout_duration == -1
        # トランジション実行
        for actor in $game_party.actors
        actor.remove_states_battle
        end
        # トランジション処理中フラグをセット
        $game_temp.transition_processing = true
        $game_temp.transition_name = BATTLE_END_TRANSITION
      end
      return
    end
    #
    # 戦闘処理セリフ
    #
    unless @phase5_voice_done
      # 戦闘処理ポーズ
      @final_battler.motion.do_won_cry # This can be eliminated o inactivate
      @handle_battler.motion.do_won_cry
      #==============================================================
      if $game_party.actors.size == 2
      @handle_battler.motion.do_won_cry
      @handle_battler1.motion.do_won_cry
      end
      #==============================================================
      if $game_party.actors.size == 3
      @handle_battler.motion.do_won_cry
      @handle_battler1.motion.do_won_cry
      @handle_battler2.motion.do_won_cry
      end
      #==============================================================
      @phase5_voice_done = true
    end
    # 呼び戻す
    xrxs_bs1_update_phase5
  end


PD1: This part is not working with the system that produced iqbal_0k ... but it is easy to edit.
PD2: This example of the show animations of victory, is based on a maximum of 3 characters in the group.
PD3: Sorry for my bad English.
 
hiliart said:
Hello ... to make all make the pose of victory, go to FullCBS part-2 (near the line 931), in the part where it says  alias xrxs_bs1_update_phase5 update_phase5 and replaces that structure complete by this:

Code:
 alias xrxs_bs1_update_phase5 update_phase5
  def update_phase5
    # ホワイトアウト
    if @phase5_whiteout_duration >= 0
      @phase5_whiteout_duration -= 1
      if @phase5_whiteout_duration == 0
#===============================================================================
        @handle_battler          = $game_party.actors[0]
        @handle_battler1         = $game_party.actors[1]
        @handle_battler2         = $game_party.actors[2]
#===============================================================================
        actor_list = [@final_battler]
        for actor in $game_party.actors
          if actor != @final_battler
            actor_list.push(actor)
          end
        end
        for i in 0...actor_list.size
          actor = actor_list[i]
          case i
          when 0
            actor.x_pos = -90
            actor.y_pos = 0
            actor.z_pos = 0
            actor.direction = 1
          when 1
            actor.x_pos = -170
            actor.y_pos = 0
            actor.z_pos = 0
            actor.direction = 1
          when 2
            actor.x_pos = -10
            actor.y_pos = 0
            actor.z_pos = 0
            actor.direction =  1
          end
        end
        # トランジション準備
        Graphics.freeze
        # カメラ
        $xcam_x = - 32
        $xcam_y =   32
        $xcam_z =  185
        @xcam_x_destination = -96
        @xcam_y_destination =  32
        @xcam_z_destination = 185
        @xcam_watch_battler = nil
        # 色調を復旧
        $game_screen.start_tone_change(@pretone, 0)
        # 全員ã
 

revee

Member

wow 0_0
i didn't think you make this script sooooo FAST
1 day only.....
cool >.<
can you make the face animated?
when hurt, attack, win , use item,and etc?
make a leader HUD same as the party member?
you can make your own face in=
http://fc07.deviantart.com/fs22/f/2008/ ... dgehog.swf
that was cool >.<

iqbal, try to change the min and max camera to 111
zoom to 1.30 for all
and make the battle widescreen you'll see it much cooler
than in the demo... ^ ^
see... the 1 i make myself
contains song and new sprites

http://www.mediafire.com/?yeayn2z1z1b
 
wew, gw lagi sibuk les fisika nih. nyokap bokap ngomel2 nilai fisika gw 5 di rapot. kalo ada waktu dikit wa modif dah scriptnya

gw ga punya msn, msn itu apa?
 

revee

Member

msn tuh
buat chatting...
download dulu programnya
trus bikin email
pake @hotmail.com
umur lo 9?
gak percaya gw...
 
can you speak english? many people are confused to understand our language
anyway i don't have any msn, dont pm me with that question
 

revee

Member

did you play getamped?
if do, we can chat there....
anyway, i'm confused with scripting....
T.T
where did you learn it?
 
revee":3yspvmo5 said:
did you play getamped?
No i dont play getamped, i'm playing CounterStrike mostly in channel vivagamers my nick is "AnJeNKs" or "Udin Petot"

anyway, i'm confused with scripting....
T.T
where did you learn it?
i learn't it from my uncle, he is a system analyst

That's good site to make faces. next demo i'll used that face

Hey what do you mean by animated faces ? did you mean something like Evangelion HUD in N64, Their faces is changing when received some damage or an attack? that's great idea i thinks
 

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