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.

Simple (I think) CBS Edit

I found this cbs system and it's so simple, runs smoothly and doesn't look all that bad. The thing is, I really like the cool things CCOA added on to her CBS. Here are the scripts.

This is the CBS I'd like to use.
Code:
#============================================================================== 
# ++ サイドビューバトル(歩行グラフィック版) ver. 1.14 ++ 
#  Script by パラ犬 
#  http://rpg.para.s3p.net/ 
#------------------------------------------------------------------------------ 
# バトルフィールドに歩行グラフィックを表示します。 
#============================================================================== 

module SDVA 
  
  X_LINE = 500        # 横位置のバトラー表示座標 
  Y_LINE = 200        # 縦位置のバトラー表示座標 
  X_SPACE = 15        # 横位置のバトラー同士の間隔 
  Y_SPACE = 40        # 縦位置のバトラー同士の間隔 
  X_POSITION = 25     # 隊列[前衛・中衛・後衛]の横間隔 
  Y_POSITION = 0      # 隊列[前衛・中衛・後衛]の縦間隔 
  
  ATTACK_MOVE = true  # 攻撃時に前へ踏み出すか( true / false ) 
  SKILL_MOVE = true   # スキル使用時に前へ踏み出すか( true / false ) 
  ITEM_MOVE = false   # アイテム使用時に前へ踏み出すか( true / false ) 
  MOVE_STEP = 3       # 移動歩数 
  MOVE_PIXEL = 13     # 一歩あたりのピクセル数 
  
  PARTY_POS = 1       # キャラクターの向き( 0:下 / 1:左 / 2:右 / 3:上 ) 

  WINDOWPOS_CHANGE = true   # コマンドウインドウをバトラーの横に表示するか( true / false ) 

  end 
  
#============================================================================== 
# â–  Game_Actor 
#============================================================================== 

class Game_Actor < Game_Battler 
  #-------------------------------------------------------------------------- 
  # ● バトル画面 X 座標の取得 
  #-------------------------------------------------------------------------- 
  def screen_x 
    if self.index != nil 
      # 隊列を取得 
      pos = $data_classes[self.class_id].position 
      x_pos = pos * SDVA::X_POSITION 
      scr_x = self.index * SDVA::X_SPACE + SDVA::X_LINE + x_pos 
      # 移動アクションのとき 
      if self.current_action.move_action == true 
        # 横に移動 
        scr_x += @shift_x 
      end 
      return scr_x 
    else 
      return 0 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● バトル画面 Y 座標の取得 
  #-------------------------------------------------------------------------- 
  def screen_y 
    if self.index != nil 
      # 隊列を取得 
      pos = $data_classes[self.class_id].position 
      y_pos = pos * SDVA::Y_POSITION 
      scr_y = self.index * SDVA::Y_SPACE + SDVA::Y_LINE + y_pos 
      # 移動アクションのとき 
      if self.current_action.move_action == true 
        # 縦に移動 
        scr_y += @shift_y 
      end 
      return scr_y 
    else 
      return 0 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● バトル画面 Z 座標の取得 
  #-------------------------------------------------------------------------- 
  def screen_z 
    if self.index != nil 
      return self.index 
    else 
      return 0 
    end 
  end 
end 

#============================================================================== 
# ■ Game_Battler (分割定義 1) 
#============================================================================== 

class Game_Battler 
  #-------------------------------------------------------------------------- 
  # ● 公開インスタンス変数 
  #-------------------------------------------------------------------------- 
  attr_reader   :pattern        # 歩行パターン 
  attr_reader   :trans_x        # X方向の移動距離 
  attr_reader   :moving         # 移動中フラグ 
  #-------------------------------------------------------------------------- 
  # ● オブジェクト初期化 
  #-------------------------------------------------------------------------- 
  alias initialize_sdva initialize 
  def initialize 
    initialize_sdva 
    move_reset 
  end 
  #-------------------------------------------------------------------------- 
  # ○ 移動カウント 
  #-------------------------------------------------------------------------- 
  def move 
    @moving = 1 
      if @step < SDVA::MOVE_STEP 
        # 歩数を満たすまで移動 
        @pattern = (@pattern + 1) % 4 
        @step += 1 
        move_step 
      else 
        # 移動終了 
        @pattern = 1 
        @moving = 2 
      end 
  end 
  #-------------------------------------------------------------------------- 
  # ○ 移動処理 
  #-------------------------------------------------------------------------- 
  def move_step 
  # パーティの向きによって移動座標を変える 
  case SDVA::PARTY_POS 
    when 0 
      @shift_y = @step * SDVA::MOVE_PIXEL 
    when 1 
      @shift_x = -(@step * SDVA::MOVE_PIXEL) 
    when 2 
      @shift_x = @step * SDVA::MOVE_PIXEL 
    when 3 
      @shift_y = -(@step * SDVA::MOVE_PIXEL) 
    end        
  end 
  #-------------------------------------------------------------------------- 
  # ○ 移動のリセット 
  #-------------------------------------------------------------------------- 
  def move_reset 
    @moving = 0 
    @pattern = 0 
    @step = 0 
    @shift_x = 0 
    @shift_y = 0 
  end 
end 

#============================================================================== 
# â–  Game_BattleAction 
#============================================================================== 

class Game_BattleAction 
  #-------------------------------------------------------------------------- 
  # ● 公開インスタンス変数 
  #-------------------------------------------------------------------------- 
  attr_accessor :move_action             # 移動するアクションか 
  #-------------------------------------------------------------------------- 
  # ● クリア 
  #-------------------------------------------------------------------------- 
  alias clear_sdva clear 
  def clear 
    clear_sdva 
    @move_action = false 
  end 
end 

#============================================================================== 
# â–  Sprite_Battler 
#============================================================================== 

class Sprite_Battler < RPG::Sprite 
  #-------------------------------------------------------------------------- 
  # ● フレーム更新 
  #-------------------------------------------------------------------------- 
  alias update_sdva update 
  def update 
    # バトラーがアクターに含まれるとき 
    if @battler.is_a?(Game_Actor) 
      # ファイル名か色相が現在のものと異なる場合 
      # 行動中の場合 
      if @battler.battler_name != @battler_name or 
         @battler.battler_hue != @battler_hue or 
         @battler.current_action.basic == 0 or 
         @battler.current_action.kind != 3 
        # ビットマップを取得、設定 
        @character_name = @battler.character_name 
        @character_hue = @battler.character_hue 
        # 歩行グラフィックを描画 
        self.bitmap = RPG::Cache.character(@character_name, @character_hue) 
        cw = self.bitmap.width / 4 
        ch = self.bitmap.height / 4 
        @width = cw 
        @height = ch 
        if @battler.current_action.move_action == true 
          # 歩かせる 
          @battler.move 
        else 
          @battler.move_reset 
        end 
        # 転送元の矩形を設定 
        sx = @battler.pattern * cw 
        sy = SDVA::PARTY_POS * ch 
        self.src_rect.set(sx, sy, cw, ch) 
        self.ox = @width / 2 
        self.oy = @height 
        # 隠れ状態なら不透明度を 0 にする 
        if @battler.hidden 
          self.opacity = 0 
        end 
      end 
    end 
    update_sdva 
  end 
end 
  
#============================================================================== 
# â–  Scene_Battle 
#============================================================================== 

class Scene_Battle 
  #-------------------------------------------------------------------------- 
  # ● アクターコマンドウィンドウのセットアップ 
  #-------------------------------------------------------------------------- 
  alias phase3_setup_command_window_sdva phase3_setup_command_window 
  def phase3_setup_command_window 
    phase3_setup_command_window_sdva 
    if SDVA::WINDOWPOS_CHANGE 
      # アクターコマンドウィンドウの位置を設定 
      case SDVA::PARTY_POS 
        when 0 
          x_pos = @active_battler.screen_x - (@actor_command_window.width/2) 
          y_pos = @active_battler.screen_y 
        when 1 
          x_pos = @active_battler.screen_x - @actor_command_window.width - 16 
          y_pos = @active_battler.screen_y - @actor_command_window.height 
        when 2 
          x_pos = @active_battler.screen_x + 16 
          y_pos = @active_battler.screen_y - @actor_command_window.height 
        when 3 
          x_pos = @active_battler.screen_x - (@actor_command_window.width/2) 
          y_pos = @active_battler.screen_y - @actor_command_window.height - 48 
      end 
      @actor_command_window.x = x_pos >= 0 ? x_pos : 0 
      @actor_command_window.x = x_pos+@actor_command_window.width <= 640 ? x_pos : 640-@actor_command_window.width 
      @actor_command_window.y = y_pos >= 0 ? y_pos : 0 
      @actor_command_window.y = y_pos+@actor_command_window.height <= 480 ? y_pos : 480-@actor_command_window.height 
      # ステータスウインドウに隠れないように 
      @actor_command_window.z = 9999 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション) 
  #-------------------------------------------------------------------------- 
  alias update_phase4_step3_sdva update_phase4_step3 
  def update_phase4_step3 
    if SDVA::ATTACK_MOVE 
      if @active_battler.current_action.basic == 0 
        @active_battler.current_action.move_action = true 
      end 
    end 
    if SDVA::SKILL_MOVE 
      if @active_battler.current_action.kind == 1 
        @active_battler.current_action.move_action = true 
      end 
    end 
    if SDVA::ITEM_MOVE 
      if @active_battler.current_action.kind == 2 
        @active_battler.current_action.move_action = true 
      end 
    end 
    # バトラーがアクターに含まれ、移動アクション中 
    if @active_battler.is_a?(Game_Actor) and 
     @active_battler.current_action.move_action 
      # 移動終了時 
      if @active_battler.moving == 2 
        update_phase4_step3_sdva 
      end 
    elsif @active_battler.moving == 0 
      update_phase4_step3_sdva 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ) 
  #-------------------------------------------------------------------------- 
  alias update_phase4_step6_sdva update_phase4_step6 
  def update_phase4_step6 
    @active_battler.current_action.move_action = false 
    @active_battler.move_reset 
    update_phase4_step6_sdva 
  end 
end 

#============================================================================== 
# â–  Spriteset_Battle 
#============================================================================== 

class Spriteset_Battle 
  #-------------------------------------------------------------------------- 
  # ● オブジェクト初期化 
  #-------------------------------------------------------------------------- 
  alias initialize_sdva initialize 
  def initialize 
    initialize_sdva 
    @viewport2.z = 1 
  end 
end 

#============================================================================== 
# â–  Arrow_Actor 
#============================================================================== 

class Arrow_Actor < Arrow_Base 
  #-------------------------------------------------------------------------- 
  # ● フレーム更新 
  #-------------------------------------------------------------------------- 
  alias update_sdva update 
  def update 
    update_sdva 
    # カーソル下 
    if Input.repeat?(Input::DOWN) 
      $game_system.se_play($data_system.cursor_se) 
      @index += 1 
      @index %= $game_party.actors.size 
    end 
    # カーソル上 
    if Input.repeat?(Input::UP) 
      $game_system.se_play($data_system.cursor_se) 
      @index += $game_party.actors.size - 1 
      @index %= $game_party.actors.size 
    end 
  end 
end 

#============================================================================== 
# â–  Arrow_Enemy 
#============================================================================== 

class Arrow_Enemy < Arrow_Base 
  #-------------------------------------------------------------------------- 
  # ● フレーム更新 
  #-------------------------------------------------------------------------- 
  alias update_sdva update 
  def update 
    update_sdva 
    # カーソル下 
    if Input.repeat?(Input::DOWN) 
      $game_system.se_play($data_system.cursor_se) 
      $game_troop.enemies.size.times do 
        @index += 1 
        @index %= $game_troop.enemies.size 
        break if self.enemy.exist? 
      end 
    end 
    # カーソル上 
    if Input.repeat?(Input::UP) 
      $game_system.se_play($data_system.cursor_se) 
      $game_troop.enemies.size.times do 
        @index += $game_troop.enemies.size - 1 
        @index %= $game_troop.enemies.size 
        break if self.enemy.exist? 
      end 
    end 
  end 
end

This is the link to CCOA's http://www.rmxp.org/forums/showthread.php?t=3564

The things that I'd like done have nothing to do with the battlers, but rather, with the window.
1)CCOA's has customizable skills. I'd like to be able to split skills into categories like "swordtech" "White magic" "black magic" ect.
2)The way the window system is set up is just much nicer, for example, when selecting attacks, the box stays on the left hand corner, instead of moving across the the bottom when it switches characters.

I don't know how hard this would be, but I hope I've been descriptive enough. Also, if someone could translate the maker of the first script, that would be great, as I would like to credit them.
 

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