アクターの属性有効度をイベントコマンド(スクリプト)で変更するには、どう記入すればよいでしょうか?
よろしくお願いします。
【解決済み】【RGSS3】属性有効度をイベントコマンド(スクリプト)で変更したい
【解決済み】【RGSS3】属性有効度をイベントコマンド(スクリプト)で変更したい
最後に編集したユーザー タツミ [ 2021年7月06日(火) 10:10 ], 累計 1 回
Re: 【RGSS3】属性有効度をイベントコマンド(スクリプト)で変更したい
どうもこんばんは
結論を先に言えばデフォルトでは無理ですね
ツクールのゲームデータはゲーム中に値の変動が起きない静的データと
値が変動する動的データ(ゲームオブジェクト)の二種類に分類されます。
アクターに限定すればRPG::ActorとGame_Actorという二つのクラスですね。
データベースエディタ上で編集可能なものは全て静的データに分類されアクターの特徴欄も該当します。
アクターの特徴欄に属性有効度を変更する特徴を増やす、というのは確かに可能ですが
静的データはゲームプレイ中に値が変動する事を想定していないので
セーブデータに残らない、シャットダウンしないと他セーブデータにも影響を及ぼす等の副作用が発生します。
隠し装備や隠しステートが反映される機構を作る、
あるいは専用の属性有効度変更変数を作る、など間接的な仕組みを作る事で実現可能になります。
実装の一例として以下のコードをスクリプトに加えた上で
イベントコマンド>スクリプトから以下のコードを実行すれば
該当のステートの特徴欄だけ常に反映されるようになります。
結論を先に言えばデフォルトでは無理ですね
ツクールのゲームデータはゲーム中に値の変動が起きない静的データと
値が変動する動的データ(ゲームオブジェクト)の二種類に分類されます。
アクターに限定すればRPG::ActorとGame_Actorという二つのクラスですね。
データベースエディタ上で編集可能なものは全て静的データに分類されアクターの特徴欄も該当します。
アクターの特徴欄に属性有効度を変更する特徴を増やす、というのは確かに可能ですが
静的データはゲームプレイ中に値が変動する事を想定していないので
セーブデータに残らない、シャットダウンしないと他セーブデータにも影響を及ぼす等の副作用が発生します。
隠し装備や隠しステートが反映される機構を作る、
あるいは専用の属性有効度変更変数を作る、など間接的な仕組みを作る事で実現可能になります。
実装の一例として以下のコードをスクリプトに加えた上で
コード: 全て選択
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ○ セットアップ
#--------------------------------------------------------------------------
alias :_old_setup :setup
def setup(actor_id)
@hide_states = []
_old_setup(actor_id)
end
#--------------------------------------------------------------------------
# ○ 特徴を保持する全オブジェクトの配列取得
#--------------------------------------------------------------------------
alias :_old_feature_objects :feature_objects
def feature_objects
_old_feature_objects + @hide_states.collect{|state_id| $data_states[state_id]}
end
#--------------------------------------------------------------------------
# ● 隠しステートの追加
#--------------------------------------------------------------------------
def add_hide_state(state_id)
return unless (1...$data_states.size).include?(state_id)
return if @hide_states.include?(state_id)
@hide_states.push(state_id)
end
#--------------------------------------------------------------------------
# ● 隠しステートの削除
#--------------------------------------------------------------------------
def delete_hide_state(state_id)
@hide_states.delete(state_id)
end
end
該当のステートの特徴欄だけ常に反映されるようになります。
コード: 全て選択
# パーティメンバーの先頭アクターにステート10の特徴を適用する
$game_party.leader.add_hide_state(10)
# ステート10を削除する
$game_party.leader.delete_hide_state(10)
Re: 【RGSS3】属性有効度をイベントコマンド(スクリプト)で変更したい
>名無し蛙さん
回答いただきありがとうございます。
参考にさせていただきます。
回答いただきありがとうございます。
参考にさせていただきます。