今更なオブリビオンブログ
おもにMOD関連のメモを書いていくと思います、MODをいじったり、作ってるのが楽しいです。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MOD作り4
魔法を実行する際に、PCのレベルや能力値が低いと実行できないようにしたいと思います。
そうしないと、0を下回った場合、カウントが一回転して最大値になってしまうからです。

下記のように条件を書き加えました。


short bDecision

~~~~~~~~~~~~~~省略1

if pcLevelSaved > 1
 set bDecision to 1
endif
if nHea > 10
 set bDecision to 1
endif
if nStr > 10
 set bDecision to 1
endif
if nInt > 10
 set bDecision to 1
endif
if nWil > 10
 set bDecision to 1
endif
if nAgi > 10
 set bDecision to 1
endif
if nSpd > 10
 set bDecision to 1
endif
if nEnd > 10
 set bDecision to 1
endif
if nPer > 10
 set bDecision to 1
endif
if nLuc > 10
 set bDecision to 1
endif

;======================================
;First run
;最初に条件が合ったら以下を実行する
;======================================
if bDecision == 1

~~~~~~~~~~~~~~省略2

elseif bDecision != 1
 MessageBox "レベルか能力値が低すぎるため実行できません"
endif
end



処理の内容としては、まず「bDecision 」という変数を設定してから、条件をそれぞれ判定してゆき、
合っていたら1を入れる、合わなかったらいれない、そして最後のIf文の「省略2」で
「bDecision 」が1だった場合に実行する、違ったら実行しないでMessageBoxを出す、というものです。



…ですが、うまく、思ったとおりに動いてくれません。




これは、気づくまでかなり悩みました。
プログラミングが本職じゃないのに、これを一目見て違うと分かった人はすごいです。
プログラマー向きです。
自分は気づくまで、丸一日悩みました。


この書き方がなぜダメなのかというと、上のように、If文を並べて書いた場合は、
一つずつ判定していき、途中で一つでも条件が合えばGoサインが出る、
つまり、どれか一つでも条件があっていれば実行される、という意味になるからです。


そのため、今回のような場合は、条件を入れ子にして、一度で判定しないといけなかったんです。
で、下のように書き直しました。


short bDecision

~~~~~~~~~~~~~~省略1

if pcLevelSaved > 1 && nHea > 10 && nStr > 10 && nInt > 10 && nWil > 10 && nAgi > 10 && nSpd > 10 && nEnd > 10 && nPer > 10 && nLuc > 10
 set bDecision to 1
endif

;======================================
;First run
;最初に条件が合ったら以下を実行する
;======================================
if bDecision == 1

~~~~~~~~~~~~~~省略2

elseif bDecision != 1
 MessageBox "レベルか能力値が低すぎるため実行できません"
endif
end



これで、ようやく思ったとおりに動いてくれました。

…でも、これだと「bDecision」という変数を用意した意味がまったく無い…まあ、いいか。
スポンサーサイト

テーマ:PCゲー - ジャンル:ゲーム

コメント

コメントの投稿














管理者にだけ表示を許可する


トラックバック
トラックバック URL
http://5588ob.blog.fc2.com/tb.php/7-312114e4
この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。