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
921 전체화면 스크립트[해상도 스크립트랑 중복사용 불가] 24 file - 하늘 - 2009.08.06 3973
920 전투 RTAB 1.16ver 12 file 백호 2009.02.22 3960
919 장비 CSSR8-장비품 생산&강화 시스템 18 file 백호 2009.02.22 3959
918 아이템 심플 액알 [리젠, 아이템 드롭] 18 file 백호 2009.02.21 3917
917 영상 플래시 동영상 재생 스크립트 사용법 및 다운로드 8 아방스 2010.11.02 3916
916 HUD [VX 가능] 이벤트 이름 띄우기 41 file 독도2005 2009.08.22 3901
915 전투 XAS Hero Edition Ver. 3.91 3 프리즌커피 2011.12.23 3894
914 기타 [자작]데미지표시 19 file JACKY 2012.02.15 3836
913 스킬 약간 수정한 심플액알(크리티컬,스킬) 10 백호 2009.02.22 3835
912 이동 및 탈것 아하! 그렇구나의 3D 신기술 체험 2 23 아하!잘봤어요. 2010.02.28 3815
911 기타 3D스크립트 48 file ok하승헌 2010.02.18 3808
910 기타 [게이지바]HelloCoaVer4.0 업데이트 속도 변경 [오랜만의 업데이트] 30 file 코아 코스튬 2011.04.02 3787
» 전투 보행그래픽으로 싸우는 턴알 17 백호 2009.02.22 3781
908 파티 KGC-대규모파티 25 rgnrk001 2010.03.01 3770
907 이동 및 탈것 동료들끼리 따라오는 스크립트 41 file ◐아이흥행 2010.01.23 3714
906 [스마슈님 제공] 부활스크립트 19 file 아방스 2007.11.09 3705
905 기타 만화형태 말칸 스크립트 28 file 백호 2009.02.22 3704
904 저장 [ AutoSave ]오토세이브, 뜻 그대로 자동저장스크립트 17 file 제로스S2 2009.08.06 3694
903 sbabs - 몬스터 게이지 표시 스크립트 13 file 아방스 2007.11.09 3667
902 기타 [신기술 체험] RPGXP 3D 9 file 백호 2009.02.22 3633
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 52 Next
/ 52