XPの規格のホコグラをVX Aceで



XPの規格のホコグラをVX Aceでも使用できるようにします。

XPのホコグラのファイル名に『!XP』をつけてインポートしてください。

※なお、アクターの歩行グラフィックの部分は表示がおかしくなりますが、それは仕様です。

変更点
2012:03:18
・VX Ace規格のキャラチップ表示の際、インデックスが固定されているバグを修正
・XP規格のパターン3が表示出来なかったバグを修正

#==============================================================================
# ■ XPの規格のホコグラをVX Aceでも使用する By 貪藻矢射妥←
#------------------------------------------------------------------------------
#  XPの規格のホコグラをVX Aceでも使用できるようにします。
#  
#  XPのホコグラのファイル名に『!XP』をつけてインポートしてください。
# 
#  ※なお、アクターの歩行グラフィックの部分は表示がおかしくなりますが、それは
#   仕様です。
#  
#==============================================================================
# 更新っぽいもの
# 2012:03:18
# ・VX Ace規格のキャラチップ表示の際、インデックスが固定されているバグを修正
# ・XP規格のパターン3が表示出来なかったバグを修正

module CHAR_ON_XP
  # XP規格のための識別文字
  XP_WORD="XP"
  
  # VX Aceのデフォルトパターン
  VXA_DEFAULT_PTN = 1
  # XPのデフォルトパターン
  XP_DEFAULT_PTN  = 0
end

#==============================================================================
# ■ Game_Character
#------------------------------------------------------------------------------
#  キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event
# クラスのスーパークラスとして使用されます。
#==============================================================================

class Game_Character < Game_CharacterBase
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :change_pattern           # 真・パターン
  attr_accessor :original_pattern         # 元のパターン
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias init_public_members_xp init_public_members
  def init_public_members
    init_public_members_xp
    
    @change_pattern = 0
  end
  #--------------------------------------------------------------------------
  # ● 姿勢の矯正
  #--------------------------------------------------------------------------
  def straighten
    @original_pattern = @change_pattern
    @pattern = @change_pattern if @walk_anime or @step_anime
    @anime_count = 0
  end
end

#==============================================================================
# ■ Sprite_Character
#------------------------------------------------------------------------------
#  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
# 監視し、スプライトの状態を自動的に変化させます。
#==============================================================================

class Sprite_Character < Sprite_Base
  include CHAR_ON_XP
  #--------------------------------------------------------------------------
  # ● キャラクターのビットマップを設定
  #--------------------------------------------------------------------------
  def set_character_bitmap
    self.bitmap = Cache.character(@character_name)
    sign = @character_name[/^[\!\$]./]
    if sign && sign.include?('$')
      @cw = bitmap.width / 3
      @ch = bitmap.height / 4
    elsif sign && @character_name.include?(XP_WORD)
      @cw = bitmap.width / 4
      @ch = bitmap.height / 4
    else
      @cw = bitmap.width / 12
      @ch = bitmap.height / 8
    end
    self.ox = @cw / 2
    self.oy = @ch
  end
  #--------------------------------------------------------------------------
  # ● 転送元矩形の更新
  #--------------------------------------------------------------------------
  def update_src_rect
    if @tile_id == 0
      index = @character.character_index
      sign = @character_name[/^[\!\$]./]
      if sign && @character_name.include?(XP_WORD)
        @character.change_pattern = XP_DEFAULT_PTN
      else
        @character.change_pattern = VXA_DEFAULT_PTN
      end
      
      # ツクールVX Aceの仕様上 pattern が 2 を超えることはない
      pattern = @character.pattern < 3 ? @character.pattern : 
                                         @character.change_pattern
      
      if sign && @character_name.include?(XP_WORD)
        # XP規格の pattern = 3 はVX Aceでは index = 1, pattern = 0 となる
        pattern = 3 if index == 1 && pattern == 0
        sx = pattern * @cw
      else
        sx = (index % 4 * 3 + pattern) * @cw
      end
      @character.original_pattern = @character.pattern
      sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
  end
end
XPのホコグラのファイル名に『!XP』をつけてインポートしてください。 ※ちなみに『XP』の部分は薄緑色の部分で変更が可能だったりします ※なお、アクターの歩行グラフィックの部分は表示がおかしくなりますが、それは仕様です。

戻る