ページ 1 / 1
【解決済み】「特徴」にスキルタイプ追加をする方法
Posted: 2016年1月13日(水) 23:10
by 湯喜乃湯
イベントで、「魔法」というスキルタイプを追加しようとした時、以下の二通りのやり方を試してみたのですが・・・
1.イベントスクリプトにて、
actor = $data_actors[1]
feature = RPG::BaseItem::Feature.new(41,2,)
actor.features.push(feature)
2.ステートの変更にて、解除条件を全て無効にしてステートの特徴に「スキルタイプ追加」を選ぶ。
1の場合、ゲームをセーブして再開した時に追加したスキルタイプが解除されてしまい、
2の場合、イベントでのバトルで敗戦後も継続を選択していた場合の敗戦後、ステートが解除されてしまいました。
どちらの方法でも良いのですが、追加したスキルタイプが解除されないような方法はあるでしょうか?
もしくは、まったく違った方法でスキルタイプを追加する方法はありますか?
お分かりになる方がいましたら、ご教授下さい。
よろしくお願いします。
Re: 「特徴」にスキルタイプ追加をする方法
Posted: 2016年1月14日(木) 00:00
by 子供戦車
2の場合なのですが、「敗北可」の「負けたときの処理」に該当キャラのステートを変更させるようにしてみてはいかがでしょうか?
Re: 「特徴」にスキルタイプ追加をする方法
Posted: 2016年1月14日(木) 00:59
by ゆわか
スクリプトの事はよくわからないので詳しい人にお任せしますが
2の場合、全回復しても多分ステートが消えるはずなので
ステートを付加するコモンイベントを一つ用意しておいて
全回復のイベントコマンド実行後や敗北イベント中などに
そのコモンイベントを呼び出すといいです。
また、スキルタイプの追加をデフォルトで行う場合は
初期のスキルタイプを設定した「職業」から
スキルタイプを変更した「職業」へ変更する方法があります。
イベントコマンド「職業の変更」を行うと、レベルが1 になってしまうので
直前に経験値を取得しておいて、職業変更後に経験値を戻してあげる必要があります。
また、HPやMPも現在の数値の変動が気になるようでしたら、全回復もしくは
事前に現在の値を取得しておいて、職業変更後に戻すといいです。
(どれも変数の操作で普通に取得できる情報です)
職業を変更するのは、少々面倒ですが
後々状態を監視する必要がないので
職業の変更とは別に行いたいということでないのであれば
2の方法よりオススメです。
また、スクリプト素材を使用する方法もあります。
「そのスキルタイプのスキルを1つも習得していない場合は自動的に隠す」というスクリプト素材が
「TOMOのスクリプト置き場」さんにあるようなので、試してみるのも一つかもしれません。
Re: 「特徴」にスキルタイプ追加をする方法
Posted: 2016年1月14日(木) 05:34
by TOMO
「ひきも記は閉鎖しました。」の「パッシブスキル」はどうですか?
こちらは武器データを利用してやっているので、
そちらの特徴で追加すれば出来るはずです
また、要望通りの動作だけをするスクリプトが必要な場合は、
以下のようなスクリプトを入れれば出来ます
コード: 全て選択
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 追加スキルタイプの取得
#--------------------------------------------------------------------------
alias ex_added_skill_types added_skill_types
def added_skill_types
if @actor_id == 1 and $game_switches[1]
ex_added_skill_types + [2]
else
ex_added_skill_types
end
end
end
(スイッチID:1がONの時、アクターID:1のキャラにスキルタイプ2を追加)
あと、あまり関係ないけど、
ゆわかさんの言う私のスクリプトは、
正確には「スキルタイプを自動的に隠す」です
そっちは説明文です・・・
Re: 「特徴」にスキルタイプ追加をする方法
Posted: 2016年1月14日(木) 12:13
by faida
手元に「全回復/戦闘不能で解除されないステート」のスクリプトがあったので添付しておきます。
コード: 全て選択
=begin
◆概要
ステート解除に条件をつけます。
◆機能
・ステートのメモ欄に<MP0解除>と書くことによりMPが0の時このステートを解除します。
・ステートのメモ欄に<全回復解除無し>と書くことにより全回復してもこのステートを
解除しません。
・ステートのメモ欄に<戦闘不能解除無し>と書くことにより戦闘不能になっても
このステートを解除しません。
◆仕様
・特になし。
◆使用上の注意
・○……新規定義 ★……エイリアス
=end
#==============================================================================
# ■ RPG::State
#==============================================================================
class RPG::State < RPG::BaseItem
#--------------------------------------------------------------------------
# ○ メモ欄の取得
#--------------------------------------------------------------------------
def memo_remove
@remove_mp0 = false
@notremove_recover_all = false
@notremove_die = false
self.note.each_line{ |line|
case line
when /<MP0解除>/; @remove_mp0 = "false"
when /<全回復解除無し>/; @notremove_recover_all = "false"
when /<戦闘不能解除無し>/; @notremove_die = "false"
end
}
end
def remove_mp0; memo_remove if @remove_mp0.nil?; @remove_mp0; end
def notremove_recover_all
memo_remove if @notremove_recover_all.nil?; @notremove_recover_all
end
def notremove_die; memo_remove if @notremove_die.nil?; @notremove_die; end
end
#==============================================================================
# ■ Game_BattlerBase
#==============================================================================
class Game_BattlerBase
#--------------------------------------------------------------------------
# ★ リフレッシュ
#--------------------------------------------------------------------------
alias mp0states_refresh refresh
def refresh
mp0states_refresh
states.each{|state|erase_state(state.id) if state.remove_mp0} if @mp == 0
end
#--------------------------------------------------------------------------
# ★ 全回復
#--------------------------------------------------------------------------
alias reallstates_recover_all recover_all
def recover_all
ss = states.select{|state|state.notremove_recover_all}
reallstates_recover_all
ss.each{|state|add_state(state.id)}
sort_states
end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ★ 戦闘不能になる
#--------------------------------------------------------------------------
alias diestates_die die
def die
ss = states.select{|state|state.notremove_die}.collect{|state|
[state.id, @state_turns[state.id], @state_steps[state.id]]
}
diestates_die
ss.each{|s|@states.push(s[0]); @state_turns[s[0]] = s[1]
@state_steps[s[0]] = s[2]
}
sort_states
end
end
Re: 「特徴」にスキルタイプ追加をする方法
Posted: 2016年1月14日(木) 15:48
by 湯喜乃湯
制作物のシステムやシナリオの展開上、TOMOさんのスクリプトが最適でしたので、そちらを使わせて頂きたいと思います。
子供戦車さん、ゆわかさん、TOMOさん、faidaさん、ご教授頂きありがとうございました。感謝です!!
>TOMOさん
教えて頂いたスクリプトの著作権表記関連や使用制限の指定などがありましたらお教え下さい。
使用させて頂く当方の制作物は、個人製作の有料同人ゲーム(年齢制限無し)の予定です。
よろしくお願いします。
Re: 「特徴」にスキルタイプ追加をする方法
Posted: 2016年1月14日(木) 21:04
by TOMO
こちらのか私のサイトのかは分かりませんが、
こちらに載せたのなら特に制限などはないです
サイトのなら、商用(営利目的)利用時に報告が必須なのと、
ゲームデータを暗号化せずに配布する事等による、
直接的・間接的な「二次配布」を禁止してます

(営利目的時は報告必須)

(私へのサポート依頼は不可)

(報告必須)

(報告必須)
が、報告はこれ自体がそれなのでOKですし、
暗号化さえすれば得に問題はないです
Re: 「特徴」にスキルタイプ追加をする方法
Posted: 2016年1月15日(金) 00:21
by 湯喜乃湯
>TOMOさん
使用上の注意、了解致しました。
使用させて頂くのは、お答え頂いた中に記載されていたTOMOさんの「追加スキルタイプの取得」スクリプトになります。
これにて当質問は解決済みとさせて頂きます。
お答え頂いた皆さん、本当に有難うございました!!