=begin
===============================================================================
对话显示姓名 By喵呜喵5
===============================================================================
【说明】
通过在对话中加入
\name[姓名]
则可以在对话中显示姓名,通过修改设定部分的设定乃至修改脚本可以让这个姓名显示脚本看起
来更漂亮一些
实在不会修改的话,默认的样式应该也还过得去吧……
=end
module M5Name
#==============================================================================
# 设定部分
#==============================================================================
LINE = 4
#文章显示的行数,姓名框会占用一行
FONT = ["黑体"]
#姓名所使用的字体
SIZE = 20
#姓名字体的大小,不建议超过你默认的文字大小,不然会发生奇怪的换页……
COLOR = Color.new(0,0,0, 210)
#姓名的颜色,四个数值分别是R、G、B以及透明度
BOLD = false
#姓名是否加粗
ITALIC = false
#姓名是否斜体
SHADOW = false
#姓名是否有阴影
OUT = true
#姓名是否加边框
OUT_COLOR = Color.new(255, 255, 255, 100)
#姓名边框的颜色,四个数值分别是R、G、B以及透明度
ALIGN = 0
#姓名的对齐方式,0,1,2分别是居左、居中、居右
COLOR1 = Color.new(255, 255, 255, 128)
#姓名的背景框左边的颜色,四个数值分别是R、G、B以及透明度
#有能力建议直接修改下方的脚本调整成适合自己游戏的样式
COLOR2 = Color.new(255, 255, 255, 0)
#姓名的背景框右边的颜色,四个数值分别是R、G、B以及透明度
#有能力建议直接修改下方的脚本调整成适合自己游戏的样式
#==============================================================================
# 设定结束
#==============================================================================
end
#==============================================================================
# 脚本部分
#==============================================================================
class Window_Message < Window_Base
def visible_line_number
return M5Name::LINE
end
def process_all_text
open_and_wait
text = convert_escape_characters($game_message.all_text)
text.slice!(/\ename\[(.+?)\]/i)
@showname = $1
pos = {}
new_page(text, pos)
process_character(text.slice!(0, 1), text, pos) until text.empty?
end
def new_line_x
$game_message.face_name.empty? ? 0 : 112
end
def new_page(text, pos)
contents.clear
draw_face($game_message.face_name, $game_message.face_index, 0,0)
contents.font.name = M5Name::FONT
contents.font.bold = M5Name::BOLD
contents.font.italic = M5Name::ITALIC
contents.font.outline = M5Name::OUT
contents.font.shadow = M5Name::SHADOW
contents.font.color = M5Name::COLOR
contents.font.out_color = M5Name::OUT_COLOR
contents.font.size = M5Name::SIZE
if @showname != nil
draw_namebackground(text_size(@showname))
draw_text($game_message.face_name.empty? ? 0 : 112,0,contents_width,
M5Name::SIZE, @showname,M5Name::ALIGN)
pos[:y] = M5Name::SIZE
else
pos[:y] = 0
end
reset_font_settings
pos[:x] = new_line_x
pos[:new_x] = new_line_x
pos[:height] = calc_line_height(text)
@showname = ""
clear_flags
end
def reset_font_settings
change_color(normal_color)
contents.font.bold = Font.default_bold
contents.font.italic = Font.default_italic
contents.font.name = Font.default_name
contents.font.outline = Font.default_outline
contents.font.shadow = Font.default_shadow
contents.font.size = Font.default_size
contents.font.out_color = Font.default_out_color
end
#==============================================================================
# 以下内容用来描绘姓名框的背景,有能力的建议自行对其修改成适合自己游戏的样式
#==============================================================================
def draw_namebackground(rect)
temp_rect = rect.clone
temp_rect.x = $game_message.face_name.empty? ? 0 : 112
temp_rect.width = 460
contents.gradient_fill_rect(temp_rect, name_color1, name_color2)
end
def name_color1
M5Name::COLOR1
end
def name_color2
M5Name::COLOR2
end
end
#==============================================================================
# 脚本结束
#==============================================================================