トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

FAQ

Q.スクリプトファイルはどうやって読み込むの?

A.Script/外部のスクリプト(.rb)を読み込むを参照。または以下の手順。

  1. スクリプトエディタを開く
  2. 左の一覧からMainを左クリック→「挿入」を選択
  3. 新規セクションが作られるので、右のエディタ部分にスクリプトをコピー・ペースト

Q.スクリプトファイルを読み込むとエラーが出ます(フリーズします)。

A.他の人が普通に読み込めるようなのに、自分だけにエラーが発生する場合、スクリプトの文字コードを間違えている可能性があります。文字コードをUTF-8、もしくはUTF-8Nに設定して試してみてください。

Q.「$」「@」ってどういう意味ですか?

A.RGSS用に簡略化すると
$変数名 : グローバル変数 … イベント(オブジェクト)を超えても有効
@変数名 : インスタンス変数 … イベント(オブジェクト)内のみ有効
変数名 : ローカル変数 … コマンド(ブロック)内のみ有効
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/2
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/8

Q.ウィンドウを表示させるとエラーが出るんだけど。

A.表示したウィンドウは"ウィンドウ名 = nil"でちゃんと消さないとセーブできないみたいです。
ちなみに実際にウィンドウを消す方法は"ウィンドウ名.dispose"
だから表示したウィンドウを完全に消去したい場合は
ウィンドウ名.dispose
ウィンドウ名 = nil
の二つを実行しないとならないみたいです。
http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/14

Q.1からRubyを学びたいんだけど。

A.Ruby に入っている irb.rb は書いたスクリプト(一行)をその場で実行してくれるもので、
挙動を調べるのに便利です。
リンクのRubyリファレンスやPDF実践マニュアルも参照してください。
本では「たのしいRuby」がわかりやすいようです。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/16
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/33
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/17
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/35-36

Q.目的動作決めてからスクリプト組むまでの流れがピンとこない。

A.質問スレpart1の40さんの場合

  1. ソースコードor人の書いたスクリプトをよく読み、その流れを把握する(分からないところは関連したクラスを辿って調べる)
  2. 試作スクリプトを書く
  3. テスト
  4. (以後1-3を繰り返し)

Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/38
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/40

Q.〜を必要としないRPGを作りたい

A.表示部分を削れば良いだけです。
例えばゴールドをプレイヤーから隠すには、Scene_Menuの@gold_window関連と
Windwo_BattleResultの41行目をコメントアウトしとけば充分。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/59
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/121

Q.メソッドがどこで定義されているかわかりません

A.メソッド名をCtrl+Shift+Fで検索して、頭にdefが付いてるところです。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/67
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/69

Q.戦闘で通常攻撃に特定の属性があるかどうか判別させるには?

A.アクターの場合を一行で書くなら
$data_weapons[$game_party.actors[アクターID].weapon_id].element_set[属性ID]
敵の攻撃なら、まずは攻撃に属性を持たせる。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/78
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/80
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/79
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/81-82

Q.どこに何があるのかさっぱりわからん

A.とりあえず、スクリプトを一つずつ開いて行って、
天辺のコメントを読んで行きましょう。

「これは戦闘画面の〜」とか、「アクターとエネミーの〜」とか
説明がついてるから、そこから、潜っていく。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/97
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/98

Q.装備部分を変えるにはどこをいじればいいですか?

A.キャラデータ用にはGame_Actor
装備画面用にはWindow_EquipRight
ツクール画面には反映されないので、どこをどう変更したか覚えておくのが大事。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/100
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/103
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/101-102
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/104

Q.パラメータを増やしたい

A.Game_Battler1にhpとかspとかがあるので、同じように定義すればいい。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/106
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/107

Q.クラス全体を見ても目当ての記述が見つからない。

A.親クラス("class 何とか < かんとか"の"かんとか"の部分)にある場合があります。
親クラスを書き換えると不都合があるときは、
親クラスから子クラスにメソッド定義部分をコピーして、その部分を書き換えると良いでしょう。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/122
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/129
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/123-124
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/130-131

Q.[[n, 1].max, 999].minってどういう意味?

A.この場合、配列から一番大きいの要素を取り出すのがmax。小さい要素を取り出すのがmin。
[1,2,3]みたいなのが配列な。[1,2,3].minなら1、[1,2,3].maxなら3になる。

だから、[n,1].maxはnが1より大きい場合はn、小さい場合は1。
仮に[n,1].maxがnだとすると[n,999].minになって、
nが999より小さければn、大きければ999がreturnで返る。

つまり、nが1より大きくて999より小さければnが、
nが1より小さければ1が、nが999より大きければ999が返る。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/164-165
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/167

Q.メソッドの引数の数がまちまちなんだけどどういうこと?

A.RGSSでは(というかRubyでは)引数を省略可能にすることができます。
詳しくはリファレンス参照。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/171
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/173

Q.オーバーライドとか継承とか訳わかんない

A.
●オーバーライド:スーパークラスのメソッドをサブクラスで再定義すること
●継承:親になるクラスをベースに情報を引き継いで、新たにクラスを作成すること
 "class 作成するクラス < 継承元のクラス"のように宣言
●オブジェクト:データなどの実体
●変数:オブジェクトを収納するオブジェクト
●クラス:オブジェクトを定義するひな形
●インスタンス:クラスから作ったオブジェクト
●インスタンス変数:クラスで定義する、オブジェクトの中の変数
●メソッド:オブジェクトに実行させる動作
●アクセサ:インスタンス変数を読み書きするメソッド
●関数:トップレベル、またはKernelモジュールで定義されたメソッド
 簡単に言うと「.」(ドット)なしでどこからでも呼び出せるメソッド

(そのほか思いついたら追加していってください)
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/192
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/555
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/195-196
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/199-202
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/413-415
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/417
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/558

Q.ゲーム終了した時の処理を作りたい

A.SystemExit例外をトラップすればOK
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/278-279
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/281

Q.スクリプトのバックアップを取るにはどうしたらいいでしょうか

A.テキストをコピペ、またはData/Scripts.rxdataをバックアップ。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/348
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/349-350
  http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/353

Q.演算子===ってどういう意味?

A.===は含まれるか、というような意味。

(0..9) == 1 #false
(0..9) === 1 #true

クラスによっては(たとえば配列では)==と同意だったりする。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/526
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/527-529

Q.$game_variables[1] =〜 の部分でNoMethodErrorが出ます。

A.$game_variablesの初期化($game_variables = Game_Variables.new)は
Scene_Titleのcommand_new_game(新規ゲームスタート時の処理)の中だから、
その後に書くか、マップイベント(当然ゲームスタート後に実行される)かなにかで
実行しておけばいい。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/622
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/625

Q.アクターの名前の変更が$data_actors[アクターID].nameに反映されません

A.$game_actors[アクターID].nameの方を参照してください。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/716
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/719

Q.変数名に変数を使うには?

A.

v1 = 1
v2 = 2
v3 = 3

これの数字の部分に変数をつかってアクセスしたいということならvn = eval("v#{num}")でできる。
が、普通は配列を使います。
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/801
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/802-803

Q.文字をコピーして保存しておきたい

A.例えば以下のコードでaを変更したくない場合。

a = "あああああああああ"
b = a
while ((c = b.slice!(/./m)) != nil)
end

変数のほとんどは参照渡しと言って中身じゃなくて名札だけ渡される。
bはaの名札を持っていて、bに対して操作をすると名札からaの中身を操作しに行くからaの方も変更されます。

と、長くなったけどコピーメソッド使えばOKです。
→ b = a.dup
Q:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/839-840
A:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/841

Q.イベントスクリプトが1行だけのとき、固まることがあります

A.新規プロジェクトのスクリプトにあるバグのようです。
2行以上書くか、Interpreter7の最後のほうの
"# 戻り値が false の場合"から"# 継続"までの行をコメントアウトしてください。

2005/04/29
これは、仕様です。コメントにしない方がいいと思う。

イベントスクリプトが一行だけの時は、

Event_Script.moemoe()
true

と、する。(一行以上の時でもスクリプトをとめるならfalse、続けるならtrueって書くのが正しいと思われ)

戻り値で、継続をコントロールすることによって
いろいろできることもある。

def input_wait
  if Input.trigger?(Input::C)
    return true
  end
  return false
end

と、言うメソッドがあったら

input_wait

と、イベントスクリプトに書くことによって入力されるまでイベントを止められる
もちろん、このサンプルは普通のイベントコマンドでもできるけど…
1フレーム毎にこのメソッドが呼ばれるようになるってのは、スクリプターにとっては、結構使い道があるはず。

こんな風に使う必要が無いならコメントアウトにしてしまった方が
いちいちtrueを書かなくて済むので、楽かもしれない。

Q.〜したいのですが、どこからいじればいいかわかりません。

A.似たようなことをやっているスクリプトを探してきて、解析するとたいてい解決します。

そのほか、覚えとくと便利なこと

  • 全部オブジェクト

元ネタ:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/207

  • メソッド定義はネストできない

元ネタ:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/223

  • バグ出たら変数に何が入ってるのか調べるといい(p関数が便利)

元ネタ:http://jbbs.livedoor.com/bbs/read.cgi/game/14836/1086969089/405

最終更新時間:2007年03月30日 02時54分25秒 [通知用URL]