[简单实用]续行符创建超长文章
没记错的话这是站上第4个长文章脚本了吧。。。。效果:通过在“显示文章”的事件末尾加上续行符"_",可以实现文章的连续显示,不需要进行特殊设置。最大可以显示12行(超过12行,屏幕也不够用了)
使用方法:将以下脚本插入到Main之前,在需要文章连辍显示的场合,在“显示文章”的文本最后一行末尾处,加入一个空格和一个下划线,例:
显示文章:这是第一行
这是第二行
这是第三行
这是第四行 _
显示文章:这是第五行
这是第六行 _
显示选择项:C1,C2,C3
以上事件在游戏里将会变成一个大文本框,里面有九行,最后三行是选择项
......
注意:
1. 续行符仅写在“显示文章”事件的最后一行末尾才有效果,写在中间行末尾会被直接过滤掉,写在不是行末尾的地方会当作普通字符显示,续行符对后续的“显示文章”“显示选择项”“输入数值”均有收纳作用。
2. 续行符前面必须有一个空格,否则会当作普通字符显示出来且没有效果。
3. 当文章长度已经积累到12行时,续行符失效。
脚本(有完整注释,如果你使用了小字体导致允许显示12行以上的文章,可以修改相应地方):#============================================================================# ■ 续行符文章连辍显示 by SailCat#============================================================================class Window_Messagealias sailcat_refresh refresh#--------------------------------------------------------------------------# ● 刷新#--------------------------------------------------------------------------def refresh lines = 0 $game_temp.message_text.each {lines += 1} lines = 4 if lines < 4 self.height = lines * 32 + 32 self.contents = Bitmap.new(width - 32, height - 32) reset_window sailcat_refreshend#--------------------------------------------------------------------------# ● 设置窗口位置与不透明度#--------------------------------------------------------------------------def reset_window if $game_temp.in_battle self.y = 16 else case $game_system.message_position when 0# 上 self.y = 16 when 1# 中 self.y = 240 - self.height / 2 when 2# 下 self.y = 464 - self.height end end if $game_system.message_frame == 0 self.opacity = 255 else self.opacity = 0 end self.back_opacity = 160endendclass Interpreter#--------------------------------------------------------------------------# ● 显示文章#--------------------------------------------------------------------------def command_101 # 另外的文章已经设置过 message_text 的情况下 if $game_temp.message_text != nil # 结束 return false end # 设置信息结束后待机和返回调用标志 @message_waiting = true $game_temp.message_proc = Proc.new { @message_waiting = false } # message_text 设置为 1 行 $game_temp.message_text = @list[@index].parameters + "\n" line_count = 1 # 最大 4 行 line_max = 4 # 循环 loop do # 下一个事件指令为文章两行以上的情况 if @list[@index+1].code == 401 # message_text 添加到第 2 行以下 $game_temp.message_text += @list[@index+1].parameters + "\n" line_count += 1 # 下一个事件指令为显示文章,且本行末尾有续行标记的情况 elsif @list[@index+1].code == 101 and @list[@index].parameters[-2, 2] == " _" # 如果已经达到 12 行就返回 if line_count == 12 # 清除续行标记 $game_temp.message_text.gsub!(/ _$/, "") # 继续 return true end # message_text 添加到第 2 行以下 $game_temp.message_text += @list[@index+1].parameters + "\n" line_count += 1 # 增加 4 行空间,最多 12 行 line_max += 4 if line_max < 12 # 事件指令不在文章两行以下的情况 else # 如果本行末尾有续行标记则增加到 12 行 if @list[@index].parameters[-2, 2] == " _" line_max = 12 end # 下一个事件指令为显示选择项的情况下 if @list[@index+1].code == 102 # 如果选择项能收纳在画面里 if @list[@index+1].parameters.size
页:
[1]