赞 | 0 |
VIP | 69 |
好人卡 | 0 |
积分 | 1 |
经验 | 48969 |
最后登录 | 2017-3-24 |
在线时间 | 3 小时 |
Lv1.梦旅人 最BT美攻!
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 3 小时
- 注册时间
- 2007-3-7
- 帖子
- 1407
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
AVG回忆系统有点小BUG
游戏时间越长
回忆系统越会慢半拍
初步认为
是把游戏里用CTRL+N编辑后会产生的空行也加到回忆系统里了
但回忆系统的行数却没有把空行算在里面?
所以越来越慢半拍??
俺想问的就是如何把回忆系统里空白行去掉?
让他正常显示不会慢一拍
回忆系统是Benavii大写的
以下是回忆系统脚本和做法
1、在Game_System22行以下加入
attr_accessor :backlog # 回想模式
attr_accessor :backlog_line # 回想行数
attr_accessor :save_backlog # 回想提示对话
然后在Game_System39行以下加入
@backlog = []
@backlog_line = 0
@save_backlog = ""
初始化两个对象。@backlog是数组,@backlog_line是行数。
2、在Window_Message78行text = $game_temp.message_text以下加入
backlog = text.clone
$backlog_line = backlog.split(/\n/).size
$game_system.backlog_line += backlog.split(/\n/).size #数数要显示的文字里有多少个分行符号,有一个符号就有一行,然后把它加到总行数里面
$game_system.backlog.push(backlog) 把对话内容push到backlog中
新建的窗口脚本
#Window_Backlog
class Window_Backlog < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化目标
#--------------------------------------------------------------------------
def initialize
super(0, 48, 640, 384)
self.contents = Bitmap.new(width - 32, height - 32)
self.active = false
self.back_opacity = 160
self.z = 99999
self.cursor_rect.empty #BB:这里重写了一下,光标取消掉了
self.index = $game_system.backlog_line - 1
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
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
# 为了方便、将 "\\\\" 变换为 "\000"
text.gsub!(/\\\\/) { "\000" }
# "\\C" 变为 "\001" に、"\\G" 变为 "\002"
text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
text.gsub!(/\\[Gg]/) { "" }
text.gsub!(/\\ani\[([0-9]+)\]/) { "" }
#AVG如果你要用到对话脚本里其它功能~要记的在回忆系统里加一下
text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "" }
text.gsub!(/\\[Aa]\[(.*?)\]/) { "" }
text.gsub!(/\\[.]/) { "" }
text.gsub!(/\\[|]/) { "" }
text.gsub!(/\\[Mm]\[([0-9]+)\]/) { "" }
text.gsub!(/\\[>]/) { "" }
text.gsub!(/\\[<]/) { "" }
text.gsub!(/\\[!]/) { "" }
text.gsub!(/\\[~]/) { "" }
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
要看系统的话就是主站俺那个AVG系统整合了
http://rpg.blue/upload_program/files/AVG精装版1.05.rar
炒饭的游戏用的根本就是俺的原系统
没有改正这个BUG。。。OTL
只好来这提问了
谢谢各位高人们帮俺看看吧 版务信息:本贴由楼主自主结贴~ |
|