1. 在Interpreter 2里定位到第40行,插入以下两行内容
when 108 # 注释
return command_108
2. 将后附的脚本插入到Main之前
3. 若要打开长文章显示功能,在文章前加入一个注释事件,内容为"LN_start"
4. 若要关闭长文章显示功能,在文章后加入一个注释事件,内容为"LN_end"
5. 将要显示的长文章夹在这两个注释之前即可,对于“显示选择项”和“数值输入”指令,仍然可以智能判断收容(站上的读报系统做不到)。
6. 只要事件执行完毕,长文章显示功能就会自动关掉(就是说你可以只有"LN_start"而没有"LN_end",执行其他事件的显示文章时不会出现任何问题)
class Interpreter alias sailcat_clear clear def clear sailcat_clear @line_max = 4 # 信息最大行数 end #-------------------------------------------------------------------------- # ● 显示文章 #-------------------------------------------------------------------------- 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[0] + "\n" line_count = 1 # 循环 loop do # 下一个事件指令为文章两行以上的情况 if @list[@index+1].code == 401 # message_text 添加到第 2 行以下 $game_temp.message_text += @list[@index+1].parameters[0] + "\n" line_count += 1 # 下一个事件指令为显示文章并且是长文的情况 elsif @line_max != 4 and @list[@index+1].code == 101 # 如果文章长度足够 if line_count < @line_max # message_text 添加到现有文章以后 $game_temp.message_text += @list[@index+1].parameters[0] + "\n" line_count += 1 # 文章长度不够的情况下 else # 继续 return true end # 事件指令不在文章两行以下的情况 else # 下一个事件指令为显示选择项的情况下 if @list[@index+1].code == 102 # 如果选择项能收纳在画面里 if @list[@index+1].parameters[0].size <= @line_max - line_count # 推进索引 @index += 1 # 设置选择项 $game_temp.choice_start = line_count setup_choices(@list[@index].parameters) end # 下一个事件指令为处理输入数值的情况下 elsif @list[@index+1].code == 103 # 如果数值输入窗口能收纳在画面里 if line_count < @line_max # 推进索引 @index += 1 # 设置输入数值 $game_temp.num_input_start = line_count $game_temp.num_input_variable_id = @list[@index].parameters[0] $game_temp.num_input_digits_max = @list[@index].parameters[1] end end # 继续 return true end # 推进索引 @index += 1 end end #-------------------------------------------------------------------------- # ● 注释 #-------------------------------------------------------------------------- def command_108 # 注释关键字解释 case @parameters[0] # 长文开始标记 when "LN_start" if $game_temp.in_battle @line_max = 4 else case $game_system.message_position when 0 @line_max = 12 when 1 @line_max = 8 when 2 @line_max = 4 end end # 长文结束标记 when "LN_end" @line_max = 4 end # 继续 return true end end
class Interpreter
alias sailcat_clear clear
def clear
sailcat_clear
@line_max = 4 # 信息最大行数
end
#--------------------------------------------------------------------------
# ● 显示文章
#--------------------------------------------------------------------------
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[0] + "\n"
line_count = 1
# 循环
loop do
# 下一个事件指令为文章两行以上的情况
if @list[@index+1].code == 401
# message_text 添加到第 2 行以下
$game_temp.message_text += @list[@index+1].parameters[0] + "\n"
line_count += 1
# 下一个事件指令为显示文章并且是长文的情况
elsif @line_max != 4 and @list[@index+1].code == 101
# 如果文章长度足够
if line_count < @line_max
# message_text 添加到现有文章以后
$game_temp.message_text += @list[@index+1].parameters[0] + "\n"
line_count += 1
# 文章长度不够的情况下
else
# 继续
return true
end
# 事件指令不在文章两行以下的情况
else
# 下一个事件指令为显示选择项的情况下
if @list[@index+1].code == 102
# 如果选择项能收纳在画面里
if @list[@index+1].parameters[0].size <= @line_max - line_count
# 推进索引
@index += 1
# 设置选择项
$game_temp.choice_start = line_count
setup_choices(@list[@index].parameters)
end
# 下一个事件指令为处理输入数值的情况下
elsif @list[@index+1].code == 103
# 如果数值输入窗口能收纳在画面里
if line_count < @line_max
# 推进索引
@index += 1
# 设置输入数值
$game_temp.num_input_start = line_count
$game_temp.num_input_variable_id = @list[@index].parameters[0]
$game_temp.num_input_digits_max = @list[@index].parameters[1]
end
end
# 继续
return true
end
# 推进索引
@index += 1
end
end
#--------------------------------------------------------------------------
# ● 注释
#--------------------------------------------------------------------------
def command_108
# 注释关键字解释
case @parameters[0]
# 长文开始标记
when "LN_start"
if $game_temp.in_battle
@line_max = 4
else
case $game_system.message_position
when 0
@line_max = 12
when 1
@line_max = 8
when 2
@line_max = 4
end
end
# 长文结束标记
when "LN_end"
@line_max = 4
end
# 继续
return true
end
end
|