忍者ブログ

リリカルリミテッド

リリカルリミテッドが販売しているゲームやイラスト集のサポート用のブログです。

RGSS3のリファレンス

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

RGSS3のリファレンス

文章の表示

$game_message.add("文章")


選択肢の表示

gm = $game_message
gm.choices.push("1","2","3","4","5","6","7","8")
gm.choice_cancel_type = 9
gm.choice_proc = Proc.new {|n| $branch = n }
Fiber.yield while $gm.choice?
case $branch
when 0 then $game_variables[61] = 1
when 1 then $game_variables[61] = 2
when 2 then $game_variables[61] = 3
when 3 then $game_variables[61] = 4
when 4 then $game_variables[61] = 5
when 5 then $game_variables[61] = 6
when 6 then $game_variables[61] = 7
when 7 then $game_variables[61] = 8
when 8 then $game_variables[61] = 9
end



コード解説

1行目 gm = $game_message


選択肢を表示させるには「$game_message」というクラスを使います。

イベントスクリプトに入れるには省スペースにしなければならないため、gmという変数に$game_messageを代入しています。


2行目 gm.choices.push("1","2","3","4","5","6","7","8")


これはつまり「$game_message.choices.push」と書かれているわけですが、()内にはそれぞれの選択肢に表示したい文字を「,」で分けて書いています。

この「$game_message.choices.push("1","2","3","4","5","6","7","8")」はこのように書くこともできます。

$game_message.choices.push("1") $game_message.choices.push("2") $game_message.choices.push("3") $game_message.choices.push("4") $game_message.choices.push("5") $game_message.choices.push("6") $game_message.choices.push("7") $game_message.choices.push("8")

こうして描くとただコードが冗長になったように感じますが、「$game_message.choices」をgmcという変数に代入した場合

gmc = $game_message.choices gmc.push("1") gmc.push("2") gmc.push("3") gmc.push("4") gmc.push("5") gmc.push("6") gmc.push("7") gmc.push("8")

と縦にすっきりした形で書くことができます。

この縦書き選択肢の使った方が良い場合というは選択肢の中身が長くなる場合でしょう。

例えば


選択肢

勇者よ!魔王を倒せ!と叫ぶ

勇者よ!ほどほどに頑張れ!と声をかける

勇者よ!気楽にな。と肩を叩く

勇者よ!無理はするな!と引き止める

勇者よ!お前じゃ無理だ!と叫ぶ


という選択肢を作りたい場合、横に長くすると

gmc = $game_message.choices gmc.push("選択肢","勇者よ!魔王を倒せ!と叫ぶ","勇者よ!ほどほどに頑張れ!と声をかける","勇者よ!気楽にな。と肩を叩く","勇者よ!無理はするな!と引き止める","勇者よ!お前じゃ無理だ!と叫ぶ")

となり、これをイベントスクリプトに入れるとツクールの方で強制改行され、エラーが出る原因になります。

これを縦に書くと


gmc = $game_message.choices gmc.push("選択肢") gmc.push("勇者よ!魔王を倒せ!と叫ぶ") gmc.push("勇者よ!ほどほどに頑張れ!と声をかける") gmc.push("勇者よ!気楽にな。と肩を叩く") gmc.push("勇者よ!無理はするな!と引き止める") gmc.push(勇者よ!お前じゃ無理だ!と叫ぶ"")

となり、横幅に何とか間に合い、直感的にも分かりやすいコードの形になります。

それぞれの場面でやり易いやり方を選択してください。


3行目 gm.choice_cancel_type = 9


これは選択肢が表示された時にキャンセルボタンが押された時の挙動を決めているコードです。

choice_cancel_typeプロパティの値で、以下のように挙動が決まります。 choice_cancel_type = 0 でキャンセルボタン無効に。 choice_cancel_type = 1 でキャンセルボタンが押された時に選択肢1を選択 choice_cancel_type = 2 でキャンセルボタンが押された時に選択肢2を選択 choice_cancel_type = 3 でキャンセルボタンが押された時に選択肢3を選択 ・ ・ ・

というように反映されます。

選択肢がない場合にも値は返され、次のコードのnにその値に-1された値が代入されます。


4行目 gm.choice_proc = Proc.new {|n| $branch = n }


選択肢の表示をスクリプトで行う上で難しいのがこのコードでしょう。

よくわからない場合は一先ず、ここでは"どの選択肢にしたかを記憶する準備をしている"と考えて、5行目まで読み飛ばしてください。

以下は何を行っているかという説明です。

"Proc.new {|n| $branch = n }"はブロックと呼ばれる処理の塊で、それをgm.choice_procという変数に入れることにより、Procオブジェクトとしています。

このブロックというのは基本的には要素の数だけ{}内の処理を繰り返すといもので、ここではどの選択肢にしたかという値を$branchに代入しています。

この$branchは選択肢1が選択されたら0を、選択肢2を選択されたら1を、選択肢2を選択されたら2を返します。

あとはこの$branchによってどのような処理をするのかを書くだけです。

Procとはなんなのか、ブロックとは何なのか興味のある方はこちらのサイトを参考にしてください。


5行目 Fiber.yield while gm.choice?


この行は選択肢が選択されるまで処理を待つための行です。

これがないと最後まで処理が流れてしまい選択肢に応じた処理ができなくなります。

Fiber.yieldというのは処理を一旦この行で止める処理と考えてください。


6行目以降 case文


こちらで$branchに代入された数値に応じて指定した変数を代入しています。

今回はcase文を使って場合分けして文章表示させるという方法を取りましたがもっとスマートな方法もあるかと思います。

スクリプトエディタ画面でなく、イベント画面で編集したいのでこのような形にしました。

選択肢を4つ以下にしたいときはサンプルコードの{}の中とcase文を減らすことで可能です。


数値入力の処理

$game_message.num_input_digits_max = 桁数

$game_message.num_input_variable_id = 受け取る変数ID

Fiber.yield until Input.trigger?(:C)


アイテムの選択の処理

$game_message.item_choice_variable_id = アイテムIDを受け取る変数ID


文章のスクロール表示

$game_message.add("表示する文章")

$game_message.scroll_mode = true

$game_message.scroll_speed = 2

$game_message.scroll_no_fast = false

wait_for_message


スイッチの操作

$game_switches[スイッチID] = true (またはfalse)


変数の操作

$game_variables[変数ID] = 代入する値


セルフスイッチの操作

key = [マップID, イベントID, "セルフスイッチ"]

$game_self_switches[key] = trueかfalse


タイマーの操作

$game_timer.start(設定フレーム数) #タイマースタート

$game_timer.stop #タイマーストップ


条件分岐

リンク先ページにて紹介


ループ・ループの中断

リンク先ページにて紹介


イベント処理の中断

@index = @list.size


コモンイベント

$game_temp.reserve_common_event(コモンイベントのID)


ラベル・ラベルジャンプ

リンク先ページにて紹介


注釈

#一行のみ注釈にするなら「#」

=begin

複数行注釈にするなら「=begin」から始めて

「=end」までの間が注釈になります。

=end


所持金の増減

$game_party.gain_gold(値) #所持金の増加(-で減少)

$game_party.lose_gold(値) #所持金の減少(+で増加)


アイテムの増減

$game_party.gain_item($data_items[アイテムID], 個数)


武器の増減

$game_party.gain_item($data_weapons[武器ID], 個数, 装備品も含めるか(true/false))


防具の増減

$game_party.gain_item($data_armors[防具ID], 個数, 装備品も含めるか(true/false))


メンバーの入れ替え

$game_party.add_actor(アクターID)


HPの増減

$game_actors[アクターID].hp += 値


MPの増減

$game_actors[アクターID].mp += 値


ステートの変更

$game_actors[アクターのID].add_state(ステートID)


全回復

$game_actors[アクターID].recover_all


経験値の増減

ga = $game_actors[1]

ga.change_exp($ga.exp + 増減する経験値の値, true)


レベルの増減

ga = $game_actors[1]

ga.change_level($ga.level + 増減するレベルの値, true)


能力値の増減

$game_actors[アクターID].add_param(能力のID, 値)


スキルの増減

$game_actors[アクターID].learn_skill(スキルID) #スキルを覚える

$game_actors[アクターID].forget_skill(スキルID) #スキルを忘れる


装備の変更

$game_actors[装備を変更するアクターのID].change_equip_by_id(装備の種類, 武器・防具のID)


名前の変更

$game_actors[アクターのID].name = "変更したい名前"


職業の変更

$game_actors[1].change_class(2)


二つ名の変更

$game_actors[変更するアクターのID].nickname = "変更後の二つ名"


場所移動

$game_player.reserve_transfer(マップID, x, y, 向き)

$game_temp.fade_type = フェードのタイプ


乗り物の位置設定

$game_map.vehicles[乗り物のID].set_location(マップID, x座標, y座標)


イベントの位置設定

cha = get_character(移動させるイベントのID)

cha.moveto(x座標, y座標)


マップのスクロール

$game_map.start_scroll(方向, マス数, 速度)

Fiber.yield while $game_map.scrolling? #スクロールするまで待機


移動ルートの設定

リンク先のページにて紹介


乗り物の乗降

$game_player.get_on_off_vehicle


透明状態の変更

$game_player.transparent = trueかfalse


隊列歩行の変更

$game_player.followers.visible = trueかfalse #("ON"か"OFF"でもok)

$game_player.refresh #これが無いと変更が反映されない。


隊列メンバーの集合

$game_player.followers.gather

#メンバーが集合するまでウェイトするなら以下のコードを追加

Fiber.yield until $game_player.followers.gather?


アニメーションの表示

character = get_character(イベントのID)

character.animation_id = アニメーションのID

#表示終了までウェイトするなら以下のコードを追加

Fiber.yield while character.animation_id > 0


フキダシアイコンの表示

character = get_character(イベントID)

character.balloon_id = フキダシアイコンのID

#表示終了までウェイトをかけるときは以下のコードを追加

Fiber.yield while character.balloon_id > 0


イベントの一時消去

$game_map.events[イベントID].erase


画面のフェードアウト・画面のフェードイン

#フェードアウト

Fiber.yield while $game_message.visible

screen.start_fadeout(フェードアウトするまでの時間)

wait(フェードアウトに合わせてイベントを止める時間)


#フェードイン

Fiber.yield while $game_message.visible

screen.start_fadein(フェードインするまでの時間)

wait(フェードインに合わせてイベントを止める時間)


画面の色調変更

tn = Tone.new(赤, 緑, 青(, グレー)) #グレーは省略可

screen.start_tone_change(tn, 変更までの時間)

wait(ウェイト時間)


画面のフラッシュ

tn = Color.new(赤,緑,青,強度)

screen.start_flash(tn, 時間)

#フラッシュが終わるまでウェイトするなら以下のコードを追加

wait(ウェイト時間)


画面のシェイク

screen.start_shake(強さ, 速さ, 時間)

wait(ウェイトする時間)


ウェイト

wait(ウェイトをかける時間)


ピクチャの表示

$sp = screen.pictures[番号]

$sp.show(画像名, 原点, x座標, y座標, 拡大率横%, 拡大率縦%, 不透明度, 合成方法)


ピクチャの移動

screen.pictures[ピクチャ番号].move(原点, x座標, y座標, 横方向拡大率, 縦方向拡大率, 不透明度, 合成方法, 時間)


ピクチャの回転

$sp = screen.pictures[番号]

$sp.rotate(回転速度)


ピクチャの色調変更

$sp = screen.pictures[番号]

$tn = Tone.new(赤, 緑, 青 (,グレー))

$sp.start_tone_change($tn, 変化にかける時間)


ピクチャの消去

screen.pictures[番号].erase


天候の設定

screen.change_weather(天候, 強さ, 時間)

wait(時間) #天候が変化するまでウェイトを入れる場合追加


BGMの演奏

Audio.bgm_play(ファイルパス, 音量, ピッチ(, 再生位置))


BGMのフェードアウト

RPG::BGM.fade(ミリ秒)

#1秒=1000


BGMの保存・BGMの再開

#保存

$game_system.save_bgm

#再開

$game_system.replay_bgm


BGSの演奏

Audio.bgs_play(ファイルパス, 音量, ピッチ(, 再生位置))


BGSのフェードアウト

RPG::BGS.fade(秒数)

#1秒=1000


MEの演奏

Audio.me_play(ファイルパス, 音量, ピッチ)


SEの演奏・SEの停止

Audio.se_play(ファイルパス, 音量, ピッチ)

#SEの停止

RPG::SE.stop


ムービーの再生

Graphics.play_movie("Movies/ファイル名")


バトルの処理

bm = BattleManager #バトル処理の下準備

bm.setup(敵グループID, 逃走可能か,負けた場合も継続か)

bm.event_proc = Proc.new{|n| @branch[1] = n}

#戦闘の結果を@branchに代入、nに選択肢の数値を代入

$game_player.make_encounter_count

SceneManager.call(Scene_Battle)

Fiber.yield #戦闘までウェイト

if @branch[1] == 0 #勝利した場合の処理

$game_message.add("勝利した場合の処理")

elsif @branch[1] == 1 #逃走した場合の処理

$game_message.add("逃げた場合の処理")

elsif @branch[1] == 2 #負けた場合の処理

$game_message.add("負けた場合の処理")

end


ショップの処理

g = [アイテムの種類,アイテムのID,価格を指定するか,値段]

#アイテムの種類 0:アイテム 1:武器 2:防具

#価格の指定 0:標準 1:指定

goods = [g]

SceneManager.call(Scene_Shop)

SceneManager.scene.prepare(goods, 購入のみか)

Fiber.yield


名前入力の処理

SceneManager.call(Scene_Name)

SceneManager.scene.prepare(アクターのID, 文字数)

Fiber.yield


メニュー画面を開く

SceneManager.call(Scene_Menu)

Window_MenuCommand::init_command_position

Fiber.yield


セーブ画面を開く

SceneManager.call(Scene_Save)

Fiber.yield


ゲームオーバー

SceneManager.goto(Scene_Gameover)

Fiber.yield


タイトル画面に戻す

SceneManager.goto(Scene_Title)

Fiber.yield


戦闘BGMの変更

game_system.battle_bgm.name = ファイルの名前

$game_system.battle_bgm.volume = 音量

$game_system.battle_bgm.pitch = ピッチ


戦闘終了MEの変更

$game_system.battle_end_me.name = 名前

$game_system.battle_end_me.volume = 音量

$game_system.battle_end_me.pitch = ピッチ


セーブ禁止の変更

$game_system.save_disabled = trueかfalse

#trueで禁止、falseで許可

#("ON"か"OFF"でもok)


メニュー禁止の変更

$game_system.menu_disabled = trueかfalse

#trueで禁止、falseで許可

#("ON"か"OFF"でもok)


エンカウント禁止の変更

$game_system.encounter_disabled = trueかfalse

#trueでエンカウント禁止、falseでエンカウント許可

#("ON"か"OFF"でもok)


並び替え禁止の変更

$game_system.formation_disabled = trueかfalse

("ON"か"OFF"でもok)


ウィンドウカラーの変更

tone = Tone.new(赤, 緑, 青(, グレー))

$game_system.window_tone = tone


アクターのグラフィック変更

ga = $game_actors[アクターのID]

ga.set_graphic(歩行グラのファイル名前, 歩行グラのID, 顔グラのファイル名前, 顔グラのID)

$game_player.refresh #アクターのグラフィックの再設定


乗り物のグラフィック変更

ve = $game_map.vehicles[乗り物ID]

#乗り物ID 小型船:0 大型船:1 飛行船:2

ve.set_graphic("ファイル名", 何番目のチップか)


マップ名表示の変更

$game_map.name_display = trueかfalse

#("ON"か"OFF"でもok)


タイルセットの変更

$game_map.change_tileset(タイルセットのID)


戦闘背景の変更

$game_map.change_battleback(地面背景名, 建物背景名)


遠景の変更

fn = "ファイル名"

$game_map.change_parallax(fn, x方向にループさせるか, y方向にループさせるか, x方向へのスクロールの速度, y方向へのスクロールの速度)


指定位置の情報取得

$game_map.terrain_tag(x座標, y座標) #地形タグを取得

$game_map.event_id_xy(x座標, y座標) #イベントIDを取得

$game_map.tile_id(x座標, y座標, レイヤー) #タイルIDを取得

#L=0でLayer1、L=1でLayer2、L=2でLayer3

$game_map.region_id(x座標, y座標) #リージョンIDを取得


敵キャラのHP増減

value = operate_value(増減, 定数か変数か, 値)

#0:増やす 1:減らす/0:定数 1:変数

#変数を選択した際、値は変数のIDを示す

iterate_enemy_index(敵ID) do |enemy| #敵ID=-1以下で敵グループ全体

return if enemy.dead? #敵が戦闘不能で中断

enemy.change_hp(value, true)

if enemy.dead? #戦闘不能を許可するか

enemy.perform_collapse_effect

end

end


敵キャラのMP増減

value = operate_value

(増減, 定数か変数か, 値)

#0:増やす 1:減らす/0:定数 1:変数

#変数を選択した際、値は変数のIDを示す

iterate_enemy_index(敵ID) do |enemy|

#敵ID=-1以下で敵グループ全体

enemy.mp += value

end


敵キャラのステート変更を行う方法

iterate_enemy_index(敵ID) do |enemy|

#敵ID=-1以下で敵グループ全体

already_dead = enemy.dead?

enemy.add_state(ステートID)

#敵の戦闘不能を許可するなら以下のif文を追加

if enemy.dead?

enemy.perform_collapse_effect

end

end


敵キャラの全回復

iterate_enemy_index(敵のID) do |enemy|

#敵のIDは-1以下で敵全体になる。

enemy.recover_all

end


敵キャラの出現

iterate_enemy_index(敵ID) do |enemy| #-1以下で敵全員

enemy.appear

$game_troop.make_unique_names

end


敵キャラの変身

iterate_enemy_index(敵ID) do |enemy| #-1以下で敵全員

enemy.transform(変身させる敵キャラID)

$game_troop.make_unique_names

end


戦闘アニメーションの表示

iterate_enemy_index(敵ID) do |enemy|

enemy.animation_id = アニメーションID if enemy.alive?

end


戦闘行動の強制

iterate_battler(敵キャラかアクターか,キャラクターID) do |battler|

#0で敵キャラ、1でアクター指定

next if battler.death_state?

battler.force_action(スキルID, 行動対象ID(Index))

BattleManager.force_action(battler)

Fiber.yield whileBattleManager.action_forced?

end


バトルの中断

BattleManager.abort

Fiber.yield

PR

コメント

プロフィール

HN:
朋美姫
年齢:
31
性別:
女性
誕生日:
1993/07/07
職業:
ゲームクリエイター
趣味:
ゲーム キャンプ

P R