RPGツクール初心者質問スレ8

このエントリーをはてなブックマークに追加
899名無しさん@お腹いっぱい。
VX使用です。
Code Crush様の用語辞典スクリプト(http://www4.plala.or.jp/findias/codecrush/material/vx_rgss2/index.html)を用いて、
辞典用アイテムを使用→辞典画面が開くといった風にしたいのですが、
アイテム使用で呼び出すコモンイベントのスクリプトで
$scene = Scene_Dictionary(menu_index, category)
と入れてみたところ、menu_indexとcategoryに対してメソッドエラーが出ました。
素人考えですが、Game_interpreterにメソッドを追加すればいいのかと思い
def menu_index
end
def category
end
とだけ追加してみたところ、
wrong number of arguments(2 for 0)
とのエラーが出ました。
この場合、どうしたら良いのでしょうか?
どうぞご教授願います。
900名無しさん@お腹いっぱい。:2013/12/27(金) 10:19:10.90 ID:qL/kIrj/
>>898
そもそもスクリプトを理解していないと難しいと思われます
やり方としては、死ぬ直前に攻撃していたバトラーを取得し変数に記憶、処理が行われたら内容を消去、といった具合にしていけば可能だと思います
毒死等のスリップ死については、「倒したバトラーが存在しない=スリップ死」という判断で基本的には大丈夫だと思います

>>899
使い方が間違っています
シーンクラスの説明の所にmenu_indexとcategoryについての説明があります
menu_indexはシーンから戻ったとき、メニューのどのインデックスに戻ってくるか?です 数字で指定する必要があります
categoryはDESGINを1以外にしているときは-1以外に指定してはいけません 分からないのであれば-1固定でいいと思います
例を出すと、$scene = Scene_Dictionary(0,-1)とすれば、用語辞典を閉じたとき、メニューのアイテムにカーソルがあった状態で戻ってくるはずです
901名無しさん@お腹いっぱい。:2013/12/27(金) 14:52:47.19 ID:kqBfAEP8
>>900
ご回答ありがとうございます!
ご指摘頂いたとおり、$scene = Scene_Dictionary(0,-1)としてみましたらメソッドエラーはなくなりました!
しかし、アイテムを使用した際にwrong number of arguments(2 for 0) のエラーが変わらず出てしまいます。
Game_interpreterに追加してしまった間違いの部分は削除してあります。
こちらのエラーについては、どう対処すればよろしいでしょうか?
902名無しさん@お腹いっぱい。:2013/12/27(金) 15:13:02.46 ID:qL/kIrj/
ああ・・・良く見たらこの大元の説明が間違ってますね
$scene = Scene_Dictionary.new(0,-1)
でいけると思います
903899:2013/12/28(土) 00:48:55.69 ID:DnK/Ydr4
>>902
迅速なご回答ありがとうございます!
おかげさまで、今までのことは解決しました!

しかし今度は「スクリプト'ウィンドウクラス'の211行目でNoMethodErrorが発生しました」と出てしまい…。
undefined method 'size'for nil:NilClass
とのメッセージが出ています。以下、211行目付近です。
def refresh
return if row_max == 0
# 項目数が 0 でなければビットマップを作成し、全項目を描画
self.contents = Bitmap.new(self.width - 32, row_max * WLH)
w = self.width / @column_max
☆ for i in 0...$Dictionary.Dictionarydata.size
id = $game_system.Dictionary.keys[i]
x = i % @column_max * w
y = i / @column_max * WLH
self.contents.draw_text(x+4, y, self.width-32, WLH, $game_system.Dictionary[id].name)
end
end
☆の付いた行が211行目です。
重ね重ねすみませんが、ご指南お願いいたします。
904名無しさん@お腹いっぱい。:2013/12/28(土) 10:11:04.33 ID:yscGjYLH
少なくとも、元のスクリプトでは☆印のところは
for i in 0...$game_system.dictionary.size
となっているようですが、変な変更加えてませんか?
905899:2013/12/28(土) 14:50:51.08 ID:DnK/Ydr4
あああ…申し訳ないです、無闇に試行錯誤してた時のをそのまま張ってしまってました
しかも行数間違えてるし、本当にもう…。
本来の211行目は
@item_max = $game_system.dictionary.size
です、本当に申し訳ありませんorz
エラー内容はundefined method 'size'for nil:NilClass で変わらずです。
906名無しさん@お腹いっぱい。:2013/12/28(土) 15:24:32.26 ID:yscGjYLH
$game_system.dictionaryの初期化が行われていないようです
可能性として考えられるのは、

・スクリプトを導入する前のセーブデータをロードしてはじめている
・導入する順番を間違えている
・設定に不備がある
・競合している

のどれかだと思います

一度、新規プロジェクトでの動作確認を推奨します