失礼致します。
現在、瀕死時(戦闘中)に自動回復するような防具を作りたいと考えております。
大変恐縮ではありますが、防具のメモ帳欄を使って、瀕死時にコモンイベントを呼び出す事が出来るスクリプトを
どなたか作っていただけないでしょうか?
宜しくお致します。
【解決済み】 Ace 瀕死時に××
【解決済み】 Ace 瀕死時に××
最後に編集したユーザー nira [ 2016年12月10日(土) 00:40 ], 累計 1 回
Re: Ace 瀕死時に××
瀕死、とは戦闘不能状態のことで良いのですかね?
もしそうなら、うちの素材に戦闘不能時に自動回復させるものがありますので
http://heptanas.mamagoto.com/Entry/4/
これを判定コモンなどで装備条件に応じて付与する手もありますね。
http://heptanas.mamagoto.com/Entry/17/
http://heptanas.mamagoto.com/Entry/39/
もし、要望のスクリプトを作るとなると
・戦闘不能になる毎に、何度もなのか一度だけなのか
・複数が同時に戦闘不能になった場合の挙動
・想定される防具の数はどれくらいなのか
あたりの情報が欲しいです。
もしそうなら、うちの素材に戦闘不能時に自動回復させるものがありますので
http://heptanas.mamagoto.com/Entry/4/
これを判定コモンなどで装備条件に応じて付与する手もありますね。
http://heptanas.mamagoto.com/Entry/17/
http://heptanas.mamagoto.com/Entry/39/
もし、要望のスクリプトを作るとなると
・戦闘不能になる毎に、何度もなのか一度だけなのか
・複数が同時に戦闘不能になった場合の挙動
・想定される防具の数はどれくらいなのか
あたりの情報が欲しいです。
------------------------------------------------------------------------------------
へぷたなすくろーる
http://heptanas.mamagoto.com/
VXAceのスクリプト素材及びイベント講座などをやっています。
------------------------------------------------------------------------------------
へぷたなすくろーる
http://heptanas.mamagoto.com/
VXAceのスクリプト素材及びイベント講座などをやっています。
------------------------------------------------------------------------------------
Re: Ace 瀕死時に××
言葉足らずで申し訳ありません。
瀕死時というのは、HPが黄色くなるライン(たしか20%以下だと思います)です。
戦闘中1回のみの発動を想定しています。
アクター複数が同時に瀕死時になった場合はアクターIDの小さい順若しくは、メニュー欄の上のキャラ順でお願いします。
防具は30以上は作る予定です。
イメージとしては、FF6のバリアリングのような感じです。
可能であれば、是非宜しくお願いします。
瀕死時というのは、HPが黄色くなるライン(たしか20%以下だと思います)です。
戦闘中1回のみの発動を想定しています。
アクター複数が同時に瀕死時になった場合はアクターIDの小さい順若しくは、メニュー欄の上のキャラ順でお願いします。
防具は30以上は作る予定です。
イメージとしては、FF6のバリアリングのような感じです。
可能であれば、是非宜しくお願いします。
Re: Ace 瀕死時に××
なんとなく作ってみました。色々無駄な機能がついているので、競合の可能性が高いと思います。
なお、動作はデフォルト戦闘でのみ保証されます。ATBとかは動作保証対象外なのでお許しください。
※スクリプトは修正したので、下の返信からDLしてください。
ちなみに、瀕死(HPが黄色くなる状態)はHP25%未満となります。
なお、動作はデフォルト戦闘でのみ保証されます。ATBとかは動作保証対象外なのでお許しください。
※スクリプトは修正したので、下の返信からDLしてください。
ちなみに、瀕死(HPが黄色くなる状態)はHP25%未満となります。
最後に編集したユーザー faida [ 2016年12月09日(金) 21:11 ], 累計 1 回
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
Re: Ace 瀕死時に××
迅速な対応、大変感謝申し上げます。
デフォルトでは要求通り、きちんと作動してくれます。
ただ、戦闘終了後フィールドにおいて、一度戦闘中にする処理を行うスクリプトを使用しているため
条件を満たす場合、フィールドでも作動してしまいます。
大変申し訳ないのですが、スイッチor変数が特定の番号の場合、処理を無効する仕様を付け加えては
いただけないでしょうか?
お時間があるならば、何卒宜しくお願いします。
デフォルトでは要求通り、きちんと作動してくれます。
ただ、戦闘終了後フィールドにおいて、一度戦闘中にする処理を行うスクリプトを使用しているため
条件を満たす場合、フィールドでも作動してしまいます。
大変申し訳ないのですが、スイッチor変数が特定の番号の場合、処理を無効する仕様を付け加えては
いただけないでしょうか?
お時間があるならば、何卒宜しくお願いします。
Re: Ace 瀕死時に××
スイッチにしました。ついでにいらない処理を消したりなんだりしたので、スイッチor変数が特定の番号の場合、処理を無効する仕様
スイッチ無効化がいらない方もお手数ですが再DLをお願いします。
コード: 全て選択
=begin
◆概要
瀕死時に効果を発動したり特徴を付加したりします。
◆機能
・メモ欄に<瀕死時効果 id, n>と記入すると、瀕死時に以下の効果を発揮します。
idが0…指定コモンイベント予約(予約するだけ)
1…HPをn回復 2…HPをn%回復 3、4は1、2のMP版
5…IDnのステート付加 6…パラメータnの弱体解除しつつ強化付加(2段階)
・メモ欄に<瀕死時特徴 [code, data_id, value]>と記入すると、
その特徴を付加します。
・ステートのメモ欄に<瀕死付加時アニメ id>と記入すると、瀕死付加時のみ
そのアニメを再生します。
・地味にコモンイベント複数予約のおまけつき。
◆仕様
・特徴が分かりづらいのは仕様です。わかりやすいようにリメイク予定。
◆使用上の注意
・★……エイリアス ●……再定義 ○……新規定義
◆作者:faida @faida3983
◆更新履歴
ver1.0 : 公開
ver1.1 : 拙作「ログ出力」に対応
ver1.2 : 戦闘途中からアクターが加入する場合のエラー修正
ステートごとにアニメ指定できるように
ver1.3 : 割合回復の不具合修正
=end
module FAI_CECF
# 設定項目:コモンイベント予約時にアクターID(か敵の並び順)を代入する変数ID
# 代入しない場合は0
COMMON_EVENT_VAR_ID = 1
# 設定項目:HP回復時に表示するアニメーション(表示しない場合は0)
HP_RECOVER_ANI_ID = 37
# 設定項目:MP回復時に表示するアニメーション(表示しない場合は0)
MP_RECOVER_ANI_ID = 38
# 設定項目:指定なしステート付加時に表示するアニメーション(表示しない場合は0)
ADD_STATE_ANI_ID = 43
# 設定項目:強化付加時に表示するアニメーション(表示しない場合は0)
ADD_BUFF_ANI_ID = 43
# 設定項目:強化付加時に持続するターン数
# "$game_variables[2]"ってやると(変数ID2)ターン続きます。
ADD_BUFF_TURN = "5"
# 設定項目:無効化するスイッチID(使用しない場合は0)
FORBID_SW_ID = 0
end
class RPG::BaseItem
def crisis_effects
return @crisis_effects if @crisis_effects
@crisis_effects = []
note.each_line{|line|
if line =~ /<瀕死時効果\s*(\d+)\s*\,\s*(\d+)>/
@crisis_effects << [$1.to_i, $2.to_i]
@crisis_effects[-1][1]/=100.0 if [2,4].include?(@crisis_effects[-1][0])
end
}
@crisis_effects
end
def crisis_features
return @crisis_features if @crisis_features
@crisis_features = []
note.each_line{|line|
if line =~ /<瀕死時特徴\s*(\[.+\])>/
@crisis_features << eval($1)
end
}
@crisis_features
end
end
class RPG::State
def crisis_add_anime
return @crisis_add_anime if @crisis_add_anime
@crisis_add_anime = FAI_CECF::ADD_STATE_ANI_ID
@crisis_add_anime = $1.to_i if note =~ /<瀕死付加時アニメ\s*(\d+)>/
@crisis_add_anime
end
end
#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
include FAI_CECF
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :reserved_ce_battlers # なんか
#--------------------------------------------------------------------------
# ★ オブジェクト初期化
#--------------------------------------------------------------------------
alias fai_cecf_initialize initialize
def initialize
fai_cecf_initialize
@reserved_common_event_ids = []
@reserved_ce_battlers = []
end
#--------------------------------------------------------------------------
# ★ コモンイベントの呼び出しを予約
#--------------------------------------------------------------------------
alias fai_cecf_reserve_common_event reserve_common_event
def reserve_common_event(common_event_id)
if @common_event_id > 0
return @reserved_common_event_ids << common_event_id
end
fai_cecf_reserve_common_event(common_event_id)
end
#--------------------------------------------------------------------------
# ★ コモンイベントの呼び出し予約をクリア
#--------------------------------------------------------------------------
alias fai_cecf_clear_common_event clear_common_event
def clear_common_event
fai_cecf_clear_common_event
if !@reserved_common_event_ids.empty?
fai_cecf_reserve_common_event(@reserved_common_event_ids.shift)
end
end
end
class Game_BattlerBase
include FAI_CECF
alias fai_cecf_initialize initialize
def initialize
fai_cecf_initialize
@crisis_effects = []
end
def crisis_effects
feature_objects.collect{|obj|obj.crisis_effects}.flatten(1)
end
def crisis_features
return [] if !$game_party.in_battle
return [] if FORBID_SW_ID > 0 && $game_switches[FORBID_SW_ID]
return [] if hp == 0 || !@mhp || hp >= @mhp / 4
feature_objects.collect{|obj|obj.crisis_features}.flatten(1).collect{|arr|
RPG::BaseItem::Feature.new(arr[0], arr[1], arr[2])
}
end
alias fai_cecf_all_features all_features
def all_features
fai_cecf_all_features + crisis_features
end
#--------------------------------------------------------------------------
# ★ リフレッシュ
#--------------------------------------------------------------------------
alias fai_cecf_refresh refresh
def refresh
fai_cecf_refresh
@mhp = mhp
end
end
class Game_Battler < Game_BattlerBase
include FAI_CECF
#--------------------------------------------------------------------------
# ★ ステートの付加
#--------------------------------------------------------------------------
alias fai_cecf_add_state add_state
def add_state(state_id)
cf = self.crisis_effects
fai_cecf_add_state(state_id)
if cf != self.crisis_effects
a = self.crisis_effects; cf.each{|eff|i = a.index(eff); a[i] = nil if i}
@crisis_effects += a.compact
end
end
#--------------------------------------------------------------------------
# ★ 戦闘開始処理
#--------------------------------------------------------------------------
alias fai_cecf_on_battle_start on_battle_start
def on_battle_start
fai_cecf_on_battle_start
init_crisis_effects
end
def init_crisis_effects
@crisis_effects = self.crisis_effects
end
def check_crisis_effects
return if FORBID_SW_ID > 0 && $game_switches[FORBID_SW_ID]
return if hp >= mhp / 4 || hp == 0
@crisis_effects.each_with_index{|arr|
case arr[0]
when 0
if COMMON_EVENT_VAR_ID > 0
$game_temp.reserved_ce_battlers << i = actor? ? id : -index
end
$game_temp.reserve_common_event(arr[1])
when 1
self.hp += arr[1]
self.animation_id = HP_RECOVER_ANI_ID if HP_RECOVER_ANI_ID > 0
when 2
self.hp += (arr[1] * mhp).to_i
self.animation_id = HP_RECOVER_ANI_ID if HP_RECOVER_ANI_ID > 0
when 3
self.mp += arr[1]
self.animation_id = MP_RECOVER_ANI_ID if MP_RECOVER_ANI_ID > 0
when 4
self.mp += (arr[1] * mmp).to_i
self.animation_id = MP_RECOVER_ANI_ID if MP_RECOVER_ANI_ID > 0
when 5
add_state(arr[1])
anime_id = $data_states[arr[1]].crisis_add_anime
self.animation_id = anime_id if anime_id > 0
when 6
remove_buff(arr[1]) if @buffs[arr[1]] < 0
add_buff(arr[1], 1); add_buff(arr[1], eval(ADD_BUFF_TURN))
self.animation_id = ADD_BUFF_ANI_ID if ADD_BUFF_ANI_ID > 0
end
@crisis_effects[@crisis_effects.index(arr)] = nil
}
@crisis_effects.compact!
end
end
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ● アクターを加える
#--------------------------------------------------------------------------
alias fai_cecf_add_actor add_actor
def add_actor(actor_id)
$game_actors[actor_id].init_crisis_effects unless @actors.include?(actor_id)
fai_cecf_add_actor(actor_id)
end
end
class Game_Interpreter
include FAI_CECF
#--------------------------------------------------------------------------
# ★ 呼び出し予約されたコモンイベントを検出/セットアップ
#--------------------------------------------------------------------------
alias fai_cecf_setup_reserved_common_event setup_reserved_common_event
def setup_reserved_common_event
if $game_temp.common_event_reserved?
if !$game_temp.reserved_ce_battlers.empty?
n = $game_temp.reserved_ce_battlers.shift
$game_variables[COMMON_EVENT_VAR_ID] = n
end
end
fai_cecf_setup_reserved_common_event
end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ★ イベントの処理
#--------------------------------------------------------------------------
alias fai_cecf_process_event process_event
def process_event
fai_cecf_process_event
all_battle_members.each{|a|a.check_crisis_effects}
end
#--------------------------------------------------------------------------
# ★ 戦闘行動の処理
#--------------------------------------------------------------------------
alias fai_cecf_process_action process_action
def process_action
fai_cecf_process_action
all_battle_members.each{|a|a.check_crisis_effects}
end
end
※2019/10/3 こちらのトピックの指摘事項(バグ修正)を反映
最後に編集したユーザー faida [ 2019年10月03日(木) 22:03 ], 累計 2 回
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
Re: Ace 瀕死時に××
修正ありがとうございます。
動作を確認しましたが、無事にスイッチで管理する事が出来ました。
faida様には以前もリクエストスクリプトを作ってくださったので、制作の上で非常に助かっています。
心より、感謝申し上げます。
この返信をもちまして、解決済みとさせて頂きます。
動作を確認しましたが、無事にスイッチで管理する事が出来ました。
faida様には以前もリクエストスクリプトを作ってくださったので、制作の上で非常に助かっています。
心より、感謝申し上げます。
この返信をもちまして、解決済みとさせて頂きます。