FC2ブログ

RGSS1備忘録その4 他のマップのイベントの呼び出し

どうも、こんばんわ。
今年のクリスマスも一人ぼっちのすっぽんです。(´;ω;`)ウッ

今日は、他のマップからイベントを呼び出すって言うのをやります。( ^ω^)
RPGツクールXPにはもともとイベントを呼び出すっていうコマンドがないので、
この技は結構使えるかもしれません。
で、どうやるのかというと、マップに配置したイベントの
イベントコマンドで、スクリプトを記述して、設定を行います。
次に記述内容ですが、

map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
event = map.events[new_event_id]
id = $game_map.events.size + 1
$game_map.events[id] = Game_Event.new($game_map.map_id, event)
$game_map.events[id].id = id
$scene.refresh_spriteset
となります。赤文字のmap_idに呼び出したいイベントがいるマップID、new_event_idにそのイベントのIDを入れます。もちろん数字で入れます。ここで注意点がひとつ、4行目のGame_Event.newの後の括弧が次の行にまたがるとエラーになります。エンターキーで改行しなくてもエラーになります。なので、「=」のあとで、わざと改行しておくのが無難です。

でわ、説明に移ります。まず1行目ではロードしたマップのデータをmapという変数にいれときます。次の行で、さっきロードしたマップのイベントのデータをeventという変数に入れます。
3行目で、新しく呼び出すイベントのIDを決めます。
4行目では現在のマップのデータ(インスタンス)にさっき今呼び出したイベントを入れちゃいます。Game_Mapクラスの@eventsは、事前にスクリプトエディタでattr_accessorで代入可能な状態にしておいてください。
5行目で新しく呼び出したイベントのイベントIDを設定してあげます。これがないといろいろう具合の発生が予想されます。こちらも、スクリプトエディタで、代入可能な形にしてあげてください。
そして、最後の行で、スプライトとして表示させます。もともとrefresh_spritesetというメソッドは存在しません。やはりこれもスクリプトエディタを使って、メソッドを定義します。
定義の内容は以下のとおりです。

class Scene_Map
def refresh_spriteset
@spriteset.dispose
@spriteset = Spriteset_Map.new
end
end

これで、設定は完了です。頻繁に使う場合は、まとめてひとつのメソッドにしてやるのが得策かと思います。この方法は思いついたばかしなので、いろいろやっているうちにエラーが出るかもしれません。デバックを怠らないようにしましょう。
では今日はこの辺で(^▽^)ノシ
スポンサーサイト

テーマ : RPGツクール
ジャンル : ゲーム

コメントの投稿

管理者にだけ表示を許可する

プロフィール

Suppon

Author:Suppon
すっぽんでーす。(^▽^)
カルドラ鋭意制作中( ・`ω・´)
Twitter => suppon01
メールはこちらへ
suppon2008@gmail.com

Twitter...

Twitter Reload

最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブログ内検索
RSSフィード
リンク
ブロとも申請フォーム

この人とブロともになる