Aqua Shop Gonbe(SL)日記 -3ページ目

初めてのスクリプトなのだ。

一歩進んでは二・三歩下がっているような今日このごろ・・・
アレコレアレコレと試行錯誤しながらも、進めているのですが、
やればやるほど、色々な事に気が付き、アレコレとできないだろうか?
等と時間を費やしています。(ノ_・。)

ザッと言うと、RPG定番的な、「開錠スキル」とか「罠はずしスキル」とか、「呪いを解くスキル」とかが欲しいな~。。。と思い始めたのが発端でした。

これらを定義するだけなら、簡単なのですが、「100%成功ってのも面白くないし・・・」とか「やっぱLvが高いと成功しやすい方が・・・」とか。。。
アレコレと考えてしまうのですよね。

そんで、イベントコマンドの組み合わせで、コモンイベントとして色々と試した結果、「やっぱスクリプトで処理しないと無理があるな・・・」と言う方向に進みだしました。

んで、アレコレやっていて、一番基本的な部分で、パーティー内に「開錠スキル」を持っている人が居るか?と言う判定方法に行き詰まったのでした。

イベントコマンドでは、「誰々がXXスキルを習得している場合」と言う指定は可能ですが、「パーティー内の誰かがXXスキルを習得している場合」と言う指定が無い。
今欲しいのは後者なので、それをスクリプトで対処できないか?
と始めたのでした。

多分スクリプトを分かる人なら、初歩的の初歩と言う程度の内容だと思いますが、俺にとっては未知の世界。
色々人のスクリプトを見て、とりあえずそれっぽいのを作ってみました。
こんな感じ↓

#=========================================================
# ■ Game_Interpreter
#=========================================================
class Game_Interpreter
  #--------------------------------------------------------
  # ○ スキル所持判定関数 
  #    指定スキル習得者がパーティー内に居ればTrue
  #--------------------------------------------------------
  def specified_skill(sk_id)#引数はスキル番号
@id=sk_id
$game_party.members.each do |actor|
return true if actor.skill_learn?($data_skills[@id])
end
return false
  end
end


こんな感じでイベント内で使うものですね。
引数はスキル番号で、パーティーメンバー内の誰かが、該当スキルを習得していればTRUEが戻り、誰も居なければFALSEが戻ると言う単純なものです。

つうことで、初歩の初歩ですが、ついにスクリプトに手を出してしまったのでした。
あ~。。。面倒だな。(-。-;)


今度はワールドマップの導入を検討中

やっとクエストシステムの導入も完了し、第三章の作りこみを再開したのですが・・・

今度は突然ワールドマップを導入してみようか。。。(-。-;)

等と思い始めてしまいました。
正直第三章では必要無いのですよ。
なにせ行動範囲は以下のMAP範囲程度ですからね。


チマチマ歩いてもあっと言う間に到着する範囲です。
はっきり言って、町中の方が遥かに広い!(+_+)

ですが、今後話が先に進むに連れて、行動範囲もドンドンと広がるわけで・・・

つうても、本当に広大なMAPを作る気も無いのですが、「ワールドマップが有ったら、良いかも知れんな~・・・」とも思ってしまうのです。

現在候補に上がっているのは、今回も
Code Crushさんのスクリプトです。
これがまた良くできているんですよ。
サンプルも提供されていて、実際に動きを確認しましたが、「使わなくても、無理やりにでも使いたい!」と思わせるくらい、素晴らしい物でした。

なので、またまた寄り道で、ワールドマップを導入してみよう・・・
になってしまいました。
ふぅ~・・・また検証が大変なんだけどな。
しょうがないな。
(・・。)ゞ

クエストシステム導入の方向性

先日から検討しているCode Crushさんのクエストシステムですが、その後色々と考え、やはり「可能なら使いたい!」と言う方向に向いております。

自分が考えていた仕様と異なった点は幾つか有りました。
1.クエストのキャンセル機能
 クエストシステムの内部的にはキャンセルも可能なようでしたが、クエスト一覧からキャンセルする機能は無く、それを組み込もうとしましたが、今の知識レベルでは難しく、挫折しました。

2.確認リストのバリエーション
 ある場面では受付可能なクエスト一覧だけが、レベル指定で表示されるものが欲しかったのですが、これもそのような画面を作りこまないと駄目で、これまた気力が萎えました。(ノ_・。)
分かってしまえば、なんとかなりそうな感じでもあるんですけどね。
今すぐは無理そうです。

3.クリア時の実績ポイント管理
 これは必須で、クエスト毎に実績ポイントの付与をして、一定値になったら、昇格試験を受けられると言う仕組みです。
 システム内で自動昇格では無くて、個別イベントで実績ポイントの値を条件に発生するようにしたいと考えていました。
 現状のシステムだと、ランク管理と言う形態で、クリア時点でランクアップするかしないかの設定になってます。
 これをランクでは無くて、実績ポイントで管理したかったのですね。

大きなポイントとしては上記3点位かな?
で、結論として、絶対に譲れないのは3の実績ポイント管理だけなので、そこだけ改造してみる事にしました。

結果・・・

上手く行きました!v(^-^)v

元もとのシステムの画面は以下のようになってました。
ギルドクエスト画面



メニューからの確認画面



左下の小窓枠にはランクの状態が表示されています。

これらに対して、実績ポイントを追加しランク表示を外したのが以下の画面。
ギルドクエスト画面



メニューからの確認画面



ランクが表示されていた場所に実績ポイントが表示されるようにしました。
そして、報酬画面にもクリア時の報酬として実績ポイントが出てくるようにしています。

実績ポイントは、通常のツクール内の変数に直接書き込んで管理する形式にしました。
これなら、一般のイベントからも簡単に参照できますしね。

一応、関連する箇所は全て直したと思います。後の問題は運用でカバーすると言う方向で進めたいと思います。

つうことで、これから本番用プロジェクトに組み込んでテストしてみようと思います。
ついでだから、今までのクエスト扱いの物は、イベント系クエストとして定義して、このシステムを利用した形態に変更してみようとも思います。
それで上手く行くなら、多分問題無く使えると言う事でしょう。

また第一章から再検証なので、メチャクチャ時間がかかりますが、ここまで思いつくまま、メチャクチャ作りこんできたので、その整理も兼ねてポチポチと頑張ってみましょう。(;^_^A

これで導入したいスクリプトは全部だよな?
今の状態で鍛冶屋も作れるし、スキルショップも可能になったし・・・

そか、オート戦闘と言うのがあったな・・・

いいか、俺はオート嫌いだからな、導入しないでおこうっと。