這是記錄自己修改心得的筆記,以防忘記,非我本人不可以私自轉貼,但在非商業性質下請隨便用在您的游戲中。
1. 雙行地圖名美化
直接使用默認地圖名顯示 Window_Map 腳本做的美化版,改成置中顯示,並且使備註欄可以顯示雙行地圖名,字體放大,以水平線分隔。
先在 Game_Map 腳本中,加上一段:
#--------------------------------------------------------------------------
# ● 取得地圖備註欄
#--------------------------------------------------------------------------
def note
@map.note
end
用來調取地圖的備註欄內容。
接下來,開啟 Window_MapName 腳本,把:
super(0, 0, window_width, fitting_height(1))
改成
super(Graphics.width - window_width / 2, Graphics.height - fitting_height(4) / 2, window_width, fitting_height(4))
增行它的顯示高度,並且把地圖名顯示位置放在畫面置中。
然後改變視窗寬度和加上視窗高度:
def window_width
return 480 # 240 <-原預設值
end
#--------------------------------------------------------------------------
# ● 取得視窗的高度
#--------------------------------------------------------------------------
def window_height
return fitting_height(4)
end
再找到重新整理的 def refresh 方法,把
draw_text(contents.rect, $game_map.display_name, 1)
註解,其下另外加入幾行:
#取得地圖備註欄中的地圖名
$game_map.note.sub!(/<s_mapname:(.*?)>/i, "")
s_mapname = $1.to_s
make_font_bigger #字體大小 + 8
line_font_height = 1.3
if s_mapname != ""
rect = Rect.new(0, line_height * 0.3,contents.width,line_height * line_font_height) #定義第一行的位置
draw_text(rect, $game_map.display_name, 1) #在第一行畫出地圖的顯示名稱
contents.fill_rect(0, line_height * 2, contents_width - 12 , 2, normal_color) #描繪水平線
rect = Rect.new(0,line_height * 2.3,contents.width,line_height * line_font_height) #定義第二行的位置,為第一行往下一行
draw_text(rect, s_mapname, 1) #$game_map.note, 1) #在第二行畫出地圖的備註名稱
else
rect = Rect.new(0, line_height * 1.3,contents.width,line_height * line_font_height) #定義第一行的位置
draw_text(rect, $game_map.display_name, 1) #在第一行畫出地圖的顯示名稱
end
reset_font_settings #重置字體
這樣,只要在地圖設置中的備註欄,使用 <s_mapname:XXXXXXXX> 的方式設置第二行的地圖名 XXXXXXXX 即可。
備註欄有第二行地圖名時:
無備註欄地圖名時:
水平線可以改成用
contents.gradient_fill_rect(32, line_height * 2, contents_width - 64 , 2, normal_color, system_color)
來描畫,這是 VA 畫 HP, MP 血槽的方法,多了一個顏色設定,兩種顏色會從左到右漸變,此例是由白色到藍色,即 VA 默認 windowskin 顏色盤設置的第 0 色白色往第 16 色藍色漸變。
2. 在對話中途更改肖像和發出音效
打开 Widnow_Base 默认脚本,找到:
def process_escape_character(code, text, pos)
case code.upcase
when 'C'
change_color(text_color(obtain_escape_param(text)))
when 'I'
process_draw_icon(obtain_escape_param(text), pos)
when '{'
make_font_bigger
when '}'
make_font_smaller
end
end
在最后的 make_font_smaller 下加上:
when 'FC'
change_message_face(text)
然后,上述最后 end 下加上一段:
def change_message_face(text)
draw_face($game_message.face_name, obtain_escape_param(text), 0, 0)
end
好了,现在您可以在 \! 后面加上 \FC[n] 来换肖像了,n 是指那一张肖像图中的第 n 个肖像,第三个是 2,第一排最右边是 3,FC 大小写都可以。
同樣的步驟,在 when 'FC' 的下方再加一個判斷
when 'SE'
play_message_se(text)
在 def change_message_face(text) 之前再加上一段
def play_message_se(text)
text.slice!(/\[(.*?)\]|/i)
Audio.se_play("Audio/SE/#{$1}", 80,100)
end
這樣就可以在 \FC[n] 後面再加上 \SE[聲效檔名] 控制符,達到在更換肖像的同時播放聲效了。