x = y = 0
@item_max = $game_system.backlog_line
if @item_max <= 0
return
end
self.contents = Bitmap.new(width - 32, row_max * 32)
self.contents.font.color = normal_color
for i in 0...$game_system.backlog.size
text = $game_system.backlog.clone
begin
last_text = text.clone
text.gsub!(/\\[Vv]\[([0-9]+)\]/) { "#{$game_variables[$1.to_s]}" }
end until text == last_text
text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
text.gsub!(/\\[Ii]/) { "" }
text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "" }
text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "" }
text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "" }
text.gsub!(/\\[Kk]\[(.*?)\]/) { "" }
# c 获取 1 个字 (如果不能取得文字就循环)
while ((c = text.slice!(/./m)) != nil)
# \\ 的情况下
if c == "\000"
# 还原为本来的文字
c = "\\"
end
# \C[n] 的情况下
if c == "\001"
# 更改文字色
text.sub!(/\[([0-9]+)\]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
# 下面的文字
next
end
# 另起一行文字的情况下
if c == "\n"
# 刷新选择项及光标的高
if y >= $game_temp.choice_start
@cursor_width = [@cursor_width, x].max
end
# y 加 1
y += 1
x = 0
# 移动到选择项的下一行
if y >= $game_temp.choice_start
x = 8
end
# 下面的文字
next
end
# 描绘文字
self.contents.draw_text(100 + x, 32 * y, 40, 32, c)
# x 为要描绘文字的加法运算
x += self.contents.text_size(c).width
end
end
self.top_row = (self.row_max - 1) - (self.page_row_max - 1)
end
end
#Scene_Backlog
class Scene_Backlog
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
# 获取角色
# 生成状态窗口
@backlog_window = Window_Backlog.new
@backlog_window.cursor_rect.empty
@spriteset = Spriteset_Map.new
#AVG
@Hbg = Sprite.new
@Hbg.bitmap = Bitmap.new("Graphics/Pictures/回忆框")
@Hbg.opacity = 200
@Hbg.visible = true
@Hbg.x = 0
@Hbg.y = 0
@Hbg.z = 3000
# 执行过渡
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果画面被切换的话就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放窗口
@backlog_window.dispose
@spriteset.dispose
@Hbg.dispose
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
@Hbg.visible = false
$scene = Scene_Map.new
return
end
#BB:取消了Backlog窗口的刷新,改成按一下键翻动一下窗口。
if Input.repeat?(Input::UP)
# 切换到菜单画面
@backlog_window.top_row -= 1 unless @backlog_window.top_row == 0
return
end
if Input.repeat?(Input::DOWN)
# 切换到菜单画面
@backlog_window.top_row += 1 unless @backlog_window.top_row == @backlog_window.row_max - @backlog_window.page_row_max
return
end
if Input.repeat?(Input::L)
# 切换到菜单画面
@backlog_window.top_row -= @backlog_window.page_row_max
return
end
if Input.repeat?(Input::R)
# 切换到菜单画面
@backlog_window.top_row += [@backlog_window.page_row_max, @backlog_window.row_max - (@backlog_window.page_row_max + @backlog_window.top_row)].min
end
end
end
忽然想到。。。。就是BLOG的行数没有把空行加上去的关系吧。。。
那。。。如何去显示。。。。那根本的东东还是没有更正啊。。。汗作者: 「旅」 时间: 2009-1-29 15:50
用了炒饭的落叶岛测试了下,发现这个东西
if $game_system.backlog.size > 100
line = $game_system.backlog.size - 100
for i in 0...$game_system.backlog.size - line
$game_system.backlog = $game_system.backlog[i + line]
#$game_system.backline = $game_system.backline[i + line]
end
$game_system.backlog_line = 100
for i in 0...line
$game_system.backlog.pop
#$game_system.backline.pop
end
end
看了看应该是算错了……被我直接简化了……
if $game_system.backlog.size > 100
for i in 0...$game_system.backlog.size - 100
$game_system.backlog_line -= $game_system.backlog[0].split(/\n/).size
$game_system.backlog.delete_at 0
end
end
换成这样测试了500句还是没有发生问题。 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~作者: tranpol 时间: 2009-1-30 08:49
太感谢「旅」的回答了
另~~
俺知道另一个去空行的办法了
星大给俺直接去空行的办法
@now_text = $game_temp.message_text
backlog = @now_text.clone
temp = backlog.split(/\n/)
temp.delete("")
backlog = ""
for i in 0...temp.size
backlog += temp
backlog += "\n"
end
$backlog_line = temp.size
$game_system.backlog_line += backlog.split(/\n/).size
$game_system.backlog.push(backlog)