赞 | 170 |
VIP | 6 |
好人卡 | 208 |
积分 | 229 |
经验 | 137153 |
最后登录 | 2024-11-15 |
在线时间 | 8638 小时 |
Lv5.捕梦者
- 梦石
- 0
- 星屑
- 22948
- 在线时间
- 8638 小时
- 注册时间
- 2011-12-31
- 帖子
- 3367
|
http://blog.livedoor.jp/kurement ... hives/31642250.html
- #==============================================================================
- # ■移動用画面 for RGSS3 Ver1.06-β-fix
- # □作成者 kure
- #
- # 呼び出し方法 SceneManager.call(Scene_ShortMove)
- #
- #==============================================================================
- module KURE
- module ShortMove
- #初期設定(変更しないこと)
- MOVE_LIST = []
- EXPLAN = []
- PLAYER_ICON = []
- CALL_COMMON = []
- ICONLIST = []
-
-
- #移動先設定(以下の設定は項目が対応している為注意)---------------------------
- #MOVE_LIST[0]、EXPLAN[0]、PLAYER_ICON[0]、CALL_COMMON[0]は対応しています。
-
- #表示名、移動先設定
- #MOVE_LIST[0~] = [[表示名,表示するスイッチ,選択可スイッチ,消去スイッチ] ,[マップID, x座標, y座標, 向き(2468)]]
- MOVE_LIST[0] = [["ベースキャンプ",0,0,0],[3,9,0,2]]
- MOVE_LIST[1] = [["シビリア平原",23,0,24],[67,7,39,8]]
- MOVE_LIST[2] = [["シビリア平原",24,0,0],[6,6,39,8]]
- MOVE_LIST[3] = [["アメリア雪原",10,0,0],[11,10,39,8]]
- MOVE_LIST[4] = [["ミュール渓谷",10,0,0],[22,4,38,8]]
- MOVE_LIST[5] = [["ポリモア洞窟",10,0,0],[30,19,39,8]]
- MOVE_LIST[6] = [["ラビトラ森林",10,0,0],[39,19,39,8]]
- MOVE_LIST[7] = [["エミウル廃抗",10,0,0],[48,34,39,8]]
- MOVE_LIST[8] = [["グロース寺院",0,10,0],[56,19,39,8]]
- #説明文の設定
- #EXPLAN[0~] = [説明1行目,説明2行目]
- EXPLAN[0] = ["入り江に作られたエルプマス島探索の本拠地"]
- EXPLAN[1] = ["穏やかな気候の平原地帯","小さな野生動物が生息している"]
- EXPLAN[2] = ["穏やかな気候の平原地帯","小さな野生動物が生息している"]
- EXPLAN[3] = ["エルプマス島北部の雪原地帯","森林と高台によって地形が作られている"]
- EXPLAN[4] = ["島の東西を結ぶ山岳地帯","浸食により複雑な地形が形成されている"]
- EXPLAN[5] = ["島の中央にある巨大洞窟","昔は調査も行われたが深部は良く分かっていない"]
- EXPLAN[6] = ["島の西部を覆う森林地帯","多様な生物が生息している"]
- EXPLAN[7] = ["数年前まで炭鉱として使用されていた坑道","開発途中のまま放置されている"]
- EXPLAN[8] = ["光の柱現象の発生地点と言われている場所","現在は放棄され廃墟となっている"]
-
- #プレーヤーのアイコン(選択肢対応アイコン)
- #PLAYER_ICON[0~] = [アイコンタイプ,アイコンX,アイコンY]
- #アイコンタイプ
- # 0 → 隊列先頭のキャラクター
- # PLAYER_ICON[0] = [0, x, y]
- #
- # 1 → 四角形
- # PLAYER_ICON[0] = [1, x, y, [size,red,green,blue]]
- #
- # 2 → 画像ファイル(Pictureフォルダに入れること)
- # PLAYER_ICON[0] = [2, x, y, filename]
- #
-
- PLAYER_ICON[0] = [0,100,200]
- PLAYER_ICON[1] = [0,115,180]
- PLAYER_ICON[2] = [0,115,180]
- PLAYER_ICON[3] = [0,75,60]
- PLAYER_ICON[4] = [0,206,116]
- PLAYER_ICON[5] = [0,243,107]
- PLAYER_ICON[6] = [0,275,165]
- PLAYER_ICON[7] = [0,302,131]
- PLAYER_ICON[8] = [0,290,187]
-
- #移動と同時に呼び出すコモンイベントのID
- #CALL_COMMON[0~] = [ID配列]
- CALL_COMMON[0] = [3]
- CALL_COMMON[1] = [2]
- CALL_COMMON[2] = [2]
- CALL_COMMON[3] = [1,2]
- CALL_COMMON[4] = [2]
- CALL_COMMON[5] = [2]
- CALL_COMMON[6] = [2]
- CALL_COMMON[7] = [2]
- CALL_COMMON[8] = [2]
-
- #マップ上に表示するアイコンの設定-------------------------------------------
- #ICONLIST[0~] = [アイコンタイプ,アイコンX,アイコンY,表示スイッチ,消去スイッチ,各種設定]
- #必要な数に応じて項目を追加してください
- #アイコンタイプによる設定の違い
- # 0 → アクターを描画します
- # ICONLIST[0] = [0, x, y, switch_id, switch_id, actor_id]
- #
- # 1 → 四角形
- # ICONLIST[1] = [1, x, y, switch_id, switch_id, [size,red,green,blue]]
- #
- # 2 → 画像ファイル(Pictureフォルダに入れること)
- # ICONLIST[1] = [2, x, y, switch_id, switch_id, filename]
- #
-
- ICONLIST[0] = [1,100,200,0,0,[9,255,0,0]]
- ICONLIST[1] = [1,115,180,0,0,[9,255,0,0]]
- ICONLIST[2] = [1,75,60,1,0,[9,255,0,0]]
- ICONLIST[3] = [1,206,116,1,0,[9,255,0,0]]
- ICONLIST[4] = [1,243,107,1,0,[9,255,0,0]]
- ICONLIST[5] = [1,275,165,1,0,[9,255,0,0]]
- ICONLIST[6] = [1,302,131,1,0,[9,255,0,0]]
- ICONLIST[7] = [1,290,187,0,0,[9,255,0,0]]
-
- #MAPDATA
- #png形式の画像データを「Picture」フォルダに入れること(380×296)
- MAPDATA = "tizu"
-
- end
- end
- #==============================================================================
- # ■ Scene_ShortMove
- #------------------------------------------------------------------------------
- # キャラクターメイキングの処理を行うクラスです。
- #==============================================================================
- class Scene_ShortMove < Scene_MenuBase
- #--------------------------------------------------------------------------
- # ● 開始処理
- #--------------------------------------------------------------------------
- def start
- super
- create_command_window
- create_map_window
- create_icon_window
- create_info_window
- create_popup_window
-
- set_window_task
- end
- #--------------------------------------------------------------------------
- # ● コマンドウィンドウの作成
- #--------------------------------------------------------------------------
- def create_command_window
- #キャラクター選択ウィンドウを作成
- @command_window = Window_k_ShortMove_Command.new(0, 0)
- @command_window.height = Graphics.height
- @command_window.activate
- #呼び出しのハンドラをセット
- @command_window.set_handler(:ok,method(:select_command))
- @command_window.set_handler(:cancel,method(:on_cancel))
- end
- #--------------------------------------------------------------------------
- # ● アイコンウィンドウの作成
- #--------------------------------------------------------------------------
- def create_icon_window
- x = @command_window.width
- y = 0
- ww = Graphics.width - x
- wh = Graphics.height - 24 * 4
- @icon_window = Window_k_ShortMove_Icon.new(x,y,ww,wh)
- @icon_window.z += 10
- @icon_window.opacity = 0
- @icon_window.refresh
- end
- #--------------------------------------------------------------------------
- # ● マップウィンドウの作成
- #--------------------------------------------------------------------------
- def create_map_window
- x = @command_window.width
- y = 0
- ww = Graphics.width - x
- wh = Graphics.height - 24 * 4
- @map_window = Window_k_ShortMove_Map.new(x,y,ww,wh)
- @map_window.refresh
- end
- #--------------------------------------------------------------------------
- # ● インフォメーションウィンドウの作成
- #--------------------------------------------------------------------------
- def create_info_window
- x = @command_window.width
- y = @map_window.height
- ww = Graphics.width - x
- wh = Graphics.height - y
- @info_window = Window_k_ShortMove_Info.new(x,y,ww,wh)
- end
- #--------------------------------------------------------------------------
- # ● ポップアップウィンドウの作成
- #--------------------------------------------------------------------------
- def create_popup_window
- wx = (Graphics.width - 180)/2
- wy = (Graphics.height - 180)/2
- @popup_window = Window_k_ShortMove_Pop.new(wx, wy)
- @popup_window.unselect
- @popup_window.deactivate
- @popup_window.z += 10
- @popup_window.hide
- #ハンドラのセット
- @popup_window.set_handler(:cancel, method(:pop_cancel))
- @popup_window.set_handler(:ok, method(:pop_ok))
- end
- #--------------------------------------------------------------------------
- # ● ウィンドウのセッティング処理
- #--------------------------------------------------------------------------
- def set_window_task
- @command_window.info_window = @info_window
- @command_window.map_window = @map_window
- @command_window.icon_window = @icon_window
- @command_window.select(0)
-
- @info_window.refresh
- end
- #--------------------------------------------------------------------------
- # ● コマンドウィンドウ[決定]
- #--------------------------------------------------------------------------
- def select_command
- pop_open
- end
- #--------------------------------------------------------------------------
- # ● コマンドウィンドウ[キャンセル]
- #--------------------------------------------------------------------------
- def on_cancel
- Cache.clear
- SceneManager.return
- end
- #--------------------------------------------------------------------------
- # ● ポップアップウィンドウ[決定]
- #--------------------------------------------------------------------------
- def pop_ok
- case @popup_window.current_ext
- when 1
- #画像キャッシュをクリアしておく
- Cache.clear
-
- move_point = @command_window.current_ext
- map_id = move_point[0][1][0]
- x = move_point[0][1][1]
- y = move_point[0][1][2]
- dir = move_point[0][1][3]
-
- fadeout_all(300)
- $game_player.reserve_transfer(map_id, x, y, dir)
- $game_player.perform_transfer
- SceneManager.call(Scene_Map)
- $game_temp.recall_map_name = 1
- $game_map.autoplay
-
- call_common(move_point[1])
- when 2
- pop_close
- end
- end
- #--------------------------------------------------------------------------
- # ● ポップアップウィンドウ[キャンセル]
- #--------------------------------------------------------------------------
- def pop_cancel
- pop_close
- end
- #--------------------------------------------------------------------------
- # ● コモンイベント呼び出し[キャンセル]
- #--------------------------------------------------------------------------
- def call_common(list)
- event = KURE::ShortMove::CALL_COMMON[list]
- event.each do |id|
- $game_temp.reserve_common_event(id)
- end
- end
- #--------------------------------------------------------------------------
- # ● ポップアップウィンドウ[開く]
- #--------------------------------------------------------------------------
- def pop_open
- @popup_window.show
- @popup_window.select(1)
- @popup_window.activate
- @command_window.deactivate
- end
- #--------------------------------------------------------------------------
- # ● ポップアップウィンドウ[閉じる]
- #--------------------------------------------------------------------------
- def pop_close
- @popup_window.hide
- @popup_window.unselect
- @popup_window.deactivate
- @command_window.activate
- end
- end
- #==============================================================================
- # ■ Window_k_ShortMove_Command
- #==============================================================================
- class Window_k_ShortMove_Command < Window_Command
- attr_accessor :info_window
- attr_accessor :map_window
- attr_accessor :icon_window
- #--------------------------------------------------------------------------
- # ● ウィンドウ幅の取得
- #--------------------------------------------------------------------------
- def window_width
- return 140
- end
- #--------------------------------------------------------------------------
- # ● カーソル位置の設定
- #--------------------------------------------------------------------------
- def index=(index)
- @index = index
- update_cursor
- call_update_help
-
- @info_window.select = current_ext if @info_window
- @map_window.select = current_ext if @map_window
- @icon_window.select = current_ext if @icon_window
- end
- #--------------------------------------------------------------------------
- # ● コマンドリストの作成
- #--------------------------------------------------------------------------
- def make_command_list
- master = KURE::ShortMove::MOVE_LIST
- for i in 0..master.size - 1
- if visible?(master[i])
- add_command(master[i][0][0], :ok, selectable?(master[i]), [master[i],i])
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 表示の可否
- #--------------------------------------------------------------------------
- def visible?(list)
- return false if list[0][3] != 0 && $game_switches[list[0][3]]
- if list[0][3] == 0
- return true if list[0][1] == 0
- return true if $game_switches[list[0][1]]
- return false
- end
- return true
- end
- #--------------------------------------------------------------------------
- # ● 選択の可否
- #--------------------------------------------------------------------------
- def selectable?(list)
- return true if list[0][2] == 0
- return true if $game_switches[list[0][2]]
- return false
- end
- end
- #==============================================================================
- # ■ Window_k_ShortMove_Map
- #==============================================================================
- class Window_k_ShortMove_Map < Window_Base
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #-------------------------------------------------------------------------
- def initialize(x, y, width, height)
- super
- @select = nil
- end
- #--------------------------------------------------------------------------
- # ● 選択中のMAPデータを更新
- #--------------------------------------------------------------------------
- def select=(select)
- return if @select == select
- @select = select
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- contents.clear
-
- bitmap = Cache.picture(KURE::ShortMove::MAPDATA)
- #描画
- self.contents.blt(0, 0, bitmap, bitmap.rect)
- end
- end
- #==============================================================================
- # ■ Window_k_ShortMove_Icon
- #==============================================================================
- class Window_k_ShortMove_Icon < Window_Base
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #-------------------------------------------------------------------------
- def initialize(x, y, width, height)
- super
- @select = nil
- end
- #--------------------------------------------------------------------------
- # ● 選択中のMAPデータを更新
- #--------------------------------------------------------------------------
- def select=(select)
- return if @select == select[1]
- @select = select[1]
- refresh
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- contents.clear
- return unless @select
-
- draw_list = KURE::ShortMove::ICONLIST
-
- draw_list.each do |list|
- next if list == []
- #描画判定
- if list[3] != 0
- next unless $game_switches[list[3]]
- end
-
- if list[4] != 0
- next if $game_switches[list[4]]
- end
-
- #アイコンタイプ
- case list[0]
- #アクター描画
- when 0
- actor = $game_actors[list[5]]
- next unless actor
-
- x = list[1]
- y = list[2]
- draw_character(actor.character_name, actor.character_index , x, y)
- #四角形描画
- when 1
- size = 7 ; size2 = 3
- red = 0 ; green = 0 ; blue = 0
- if list[5]
- if list[5][0]
- size = list[5][0]
- size2 = (list[5][0] / 2).truncate
- end
- if list[5][1] && list[5][2] && list[5][3]
- red = list[5][1]
- green = list[5][2]
- blue = list[5][3]
- end
- end
-
- rect = Rect.new(list[1] - size2,list[2] - size2,size,size)
- color = Color.new(red, green, blue)
- contents.fill_rect(rect, color)
- #画像描画
- when 2
- next unless list[5]
- bitmap = Cache.picture(list[5])
- self.contents.blt(list[1], list[2], bitmap, bitmap.rect)
- end
-
- end
-
- player = KURE::ShortMove::PLAYER_ICON[@select]
- case player[0]
- #アクター描画
- when 0
- actor = $game_party.battle_members[0]
- return unless actor
-
- x = player[1]
- y = player[2]
- draw_character(actor.character_name, actor.character_index , x, y)
- #四角形
- when 1
- size = 7 ; size2 = 3
- red = 0 ; green = 0 ; blue = 0
- if player[3]
- if player[3][0]
- size = player[3][0]
- size2 = (player[3][0] / 2).truncate
- end
- if player[3][1] && player[3][2] && player[3][3]
- red = player[3][1]
- green = player[3][2]
- blue = player[3][3]
- end
- end
-
- rect = Rect.new(player[1] - size2,player[2] - size2,size,size)
- color = Color.new(red, green, blue)
- contents.fill_rect(rect, color)
- #画像描画
- when 2
- return unless player[3]
- bitmap = Cache.picture(player[3])
- self.contents.blt(player[1], player[2], bitmap, bitmap.rect)
-
- end
-
- end
- end
- #==============================================================================
- # ■ Window_k_ShortMove_Info
- #==============================================================================
- class Window_k_ShortMove_Info < Window_Base
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #-------------------------------------------------------------------------
- def initialize(x, y, width, height)
- super
- @select = nil
- end
- #--------------------------------------------------------------------------
- # ● 選択中のMAPデータを更新
- #--------------------------------------------------------------------------
- def select=(select)
- return if @select == select[1]
- @select = select[1]
- refresh
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- return unless @select
- contents.clear
-
- title = KURE::ShortMove::MOVE_LIST[@select][0][0]
- explan = KURE::ShortMove::EXPLAN[@select]
-
- draw_text(0, 0, contents_width, line_height, title)
-
- return unless explan
- draw_text(0, line_height * 1, contents_width, line_height, explan[0]) if explan[0]
- draw_text(0, line_height * 2, contents_width, line_height, explan[1]) if explan[1]
- end
- end
- #==============================================================================
- # ■ Window_k_ShortMove_Pop
- #==============================================================================
- class Window_k_ShortMove_Pop < Window_Command
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize(x, y)
- super(x, y)
- end
- #--------------------------------------------------------------------------
- # ● ウィンドウ幅の取得
- #--------------------------------------------------------------------------
- def window_width
- return 180
- end
- #--------------------------------------------------------------------------
- # ● ウィンドウ高さの取得
- #--------------------------------------------------------------------------
- def window_height
- fitting_height(visible_line_number)
- end
- #--------------------------------------------------------------------------
- # ● コマンドリストの作成
- #--------------------------------------------------------------------------
- def make_command_list
- add_command("移動する", :ok, true, 1)
- add_command("キャンセル", :ok, true, 2)
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- clear_command_list
- make_command_list
- create_contents
- self.height = window_height
- select(0)
- super
- end
- end
- #==============================================================================
- # ■ Game_Temp
- #==============================================================================
- class Game_Temp
- attr_accessor :recall_map_name # 場所移動時のフェードタイプ
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化(エイリアス再定義)
- #--------------------------------------------------------------------------
- alias k_before_shotmove_initialize initialize
- def initialize
- k_before_shotmove_initialize
- @recall_map_name = 0
- end
- end
- #==============================================================================
- # ■ Scene_Map
- #==============================================================================
- class Scene_Map < Scene_Base
- #--------------------------------------------------------------------------
- # ● 開始処理(エイリアス再定義)
- #--------------------------------------------------------------------------
- alias k_before_shotmove_start start
- def start
- k_before_shotmove_start
- recall_map_name_window
- end
- #--------------------------------------------------------------------------
- # ● マップ名表示処理(追加定義)
- #--------------------------------------------------------------------------
- def recall_map_name_window
- if $game_temp.recall_map_name == 1
- @map_name_window.open
- $game_temp.recall_map_name = 0
- end
- end
- end
复制代码 設定方法
MOVE_LIST[0] = [[表示名,表示するスイッチ,選択可スイッチ,消去スイッチ] ,[マップID, x座標, y座標]
表示名、リストの追加可否の設定
移動先を設定します。必要な個数に従い、リストの数を増やしてください。
○表示に関する設定
表示名 … メニューに表示する行き先を設定します。
表示するスイッチ … 指定したIDのスイッチがONであればリストに表示します。常時表示は0です。
選択可スイッチ … 指定したIDのスイッチがONであれば選択できます。常時選択可は0です。
消去スイッチ … 指定したIDのスイッチがONであればリストから消去します。設定しない場合は0です。
○移動先に関する設定
マップID、x座標、y座標 … 移動先のマップID、座標を設定します。
EXPLAN[0] = [説明1行目,説明2行目]
インフォメーションウィンドウに表示する説明を設定します。2行まで表示が可能です。
PLAYER_ICON[0] = [アイコンタイプ,アイコンX,アイコンY]
項目を選択している時に表示するアイコンのタイプとX座標、Y座標の位置を設定します。
CALL_COMMON[0] = [ID配列]
移動後に実行するコモンイベント(天候の変更等)があればIDで記述します。
ICONLIST[0] = [アイコンタイプ,アイコンX,アイコンY,表示スイッチ,消去スイッチ,各種設定]
マップ上に表示するアイコンを設定します。
ID0~表示対応スイッチのチェックを行い、スイッチがONの条件を満たすアイコンを
全て表示します。常に表示するアイコンは対応スイッチを0にしてください。
MAPDATA = "tizu"
マップとして使う画像ファイルのファイル名を指定します。
画像は「Picture」フォルダに入れてください。380×296の画像が最大サイズです。
|
评分
-
查看全部评分
|