カイワレダイコン 2016/01/16 14:20

マップで何か溜める行為

マップで移動中にL、Rボタンを長押しする事で何かを溜める行為をします。
(ダッシュ中に溜める事は出来ません)
溜まると設定したスイッチがONになり、コモンイベントが起動します。
設定したスイッチで分岐させ、歩行グラの変更やステートの付加等
任意のイベントを組んで下さい。
溜めている際中にLRボタンを離したりダッシュすると溜める回数がリセットされます。
※溜め攻撃をイメージして作っていますが、これはあくまで溜めるだけのスクリプトです。
※ニューゲームから始めないとエラーが出ます。

オマケとして、溜め終わった後にシンボルエンカウントへ体当たりすると
セルフスイッチDがONになり、アクター1の最大HPの5%分、アクター1が回復、
溜め済みスイッチのOFF、コモンイベントの起動が付け加えてあります。

コモンイベントの内容がステートや歩行グラの変更なら溜めMAXスイッチで分岐させて溜まった時に起動させるコモンイベントと撃破時のコモンイベントを同じ物にすると楽チンです。


←イベントの設定
イベントに、設定したスイッチで条件分岐させて
ONの場合→イベントのスクリプトにtameatk
それ以外→バトルの処理、として下さい。
不要な場合は、このスクリプトの設定と下方にある
オマケで括られた部分を削除して下さい。

▼溜め中のアニメーションについて

VX Aceではアニメーション素材の読み込みに時間がかかるらしく
3列分のアニメーション素材で移動に引っ掛かりが発生してしまいます。
1~2列に修正したアニメーション素材を使用して下さい。(2列は未確認です)
設定のP_WAITは、2フレームのアニメーションで12、4フレームで18程度が目安になります。
溜まった時のアニメーションは20フレームある回復1で試したところ、問題はありませんでした。

▼アニメーション素材の読み込みに関して
ぐっちーさん(@emerald_sedan)に教えて頂きました。

▼溜め中のアニメーション素材
ツクールVXAceのアニメーション画像を切り取った物ですので
VXAceの正規ユーザーの方のみ使用できます。

#============================================================================== # マップで何か溜める行為 # 作成:みづき # ブログ:カイワレダイコン(http://b.dlsite.net/RG30248/) #------------------------------------------------------------------------------ # マップで移動中にL、Rボタンを長押しする事で何かを溜める行為をします。 # (ダッシュ中に溜める事は出来ません) # 溜まると設定したスイッチがONになり、コモンイベントが起動します。 # 設定したスイッチで分岐させ、歩行グラの変更やステートの付加等 # 任意のイベントを組んで下さい。 # 溜めている際中にLRボタンを離したりダッシュすると溜める回数がリセットされます。 # ※溜め攻撃をイメージして作っていますが、これはあくまで溜めるだけのスクリプトです。 # ※ニューゲームから始めないとエラーが出ます。 #------------------------------------------------------------------------------ # オマケとして、溜め終わった後にシンボルエンカウントに体当たりすると # セルフスイッチDがONになり、アクター1の最大HPの5%分、アクター1が回復、 # 溜め済みスイッチのOFF、コモンイベントの起動が付け加えてあります。 # イベントに、設定したスイッチで条件分岐させて # ONの場合→イベントのスクリプトにtameatk # それ以外→バトルの処理、として下さい。 # 不要な場合は、このスクリプトの設定と下方にある # オマケで括られた部分を削除して下さい。 #------------------------------------------------------------------------------ # 溜め中のアニメーションについて # VX Aceではアニメーション素材の読み込みに時間がかかるらしく # 3列分のアニメーション素材で移動に引っ掛かりが発生してしまいます。 # 1~2列に修正したアニメーション素材を使用して下さい。(2列は未確認です) # P_WAITは、2フレームのアニメーションで12、4フレームで18程度が目安になります。 #------------------------------------------------------------------------------ # アニメーション素材の読み込みに関して # ぐっちーさん(@emerald_sedan)に教えて頂きました。 #============================================================================== # 設定 module TAME ATK_NG = 20 # 溜め行為禁止のスイッチID POW_SW = 21 # 溜めMAXのスイッチID CHU_ANI = 120 # 溜め中のアニメーションID MAX_ANI = 121 # 溜まった時のアニメーションID COM_EVE = 1 # 溜まった時に起動させるコモンイベントID(歩行グラ変更など) ATK_NAM = 10 # 溜める回数 P_WAIT = 12 # 溜めの間隔。アニメーションの長さによって調整 # ┗溜まった時のアニメーションが出ない場合は数値が足りません。 #▼オマケ-------------------------------------------------------------------- GEKIHA = 4 # 撃破時のアニメーション K_COMM = 1 # 撃破時に起動させるコモンイベントID #▲オマケ-------------------------------------------------------------------- end class Game_Player < Game_Character #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias pow_up_initialize initialize unless $! def initialize pow_up_initialize @pow_wait_count = 0 @atk_count = 0 end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias pow_up_update update unless $! def update pow_up_update return false if $game_map.interpreter.running? return unless Input.press?(:L) || Input.press?(:R) return if $game_switches[TAME::ATK_NG] return if $game_switches[TAME::POW_SW] # 溜め中にダッシュした時のリセット処理 if dash? @atk_count = 0 ; return end # L R ボタンを放した時のリセット処理 if (Input.trigger?(:L) || Input.trigger?(:R)) && @atk_count != 0 @atk_count = 0 p "atk_count = " + @atk_count.to_s end @pow_wait_count -= 1 if @pow_wait_count > 0 return unless @pow_wait_count == 0 # 溜め処理 if Input.press?(:L) || Input.press?(:R) $game_player.animation_id = TAME::CHU_ANI @atk_count += 1 p "atk_count = " + @atk_count.to_s # 溜め回数nで溜めスイッチOFFの時 if @atk_count == TAME::ATK_NAM && !$game_switches[TAME::POW_SW] p "溜めMAX" $game_player.animation_id = TAME::MAX_ANI p "溜まったアニメーションの表示" $game_switches[TAME::POW_SW] = true $game_map.need_refresh = true p "溜めMAXのスイッチ → " + $game_switches[TAME::POW_SW].to_s @atk_count = 0 $game_temp.reserve_common_event(TAME::COM_EVE) end @pow_wait_count = TAME::P_WAIT end end end #▼オマケ-------------------------------------------------------------------- #-------------------------------------------------------------------------- # ● 溜め攻撃用イベント処理 #-------------------------------------------------------------------------- class Game_Interpreter def tameatk get_character(0).animation_id = TAME::GEKIHA s_key = [@map_id, @event_id, "D"] $game_self_switches[s_key] = true if !$game_self_switches[s_key] $game_switches[TAME::POW_SW] = false $game_map.need_refresh = true $game_temp.reserve_common_event(TAME::K_COMM) heal_hp = $game_actors[1].mhp p "アクター1のmaxhp = " + $game_actors[1].mhp.to_s heal_hp /= 20 p "maxhp / 20 = " + heal_hp.to_s $game_actors[1].hp += heal_hp RPG::SE.new("Heal5", 80, 150).play end end #▲オマケ--------------------------------------------------------------------

ひきも記さんの高性能タイマーや回想領域さんのシンボルエンカウント補助とか
併用するとこんな感じになります。

最新の記事

月別アーカイブ

限定特典から探す

記事を検索