赞 | 3 |
VIP | 333 |
好人卡 | 2 |
积分 | 1 |
经验 | 1450446 |
最后登录 | 2019-5-29 |
在线时间 | 615 小时 |
Lv1.梦旅人 66RPG站长
- 梦石
- 0
- 星屑
- 54
- 在线时间
- 615 小时
- 注册时间
- 2005-10-10
- 帖子
- 5734
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
老早年间的帖子了,动网的论坛太慢,自己查都不方便,从自己小窝贴过来一份。
RMVX的对话框逻辑非常清晰,增减修改都极其简单。这里记录一点点研究考虑的内容。
1、行距:
整个游戏的行距全部通过一个变量WLH来控制,搜索WLH,找到赋值的24,改为32,就很有RMXP的感觉了。但是实际上测试的时候官方明显没有进行过多测试,这里改为32之后,直接战斗窗口就有选项逻辑错误了——不是行距位置错误,而是逻辑错误。不管怎样,这里调整对话框的行距……
2、新增控制符:
在VX的Window_Message里面,用一个函数convert_special_characters完整记录了控制符的转换逻辑,我在这里添加两行:
- def convert_special_characters
- @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
- @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
- @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
- @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
- @text.gsub!(/\\G/) { "\x02" }
- @text.gsub!(/\\\./) { "\x03" }
- @text.gsub!(/\\\|/) { "\x04" }
- @text.gsub!(/\\!/) { "\x05" }
- @text.gsub!(/\\>/) { "\x06" }
- @text.gsub!(/\\</) { "\x07" }
- @text.gsub!(/\\\^/) { "\x08" }
- @text.gsub!(/\\\\/) { "\\" }
- # ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★
- @text.gsub!(/\\S\[([0-9]+)\]/i) { "\x09[#{$1}]" }
- @text.gsub!(/\\I\[([0-9]+)\]/i) { "\x10[#{$1}]" }
- end
复制代码
这样在对话里面就可以输入\S[5],\I[7]一类的来执行一些功能。下面来书写功能。
3、新增功能:
在update_message中,可以清楚地看到每个\x的功能,这里把新添的\x09和\x10添加上:
- def update_message
- loop do
- c = @text.slice!(/./m) # 获取下次文字
- case c
- when nil # 没有描画的文字
- finish_message # 结束更新
- break
- when "\x00" # 换行
- new_line
- if @line_count >= MAX_LINE # 行数是最大时
- unless @text.empty? # 仍然继续的情况下
- self.pause = true # 等待输入
- break
- end
- end
- when "\x01" # \C[n] (更改文字色)
- @text.sub!(/\[([0-9]+)\]/, "")
- contents.font.color = text_color($1.to_i)
- next
- when "\x02" # \G (显示所持金)
- @gold_window.refresh
- @gold_window.open
- when "\x03" # \. (等待 1/4 秒)
- @wait_count = 15
- break
- when "\x04" # \| (等待 1 秒)
- @wait_count = 60
- break
- when "\x05" # \! (等待输入)
- self.pause = true
- break
- when "\x06" # \> (瞬间表示 ON)
- @line_show_fast = true
- when "\x07" # \< (瞬间表示 OFF)
- @line_show_fast = false
- when "\x08" # \^ (不等待输入)
- @pause_skip = true
- # ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★
- when "\x09" # \S[n] (这个是我加上描绘技能)
- @text.sub!(/\[([0-9]+)\]/, "")
- item = $data_skills[$1.to_i]
- draw_item_name(item, @contents_x, @contents_y)
- @contents_x += 24 + contents.text_size(item.name).width
- when "\x10" # \I[n] (这个是我加上描绘物品)
- @text.sub!(/\[([0-9]+)\]/, "")
- item = $data_items[$1.to_i]
- draw_item_name(item, @contents_x, @contents_y)
- @contents_x += 24 + contents.text_size(item.name).width
- # ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★# ★
- else # 普通的文字
- contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
- c_width = contents.text_size(c).width
- @contents_x += c_width
- end
- break unless @show_fast or @line_show_fast
- end
- end
复制代码
这么简单就实现了最基本的一些脚本功能:加入对话中的图标。利用玮子以前提供的思路,这里就可以加入各种静态的QQ表情了。最简单测试截图如下:
[本贴由 御灵 于 2008-1-18 0:23:21 进行了编辑] 本贴由论坛斑竹柳柳结贴,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^ 本贴由论坛斑竹柳柳结贴,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^ |
|