其一,解决了原脚本中的语句的转换,这一语句索引了游戏目录中的TEXTBOX.INI配置文件。进去一看,居然有10种对话框的边框文字设计。但是游戏中却只使用了0号和5号(后者用于独白,数量稀少),于是一开始的处理方法是把它替换为texton,并且在脚本*start处使用setwindow定义了等效于0号框的对话框。效果还行,只是本该出现在5号框的内容直接在框里出现了,显得有些突兀。于是今天决心解决这个问题,方案是这样的:自定义函数boxtype并读取附带的参数,对于0和5分别对对话框进行单独设置。
NS代码部分如下:
*define
…
…
defsub boxtype
…
game
*boxtype
getparam %99
;;if %99=%201 :return
if %99 = 0 setwindow 43,45,26,7,21,21,0,4,20,0,1,"dataf05.jpg",32,40
if %99 = 5 setwindow 185,160,10,7,21,21,0,4,20,0,1,"dataf05.jpg",32,40
;;mov %201,%99
return
…
…
Python代码如下:(由于水平较差,未能使用正则表达式)
[python]
…
if ‘box type’ in i: i=string.replace(i,'”>’,”)
i=string.replace(i,’效果很好,于是此问题解决,顺便说一下,注释的那两句是判断是否需要再次定义的,理论上可以节省点时间,不过效果不明显,保留下来作为参考。
---------此乃分割线---------
至于其二么,是刚才才萌生的念头。处理的问题是:原脚本中的指令。
咋一看来,在《沙耶》中的应用就像通常NS中的textoff一样(我最初就这么替换了,于是效果嘛……),但是它却有一个不小的区别,沙耶的引擎是不用在页的末尾添加一个""就能够根据内容长短自动换页的,真正的作用应该是textclear。由于NS需要换页符"",所以我就把clear换成了ntextoff(python中n即换行),因为出现的地方已经是页尾的下一行了。这样的效果不太好(1.页尾时,翻页等待图标会出现在最后一行的下一行开头处,不太美观 2.有时被当成textoff用,由于之前根本没有文字,会出现一个空白的对话框和一个孤零零的等待图标),于是打算改进。方才突然想到作为textclear用的前提是之前已经出现过对话框定义,没有便是textoff,遂想到将改成"pclear"之类的自定义指令之后在boxtype内为一个变量赋值,在pclear载入时检查,pclear结束时再清零。这样就能避免空白页面的问题了,至于出现在下一行的问题,仍然需要思考,嗯,就到这里了。