查看: 3044|回复: 4

[已经解决] 实现类似于galgame的历史记录功能,非得重写message类吗?

[复制链接]
梦石
0
星屑
50
在线时间
346 小时
注册时间
2010-12-12
回帖
182
发表于 2014-9-23 23:23:11 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
除此之外我着实想不出别的方法了,不知道正规galgame是如何实现这个功能的,所以脚本方面的编写不知如何下手。请问一下,有什么思路方面的建议可以指点一下吗?
梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
发表于 2014-9-23 23:25:46 | 显示全部楼层
galgame是干嘛的?能描述下galgame的功能吗?

点评

这是个深坑,还是推荐楼主用CG做这种文字冒险游戏吧。  发表于 2014-9-23 23:32
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-9-24 12:25:03 | 显示全部楼层
本帖最后由 喵呜喵5 于 2014-9-24 12:26 编辑

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

你可以参考一下我写的这个自动换行脚本,思路类似:
rpg.blue/home.php?mod=space&uid=291206&do=blog&id=11571

评分

参与人数 1星屑 +132 收起 理由
VIPArcher + 132 我很赞同

查看全部评分

回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-9-24 12:54:49 | 显示全部楼层
甚至不需要动 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 获取历史记录,然后显示出来就好了。

既然是历史记录,应该就不用存档了吧?

评分

参与人数 1星屑 +1 梦石 +1 收起 理由
VIPArcher + 1 + 1 应该算是解决了吧。

查看全部评分

回复

使用道具 举报

梦石
8
星屑
164
在线时间
57 小时
注册时间
2013-7-14
回帖
32
发表于 2014-9-24 23:51:53 | 显示全部楼层
AVG的指令系统除了倒回以外还可能有中断,于是提供几个思路好啦
· 自己写一套AVG的控制脚本,而不是用默认的事件。这样每一个指令执行的时候自己都可以保存一下然后任意处理。
· 在载入事件指令的时候预先扫描一遍,记录顺序,方便回看、事件中存档等等的需要。
· 如taroXD君的做法,用history来保存,倒回的时候从history读取。但是中断的时候需要把history的部分恢复成事件位置,可能可以单独记录一下事件位置吧。

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

评分

参与人数 1星屑 +188 收起 理由
VIPArcher + 188 我很赞同

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部