你最喜歡.最常使用.最擅長的RPG製作大師版本是哪個呢?快來哈啦板板面投票吧!
LV. 6
GP 15

【教學】新手適用-詳細圖解更改主選單

樓主 snowjuice snowjuice
GP57 BP-
這次一樣是新手適用的圖解說明~
含有以下內容,都是最基本的:
●更改選項文字內容
●調整大小、位置
●增減選項(一般、開關)
●窗框透明化
●加入背景
●增減變數視窗(刪除步數、增加地名或其他變數)
那麼就一個一個看吧!

一、更改選項文字內容
在 MenuStatus 的20行可以看到這一段:
其中 s1、s2、s3 的更改位置如下:(資料庫→系統→用語)
或是直接將 $data_system.words.item改成"物品"也是可以的!(以此類推)

二、更改配置(位置、大小)
在更改位置的部分,其中遊戲時間、步數、金錢、狀態的部分比較簡明:
* MenuStatus
大小的部分就要分別到各個地方去調整了:框起來的第一個數字是第二個是
至於選項框的部分就要多寫一些東西,如下圖所示:* MenuStatus
其中@select_window可自由取名。
這樣做的原因是為了不去動到其他與Command有關的視窗。

三、增減選項
【一般】
再來就是增減選項了,增加選項的方式其實和標題差不多,
但這就要看增加的內容是什麼,所以就不多說了。
 
刪減選項主要是在做不用戰鬥的遊戲時,
可能會需要把特技、裝備、狀態給刪除,那麼就參考以下代碼:
(這裡示範把技能和裝備刪去)
紅字:刪除    藍字:更改
#================================================
# ■ Scene_Menu
#-----------------------------------------------------------------------------
# 處理選單畫面的類別。
#================================================

class Scene_Menu
#--------------------------------------------------------------------------
# ● 初始化目標
# menu_index : 命令游標的初期位置
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# ● 主處理
#--------------------------------------------------------------------------
def main
# 製作命令視窗
s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s2 = "狀態"
s
3 = "存檔"
s
4 = "結束遊戲"
@command_window = Window_Command.new(160, [s1, s2, s3, s4
, s5, s6])
@command_window.index = @menu_index
# 同伴人數為 0 的情況下
if $game_party.actors.size == 0
# 物品、特技、裝備、狀態無效化
@command_window.disable_item(0)
@command_window.disable_item(1)

@command_window.disable_item(2)
@command_window.disable_item(3)

end
# 禁止存檔的情況下
if $game_system.save_disabled
# 存檔無效
@command_window.disable_item(
2)
end
# 製作遊戲時間視窗
@playtime_window = Window_PlayTime.new
@playtime_window.x = 0
@playtime_window.y = 224
# 製作步數視窗
@steps_window = Window_Steps.new
@steps_window.x = 0
@steps_window.y = 320
# 製作金錢視窗
@gold_window = Window_Gold.new
@gold_window.x = 0
@gold_window.y = 416
# 製作狀態視窗
@status_window = Window_MenuStatus.new
@status_window.x = 160
@status_window.y = 0
# 執行過渡
Graphics.transition
# 主循環
loop do
# 更新遊戲畫面
Graphics.update
# 更新輸入訊息
Input.update
# 更新畫面
update
# 如果切換畫面就中斷循環
if $scene != self
break
end
end
# 準備過渡
Graphics.freeze
# 釋放視窗所佔的記憶體空間
@command_window.dispose
@playtime_window.dispose
@steps_window.dispose
@gold_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# ● 更新畫面
#--------------------------------------------------------------------------
def update
# 更新視窗
@command_window.update
@playtime_window.update
@steps_window.update
@gold_window.update
@status_window.update
# 命令視窗被啟動的情況下: 取用 update_command
if @command_window.active
update_command
return
end
# 狀態視窗被啟動的情況下: 取用 update_status
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------------
# ● 更新畫面 (命令視窗被啟動的情況下)
#--------------------------------------------------------------------------
def update_command
# 按下 B 鍵的情況下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切換的地圖畫面
$scene = Scene_Map.new
return
end
# 按下 C 鍵的情況下
if Input.trigger?(Input::C)
# 同伴人數為 0、存檔、遊戲結束以外的場合
if $game_party.actors.size == 0 and @command_window.index < 4
# 演奏凍結 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 命令視窗的游標位置分支
case @command_window.index
when 0 # 物品
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到物品畫面
$scene = Scene_Item.new
when 1 # 特技
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 啟動狀態視窗
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2 # 裝備
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 啟動狀態視窗
@command_window.active = false
@status_window.active = true
@status_window.index = 0

when
1 # 狀態
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 啟動狀態視窗
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when
2 # 存檔
# 禁止存檔的情況下
if $game_system.save_disabled
# 演奏凍結 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到存檔畫面
$scene = Scene_Save.new
when
3 # 遊戲結束
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到遊戲結束畫面
$scene = Scene_End.new
end
return
end
end
#--------------------------------------------------------------------------
# ● 更新畫面 (狀態視窗被啟動的情況下)
#--------------------------------------------------------------------------
def update_status
# 按下 B 鍵的情況下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 啟動命令視窗
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
# 按下 C 鍵的情況下
if Input.trigger?(Input::C)
# 命令視窗的游標位置分支
case @command_window.index
when 1 # 特技
# 本角色的行動限制在 2 以上的情況下
if $game_party.actors[@status_window.index].restriction >= 2
# 演奏凍結 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到特技畫面
$scene = Scene_Skill.new(@status_window.index)
when 2 # 裝備
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換的裝備畫面
$scene = Scene_Equip.new(@status_window.index)

when
1 # 狀態
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到狀態畫面
$scene = Scene_Status.new(@status_window.index)
end
return
end
end
end
但這樣就結束了嗎?當然是還沒!
雖然是成功的把選項刪除了,可是還是會有點小問題,
這時候就要分別前往Scene_Status、Scene_End、Scene_Save 去修改以下腳本:
這些就是指按下取消鍵(或確定鍵)時回到標題畫面光標所在的位置。
所以其他部分就能以此類推囉!
★補充★Scene_End的106行附近也需要改唷!
$scene = Scene_Menu.new(5) → $scene = Scene_Menu.new(3)
 
【開關】
想要用開關來調整可選擇的選項也是沒問題的!
 
以下示範用開關1來開啟物品欄:
紅字:修改  藍字:增加
#=============================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
# 處理選單畫面的類別。
#=============================================

class Scene_Menu

#--------------------------------------------------------------------------
# ● 初始化目標
# menu_index : 命令游標的初期位置
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# ● 主處理
#--------------------------------------------------------------------------
def main
# 製作命令視窗
s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = "狀態"
s5 = "存檔"
s6 = "結束遊戲"
if $game_switches[1] == true #當開關1開啟時,顯示所有選項
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
else #其他狀況時(關閉),不顯示物品
@command_window = Window_Command.new(160, [
s2, s3, s4, s5, s6])
@command_window.index = @menu_index
end

@select_window = @command_window
@select_window.x = 0
@select_window.y = 0

# 同伴人數為 0 的情況下
if $game_switches[1] == true #當開關1開啟時
if $game_party.actors.size == 0
# 物品、特技、裝備、狀態無效化
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
else #關閉時
if $game_party.actors.size == 0
# 特技、裝備、狀態無效化
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
end

end
end
# 禁止存檔的情況下
if $game_system.save_disabled
# 存檔無效
if $game_switches[1] == true
@command_window.disable_item(4)
else
@command_window.disable_item(3)
end

end
# 製作遊戲時間視窗
@playtime_window = Window_PlayTime.new
@playtime_window.x = 0
@playtime_window.y = 224
@playtime_window.back_opacity = 130
# 製作步數視窗
@steps_window = Window_Steps.new
@steps_window.x = 0
@steps_window.y = 320
# 製作金錢視窗
@gold_window = Window_Gold.new
@gold_window.x = 0
@gold_window.y = 416
# 製作狀態視窗
@status_window = Window_MenuStatus.new
@status_window.x = 160
@status_window.y = 0
# 執行過渡
Graphics.transition
# 主循環
loop do
# 更新遊戲畫面
Graphics.update
# 更新輸入訊息
Input.update
# 更新畫面
update
# 如果切換畫面就中斷循環
if $scene != self
break
end
end
# 準備過渡
Graphics.freeze
# 釋放視窗所佔的記憶體空間
@command_window.dispose
@playtime_window.dispose
@steps_window.dispose
@gold_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# ● 更新畫面
#--------------------------------------------------------------------------
def update
# 更新視窗
@command_window.update
@playtime_window.update
@steps_window.update
@gold_window.update
@status_window.update
# 命令視窗被啟動的情況下: 取用 update_command
if @command_window.active
update_command
return
end
# 狀態視窗被啟動的情況下: 取用 update_status
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------------
# ● 更新畫面 (命令視窗被啟動的情況下)
#--------------------------------------------------------------------------
def update_command
# 按下 B 鍵的情況下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切換的地圖畫面
$scene = Scene_Map.new
return
end
# 按下 C 鍵的情況下
if Input.trigger?(Input::C)
# 同伴人數為 0、存檔、遊戲結束以外的場合
if $game_party.actors.size == 0 and @command_window.index < 4
# 演奏凍結 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 命令視窗的游標位置分支
if $game_switches[1] == true
case @command_window.index
when 0 # 物品
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到物品畫面
$scene = Scene_Item.new
when 1 # 特技
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 啟動狀態視窗
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2 # 裝備
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 啟動狀態視窗
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3 # 狀態
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 啟動狀態視窗
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 4 # 存檔
# 禁止存檔的情況下
if $game_system.save_disabled
# 演奏凍結 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到存檔畫面
$scene = Scene_Save.new
when 5 # 遊戲結束
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到遊戲結束畫面
$scene = Scene_End.new
end
return
else
case @command_window.index
when 0 # 特技
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 啟動狀態視窗
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 1 # 裝備
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 啟動狀態視窗
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2 # 狀態
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 啟動狀態視窗
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3 # 存檔
# 禁止存檔的情況下
if $game_system.save_disabled
# 演奏凍結 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到存檔畫面
$scene = Scene_Save.new
when 4 # 遊戲結束
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到遊戲結束畫面
$scene = Scene_End.new
end
return

end
end
end
#--------------------------------------------------------------------------
# ● 更新畫面 (狀態視窗被啟動的情況下)
#--------------------------------------------------------------------------
def update_status
# 按下 B 鍵的情況下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 啟動命令視窗
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
# 按下 C 鍵的情況下
if Input.trigger?(Input::C)
# 命令視窗的游標位置分支
if $game_switches[1] == true
case @command_window.index
when 1 # 特技
# 本角色的行動限制在 2 以上的情況下
if $game_party.actors[@status_window.index].restriction >= 2
# 演奏凍結 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到特技畫面
$scene = Scene_Skill.new(@status_window.index)
when 2 # 裝備
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換的裝備畫面
$scene = Scene_Equip.new(@status_window.index)
when 3 # 狀態
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到狀態畫面
$scene = Scene_Status.new(@status_window.index)
end
return
else
case @command_window.index
when 0 # 特技
# 本角色的行動限制在 2 以上的情況下
if $game_party.actors[@status_window.index].restriction >= 2
# 演奏凍結 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到特技畫面
$scene = Scene_Skill.new(@status_window.index)
when 1 # 裝備
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換的裝備畫面
$scene = Scene_Equip.new(@status_window.index)
when 2 # 狀態
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 切換到狀態畫面
$scene = Scene_Status.new(@status_window.index)
end
return
end

end
end
end
這個部分改好之後,
再到Scene_Skill、Scene_Equip、Scene_Status、Scene_End更改光標位置:
以上是Scene_Skill的部分,相信改到這裡,都知道要怎麼改了~
所以就說到這裡囉!
 

四、窗框半透明
這個就和標題選項框是一樣的東西,敬請參考。
@名稱.back_opacity = 透明度
@名稱.opacity = 透明度
名稱是指command_window、playtime_window……以此類推。
透明度數值0~255,數字越小越透明。
效果:

五、加入背景
這個也是非常好用的「技能」,幾乎所有部分都能這樣增加背景(或圖片)唷~
在Scene_Menu的#製作狀態視窗下方寫上以下腳本:(BG是圖片名稱)
其中圖片路徑可自行更改,@back也可自行更名、@back.opacity是透明度。
(小提醒:其實只要在def main~end之間就可以加了唷!)
接著在以下部分寫上就完成囉:
@back名稱可自訂,須與上方配合。

六、增減變數視窗(刪除步數、增加其他變數)
一般來說都不會想要「步數」這個東西,
只要照著下面幾個步驟就能把這個不實用的東西換掉唷!
 
【刪除步數、增加地名】
(為求方便,直接拿「步數」來改成「地名」)
將以上紅框內文字改為:
(紫框部分是給自己看的,改一下會比較清楚。)
最右下的數字1是靠左對齊,因此2就是靠右對齊。
接著,為了取得地名,先按右鍵新增腳本(Ins)、再貼上以下腳本:(取自Atelier RGSSMain Menu
############
# Game_Map #
############
class Game_Map
attr_reader:map_id
def mpname
$mpname = load_data("Data/MapInfos.rxdata")
$mpname[@map_id].name
end
end
(註:也可以直接貼在Window_Mapname裡(最上方或最下方皆可)。)
回到Scene_Menu,將所有"步數"改成"地名":
這樣就完成囉!
PS.如果是刪除掉整個視窗的話,只要把以上該改的地方刪掉就好囉!
 
【置入其他變數】
只將 Window_Steps 第27行的 $game_party.steps 改為 $game_variables[1] 即可。
(紅字是指變數編號,可自行代換)

以上就是主選單的基本更改技巧~
其實也可以多看看其他人的腳本就知道要怎麼改了!
看懂了就能試著改出自己想要的樣子囉!
 
 
57
-
LV. 7
GP 18
2 樓 進擊の蘑菇 brandon55529
GP0 BP-
可是我的進入後顯示
的是這樣,要怎麼辦

附:我是xp的

0
-
LV. 10
GP 104
3 樓 腹黑部長 yaguyi
GP0 BP-
你好,關於選單背景的部份還想再請您指教一次
★雖然按照你的說法在腳本做更改





★但是進行遊戲測試的時候,沒有辦法打開選單(菜單)畫面
原因是因為找不到圖片檔案



★但是我很確信我在Graphics\Pictures是有放圖片的,而且還是PNG檔



我用的軟體是VX Ace
腳本方面內容有很多地方都跟VX不一樣

請問為什麼他會找不到圖片??
0
-
LV. 5
GP 0
4 樓 Jelly Sword jelly555
GP0 BP-

作者標示-非商業性

本授權條款允許使用者重製、散布、傳輸以及修改著作,但不得為商業目的之使用。使用時必須按照著作人指定的方式表彰其姓名。

不好意思, 部過我用的是vx ace

沒有找到s1 s2之類的東西欸...  能告訴我該怎麼辦嗎? 謝謝


0
-
未登入的勇者,要加入 5 樓的討論嗎?
板務人員:

2726 筆精華,09/12 更新
一個月內新增 12
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】