GOREとにゃんこの桃源郷

主観的にCDのレビューやら、日記やら、色々と。
ゴアとかメタルとかロックとか

2010/11/09(TUE) - 再びVX

2010-11-09 | RPGツクールMZ,VXace,VX,2000,95,1~5
 またまたRPGツクールVX。ステータス画面を少し変更した。属性耐性と状態(ステート)耐性を表示させることにした。耐性値の参照および並ばせ方が分からなかったため、某RGSS2素材サイトのスクリプトを流用した。(利用規約に反していないので問題無い。)
 しかし、同じ方法で参照し番号順に整列させても、属性耐性は反映されるのに状態耐性が反映されない。元々、どうやって耐性値を求めているのか、▼ ゲームオブジェクトのGame_Actorを覗いてみた。すると、やはり属性と状態では少し方法が違っていた。

#--------------------------------------------------------------------------
# ● 属性修正値の取得
# element_id : 属性 ID
#--------------------------------------------------------------------------
def element_rate(element_id)
rank = self.class.element_ranks[element_id]
result = [0,200,150,100,50,0,-100][rank]
for armor in armors.compact
result /= 2 if armor.element_set.include?(element_id)
end
for state in states
result /= 2 if state.element_set.include?(element_id)
end
return result
end
#--------------------------------------------------------------------------
# ● ステートの付加成功率の取得
# state_id : ステート ID
#--------------------------------------------------------------------------
def state_probability(state_id)
if $data_states[state_id].nonresistance
return 100
else
rank = self.class.state_ranks[state_id]
return [0,100,80,60,40,20,0][rank]
end
end
#--------------------------------------------------------------------------
# ● ステート無効化判定
# state_id : ステート ID
#--------------------------------------------------------------------------
def state_resist?(state_id)
for armor in armors.compact
return true if armor.state_set.include?(state_id)
end
return false
end

 これが、改造前のスクリプト。そう、ステートの判定だけ2種類に分別されているのだ。属性耐性はA~Fまでのランクを参照して、それから防具やステートに付属される"半減"のチェックを調べて、結果(result)を返している。対して状態耐性は、A~Fまでのランクを変数に代入することなく直接返している。そして、"●ステート無効化判定"のほうに、防具オプションにある"無効化するステート"のチェックを参照する。チェックが入っている場合は、ランク参照のような数値ではなく、"true"または"false"で返している。これが反映されない原因かと思ったので、処理を分けずどちらも数値で結果を返すように改変てみた。(●属性修正値の取得はそのまま、●ステート無効化判定は削除)

#--------------------------------------------------------------------------
# ● ステートの付加成功率の取得
# state_id : ステート ID
#--------------------------------------------------------------------------
def state_probability(state_id)
if $data_states[state_id].nonresistance
result = 100
else
rank = self.class.state_ranks[state_id]
result = [0,100,80,60,40,20,0][rank]
end
for armor in armors.compact
result = 0 if armor.state_set.include?(state_id)
end
return result
end

 やっていることは●属性修正値の取得と同様である。ただ、防具にステート無効化のチェックがある場合に成功率として0を返している。ただそれだけのことだ。


最新の画像もっと見る

5 コメント

コメント日が  古い順  |   新しい順
Unknown (かおりん)
2014-08-08 00:21:53
はじめまして
このステータス画面を是非使いたいのですが
スクリプト等の配布はできませんでしょうか
返信する
>>かおりん (GCC)
2014-08-08 21:02:58
お初です
興味を持ってくれてありがとうございます!

残念ながら当方、少しの改造は出来ても、
配布できるように作れる技術が無く・・・

スクリプト配布とか、憧れるんですけどね。
返信する
Unknown (かおりん)
2014-08-10 01:16:19
もしよろしければ参考にした素材サイトのスクリプトを教えていただけませんか
返信する
>>かおりん (GCC)
2014-08-11 17:39:30
ちからとかの表示はサンプルゲームのレクトール?だったかな。
耐性の表示はKamesoftの拡張ステータス画面ですね。
あとは自分で弄った感じです。
返信する
Unknown (かおりん)
2014-08-11 19:02:02
ありがとうございました
返信する

コメントを投稿