こんばんは、
初めて利用させていただきます。
よろしくお願いします。
RPGツクールVXで使用できる、
スキルの属性有効度で命中率を変動できるスクリプトが欲しく、
リクエストさせて頂きました。
例えば、火属性のスキルがあって、
そのスキルを受ける側の、火属性に対する属性有効度が
Aなら命中率100%、
Bなら命中率95%、
Cなら命中率70%、
Dなら命中率50%、
Eなら命中率30%、
Fなら命中率5%・・・
と、問答無用で変化するようにしたいのです。
作成して頂ける方がおりましたら、よろしくお願いいたします。
RPGツクールVX 属性有効度で命中率を変動させる
Re: RPGツクールVX 属性有効度で命中率を変動させる
VXを持っていないのでどうなるかわかりませんが、とりあえずできたので。
※2016/6/27 コピペミス修正
※2016/6/29 不具合修正
コード: 全て選択
=begin
◆概要
スキルの命中率が属性有効度に依存するようになります。
◆機能
・スキルのメモ欄に <命中率属性有効度依存> と記入するとアレになります。
◆仕様
・データベース上のスキルの命中率も反映されてます。
◆使用上の注意
・エイリアスあり。
=end
# 設定項目:属性有効度が半減する場合、命中率をどうするか
# 0 : 何もしない
# 1 : ランクが1下がる扱いになる
# 2 : 命中率も半減する
# 3 : 命中率は20下がる
SHER_AES = 1
# 設定項目:属性有効度ごとの命中率 「[0, 」はダミーなので100の項から設定するように
SHER_ARR = [0, 100, 95, 70, 50, 30, 5]
#==============================================================================
# ■ RPG::Skill
#==============================================================================
class RPG::Skill
#--------------------------------------------------------------------------
# ○ 命中率属性有効度依存判定
#--------------------------------------------------------------------------
def skill_hit_depend_on_element_rate
@sher.nil? ? @sher = (note =~ /<命中率属性有効度依存>/ ? 0 : false) : @sher
end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 最終命中率の計算
#--------------------------------------------------------------------------
alias fai_sher_calc_hit calc_hit
def calc_hit(user, obj = nil)
if obj.is_a?(RPG::Skill) && obj.skill_hit_depend_on_element_rate
obj.element_set.inject(obj.hit){|r, id|r * element_hit(id) / 100}
else
fai_sher_calc_hit(user, obj)
end
end
end
class Game_Actor
def element_hit(element_id)
rank = self.class.element_ranks[element_id]
if SHER_AES == 1
for armor in armors.compact
rank -= 1 if armor.element_set.include?(element_id)
end
for state in states
rank -= 1 if state.element_set.include?(element_id)
end
end
hit = SHER_ARR[rank]
if SHER_AES == 2
for armor in armors.compact
hit /= 2 if armor.element_set.include?(element_id)
end
for state in states
hit /= 2 if state.element_set.include?(element_id)
end
elsif SHER_AES == 3
for armor in armors.compact
hit -= 20 if armor.element_set.include?(element_id)
end
for state in states
hit -= 20 if state.element_set.include?(element_id)
end
end
return hit
end
end
class Game_Enemy
def element_hit(element_id)
rank = self.enemy.element_ranks[element_id]
if SHER_AES == 1
for state in states
rank -= 1 if state.element_set.include?(element_id)
end
end
hit = SHER_ARR[rank]
if SHER_AES == 2
for state in states
hit /= 2 if state.element_set.include?(element_id)
end
elsif SHER_AES == 3
for state in states
hit -= 20 if state.element_set.include?(element_id)
end
end
return hit
end
end
※2016/6/27 コピペミス修正
※2016/6/29 不具合修正
最後に編集したユーザー faida on 2016年6月29日(水) 23:58 [ 編集 3 回目 ]
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
Re: RPGツクールVX 属性有効度で命中率を変動させる
faidaさん、ありがとうございます!
実際にスクリプト素材を使ってテストプレーしてみたのですが、
スキルのメモ欄に <命中率属性有効度依存> と記入したスキルで攻撃したところ
以下のようなエラーが現れ、テストプレーが強制終了してしまいました。
==============================
スクリプトの 50 行目で NameError が発生しました。
undefined local variable or method 'element_id' for #<Game_Enemy:0x3c0fb38>
==============================
これは一体、どういうことなのでしょうか・・・。
既にお手数をおかけしている身ではありますが、
今一度ご回答頂けると幸甚です。
実際にスクリプト素材を使ってテストプレーしてみたのですが、
スキルのメモ欄に <命中率属性有効度依存> と記入したスキルで攻撃したところ
以下のようなエラーが現れ、テストプレーが強制終了してしまいました。
==============================
スクリプトの 50 行目で NameError が発生しました。
undefined local variable or method 'element_id' for #<Game_Enemy:0x3c0fb38>
==============================
これは一体、どういうことなのでしょうか・・・。
既にお手数をおかけしている身ではありますが、
今一度ご回答頂けると幸甚です。
Re: RPGツクールVX 属性有効度で命中率を変動させる
テストしていなかったのでコードのミスに気づけなかったみたいですね。こちらの落ち度です、すみません。
上記事を修正しましたので、お手数ですが再度導入してください。
上記事を修正しましたので、お手数ですが再度導入してください。
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
Re: RPGツクールVX 属性有効度で命中率を変動させる
faidaさん、修正ありがとうございます!
もう一度テストプレーしてみましたが、
またよく似たエラーが発生してしまいました・・・。
敵から該当スキルによる攻撃を受けたときのエラー:
==============================
スクリプトの 50 行目で NameError が発生しました。
undefined local variable or method 'element_id' for #<Game_Actor:0x3702798>
==============================
こちらから該当スキルによる攻撃をしたときのエラー:
==============================
スクリプトの 50 行目で NameError が発生しました。
undefined local variable or method 'element_id' for #<Game_Enemy:0x3c44bf0>
==============================
せっかく修正して頂いた所、申し訳ないのですが、
原因などについてご解答頂けると幸甚です。
もう一度テストプレーしてみましたが、
またよく似たエラーが発生してしまいました・・・。
敵から該当スキルによる攻撃を受けたときのエラー:
==============================
スクリプトの 50 行目で NameError が発生しました。
undefined local variable or method 'element_id' for #<Game_Actor:0x3702798>
==============================
こちらから該当スキルによる攻撃をしたときのエラー:
==============================
スクリプトの 50 行目で NameError が発生しました。
undefined local variable or method 'element_id' for #<Game_Enemy:0x3c44bf0>
==============================
せっかく修正して頂いた所、申し訳ないのですが、
原因などについてご解答頂けると幸甚です。
Re: RPGツクールVX 属性有効度で命中率を変動させる
VXとAceで属性の仕様が異なるのをすっかり忘れていました。申し訳ありません。
何度もお手数をかけて申し訳ありませんが、おそらくこれで動くかと思います。
上記事を修正しましたので、そちらからどうぞ。
何度もお手数をかけて申し訳ありませんが、おそらくこれで動くかと思います。
上記事を修正しましたので、そちらからどうぞ。
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
Re: RPGツクールVX 属性有効度で命中率を変動させる
faidaさん、ありがとうございます!
おかげさまでエラーも出なくなり、
命中率に関してもイメージ通りの仕様になりました!
ゲーム製作も捗りそうです。本当にありがとうございました!
おかげさまでエラーも出なくなり、
命中率に関してもイメージ通りの仕様になりました!
ゲーム製作も捗りそうです。本当にありがとうございました!