XP 스크립트

중복인지는 자세히는 모르지만

기존의 CBS인가?

그 턴알을 사용하면 CBS전용 캐릭터가 필요해서 엄청난 단점을 보입니다.

만약 CBS전용 캐릭터가없으면 그게임은 개발중지를 먹는 상황;

하여깐

이 것은 그냥 보행캐릭터만있어도 가능한 턴알

그치만 움직이이 그리없다는...



출처:

스크립트는 시작!

스크립트:

#==============================================================================
# ++ サイドビューバトル(歩行グラフィック版) ver. 1.14 ++
#  Script by パラ犬
#  http://para.j-mx.com/
#------------------------------------------------------------------------------
# バトルフィールドに歩行グラフィックを表示します。
#==============================================================================

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 = 1      # 移動歩数
  MOVE_PIXEL = 10    # 一歩あたりのピクセル数
 
  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

Who's 백호

?

이상혁입니다.

http://elab.kr

Comment '17'

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
154 전투 XAS Hero Edition Ver. 3.91 3 프리즌커피 2011.12.23 3894
» 전투 보행그래픽으로 싸우는 턴알 17 백호 2009.02.22 3782
152 전투 RPG Advocate의 데모에서 발췌한 사이드뷰용 전투상태창 4 file 백호 2009.02.22 3596
151 전투 [신기술 체험] SRPG-Test 13 file 백호 2009.02.22 3536
150 전투 srpg용 스크립트라는데 4 세죠 2010.03.26 3524
149 전투 사이트뷰 전투 스크립트 (CBS R1) 8 file 백호 2009.02.21 3498
148 전투 Mr. Mo's ABS 5.5 13 Alkaid 2010.09.10 3459
147 전투 펫 시스템(ABS 3.4v포함) 23 file 백호 2009.02.22 3458
146 전투 CTB by Charlie Fleed 3.2 - FF10 스타일의 전투 시스템 7 Alkaid 2010.10.14 3448
145 전투 ATB전투 5 백호 2009.02.22 3369
144 전투 간단 액알 사용법(3번째) 12 file 백호 2009.02.21 3337
143 전투 흠.. 아직도 이 스크립트가 없군요 ㅋㅋ(제가올림..) 1 file 백호 2009.02.21 3334
142 전투 캐릭터고르기스크립트? ps인간 2009.01.23 3263
141 전투 Trickster씨의 전투 시스템 (SDK 필수?) Alkaid 2012.09.18 3256
140 전투 간단한 액알 스크립트!(1번째) 2 백호 2009.02.21 3166
139 전투 KGC_DamageAlter(데미지 표시 개조) 8.24 14 file 백호 2009.02.22 3154
138 전투 에너미 HP·SP투시 11 file 백호 2009.02.21 3086
137 전투 시뮬레이션 턴알 3 file 백호 2009.02.21 3053
136 전투 심플액알 더더 수정(스위치, 변수) 17 file 백호 2009.02.21 3046
135 전투 GTBS 1.4 스크립트 9 아방스 2009.02.05 3028
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9