前言搞过QLIE的估计都会有对这个脚本有所了解,虽然语法很奇怪以及丑陋,但是还是猜出个大概来的。由于我没有搜索到关于这个脚本的介绍,所以写一点猜测出来。
语法特点大体上来说
以^ @ \开头的都是脚本语言函数或者宏,参数以英文逗号“,”为分隔符,行首的空白字符没有影响。
\开头的大约都是脚本语言的关键词,如\sub子函数调用,\jmp文件跳转,\var变量定义等
@开头的都是函数定义,或者标号定义,或者是调用
^开头的属于AVG剧本命令,常见的有^include导入游戏文本,^include,allset,^include,allclear,^sentence,^savescene,^checkpoint。这些语句的具体作用是可以用上面的脚本定义或者配置的。
^message,show:false
^music01,file:BGM10
^sentence,fade:anime:$fadefast:アニメーション/シャッターオープン縦
^bg01,file:bg/BG30f
^chara01,file0:大蔵衣遠/,file1:AEO_,file2:S_,file3:0_,file4:0_,file5:01,show:false
上面的就是游戏的背景图片,背景音乐,头像等的设置。
旁白的话,直接一句话就OK了,啥都不需要,但要注意,估计英文逗号, ^\@这些关键词是不能出现的,要出现也得用全角。
台词的话,见到过多个版本的。但是大约都是三个参数。第一个是人物立绘图片文件名,不含路径及扩展(QLIE引擎会自动找遍全部的文件,找到合适的扩展名,当然这在脚本里面有配置),第二个是人物的名字,第三个参数是就是对话了
语法说明变量声明与管理
\var,obj,p,a
\var,table,c
\var,str,nn
\var,int,i
\var,list,lst
变量定义
空字符串"",空obj为null
\gvar,theora,Avg_TheoraMovie
\gvar,int,TheroaMovieCanSkip
另一种变量定义
\del,Imo_LogText,Imo_LogName,Imo_LogVoice
\del,_retint
内存管理
标号 include一个文件
大约是标号定义
赋值
\cal,SPOpenflag=1
\cal,w=ParamInt[7],h=ParamInt[8]
\cal,Avg_SceneSkipName=ResultStr[0]+ResultStr[1]
简单的赋值语句
\scp,Imo_Setting \?v,"SaveThumPriority" \stid,ResultStr[0],999
大量出现这种语句,而且貌似比较复杂,一条语句可以长达十多行,怀疑是一个obj类型的赋值语句。还有一种不带参数
这种暂时猜不出是啥
\scp语句貌似非常多样,似乎还有一规律。
过程语句循环语句
\var,int,n,i
\cal,n=ResultInt[0]
\for,i=0,i<n,i++
\scp,p \?n,i
\end
条件语句
\if,ResultInt[0]==1\then
\else
\end
其中\else是可选的
分支语句
\case,ParamStr[8]
\ans,"強制","0"
\stop,@@!Avg_MovieOnForceStopEvent
\ans,"既読"
\scp,llog \?k
\if,ResultInt[0]==0\then
\stop,@@!Avg_MovieOnForceStopEvent
\else
\stop,@@!Avg_MovieOnStopEvent
\end
\else
\stop,@@!Avg_MovieOnStopEvent
\end
分支语句
字符串函数
\rep,ParamStr[0],"@",""
\rep,ParamStr[9],"/","\"
\rep,ParamStr[1],"%%%capture_","$$$GameThreadImageZ,"
字符串替换
用逗号split字符串,结果存在ResultStr[0],ResultStr[1]...里面
\fmt,"[pc,%s]",s
\fmt,"%.4d",p
\fmt,"[c,%s]",ResultStr[0],"[rc,%s]",ResultStr[0]
格式化字符串,此语句的结果在ResultStr[0]里面,或者直接写在\scp语句里好像也行。
\bsub,"s/\[rb,([^,]+),[^,]+\]/$1/gk",s
正则表达式查找
函数过程语句函数
关于函数内的两个特殊变量ParamStr,ResultInt
ParamStr[0],这个应该是函数内的参数列表,我比较怀疑是self参数后的那个开始算起。
\sub,@@!Avg_RepStr2Param,self,tmp
\cal,tmp=ResultStr[0]
ResultInt[0],这个应该是上一条\sub语句调用函数返回的数组
\sub,@@TOP,"Scenario\ED_Movie.s","湊",SPOpenflag==0
子函数调用语句,后面的是参数
\jmp,@@TOP,"Scenario\本編\Y12_02A.s"
文件跳转语句
函数导入语句
其他还有一些奇怪的语法现象
比如对话或者旁白中的ruby假名注音,用的是[rb,乗馬,の]
\if,#SysEffectSpeed==0\then
\scp,eff \i
\else
我比较怀疑这是个#SysEffectSpeed,取指针指向内容的操作。
莫名其妙的语句
\fexs,ParamStr[0]
\pos,"%%%capture",ParamStr[1]
\ddlg,ParamStr[2]+ParamStr[1]+":ファイルが見つかりません。"
\dout,ParamStr[2]+ParamStr[1]+":ファイルが見つかりません。"
\scp,t \sort
本文由飞天喵发出,未经许可,禁止转载。如果错漏欢迎指出交流。