[Ace]MVのプラグインについて
Posted: 2016年4月16日(土) 23:26
http://tm.yumineko.com/viewtopic.php?f= ... Aceでやりたいです。
MVを持っておらずプラグインがどういう物なのか知らないのですが、スクリプトに変換とかは無理ですか?
MVを持っておらずプラグインがどういう物なのか知らないのですが、スクリプトに変換とかは無理ですか?
コード: 全て選択
class Scene_Battle
#--------------------------------------------------------------------------
# ● スキル/アイテムの使用
#--------------------------------------------------------------------------
def use_item
item = @subject.current_action.item
@log_window.display_use_item(@subject, item)
@subject.use_item(item)
refresh_status
targets = @subject.current_action.make_targets.compact
show_animation(targets.uniq, item.animation_id) # ☆
targets.each {|target| item.repeats.times { invoke_item(target, item) } }
end
end
コード: 全て選択
#==============================================================================
# □ Sprite_Effectable
#==============================================================================
class Sprite_Effectable < Sprite_Base
#--------------------------------------------------------------------------
# ○ オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(viewport = nil); super; @target = []; end
#--------------------------------------------------------------------------
# ○ 位置が「画面」か?
#--------------------------------------------------------------------------
def anime_to_screen?; @animation && @animation.position == 3; end
#--------------------------------------------------------------------------
# ○ バトラースプライトへのフラッシュ
#--------------------------------------------------------------------------
def flash_animation
return if !@animation
frame_index = @animation.frame_max - (@ani_duration + 3) / 4
@animation.timings.select{|t|t.frame == frame_index}.each{|timing|
@target.each{|s|s.flash_animation_process_timing(timing)}
}
end
#--------------------------------------------------------------------------
# ○ SE とフラッシュのタイミング処理
#--------------------------------------------------------------------------
def animation_process_timing(timing)
super; flash_animation
end
#--------------------------------------------------------------------------
# ○ 効果判定
#--------------------------------------------------------------------------
def set_target(target); @target=target if !@target.any?{|a|a.animation?}; end
end
#==============================================================================
# ■ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# ★ オブジェクト初期化
#--------------------------------------------------------------------------
alias obs_initialize initialize
def initialize
obs_initialize
@common_sprite = Sprite_Effectable.new(@viewport1)
@common_sprite.x = Graphics.width / 2
@common_sprite.y = Graphics.height / 2
@common_sprite.ox = 1; @common_sprite.oy = 1
end
#--------------------------------------------------------------------------
# ★ 解放
#--------------------------------------------------------------------------
alias obs_dispose dispose
def dispose; obs_dispose; @common_sprite.dispose; end
#--------------------------------------------------------------------------
# ★ フレーム更新
#--------------------------------------------------------------------------
alias obs_update update
def update; obs_update; @common_sprite.update if @common_sprite; end
#--------------------------------------------------------------------------
# ○ 共有アニメーション指定
#--------------------------------------------------------------------------
def set_common_animation(target, animation, mirror)
target = battler_sprites.select{|s|target.include?(s.battler)}
@common_sprite.set_target(target)
@common_sprite.start_animation(animation, mirror)
end
#--------------------------------------------------------------------------
# ★ アニメーション表示中判定
#--------------------------------------------------------------------------
alias obs_animation? animation?
def animation?
obs_animation? || @common_sprite.animation?
end
end
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 通常アニメーションの表示
#--------------------------------------------------------------------------
def show_normal_animation(targets, animation_id, mirror = false)
animation = $data_animations[animation_id]
if animation
if animation.to_screen? # ☆
@spriteset.set_common_animation(targets, animation, mirror)
abs_wait_short
else
targets.each do |target|
target.animation_id = animation_id
target.animation_mirror = mirror
abs_wait_short # ☆
end
end
end
end
end
コード: 全て選択
class RPG::UsableItem
def sf_anime
return @sf_anime if !@sf_anime.nil?
@sf_anime = (note =~ /<SEフラッシュのみ>/ ? true : false)
end
end
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# ● 新しいアニメーションの設定
#--------------------------------------------------------------------------
def setup_new_animation
if @battler.animation_id > 0
if SceneManager.scene.sf_anime_targets.include?(@battler)
animation = SceneManager.scene.sf_anime
else
animation = $data_animations[@battler.animation_id]
end
mirror = @battler.animation_mirror
start_animation(animation, mirror)
@battler.animation_id = 0
end
end
end
class Scene_Battle
attr_accessor :sf_anime
attr_accessor :sf_anime_targets
#--------------------------------------------------------------------------
# ● SE+フラッシュアニメーションの作成
#--------------------------------------------------------------------------
def clear_sf_anime
@sf_anime = nil; @sf_anime_targets = []
end
def make_sf_anime(animation)
@sf_anime = animation.clone
@sf_anime.frames = [RPG::Animation::Frame.new] * animation.frame_max
end
def make_sf_anime_targets(targets)
@sf_anime_targets = targets.uniq[1, targets.size-1]
end
#--------------------------------------------------------------------------
# ● 通常アニメーションの表示
#--------------------------------------------------------------------------
def show_normal_animation(targets, animation_id, mirror = false)
item = @subject.current_action.item # ☆
animation = $data_animations[animation_id]
if animation
clear_sf_anime
if targets.uniq.size > 1 &&
((item && item.sf_anime) || animation.to_screen?) # ☆
make_sf_anime(animation); make_sf_anime_targets(targets)
end
targets.each_with_index do |target, i| # ☆
target.animation_id = animation_id
target.animation_mirror = mirror
abs_wait_short unless animation.to_screen?
end
abs_wait_short if animation.to_screen?
end
end
end