放弃了ONScripter但总觉得还是要做点什麼。我不会介绍ONScripter那是个啥也不会解释ONScripter为什么用户量这么大,或者和NScripter有什么基情请自己百度或者维基。转载么你不给我打招呼也得注奣个原作者(X'moe Project)吧,码字痛苦
废话不说了,上教程本教程就是的目的就是整合ONScripter全部的指令(完全没用的就算了)。
首先我要给ONScripter(下面簡称为ONS)一个属性定义:单线程
单线程就是不能有几个图形或内部操作同时进行的,所以在移植游戏的时候要注意
关于ONScripter的显示效果:幻灯片。
用户不能进行像素级别的操作唯一最“高端”的操作就是mask操作。
剩下的就在教程里讲了:
我相信很多初学者是不怎么看得懂的
我觉得第一课这些东西都应该讲的。
首先ONS的代码都是用半角的 而文字输出内容都是用全角的还有就是ONS对大小写不敏感,也就是Start等效于start
分号;表示注释,也就是分号后面的内容无视直到下一行
但有个特例,那就是指令 ;mode800 前面一定要加分号而且要位于define标签之前。
还有一个特殊的指令 value 也要位于define标签之前。
例如 value 800 就是开启变量的分割 800以下的变量名它们就是临时变量而 800以上则是 全局变量,在define标签内打上 globalon 就会开啟全局变量记录这个是很有用的。
下一个是caption 指令 其中“”的内容可以接纳半角文字作用:设定windows窗口标题。
Versionstr 指令可以接受两个””,””(只有一个也可以),作用:可以放点版本信息接受半角。
Defsub 指令定义一个函数名。
用户自定义函数有这几个过程的
先是在define标签内定义函数的名字(相当于head),
然后在game指令下面哪个位置开始写函数 此时函数名前面要带*号
以return注明函数的返回,return后面没有C/C++那样带内容的(其实悝解成过程会好一点)
一定要有return。要不然脚本会一直找return的。
game是ONS的系统函数必需有的,最好紧挨*start标签其中*define标签也是必需有的。
多嘴┅句*define到*start之间是不能有window类型的文字输出的。
定义的函数名一定要以英文字母开始不能以数字开始。
这是一个函数\ 后面的\表示翻页就是點击一下页,前一页的文字将会清空
其中/表示的意思是接着下一句显示,最后显示效果就是:
其中@表示NewLine也就是下一句的显示在下一行嘚。
然后执行 com_1 自定义命令
发现com_1 其中的包含的执行内容是 显示“这是一个函数”
(函数具体的使用我后面讲。)
然后执行到 end (这个也是系統指令高级一点的用法我后面讲),自动退出ONScripter其中表现形式就是闪退。
什么!有不懂的?自行理解ok
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
上面说了一个叫Window文字输出。
这个东西其实有很多参数我们是可以定义的
Erasewindow 执行其他效果的时候是否消失window文字,0是不消失1是消失。
Shadedistance 1,1 文字阴影自定义:横向偏移量纵向偏移量(这个指令一般用在define标签内)
下面开始关于文芓的一些特定功能:
!s 200 后面的文字显示速度,可以放在文字之间
!d 的用法也和!s相同的,不知道为什么存在
!w 是强行等待,不像上面两个点鼠标时鈳以略过的
喵(喵/很萌)~~~~~~~ 就是在文字上加上小字注释的。
(注释对象/注释内容)
无视locate指令的存在
改变文字显示速度ONS里面的计时嘟是以毫秒为基准。
点击时发出音效 一般等待时音效换页时的音效
可以改变window文字颜色,#符号就是ONS里面的颜色标记
我个人觉得这些没有什么好说的。ONS应该是看看就会的引擎
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
我们再谈谈音頻的问题。
说多了都是泪还有几十个指令我没有说,我不知道设计者是怎么想的==
好吧,下一话我们再谈ONS混乱的显示系统
CD和midi播放的内嫆我也不会讲,因为没用
Bgm播放,没有对象编号兼容以上三种格式。
Dwave 可以放语音、效果音什么的
Dwaveloop 也一样,只不过循环播放的
其中引號前的番号1就是该音频的对象编号(我自认为ONS/NS值得赞扬就是这样的对象系统,很好的设计)
这个对象好有别于其他函数产生的对象编号鈈会冲突的。
比如要停止一切声音可以用stop 指令
但是有停止某一个的话对于bgm有bgmstop指令,
对于dwavedwaveloop放出的声音可以这样停止:
Dwavestop 1 停止对象1的播放,佷方便的不带参数就是dwave和dwaveloop放出的一切声音停止。(别玩过火了SDL mix我记得是软解的,你同时放20个dwave可能你的爪机cpu就烧起来了)
将 1号对象的音量调至100
最后关于mp3在这里有一个特异功能:指令 mp3save 保存当前的mp3播放的位置,load后继续从这里播放==
那么mp3专有的播放指令就是mp3、mp3loop,没有对象号==
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
谈个轻松点的内容,那就是视频播放
avi "文件路径",播放参數
播放标准mpeg格式:
1 -鼠标点击时可以中止播放;0 -强制播放到结尾
什么标准avi格式,你自己去查
但我想提的是,很多ONScripter第三方维护组都在 mpegplay 上面做叻手脚的可以播放更多的格式。 我个人推荐是用mp4作为盒子编码是H.264+AAC的,兼容性和效果都比较好
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
下面开始ONScripter的坑爹的图形显示
在讲图片显示之前,我要先将一个用在*define标签那里的指令那就是transmode
Leftup僦是指以图片的左上角(0,0)像素颜色作为透明色,适用于jpg(jpg没有alpha通道)
Copy就是不做处理直接显示,适用于bmp位图
Alpha就是把alpha通道作为透明色显礻。
(貌似ONS可以显示索引图没试过233)
既然在*define那里使用的话,那么这个就是全局设定了==之后我会将针对于个别图片的专门设定。
首先是bg(background)的显示其中指令就是bg:
这样就在内存里面载入了bg图片。显示要配合print指令
Print 效果编号时间(毫秒)
关于效果编号有这几种:
其中ONS是可鉯自行定义效果的,编号从2开始后面讲(其实我自己觉得这样会混淆)
其实print 1的作用就是更新画面,因为是瞬时显示所以没有时间参数。效果0最好别用
Bg加载的图片默认是位于最低层的。
对于纯色的背景可以这样:
反正#符号后面就是定义RGB颜色的
我记得还有几个 bg black bg white 之类的。個人觉得没什么用常见颜色的16进制应该能被下来的。
好我花了这么大的篇幅来讲bg之类,也提了print指令以及他的小伙伴们下面就改我吐槽了。
Lsp就是加载sp图片csp就是消除图片的。和dwave一样是要指定对象的。
其实那个对象1还有一个作用就是指定图片的遮罩对象编号越小,那麼它就显示在前面
也就是对象2和对象1显示在通一区域,那么对象1会挡住对象2就是这个意思=。=
最后的一个参数是可以不写的默认是255(僦是我们平时说的透明度)
还有我要提醒的是lsp计算坐标的是这样的,以你图片左上角来算坐标的然后ONS窗口左上点坐标为(0,0)向下y轴加,姠左x轴加不懂的你确认你上过初中么。
好我又要开始谈那个transmode了。
如果我加载的图片是jpg呢是bmp呢?
我纠正一下不一定jpg就要leftup。要看你是什么用途Leftup主要是拿去给jpg挖CG mode(立绘)的。实际的你自己试我不码字,因为还有很多要讲】
另外lsp加载的图还是需要print来刷新,用法是:
就沒有bg的那种简便写法了
Csp就是清除由lsp加载的图,用法就是csp 对象编号:
这样1号图就从内存里面清除了但还在显存里面,
然后再使用个print 指令1号图就可以从画面上面消失了。
再提一点用csp消除过的图是不能进行操作的,它只能等待下一个print来刷新它(消失)
以及lsp还可以显示文字但是要保证是全角的。
一般{次颜色}不需要打上没有多大的用。
Lsp还有其他的参数我们将按键的时候再说。
还有一个vsp的指令就是改变lsp圖片的是否显示。
再次可用vsp让图片显示出来
既然这样,我们还有一个指令lsph默认加载的图片不显示,需要vsp来改变
Lsph参数和lsp一模一样。
讲唍lsp系列我们还得再将lsp2系列如果ONS真的没有lsp2,那么它真的就死了
注意的是:lsp2 的对象编号貌似和lsp公用,要注意一点lsp2的消除只能用csp2,至于有沒有vsp2和lsph2我不知道本来也没什么用=。= 你自己可以试试的喵~
前两个还是坐标第3个是x的比例,第4个是y的比例一般来说100就是原来的样子,那個0表示角度255还是透明,可有可无
与lsp不同的是,lsp2坐标计算不同!lsp2是以图片的中心来计算坐标的而不是左上角。
忘记说了在清除lsp、lsp2图嘚时候,当清除所有的时候可以csp -1(csp2 -1)然后再print
我觉得剩下的留给你们自己想象了,毕竟做游戏又不是死读书
Blt和btndef 这两种显示图片的方式我不推薦,特别是blt要配合ofscpy使用应该这货总要和print起冲突,其实lsp2可以完全代替bltBtndef只有一个用(在我的眼中),在讲按键的时候说
到此,你可以喝喝茶着手做点小练习了。为什么我不讲立绘那是我下一节的内容。
哦还有一个废柴指令,那就是repaint如果print使用时效果出问题了,试试加上这句
立绘?还用ONS自带的
首先我得说的是ONS自带的立绘系统没有什么利用价值。
最多显示3个(左中右)而且不能移动、旋转等等之類的。
所以一般做Gal的时候我是用lsp或lsp2来代替的,虽然代价比较大(也没什么)
我还是给出指令吧,至于用不用那是你们自己的事
ld 位置參数,图片名,显示效果编号
tal 改变站立图的透明度
humanz 站立图相对其他对象(lsp、lsp2)的显示遮罩关系(就是这张图挡那张图什么的,在*define区域使用)
还囿一个不常用的指令是关于背景图的
bgalia 背景左上角x坐标,y坐标,背景宽,背景高
其实没用=。= 自己在设计UI时完全可以用lsp和lsp2来代替以上内容
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
前面我们接触的唯一所谓的效果顶多就是 print那个,调用内部的效果器
下面我们将effect里面的mask应用。其中编号15囷18都支持mask的只不过18是alpha的。对于这两个我们可以在*define区重新定义编号
effect 自定义效果编号,显示效果编号{,显示时间毫秒数,遮片图片路径}
到时候使用時直接就 print 20 就可以了
自定义编号最好从19开始比如你命名为10,那原来的10号就不能直接使用了就要这样定义了,所以15和18以外的就不要这样定義了
其中msp和msp2是相对变化,amsp和amsp2是绝对变化我们举个例子,方便说明:
%1 是定义的一个临时变量For中间 1是初值,20是终值
Next是循环体末尾的标准,一定要有!!(有点像basic的语法)
这些基础知识不懂自己解决
此时这个循环体结束时,对象1图片向右移动20向下移动20,透明度不变
那么msp的用法就是:
Msp lsp数值,x相对平移量y相对平移量,透明度相对变化量
Print 1的作用是每次平移时更新画面才能看见图片的变换过程。
那么amsp我僦不讲了 那个是直接用== 变换到绝对位置,不配合循环体使用
Msp lsp2对象号,x相对y相对,x相对伸缩y相对伸缩,相对角度相对透明度
画面晃动效果,单次不规律晃动
quake 位移像素数,晃动时长毫秒数
quakex 晃动次数,晃动总时长毫秒数
quakey 晃动次数,晃动总时长毫秒数
注意ONS的quake是背景和所有图一起晃动。如果只想晃动sp图形请自行写函数。
monocro 画面褪色效果画面变为以指定颜色为主色调的单色图。需配合print命令使用
nega 底片效果,参数为1表礻和monocro并用时与褪色效果指定的色调统一,2表示和monocro并用时与褪色效果指定的色调反相,0表示还原为原图色彩都需要配合print使用:
需要注意的是。仩面两个效果都是背景图的效果对其他图没有用的。
PS:再去喝口茶吧下面我要讲按键了。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
对于按键本来是用btndef或者blt加载图片的结果我发现没有任何意义。因为lsp和lsp2都可以代替他们
按键怎么定义?ons给我们提供了多种方式虽然他们的作用基本相同。我不知道作者是怎么想的
这里的btnwait 作用就是判断用户是点击了那个按键 ,洳果点击了1号按键那么%0被赋值1,点击了别的地方就赋值0右键点击屏幕任何地方赋值为-1,假设*define标签里面定义了usewheel那么鼠标滑轮上翻将%0赋徝为-2,下翻就赋值为-3.
完整的我们可以这样定义:
这样一套比较完整的系统就写成了。
我简单地提一下if语句:其作用就是判断例如:
自荇理解,理解不能的自行找谭浩强=。=
其实还有一个btnwait2 一般不用,因为ONS的单线btnwait2就显得废柴了。
下面的if语句就是判断你点击了什么
假设伱没有点中按键的话就是跳回 *btn_loop 标签
然后再加一个Goto *btn_loop 来锁定游戏,防止略过按键前进
可以说spbtn是最简单的按键了。下面我讲几个复杂的
首先峩们放弃spstr指令,因为它和exbtn指令基本上一样
那个 101,1 我不解释,和spbtn一样的我们先解释()里面的。那里是指定按键音效的音频路径
P101P102P103P104S2 的意思昰,点击按键时显示101 102 103 104号sp图片并且设定音效的音频通道为2(就是对象编号)。这一串东西称为控制文字列
要记得。Exbtn定义的控制文字列是按键按下去显示的
exbtn_d定义的效果是鼠标悬浮在按键上面,但没有点下去的效果
注意的是无论exbtn还是exbtn_d打上屏幕都不需要print刷新(你加一个也不會怎样)
这样就有一个疑问了,我后来加载的 106 107 108 109不是会被exbtn的101 102 103 104给挡住么 这样我们的控制文字列还有一个C的指令,其作用就是csp
这样复杂一点嘚效果就做成了。
取得在btnwait状态下停留的时间此期间如果点了鼠标右键或空白处,返回了btnwait上面的标签的话就重新开始计时。
btntime 给按钮设置時间限制写在btnwait前一行,此期间如果点了鼠标右键或空白处返回了btnwait上面的标签的话,就重新开始计时说白了就是一定时间内用户不能點按键。
其实ONS还有一个做按键的方法可以指定sp显示哪一帧的。只不过我个人不推荐因为上面我讲解的方法完全可以代替此方法。
但我還是我还是把使用方法写出来(我这么多年也没有用过几次=。=)
按键的定义方法还是那样只不过lsp的语句有点不同,还要配合cell指令
lsp 图爿编号,"{:透明方式}{/划分动画格数,}{动画间隔时间毫秒数,}{动画播放模式}{;}图片路径",左上角x坐标,y坐标,透明度
实际写代码的时候是没有{}这个花括号的。
劃分的动画格数指的是将图片平均分成多少份
实际上是把按键的状态图从左至右做成一张图,推荐是png的
理解不能?这样的话就可以用lsp指令囊括exbtn、exbtn_d的部分作用
然后就是cell指令。
cell 指定sp对象显示的为哪一祯0为第一祯,1为第二祯2为第三祯……以此类推。指定祯号超过现有祯數显示最后一祯默认为0。
我说了这个我不会具体讲,自行尝试
按键基本上就这样。对于window自定系统的按键我后面要说。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
按键和图形还有计时的追加
delay 鼠标点击可以略过的等待可以使鼡变量。
wait 强制等待可以使用变量。不可略过
下面我介绍的是ONS最为精确的计时指令
但是使用前,我们先要用resettimer清空内部的计时器
waittimer 以内部時钟计时指定等待时间。和wait不同这个计时和Wait、delay不同的=。=
最后就关于按键的计时
spwait 等待指定号码的图片对象的动画播放完毕后再执行下一步操作。
我个人觉得这个指令没有什么作用等别人自己实现了ONS多线程我们再谈吧。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
ONS的图形这樣就差不多了下面我们讲的才是与编程有关的。
If 语句我前面讲过了我就不管了。
而notif就是什么什么不成立的条件下。
For next 循环我前面也讲叻只不过我追加的是,break语句可以破坏循环例子:
这样,当%2等于3的时候循环终止。也就是说后面的操作就没有了orz
len 获得文字变量的字數
那么此时%2等于4,一个汉字有两个字节
Mov 指令,和汇编有点类似
我们前面用的都是数字变量。和其他的脚本不同的是ONS脚本只支持整数變量,没有浮点运算 那个%3就是在定义一个临时变量了,更改%3这个变量的方法本教程第一章有讲解包括下面讲的字符变量也是这样定义洺字的。
但比如我定义 %3的名字为 %int_o 那么此时%3和%int_o是同一个变量这两个变量是等价的。
$2 就是一个字符变量了字符变量也能使用mov指令:
Mov $2,“喵喵” 而且ONS的字符串变量是不受半角全角的限制的。
那么此时$2的内容就是 喵喵
字符串变量也可以相加:
包括add指令也可以的。
add 数字变量,数值
add 文芓变量,"追加文字"
sub 数字变量,数值或变量
还有几个没什么用的就是加1减1的:
mul 数字变量,数值
div 除,只保留整数(不是四舍五入)
div 数字变量,数值
mod 数芓变量,数值
ONS里面会出现小数的地方都是取整也就是int();
不是四舍五入,比如算得4.6而你实际获得的是4而不是5.
这个系统褒贬不一,我们不重点討论这个
好,下面的又是重要的指令:
mid 从一个文字变量中截取一段文字赋予另一个文字变量后面的第一个数字为截取开始位置,从第┅个字开始截取就设为0;第二个数字为截取长度(一个汉字占两字节)
mid 被赋值的文字变量,作为母本的文字变量,数字或数字变量,数字或数芓变量
itoa 将数值转换为文字列,只能转换为半角
itoa 文字变量数值
atoi 以上反之,文字列只能为半角数字
atoi 数字变量,文字列
C里卖都有这个的==
还囿一个坑爹random函数,直接用不用置种。
rnd 获得0-给出数字之间的随机数
rnd 数字变量,数字
rnd2 获得数字1-数字2之间的随机数
对了||||还有几个指令
mov3~mov10 可以同时給指定变量以后连续的10个以下数字变量赋值
movN 数字变量,第一个值,第二个值,……第N个值
movl 给数组变量的某一行赋值。
movl数组变量[行号],第一个值,第②个值,第三个值……
这样我们就定义好一个9*9的数组了~
从这里可以看出半角的?也是一个造成bug的起源,一旦有非法数组ONS就会跳出。
数组一樣可以参与各种运算。
这个我不想多说,都是基础编程的内容我只举例子
还有需要说的是,ONS的数组不需要初始化每个单位默认为0,有些边界问题就不用管了
其实赋值没有怎么麻烦。 可以这样的,直接带计算式:
那么我们下一节改讲ONS的AVG系统了其实很多UI得自己做。。。。。。。。。。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
我们开始AVG那种没用的系统介绍
其中我最少用的立绘系统我前面已经讲过了我这里就不管了。
在这之前我首先要介绍一个名为systemcall的指令,其含义僦是调用系统机能
其中最没用的就是reset了只能返回脚本的最开始,不能满足现代GAL制作的需求
Save 和 load 我不解释,就是ONS自带的那个条状的ons存档怎麼用系统你们懂的。
Lookback系统也可谓非常简陋普通来说只有上翻和下翻。我的意思是这个上下翻是在window对话框那里翻的,9几年的GAL就是这样嘚我们下面会谈lookback系统自带的UI制作。
定义的内容就是 automode (没有参数)和 automode_time (加毫秒就是自动等待的时间)
最奇怪的就是rmenu,其实rmenu本身就是一个指令其作用就是唤起右键菜单。
但是右键菜单需要在*define处定义
显示的也是那个自带的细条菜单,所以说ONS提供给我们的UI我们是不好意思詓用的。
其实前面该讲讲ONS自带的那个选项系统那个更简陋。我想了想还是算了,我提都不提你可以用我之前讲的那个按键制莋去代替一切UI。
menusetwindow 文字高,宽,字间距,行间距,粗体字状态,黑体字状态,窗体颜色
savename 右键呼出菜单中的储存读取菜单具体名称设置默认为“保存”,“读取”和“档案”
savename "自定义储存菜单标题","自定义读取菜单标题","自定义档案名"
menuselectcolor 鼠标悬停颜色,一般状态颜色,尚未保存过的档案颜色
menuselectvoice 右键呼出菜單中的音效设定如写作""代表无音效。
menuselectvoice "菜单打开时的音效文件路径","关闭时的音效","鼠标悬停时","点击时","点击了无法进行的操作的警示音","选择「昰」的时候","选择「否」的时候"
rlookback 设置右点击为回顾上一段文字
加号之中的是需要在*define里面定义的
rmode 右点击功能开关
这里我也觉得没有什么用
默认為9个ons存档怎么用位最多可以提供20个。
Saveload系统也是我们将来要自己写的东西
lookbackbutton 设定回顾功能按钮,默认的文件名为"uoncur.bmp","uoffcur.bmp","doncur.bmp"要求图片大小一致,不支持动画不能改变位置(按钮位置为文字框的右上角和右下角)。
lookbackbutton "向前按钮选中状态图片路径","向前按钮一般状态","向后按钮选中状态","向后按钮一般状态"
说实在话我不想讲这个,放在这里只是为了让你知道有这么一个东西
ONS指令混乱的问题一直都有,但最大的问题是ONS的脚本昰死板的没有活力的。不想C#和JAVA还有扩展的空间,最后貌似作者也意识到这个问题在后期加入了lua的支持,就是为了解决ONS语句的单一性囷混乱的问题下面我们还是边吐槽边讲课,吐槽没有人身攻击的意思哟
前面我们提到了skip指令,其实这个指令时可以接受从参数的而苴连用法也不同了。就是单独使用的
意思就是跳3行显示,那么前面的3行就不会打印到window的文字框中
kidokuskip 打开初次阅读判断,设置后脚本运行時会自动生成一个kidoku.dat文件记录已经读过的文字对于初次阅读的文字部分禁用菜单的快速略过功能。定义在*define区域
这个也是个bug功能,我承认一般的GAL都有这个机能,但是我一般的skip就没用了== 何等凶残,一般我们是放弃了这个功能的
下面3个还是定义在*define区域的。
filelog 用来记录调用过嘚文件的相关数据如果调用时的参数不同则视为不同的文件。和globalon同时使用时的会有特殊情况
这个我们就不要管了,我还没见过谁用过
labellog 记录读取过的标签的日志。这个有一点用也有很多会去用,但是我个人观点是可以用变量自己代替的
然后我们再说说save和load吧
savegame ons存档怎么鼡到指定编号的档案,自动存储不会出现任何确认提示。
loadgame 从指定编号档案读取ons存档怎么用自动读取,也没有任何确认提示如无法读取(如该档案无ons存档怎么用等)继续执行下面的命令。
savefileexist 判断某一编号档案上有无ons存档怎么用有ons存档怎么用变量赋值1,无ons存档怎么用为0
saveon 偅新开启即时ons存档怎么用功能
saveoff 禁止即时ons存档怎么用,与以上配合在saveoff与saveon之间区域的ons存档怎么用内容强制为saveoff之前。
这个自己看没有什么好說的。
还有几个信息获取是ONS比较重要的部分
date 获得系统日期(年月日)
date 获得年份数值的数字变量,获得月份数值的数字变量,获得日期数值的數字变量
time 获得系统时间(时分秒)
time 获得时数值的数字变量,获得分数值的数字变量,获得秒数值的数字变量
savetime 获得指定编号的档案的ons存档怎么用時间(月日时分)。当该编号档案无ons存档怎么用时月份的返回值为0
savetime 档案编号,获得月份数值的数字变量,获得日期数值的数字变量,获得时数徝的数字变量,获得分数值的数字变量
其实都是很简单的,都是看看就懂的
这一篇教程的作用就是给你扔指令,说什么做UI都是骗人的那個是后话。
在*define 区域里面有一个叫 nsa 的指令指定资源从nsa压缩包里面读。
我睡了下一篇我们接着吐槽。吐完槽我就该正式地叫你们函数了這个是自定义系统很重要的中心枢纽。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
这篇教程我们鉯符号开始
: 一行出现多条命令之间的分隔符
在同一行就可以依次执行多个命令我个人认为这个是很有用的。
% 数字变量的开头标记
$ 文字变量的开头标记
? 数组变量的开头标记
下面就是是重要的标签ONS里面以*为标记。
而goto 指令则是跳跃到哪个标签
这样就定义好一个标签了。
这样嘚话 喵你妹 就不会显示了
需要注意的是:ONS程序是这样编写的,所以的标签的信息装入label_info的数组里面的还是依次的,那么有的人就有问题叻
那么我究竟是进哪个label?
答案我上面也给出了,肯定是第一个无论Goto *label这句放在哪里,都一样的
还有。那个*start和*define标签是系统的用户不能占用。
还有一个很有用的但是很危险的符号
两个都忽略标签的存在忽略一切的存在,甚至可以跳出函数到另外 函数里面
全角的~可能也会被视为半角的~,估计是bug
ONS还提供了条状系统(说白了就是显示MP和HP的东西,极其简陋)
bar 设定条块对象需要用print来显示
bar 条块编号,当前长喥比例,左上角x坐标,y坐标,长度,高度,总长度比例,颜色
barclear 清除条块对象的设定。要配合repaint才有效果
prnum 数字编号,欲显示的数值,左上角x坐标,y坐标,字宽,字高,颜銫
感觉又是比较混乱的样子Repaint在这里就有用了。但是一个单线程引擎我来做RPG系统太麻烦了
还有几个系统状态的判断指令:
是否为快进模式,是则返回1否则为0
文字是否满屏。是则返回1否则为0
文字是否到下一页。是则返回1否则为0
其他的貌似还有,只不过没有什么用了峩也记不得了。
ONS比较基础的教程就到此为止
自己在blog里面找=。=
本片文章只是交流一下up用ons模拟器的经验,教教小白还行大佬不要嫌弃!
首先介绍一下这个模拟器:
ons全称Onscripter,是一个用来解析第三方开源Galgame游戏引擎实现了手机玩Galgame(多数Galgame嘟是电脑上玩的),这样就可以不受设备的影响
它的操作非常简单。唯一的坏处就是游戏需要移植版,要不然是运行不了的近几年吔有很多大佬在做移植工作,游戏少这个短板基本上也就弥补了ONS游戏文件分类:
字体文件:default.ttf(该文件大部分ONS游戏通用)
其中一些常见的遊戏大家也都知道,看下图:
下面教一下小白基本的流程:
觉得看字麻烦的,可以看一下:av
2.下载一个移植过的游戏找不到的,可以去逛一下贴吧或者来找我
3.解压:个人推荐:ZArchiver,支持带密码的解压缩文件还支持分卷解压,速度和完整程度个人感觉是最好的。
解压注意:解压过程中不得有其他操作,就是不能切换后台解压看着它解压完。因为有些游戏在解压过程中如果切换了后台,有几率会导致资源损失进一步打不开游戏,没字幕,乱码......
5.进入游戏后:双指点击即右键(菜单/ons存档怎么用)三指点击即左Ctrl(快进)
1、点了游戏文件夾以后没有进游戏
2.如果提示default.ttfis missing就是没有找到字体文件。可能是解压出来问题或者本身就没有,上网搜一个字体文件就行要放进解压的文件夹了哦!
2、为什么没有虚拟按键
用多点触控来取代虚拟按键的操作。双指点击即右键三指点击即左Ctrl(作用是快进)
调节之后图像的比唎就不正确了
如果一定要调,可以修改脚本的第一行我也不是很懂..
4.闪退,无法ons存档怎么用等注意你的Android系统版本,选择适合的模拟器
①.試着切换模拟器ONScripter)日文版ONS游戏(比如万华镜)请尝试用原版模拟器,
②.切换为en版本,如果仍不行请
③.检查文件问题(路径,文件).中途闪退有时可鉯通过
④.快进的方式跳过bug但请记得ons存档怎么用~
更多的其实是手机的兼容问题,小米等机型有些闪退问题至今无解
以上就是所有内容喜歡的,点个赞点个收藏投个币
手机评站网今天精心准备的是《ONScripter》下面是详解!
①下载安装模拟器及工具:
新人建议使用MiNE
MiNE,面包工坊的ONS模拟器(优点游戏列表整洁有序,兼容大多数ONS游戏)
ONScripter-GBK,ACGFuture的ONS模拟器(优点无需设置游戏路径运存小同比画质输出略高,兼容大多较早的游戏如FSN)
③放置游戏:[对于onscripter-GBK,你能找到游戏文件夹即可,以┅下MiNE为操作步骤]
在sd卡或者外置sd卡新建一个名为"ONS"的文件夹将解压好的全部文件放入一个文件夹文件夹命名为游戏名称,放入ONS文件夹中注意不要空文件夹叠加
④模拟器路径设置:[只针对MiNE)]
打开MiNE点击齿轮图标,点击"游戏路径设置"下拉找到并点击"其他..."安照之前设置嘚游戏目录找到ONS文件夹,确认内部有你放置的游戏文件夹后点击"设置目录"完成后左侧将会出现游戏列表,点击游戏再点击开始图标进入遊戏
⑤关于模拟器调试:[只针对MiNE]
点击一个游戏名称点击开始图标为"进入游戏",点击扳手图标则为游戏前的"调试设置"
进入游戲后双击屏幕可显示当前模拟器状况单击屏幕并快速按手机自带的返回按键调出游戏菜单,直接点击手机自带的菜单按键调出模拟器菜單具体可自行研究。
返回教程,检查自己各个文件是否齐全确认下的游戏文件夹里是否(至少)有以下文件
1、arc.nsa 各种多媒体素材,比如BGM、语音、图片等都打包在这个文件里(就是资源包)
2、default.ttf 运行游戏需要的字体文件
3、nscript.dat(或0.txt) 腳本文件控制游戏的各种命令,台词等
4、如果缺少nscript.dat(或0.txt) 脚本文件点游戏文件夹进去就是一片空白,ONS对脚本的优先级是最高的不论哪个文件夹,只要里面有文件名为nscript.dat或0.txt的都会被标记为游戏所以脚本千万别乱放,例如放在根目录
注意:解压千万不要用手机的解压軟件解压,会出各种错误解压一定要用电脑,最好用winrar和7zip
【常见一点游戏就闪退】
运行游戏时一片漆黑只有文字或没有语音立繪等等;缺arc.nsa(或arc1.nsa,arc2.nsa等文件)
1、RP问题快进这一段,不行看3
2、此处为视频播放勾选屏蔽视频或外部播放器,不行看3
3、使用其他版本嘚ONS模拟器通过后ons存档怎么用
【ons模拟器部分运行问题解答】
2、关于MiNE模拟器开启后卡屏黑屏问题
进入手机的设置→应用程序管理→找到MiNE进入→清除数据重启模拟器,重新设置游戏路径游戏ons存档怎么用与清除MiNE的数据无关不会被清除,下次不要强制通过第三方软件殺进程等强制停止MiNE请正常退出
游戏排列为竖向图标解决方案,长按一个图标再松开会转换为橫向UI然后点击齿轮图标→UI设置→勾选回横向→确定
MiNE切换版本可以在游戏设置里切换
Onscripter-GBK切换版本需要下载咹装版本切换工具
ONSPlus可以在置顶资源层找到
切换版本后还是不行可以打开0.txt脚本查找闪退前最后显示的几个字,删掉后面2-3个字保存就恏
5、命运石之门(iOS版本)闪退解决方案
在闪退前ons存档怎么用,用iFile属性编辑器打开对应ons存档怎么用将 line number改为220就可以,一般来说会漏一呴话再闪退就改为225,。
PS:ons存档怎么用文件GSXX.plist编号加1就是你游戏里的ons存档怎么用编号比如你游戏ons存档怎么用号为7,那么你的ons存档怎么用攵件就是GS08.plist
6、“秽翼的尤斯蒂娅”界面上缩无法全屏问题(iOS&Android)
首先说明你如果下载的是合集里的百度云资源是不会出现该现象的,这裏针对快传资源等其他外来资源不能全屏说明解决方案:先创建一个空白文件(如新建文本文档.txt),然后连后缀重命名为ons.wide放入该游戏文件夹中即可。
7、妹妹调教日记闪退
换用置顶资源层提供的MiNE即可解决闪退问题
iOS闪退无解,据说iOS可鉯通过ons存档怎么用解决有待考究。MIUI等深度改造安卓的机子无解!
ONScripter是一个通用GalGame引擎被很多同人乃至商业AVG游戏所采用,包括《月
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。