Project1

标题: 实现类似于galgame的历史记录功能,非得重写message类吗? [打印本页]

作者: 至高无上    时间: 2014-9-23 23:23
标题: 实现类似于galgame的历史记录功能,非得重写message类吗?
除此之外我着实想不出别的方法了,不知道正规galgame是如何实现这个功能的,所以脚本方面的编写不知如何下手。请问一下,有什么思路方面的建议可以指点一下吗?
作者: tan12345    时间: 2014-9-23 23:25
galgame是干嘛的?能描述下galgame的功能吗?
作者: 喵呜喵5    时间: 2014-9-24 12:25
本帖最后由 喵呜喵5 于 2014-9-24 12:26 编辑

不用重写,猴补即可
在现有的message描绘文字前将需要描绘的文字记录下来

你可以参考一下我写的这个自动换行脚本,思路类似:
rpg.blue/home.php?mod=space&uid=291206&do=blog&id=11571
作者: taroxd    时间: 2014-9-24 12:54
甚至不需要动 Window_Message。下面是一个思路。

  1. module MsgHistory
  2.   
  3.   HISTORY = []

  4.   MAX_SIZE = 100

  5.   module_function

  6.   def add(text)
  7.     HISTORY.push(text)
  8.     HISTORY.shift if HISTORY.size > MAX_SIZE
  9.   end

  10. end
复制代码
在执行【显示文字】等指令的时候,调用脚本 MsgHistory.add(显示的字符串)。这一步可以在 Game_Interpreter 中完成。

当然,历史记录的界面还是要你自己写的。通过 MsgHistory::HISTORY 获取历史记录,然后显示出来就好了。

既然是历史记录,应该就不用存档了吧?
作者: invwindy    时间: 2014-9-24 23:51
AVG的指令系统除了倒回以外还可能有中断,于是提供几个思路好啦
· 自己写一套AVG的控制脚本,而不是用默认的事件。这样每一个指令执行的时候自己都可以保存一下然后任意处理。
· 在载入事件指令的时候预先扫描一遍,记录顺序,方便回看、事件中存档等等的需要。
· 如taroXD君的做法,用history来保存,倒回的时候从history读取。但是中断的时候需要把history的部分恢复成事件位置,可能可以单独记录一下事件位置吧。

关于文字绘制方面,有个想法,可以在绘制文字以后缓存一下,方便倒退;甚至可以缓存每一个字,把draw_text改成贴一堆精灵上去……(不过不确定效率和表现力)。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1