というか本当に生存報告になりそうな
|
+ + + + + + + + + +
まずひとくちに魔物図鑑って言っても、
すでに素晴らしい素材を提供してくださってるサイト様はたくさんありますので
RGSS慣れしてない方はそちらの素材の導入を考えること。
もしエラーが出ても泣かずに
ありがとう!と絶対なんとかして使いたいんです!の気持ちをこめて
サイトの管理人さんに相談してみること。
基本的に競合とか考えにくいジャンルだけど。うーん。
------------------------------
私は自分の好きなように表示したかったので
Wonderer's Innさまの辞書スクリプトをお借りしました。
こちらの辞書は項目のリストが表示され、見たい項目を選択・決定すると
解説が表示されるというシンプルなものです。
デフォルトで用意されている命令だけでも充分機能を果たしてくれますが
魔物図鑑として使うことを考えたとき、
直接解説にステータスなどのデータを打ち込むと変更したときに大変なので
データベースで設定したものを呼び出して表示することにします。
んでは、エネミーのデータはどこにあるのか。
大雑把に言って $data_enemies というところにエネミーのデータがあります。
これは Enemy クラスの配列…グダグダになるのでやめよう。
ていうか私も自信ない。
要するに、データベースで設定したエネミーのデータが順番に入っています。
データベース10番のエネミーのデータは
$data_enemies[10]
で得られます。
さらに、このエネミーのデータは名前や画像やパラメータなどが
まとめて入ったものになっています。
まとめると、データベース10番のエネミーの最大HPっていくら?というのは
$data_enemies[10].maxhp
と記述することで得られるようになります。
あとは欲しいデータに合わせて、
$data_enemies[10].name (名前)とか
$data_enemies[10].str (腕力)とか記述すれば良い訳です。
何を書いたらどのデータが得られるかは、
ヘルプの RGSSリファレンス→ゲームライブラリ→RPGXPデータ構造→RPG::Enemy
を見ると、対応が書いてあります。
ヘルプなんて頭っから読む必要なんか無いです。
自分が必要としたときに参照できりゃいいんですよ!
コレの確認には、イベントスクリプト等で
p $data_enemies[10].name
と記述し実行してみましょう。
p というのは、その後に記述した内容を小さなダイアログボックスに
表示する命令です。
上のスクリプトを実行すると、データベース10番のエネミーの名前が
ダイアログボックスに表示されるはずです。
ちょっとだけ見えてきましたかね?
それでは上で得られたエネミーのデータをウィンドウに表示しましょう。
上で述べた辞書スクリプトの編集を前提に考えてみます
ので、素材の原文を片手に読んでいただければな、と思います。
------------------------------
スクリプト156行目(以下、原文の行数。ずれている場合があります)~の
Window_Wordinfo というのが辞書の詳細な内容を表示するウィンドウです。
この表示内容をカスタマイズしてゲームに使いましょう。
さて、169行目からの refresh という命令の中身が、
ウィンドウにどんな事を表示するかを決める部分になります。
具体的に弄るのは173行目の when 1 から
187行目の when 3 の1行手前までで
これが1つの項目の設定部分になります。
大体の使い方は、素材の紹介ページに詳しいことが書いてあるのでそちらを。
実際のゲーム画面では、項目名の下に
174行目の content が表示され、175行目の read がその上に振られます。
そして解説の本文がtext(2~)の部分になる訳ですが
ここに先程見つけたエネミーのデータベースの内容を表示してみましょう。
177行目の
text2 = "これだけの長さの文が表示できます"
を
text2 = $data_enemies[10].name
と書き換えてテストプレイしてみましょう。
テストプレイする際には辞書を呼び出さなければいけないので
例えばイベントスクリプトで
word_plus([1])
$scene = Scene_Information.new
と記述したイベントをつくり、それを実行してみます。
word_plus([1]) は辞書に when 1 の項目を追加する命令、
$scene = Scene_Information.new は辞書を呼び出す命令です。
すると、開いた辞書には when 1 の項目が追加され、
解説の2行目はデータベース10番目のエネミーの名前に変わっているはず。
更に確認してみましょう。
データベース10番のエネミーの名前を変え、保存してテスト、辞書を開きます。
するともちろん辞書内の記述も書き換わってますね。
「敵の名前:(データベース10番のエネミーの名前)」みたいにしたい場合は
text2 = "敵の名前:" + $data_enemies[10].name
なんてすると出来ちゃいます。
そのまま表示したい部分は "" でくくる。データを表示するならくくらない。
両方を繋げるときは半角の + を間に入れる。
上手く表示されない、エラーが出る、
そんなときはどこか書き間違えていないか確認し
上手くいくまで根気よくリトライ。
こんな感じでガンガン書き換えていきましょう。
------------------------------
そしてもうひとつ、魔物図鑑として重要なことは
一度エンカウントした(or倒した)敵が図鑑に載る ということですかね。
改造が容易なので、今回はエンカウント方式だけ解説します。
前提として、when n の項には、データベースn番のエネミーの解説を
書いておくようにします。
そうしなくても出来ますが、直感的に分かり難いので今はやめます。
方針としては、
●1 データベースn番の敵にエンカウントしたら
●2 魔物図鑑に when n の項目を追加する
とすればよいわけです。
●1 でエンカウントした敵がデータベースの何番か?が分かれば
●2 の項目の追加は先程の辞書のテストで使った word_plus([n]) で
出来てしまいますね。
ではどこを見ればいいかといいますと
デフォルトのスクリプト、Game_Troop のセクションを開きましょう。
ここではトループ及びエンカウントに関する動作を作っています。
この中の26行目~、setup(troop_id) は
戦闘になる時、エンカウントしたトループから
トループを構成するエネミーを戦闘相手にセットする命令なので
そこからエネミーのデータを拾って、魔物図鑑に加えようと思います。
33行目の @enemies.push(Game_Enemy.new(troop_id, i)) の真下に
word_plus([troop.members[i].enemy_id]) と記述します。
これだけで、あとはエンカウントすると自動で魔物図鑑に追加されます。
troop.members[i].enemy_id ってどっから出てきた!というのは
31行目を見てください。
上でさんざんやった $data_enemies[10] とそっくりな
$data_enemies[troop.members[i].enemy_id] がありますね。
ここから troop.members[i].enemy_id はエネミーのデータベース番号だと
考えられる訳です。
実際ここではそれで上手く行くので、使えるものは使っちゃいましょ。
だいたいはこんな感じで魔物図鑑は出来上がるかと思います。
が、いろいろと汎用性や正しさを捨てた部分もありますし
最後のほうは疲れてきたんでおざなりです。すいません。
RGSSで何か新機能を作りたい人の指針にもなれば良いかなとは思います。
訂正、質問、分からない事等々はコメントにお願いしますねー。
すでに素晴らしい素材を提供してくださってるサイト様はたくさんありますので
RGSS慣れしてない方はそちらの素材の導入を考えること。
もしエラーが出ても泣かずに
ありがとう!と絶対なんとかして使いたいんです!の気持ちをこめて
サイトの管理人さんに相談してみること。
基本的に競合とか考えにくいジャンルだけど。うーん。
------------------------------
私は自分の好きなように表示したかったので
Wonderer's Innさまの辞書スクリプトをお借りしました。
こちらの辞書は項目のリストが表示され、見たい項目を選択・決定すると
解説が表示されるというシンプルなものです。
デフォルトで用意されている命令だけでも充分機能を果たしてくれますが
魔物図鑑として使うことを考えたとき、
直接解説にステータスなどのデータを打ち込むと変更したときに大変なので
データベースで設定したものを呼び出して表示することにします。
んでは、エネミーのデータはどこにあるのか。
大雑把に言って $data_enemies というところにエネミーのデータがあります。
これは Enemy クラスの配列…グダグダになるのでやめよう。
ていうか私も自信ない。
要するに、データベースで設定したエネミーのデータが順番に入っています。
データベース10番のエネミーのデータは
$data_enemies[10]
で得られます。
さらに、このエネミーのデータは名前や画像やパラメータなどが
まとめて入ったものになっています。
まとめると、データベース10番のエネミーの最大HPっていくら?というのは
$data_enemies[10].maxhp
と記述することで得られるようになります。
あとは欲しいデータに合わせて、
$data_enemies[10].name (名前)とか
$data_enemies[10].str (腕力)とか記述すれば良い訳です。
何を書いたらどのデータが得られるかは、
ヘルプの RGSSリファレンス→ゲームライブラリ→RPGXPデータ構造→RPG::Enemy
を見ると、対応が書いてあります。
ヘルプなんて頭っから読む必要なんか無いです。
自分が必要としたときに参照できりゃいいんですよ!
コレの確認には、イベントスクリプト等で
p $data_enemies[10].name
と記述し実行してみましょう。
p というのは、その後に記述した内容を小さなダイアログボックスに
表示する命令です。
上のスクリプトを実行すると、データベース10番のエネミーの名前が
ダイアログボックスに表示されるはずです。
ちょっとだけ見えてきましたかね?
それでは上で得られたエネミーのデータをウィンドウに表示しましょう。
上で述べた辞書スクリプトの編集を前提に考えてみます
ので、素材の原文を片手に読んでいただければな、と思います。
------------------------------
スクリプト156行目(以下、原文の行数。ずれている場合があります)~の
Window_Wordinfo というのが辞書の詳細な内容を表示するウィンドウです。
この表示内容をカスタマイズしてゲームに使いましょう。
さて、169行目からの refresh という命令の中身が、
ウィンドウにどんな事を表示するかを決める部分になります。
具体的に弄るのは173行目の when 1 から
187行目の when 3 の1行手前までで
これが1つの項目の設定部分になります。
大体の使い方は、素材の紹介ページに詳しいことが書いてあるのでそちらを。
実際のゲーム画面では、項目名の下に
174行目の content が表示され、175行目の read がその上に振られます。
そして解説の本文がtext(2~)の部分になる訳ですが
ここに先程見つけたエネミーのデータベースの内容を表示してみましょう。
177行目の
text2 = "これだけの長さの文が表示できます"
を
text2 = $data_enemies[10].name
と書き換えてテストプレイしてみましょう。
テストプレイする際には辞書を呼び出さなければいけないので
例えばイベントスクリプトで
word_plus([1])
$scene = Scene_Information.new
と記述したイベントをつくり、それを実行してみます。
word_plus([1]) は辞書に when 1 の項目を追加する命令、
$scene = Scene_Information.new は辞書を呼び出す命令です。
すると、開いた辞書には when 1 の項目が追加され、
解説の2行目はデータベース10番目のエネミーの名前に変わっているはず。
更に確認してみましょう。
データベース10番のエネミーの名前を変え、保存してテスト、辞書を開きます。
するともちろん辞書内の記述も書き換わってますね。
「敵の名前:(データベース10番のエネミーの名前)」みたいにしたい場合は
text2 = "敵の名前:" + $data_enemies[10].name
なんてすると出来ちゃいます。
そのまま表示したい部分は "" でくくる。データを表示するならくくらない。
両方を繋げるときは半角の + を間に入れる。
上手く表示されない、エラーが出る、
そんなときはどこか書き間違えていないか確認し
上手くいくまで根気よくリトライ。
こんな感じでガンガン書き換えていきましょう。
------------------------------
そしてもうひとつ、魔物図鑑として重要なことは
一度エンカウントした(or倒した)敵が図鑑に載る ということですかね。
改造が容易なので、今回はエンカウント方式だけ解説します。
前提として、when n の項には、データベースn番のエネミーの解説を
書いておくようにします。
そうしなくても出来ますが、直感的に分かり難いので今はやめます。
方針としては、
●1 データベースn番の敵にエンカウントしたら
●2 魔物図鑑に when n の項目を追加する
とすればよいわけです。
●1 でエンカウントした敵がデータベースの何番か?が分かれば
●2 の項目の追加は先程の辞書のテストで使った word_plus([n]) で
出来てしまいますね。
ではどこを見ればいいかといいますと
デフォルトのスクリプト、Game_Troop のセクションを開きましょう。
ここではトループ及びエンカウントに関する動作を作っています。
この中の26行目~、setup(troop_id) は
戦闘になる時、エンカウントしたトループから
トループを構成するエネミーを戦闘相手にセットする命令なので
そこからエネミーのデータを拾って、魔物図鑑に加えようと思います。
33行目の @enemies.push(Game_Enemy.new(troop_id, i)) の真下に
word_plus([troop.members[i].enemy_id]) と記述します。
これだけで、あとはエンカウントすると自動で魔物図鑑に追加されます。
troop.members[i].enemy_id ってどっから出てきた!というのは
31行目を見てください。
上でさんざんやった $data_enemies[10] とそっくりな
$data_enemies[troop.members[i].enemy_id] がありますね。
ここから troop.members[i].enemy_id はエネミーのデータベース番号だと
考えられる訳です。
実際ここではそれで上手く行くので、使えるものは使っちゃいましょ。
だいたいはこんな感じで魔物図鑑は出来上がるかと思います。
が、いろいろと汎用性や正しさを捨てた部分もありますし
最後のほうは疲れてきたんでおざなりです。すいません。
RGSSで何か新機能を作りたい人の指針にもなれば良いかなとは思います。
訂正、質問、分からない事等々はコメントにお願いしますねー。
PR
この記事にコメントする
無題
うわー。
あの辞典を改造して魔物図鑑を作るという時点で脱帽ものなのに自動的に加えていってるんですね。
あえていうならあれです。
word_plusはイベントスクリプトでしか使えないのでGame_Troopにもコピペしないといけないです。
あの辞典を改造して魔物図鑑を作るという時点で脱帽ものなのに自動的に加えていってるんですね。
あえていうならあれです。
word_plusはイベントスクリプトでしか使えないのでGame_Troopにもコピペしないといけないです。
うわー!必須追加事項!
てゆか、設定がめんどいのでどんどん楽しようとしていった結果です(苦笑)
少々敷居が高いものの自由度高く記述も容易で、使えるスクリプトなので
使いこなせる人が増えたらいいなぁと思って書かせていただきました。
しかもやっぱり書き落としたし!
上記方法を取る方は、新セクションを作って以下を全部コピペしてください!
場所は多分どこでもいいです。
#=======================================
# ■ Game_Troop
#---------------------------------------
# 戦闘時、エンカウントした敵を追加する
#=======================================
class Game_Troop
#-------------------------------------
# ● 用語集配列の追加
#-------------------------------------
def word_plus(numbers)
if $game_system.dictionary_words != nil
for number in numbers
unless $game_system.dictionary_words.include?(number.id)
$game_system.dictionary_words.push(number.id)
end
end
end
end
end
以上は word_plus([n]) を Game_Troop 内でも使えるように
機能をコピペしたものです。
他のシーンでも使いたい場合はこれをコピペすることで
どんどん使っていけるようになります。
例えば一度使ったアイテムを図鑑に載せるとかね。
不思議なダンジョンみたいな鑑定システムも出来るかもなんて思いました。
少々敷居が高いものの自由度高く記述も容易で、使えるスクリプトなので
使いこなせる人が増えたらいいなぁと思って書かせていただきました。
しかもやっぱり書き落としたし!
上記方法を取る方は、新セクションを作って以下を全部コピペしてください!
場所は多分どこでもいいです。
#=======================================
# ■ Game_Troop
#---------------------------------------
# 戦闘時、エンカウントした敵を追加する
#=======================================
class Game_Troop
#-------------------------------------
# ● 用語集配列の追加
#-------------------------------------
def word_plus(numbers)
if $game_system.dictionary_words != nil
for number in numbers
unless $game_system.dictionary_words.include?(number.id)
$game_system.dictionary_words.push(number.id)
end
end
end
end
end
以上は word_plus([n]) を Game_Troop 内でも使えるように
機能をコピペしたものです。
他のシーンでも使いたい場合はこれをコピペすることで
どんどん使っていけるようになります。
例えば一度使ったアイテムを図鑑に載せるとかね。
不思議なダンジョンみたいな鑑定システムも出来るかもなんて思いました。