Saara
ユーザー
読んで字の如く。
画像の規格を直接VXAce方式にせずともXPのキャラチップが使用可能になります。
これにより、アニメパターンが4枚でないと動きが不自然になるキャラチップも、自然に利用できるようになります。
また、VXAce本来の規格のキャラチップとも併用可能です。
【使い方と仕様について】
画像の規格を直接VXAce方式にせずともXPのキャラチップが使用可能になります。
これにより、アニメパターンが4枚でないと動きが不自然になるキャラチップも、自然に利用できるようになります。
また、VXAce本来の規格のキャラチップとも併用可能です。
- 製作者: Saara
- 非商用利用: 自由(クレジット不要)
- 商用利用: 自由(クレジット必須)
- 再配布: クレジット必須
- 加工: OK(部分的な色変えも化)
- 加工後の再配布: クレジット必須
- シリーズ: ツクールVXAce
【使い方と仕様について】
- XP規格のキャラチップのファイル名先頭に「#」を加えると、自動でXPのキャラチップと判断します
- エディタには反映されません
- 「$」を先頭につけていなくても、自動で単一のキャラチップであると判断します(つけたほうがエディタ上で扱いやすいです
- イベントに設定された「向き」「足踏みパターン」は反映されます
Ruby:
#===============================================================================
#
# ★ ツクールXPのキャラクターチップVXAceで使えるようにするやつ
#
#===============================================================================
module Saara_XPCha
#--カスタマイズポイントここから--------------------------------------
# XP規格キャラチップのファイル名頭文字
InitialMark = '#'
#--カスタマイズポイントここまで--------------------------------------
end
module Saara_XPCha
InitialMark4Regxp = '\\' + InitialMark
end
class Game_Event
#--------------------------------------------------------------------------
# ● イベントページの設定をセットアップ
#--------------------------------------------------------------------------
alias :saara_xpcha_setup_page_settings :setup_page_settings
def setup_page_settings
saara_xpcha_setup_page_settings
sign = @character_name[/^[\!\$#{Saara_XPCha::InitialMark4Regxp}]./]
if sign && sign.include?(Saara_XPCha::InitialMark)
xp_pattern = (@page.graphic.pattern + 1) % 4
if @original_pattern != xp_pattern
@pattern = xp_pattern
@original_pattern = @pattern
end
end
end
end
class Sprite_Character
#--------------------------------------------------------------------------
# ● キャラクターのビットマップを設定
#--------------------------------------------------------------------------
def set_character_bitmap
self.bitmap = Cache.character(@character_name)
sign = @character_name[/^[\!\$#{Saara_XPCha::InitialMark4Regxp}]./]
if sign && sign.include?(Saara_XPCha::InitialMark)
@cw = bitmap.width / 4
@ch = bitmap.height / 4
elsif sign && sign.include?('$')
@cw = bitmap.width / 3
@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
sign = @character_name[/^[\!\$#{Saara_XPCha::InitialMark4Regxp}]./]
index = @character.character_index
if sign && sign.include?(Saara_XPCha::InitialMark)
pattern = (@character.pattern + 3) % 4
sx = pattern * @cw
sy = ((@character.direction - 2) / 2) * @ch
else
pattern = @character.pattern < 3 ? @character.pattern : 1
sx = (index % 4 * 3 + pattern) * @cw
sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch
end
self.src_rect.set(sx, sy, @cw, @ch)
end
end
end
class Window_Base
#--------------------------------------------------------------------------
# ● 歩行グラフィックの描画
#--------------------------------------------------------------------------
def draw_character(character_name, character_index, x, y)
return unless character_name
bitmap = Cache.character(character_name)
sign = character_name[/^[\!\$#{Saara_XPCha::InitialMark4Regxp}]./]
if sign && sign.include?(Saara_XPCha::InitialMark)
cw = bitmap.width / 4
ch = bitmap.height / 4
src_rect = Rect.new(0, 0, cw, ch)
elsif sign && sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
src_rect = Rect.new(cw, 0, cw, ch)
else
cw = bitmap.width / 12
ch = bitmap.height / 8
n = character_index
src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
end
contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
end