Another battle system request. o_o;
#1
Yep, me again.

I recently stumbled accross the Count Time Battle system, and I really like the zoom effect, now, I'm using MGC's First Person Laberynth Explorer with his script that uses the current map as the Battle Background. It all works very well with this Battle script added as long as the zoom is switched off, however once I start using the zoom effect. The error occurs within this method of the battle script.
Code:
#--------------------------------------------------------------------------
  # * When the screen goes outside the picture, revision processing
  #--------------------------------------------------------------------------
  def screen_over
    width = @battleback_sprite.bitmap.width * @base_zoom * @target_zoom / 2
    unless 324 + @target_x > width and 324 - @target_x > width
      if 324 + @target_x > width
        @target_x = width - 324
      elsif 324 - @target_x > width
        @target_x = 324 - width
      end
    end
    height = @battleback_sprite.bitmap.height * @base_zoom * @target_zoom / 4
    unless @target_y > height - 4 and 484 - @target_y > 3 * height
      if @target_y > height - 4
        @target_y = height - 4
      elsif 484 - @target_y > 3 * height
        @target_y = 484 - 3 * height
      end
    end
  end
end
Is says there is a 'Type Error' and that 'nil can't be coerced into Fixnum' on line 2462, which is
Code:
width = @battleback_sprite.bitmap.width * @base_zoom * @target_zoom / 2

Is there a way of making these two scripts compatible? If not I can live without the zoom effect, however it does look very nice and would liven up my battles considerably. Any help would be much appreciated!
Reply }
#2
Just giving this a quick bump to let you all know I'm still interested. Though 44 views withut a reply is a bit of an indication of the difficulty of this request. :P
Reply }
#3
It's because the mgc script simply *removes* the battle back.
So this zoom script in the curret state of this is totally incompatible with the fple. Make them both compatible is impossible. It would need to make an new script.
Reply }
#4
The Count Time Battle (CTB) System and Real Time Active Battle (RTAB) system (both by Cogwheel) depend on an oversized battleback file to be scrolled to the left and right and zoomed in and out. Since they must be wider than the standard 640 width viewport, I haven't seen a map-to-battleback script that works in all this time... to my knowledge.
Reply }
#5
Hmm, well that all makes sense. Ah well at least now I know. I can live without the zoom feature, as I said before.

Thanks for the info guys.
Reply }
#6
I got some results with this compatibility script :

Code:
#====================================================================
# FPLE CTB
# Author : MGC
# This compatibility script enables the use of zoom with the Count Turn Battle (CTB)
# To use this add-on, required scripts must be in this order :
# - CTB (Ver 1.13)
# - FPLE scripts (Ver 1.3)
# - Addon FPLE map as battleback
# - This script
# - Main
# While it is below main, it doesn't have any effect.
#====================================================================
#==============================================================================
# ** Spriteset_Battle
#==============================================================================
class Spriteset_Battle
  alias make_battleback_fple_ctb_spriteset_battle make_battleback
  #--------------------------------------------------------------------------
  # * Setting of battle background
  #--------------------------------------------------------------------------
  def make_battleback
    if $game_system.fple
      if @battleback_sprite.bitmap != nil
        @battleback_sprite.bitmap.dispose
      end
      @battleback_name = $game_temp.battleback_name
      if !@make_battleback_init
        # That part of code is dedicated to avoid transition for the map as battleback
        @make_battleback_init = true
        $game_temp.battleback_name = "fple"
        @battleback_sprite.bitmap = Bitmap.new(640, 480)
        @original_zoom = 1
        slide = false
      else
        # load the FPLE rendering as battleback_sprite
        fple_spriteset = $scene.instance_variable_get(:@spriteset_map)
        @battleback_sprite.bitmap = fple_spriteset.fple_render.sprite_screen.bitmap
        @original_zoom = fple_spriteset.fple_render.sprite_screen.zoom_x
        fple_spriteset.fple_render.sprite_screen.dispose
        slide = true
      end
      @battleback_sprite.src_rect.set(0, 0, 640, 480)
      @battleback_sprite.zoom_x = @original_zoom
      @battleback_sprite.zoom_y = @battleback_sprite.zoom_x
      @base_zoom = 1.5 * @original_zoom
      @battleback_sprite.x = 320
      @battleback_sprite.y = 120
      @battleback_sprite.ox = @battleback_sprite.bitmap.width / 2
      @battleback_sprite.oy = @battleback_sprite.bitmap.height / 4
      if slide
        slide_to_zoom
      else
        @battleback_sprite.zoom_x = @base_zoom
        @battleback_sprite.zoom_y = @battleback_sprite.zoom_x
      end
    else
      make_battleback_fple_ctb_spriteset_battle
    end
  end
  #--------------------------------------------------------------------------
  # * Slide to the desired zoom and position when entering battle
  #--------------------------------------------------------------------------
  def slide_to_zoom
    slide_speed = 0.10
    count = ((@base_zoom - @battleback_sprite.zoom_x) / slide_speed).to_i + 1
    offset_y = @battleback_sprite.y.to_f / count
    battleback_sprite_y_float = @battleback_sprite.y.to_f
    i = 0
    while i < count
      @battleback_sprite.zoom_x  = [(@battleback_sprite.zoom_x + slide_speed), @base_zoom].min
      @battleback_sprite.zoom_y = @battleback_sprite.zoom_x
      battleback_sprite_y_float = battleback_sprite_y_float - offset_y
      @battleback_sprite.y = [battleback_sprite_y_float.to_i, 0].max
      Graphics.update
      i += 1
    end
  end
  #--------------------------------------------------------------------------
  # * Unslide when ending battle
  #--------------------------------------------------------------------------
  def unslide
    slide_speed = 0.10
    count = ((@battleback_sprite.zoom_x - @original_zoom) / slide_speed).to_i + 1
    offset_y = (120 - @battleback_sprite.y).to_f / count
    battleback_sprite_y_float = @battleback_sprite.y.to_f
    i = 0
    while i < count
      @battleback_sprite.zoom_x  = [(@battleback_sprite.zoom_x - slide_speed), @original_zoom].max
      @battleback_sprite.zoom_y = @battleback_sprite.zoom_x
      battleback_sprite_y_float = battleback_sprite_y_float + offset_y
      @battleback_sprite.y = [battleback_sprite_y_float.to_i, 120].min
      Graphics.update
      i += 1
    end
  end
end

#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
  alias battle_end_fple_ctb_scene_battle battle_end
  #--------------------------------------------------------------------------
  # * Battle Ends
  #     result : results (0:win 1:lose 2:escape)
  #--------------------------------------------------------------------------
  def battle_end(result)
    if $game_system.fple
      @spriteset.unslide
    end
    battle_end_fple_ctb_scene_battle(result)
  end
end

Basically the map as battleback is zoomed so it becomes larger than the screen.
The drawback is that the enemies seem small. Just try it to see what I mean.

The config :
- CTB v1.13 (default configuration)
- FPLE scripts v1.3
- Addon FPLE map as battleback
- Addon FPLE turn before battle <- not necessary I think
- This script
- Main
Some scripts :
Working on :
Reply }
#7
Dude... That is totally what I was looking for! Looks awesome to me, lots of my battlers are quite large to begin with so that should not be a problem, if they do look too small I can scale them up a bit in photoshop. :D

MGC you came to my rescue again! You're starting to make a habit of this mate. :P

Edit: Ah, sorry to be a pain, but is there a way of disabling the zoom effect for certain battles? I have afew screen filling bosses planned and it would be nice to turn the zoom on/off as I need to.
Reply }
#8
You won't believe how easy it is.... And this applies to RTAB too...

Look in the beginning of the system and there is the atb_setup method...
Code:
attr_accessor :camera                   # Present camera possession person
  #--------------------------------------------------------------------------
  # * ATB fundamental setup
  #--------------------------------------------------------------------------
  def atb_setup
    # ATB initialization
... variances may be because my copy is an English translation. :cheery:

Now, go to the line that reads:
Code:
@drive        = true    # Turns camera system on/off
and change it to this:
Code:
@drive        = $mydrive # Turns camera system on/off

Now, that makes it so you can make a script call like
$mydrive = true .... to turn the drive/camera system back on, or
$mydrive = nil .... to turn the camera system off.

By default, this change makes the camera system 'off' when the game starts, so you will need to use a script call of mydrive = true to turn it on.

Hope that helps.
Reply }
#9
Hmm, I'm not getting any errors, but the script call doesn't seem to work and I've done exactly as you said. :( It still zooms during battle regardless.

I've tried calling on the map event and on the troop setup window but to no avail.

It may be due to the combination of scripts I'm using. Perhaps they overwrite in some places.
Content Hidden
Reply }
#10
Replace the FPLE CTB script by this one :

Code:
#====================================================================
# FPLE CTB
# Author : MGC
# This compatibility script enables the use of zoom with the Count Turn Battle (CTB)
# To use this add-on, required scripts must be in this order :
# - CTB (Ver 1.13)
# - FPLE scripts (Ver 1.3)
# - Addon FPLE map as battleback
# - This script
# - Main
# While it is below main, it doesn't have any effect.
#====================================================================
#==============================================================================
# ** Spriteset_Battle
#==============================================================================
class Spriteset_Battle
  alias make_battleback_fple_ctb_spriteset_battle make_battleback
  #--------------------------------------------------------------------------
  # * Setting of battle background
  #--------------------------------------------------------------------------
  def make_battleback
    if $game_system.fple
      if @battleback_sprite.bitmap != nil
        @battleback_sprite.bitmap.dispose
      end
      @battleback_name = $game_temp.battleback_name
      if !@make_battleback_init
        # That part of code is dedicated to avoid transition for the map as battleback
        @make_battleback_init = true
        $game_temp.battleback_name = "fple"
        @battleback_sprite.bitmap = Bitmap.new(640, 480)
        @original_zoom = 1
        slide = false
      else
        # load the FPLE rendering as battleback_sprite
        fple_spriteset = $scene.instance_variable_get(:@spriteset_map)
        @battleback_sprite.bitmap = fple_spriteset.fple_render.sprite_screen.bitmap
        @original_zoom = fple_spriteset.fple_render.sprite_screen.zoom_x
        fple_spriteset.fple_render.sprite_screen.dispose
        slide = true
      end
      @battleback_sprite.src_rect.set(0, 0, 640, 480)
      @battleback_sprite.zoom_x = @original_zoom
      @battleback_sprite.zoom_y = @battleback_sprite.zoom_x
      @base_zoom = @original_zoom * ($scene.drive ? 1.5 : 1)
      @battleback_sprite.x = 320
      @battleback_sprite.y = ($scene.drive ? 120 : 0)
      @battleback_sprite.ox = @battleback_sprite.bitmap.width / 2
      @battleback_sprite.oy = ($scene.drive ? @battleback_sprite.bitmap.height / 4 : 0)
      if slide
        slide_to_zoom
      else
        @battleback_sprite.zoom_x = @base_zoom
        @battleback_sprite.zoom_y = @battleback_sprite.zoom_x
      end
    else
      make_battleback_fple_ctb_spriteset_battle
    end
  end
  #--------------------------------------------------------------------------
  # * Slide to the desired zoom and position when entering battle
  #--------------------------------------------------------------------------
  def slide_to_zoom
    slide_speed = 0.10
    count = ((@base_zoom - @battleback_sprite.zoom_x) / slide_speed).to_i + 1
    offset_y = @battleback_sprite.y.to_f / count
    battleback_sprite_y_float = @battleback_sprite.y.to_f
    i = 0
    while i < count
      @battleback_sprite.zoom_x  = [(@battleback_sprite.zoom_x + slide_speed), @base_zoom].min
      @battleback_sprite.zoom_y = @battleback_sprite.zoom_x
      battleback_sprite_y_float = battleback_sprite_y_float - offset_y
      @battleback_sprite.y = [battleback_sprite_y_float.to_i, 0].max
      Graphics.update
      i += 1
    end
  end
  #--------------------------------------------------------------------------
  # * Unslide when ending battle
  #--------------------------------------------------------------------------
  def unslide
    slide_speed = 0.10
    count = ((@battleback_sprite.zoom_x - @original_zoom) / slide_speed).to_i + 1
    offset_y = (120 - @battleback_sprite.y).to_f / count
    battleback_sprite_y_float = @battleback_sprite.y.to_f
    i = 0
    while i < count
      @battleback_sprite.zoom_x  = [(@battleback_sprite.zoom_x - slide_speed), @original_zoom].max
      @battleback_sprite.zoom_y = @battleback_sprite.zoom_x
      battleback_sprite_y_float = battleback_sprite_y_float + offset_y
      @battleback_sprite.y = [battleback_sprite_y_float.to_i, 120].min
      Graphics.update
      i += 1
    end
  end
end

#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
  alias battle_end_fple_ctb_scene_battle battle_end
  #--------------------------------------------------------------------------
  # * Battle Ends
  #     result : results (0:win 1:lose 2:escape)
  #--------------------------------------------------------------------------
  def battle_end(result)
    if $game_system.fple && @drive
      @spriteset.unslide
    end
    battle_end_fple_ctb_scene_battle(result)
  end
end

DerVVulfman's solution should work (make sure that you call $mydrive = true/false before the launch of the battle).
Some scripts :
Working on :
Reply }


Possibly Related Threads…
Thread Author Replies Views Last Post
   GW Animated Battle backs Patch for Atoa ACBS Solitaire 21 1,430 10-17-2024, 06:37 AM
Last Post: Solitaire
   ACBS - Atoa Custom Battle System and TP System zlsl 2 4,567 10-20-2021, 05:09 AM
Last Post: zlsl
   [RMXP] Showing skill gained by leveling up on battle result FrQise 12 12,648 05-07-2021, 02:05 PM
Last Post: FrQise
   Adding face script on Cogwheel's RTAB Battle Status rekkatsu 15 15,840 08-25-2020, 03:09 AM
Last Post: DerVVulfman
   I want to add an Atoa Custom Battle System command cut-in. zlsl 11 13,891 11-11-2019, 08:55 PM
Last Post: DerVVulfman
   Question about ACBS (Atoa Custom Battle System) aeliath 10 12,762 08-08-2019, 02:50 PM
Last Post: aeliath
   YAMI Battle symphony + Holder add on (Loop casting anim) Starmage 0 4,253 03-01-2018, 09:03 AM
Last Post: Starmage
   (RMVXace) Battle error with Tankentai's battle system, help. x( Starmage 0 3,910 02-14-2018, 04:25 PM
Last Post: Starmage
   Atoa Individual Battle Commands Geminil 3 6,966 08-02-2017, 03:17 AM
Last Post: DerVVulfman
   Problems with counteraatack addon of Atoa Custom Battle System Djigit 22 35,464 01-05-2017, 08:05 PM
Last Post: Noctis



Users browsing this thread: 1 Guest(s)