回复 20# 夹鸡馒头 的帖子
其实说白了就是对比脚本和游戏,拿常见的吉里吉里的脚本来说,假设这个引擎没有开源,大家都不知道这个脚本引擎是怎么工作的前提下,比如看到一个脚本是这样写的:
;这是一个测试
这是一句话。[l][r]
;这是另一个测试
这是又一句话。[l][er]
;这还是一个测试
这是最后一句话[l]
[cm]
如上的脚本的话,偶们对比这个游戏的动作就会首先在屏幕的对话框里看到
=================
这是一句话。
=================
(这里假设两行等号就是对话框)
然后如果按下鼠标的话对话框就会在下面增加一句话变成
=================
这是一句话。
这是又一句话。
=================
然后再次按下鼠标对话框就会变成
=================
这是最后一句话。
=================
再按一次就是
=================
=================
这样的话偶们就大致可以猜到,“;”开头的是被脚本引擎无视的部分(俗称的Comment Out部分,通常用作解释代码作用,有时也会作为临时清除以前的代码用,类似于C的//),[l][r]是按下鼠标后换行,[l][er]是按下鼠标后清除对话框现有的内容重写,这样看下来也许具体到单独的命令上就是[l]是等待鼠标按下,[r]和[er]分别是换行和换页,最后[cm]是清除对话框内容,大致了解这些命令的作用之后接下来就是动手写脚本解析器(脚本引擎最重要的部分),也就是实际上程序在读取脚本的时候遇到这些命令该怎么运作了
当然这只是一个简单的例子,实际上吉里吉里也好其他的引擎也好往往可用的命令非常多,所以在观察脚本命令的时候往往会需要一个比较长的脚本才能实际判断出具体的那些命令分别是什么意思;特别是如果那个命令还使用过分的简称的话在猜测他的意思上会更加麻烦(比如刚刚的[cm]实际上cm是Clear Message的意思,如果直接写clearmessage的话会容易猜测意思很多,但是写cm就会需要猜很久了);嘛当然实在不行大不了看游戏的动作自己重新按照自己的想法写一个脚本再写一个引擎出来也不是不可以w
-
1
评分次数
-