【教程】【搬运】ONScripter完全教程,代码萌化篇

搬运自X‘moe Project


快被标题给骗进来吧。
代码萌化=。=
就是叫你装逼,怎么样让弱弱的ONS代码看上去很高端。
这篇教程很短的,其实真正的目的是让你们从ONS脚本到lua脚本能有个过渡。
(会lua、C/C++的别在这里搅乱=。=)
我拿脏翅膀来举例子:
b__say “必须要出声求救。”, 0, 0, 1, 1
b__say “可是,耳中却只能听到自己的牙关不停交战的声音。”, 0, 0, 1, 1
b__say “我是如此的无助。”, 0, 0, 1, 1

这个window对话框输出的话
如果换成我们的话,我们一般都会这样写。

必须要出声求救。
可是,耳中却只能听到自己的牙关不停交战的声音。
我是如此的无助。\

就是这个样子。你可以引入一个b_say的函数来做这些。获取的字符串变量直接打在屏幕上。
后面4个参数确定文字的效果及属性。

再来:
ONS实际在用的时候是不需要一个个效果依次显示的。我们可以通过“排队”的方式来整合一下:

;multi task structure
;The number of tasks is 6(Max)

;define :
;%task_count
;%multi_task_flag

*Add_task
getparam $154
if $550 == “” mov $550,$154 :mov %multi_task_state,1:mov %task_count,%task_count+1
if $550 <> “” jumpf
~
if $551 == “” mov $550,$154 :mov %multi_task_state,1:mov %task_count,%task_count+1
if $551 <> “” jumpf
~
if $552 == “” mov $550,$154 :mov %multi_task_state,1:mov %task_count,%task_count+1
if $552 <> “” jumpf
~
if $553 == “” mov $550,$154 :mov %multi_task_state,1:mov %task_count,%task_count+1
if $553 <> “” jumpf
~
if $554 == “” mov $550,$154 :mov %multi_task_state,1:mov %task_count,%task_count+1
if $554 <> “” jumpf
~
if $555 == “” mov $550,$154 :mov %multi_task_state,1:mov %task_count,%task_count+1
if $555 <> “” jumpf
~
return

*Delete_task
getparam $155
if $550 == $155 mov $550,”” :mov %task_count,%task_count-1
if $550 <> $155 jumpf
~
if $551 == $155 mov $551,”” :mov %task_count,%task_count-1
if $551 <> $155 jumpf
~
if $552 == $155 mov $552,”” :mov %task_count,%task_count-1
if $552 <> $155 jumpf
~
if $553 == $155 mov $553,”” :mov %task_count,%task_count-1
if $553 <> $155 jumpf
~
if $554 == $155 mov $554,”” :mov %task_count,%task_count-1
if $554 <> $155 jumpf
~
if $555 == $155 mov $555,”” :mov %task_count,%task_count-1
if $555 <> $155 jumpf
~
return

*multi_task_manager
if %multi_task_flag == 0 return

if $550 <> “” && %361 == 1 gosub *$550:mov %361,0:return
if $551 <> “” && %362 == 1 gosub *$551:mov %362,0:return
if $552 <> “” && %363 == 1 gosub *$552:mov %363,0:return
if $553 <> “” && %364 == 1 gosub *$553:mov %364,0:return
if $554 <> “” && %365 == 1 gosub *$554:mov %365,0:return
if $555 <> “” && %366 == 1 gosub *$555:mov %366,0:return
return

其实我是偷懒了。还应该判断每个效果的属性,比如这是print,这个是quake,有效的整合在一起。加快游戏运行的效率。

最后一个例子。我们可以对lsp进行改造

Mov $subname, “.png”
Mov $filehead, “:a;”
Mov $const, “image/bg/“

*ex_lsp2
Getparam $file,%order,%x,%y,%X_,%Y_,%angle,%alpha,%action

Lsp %order, $filehead+$const+$file+$subname,%x,%y,X_,%Y_,%angle,$alpha

Send_action %action
Return

实际你调用的时候就是

Ex_Lsp2 “cgm00”,0,0,100,100,0,255,9

虽然没有写完,但是看了后还是有那种感悟的吧。
接下来的就是lua了。