這是記錄修改心得的筆記,非本人請勿轉載,非商業情況下請隨意使用在您的游戲中,您要用在商業游戲中我也拿您沒輒。
1. 在 Esc 菜單中加入地圖名窗口
建立一個名稱為 Window_Menu_MapName 腳本如下:
#encoding:utf-8
#==============================================================================
# ■ Window_Menu_MapName
#------------------------------------------------------------------------------
# 顯示地圖名的視窗
#==============================================================================
class Window_Menu_MapName < Window_Base
#--------------------------------------------------------------------------
# ● 初始化物件
#--------------------------------------------------------------------------
def initialize
super(0, 0, window_width, fitting_height(1))
refresh
end
#--------------------------------------------------------------------------
# ● 取得視窗的寬度
#--------------------------------------------------------------------------
def window_width
return 320 #160
end
#--------------------------------------------------------------------------
# ● 重新整理
#--------------------------------------------------------------------------
def refresh
contents.clear
draw_icon(320,0,0)
draw_text(contents.rect, $game_map.display_name, 1)
end
#--------------------------------------------------------------------------
# ● 開啟視窗
#--------------------------------------------------------------------------
def open
refresh
super
end
end
預設的寬度和金錢窗口一樣 160,但可以自行改 window_width 的值,像本例就是改成 320 了,draw_icon 是描繪圖標的方法,它的 320 是圖標大圖中第三百二十號圖標,要改的話自己算位置。
打開 Scene_Menu 腳本,在 def start 最後加上:
create_mapname_window
然後在生成金錢視窗 end 的下面加上:
#--------------------------------------------------------------------------
# ● 生成地圖名視窗
#--------------------------------------------------------------------------
def create_mapname_window
@mapname_window = Window_Menu_MapName.new
@mapname_window.x = 0
@mapname_window.y = 0
end
自己調整各窗口位置吧。
2. 在 Esc 菜單中加入時間窗口
XP 的菜單有個累計游戲時間的窗口,但 RMVXA 沒有,現在就自行補上。
同上一例,建立一個 Window__Menu_Playtime 腳本如下:
#encoding:utf-8
#==============================================================================
# ■ Window_Menu_Playtime
#------------------------------------------------------------------------------
# 顯示遊戲累計時間的視窗
#==============================================================================
class Window_Menu_Playtime < Window_Base
def initialize
super(0, 0, window_width, fitting_height(1))
update
end
#--------------------------------------------------------------------------
# ● 取得視窗的寬度
#--------------------------------------------------------------------------
def window_width
return 160
end
#--------------------------------------------------------------------------
# ● 更新畫面
#--------------------------------------------------------------------------
def update
super
return if $game_system.playtime == @playtime
@playtime = $game_system.playtime
contents.clear
draw_icon(280,0,0)
draw_text(contents.rect, $game_system.playtime_s, 2)
end
#--------------------------------------------------------------------------
# ● 開啟視窗
#--------------------------------------------------------------------------
def open
refresh
super
end
end
然後在 Scene_Menu 中的 def start 加入一行:
create_playtime_window
再在剛才的生成地圖名視窗 end 之下加入
#--------------------------------------------------------------------------
# ● 生成游戲時間視窗
#--------------------------------------------------------------------------
def create_playtime_window
@playtime_window = Window_Menu_Playtime.new
@playtime_window.x = 0
@playtime_window.y = Graphics.height - (@gold_window.height * 2)
end
3. 菜單金錢窗口加上圖標
打開 Window_Gold 腳本,在
draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)
之上加一行
draw_icon(362,0,0)
4. 在角色狀態頁背景中加入立繪(大的全身或半身肖像)圖:
打開 Window_Status 腳本,找到 def refresh 重新整理方法,在 contents.clear 的下方,draw_block1 的上面加上
draw_player
然後找一個合適的位置,加上描畫立繪圖的定義
#--------------------------------------------------------------------------
# ● 繪制角色立繪
#--------------------------------------------------------------------------
def draw_player
player_filename = sprintf("player_%02d.png", @actor.id)
return unless FileTest.exist?("Graphics/Party/" + player_filename)
bitmap = Cache.load_bitmap("Graphics/Party/", player_filename)
rect = Rect.new(0, 0, bitmap.width, bitmap.height)
contents.blt(contents_width - bitmap.width, contents_height - bitmap.height, bitmap, rect, 120)
bitmap.dispose
end
立繪圖預設是放在 Graphics/Praty/ 下的,這 Praty 是自己建立的,原本建立工程沒有這個資料夾,要自己建立,把立繪圖放在裏面,它檔名格式是
player_01.png
plsyer_02.png
檔名中的 01 02 是對應數據庫中角色頁的ID,所以您只要檔名設對了,在狀態頁背景自然會顯示正確的立繪,隊伍重整排列也不會有影響,但如果您把數據庫中的角色前後順序換了,也就是角色的ID不一樣了,您必須將立繪圖的檔名數字改成和當前正確的角色ID,以免張冠李戴,對不上號。