铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 1578|回复: 0

[分享] 重新补充几位大大的DIY教学(蓝烟清,SYP) (剧情篇)

[复制链接]
发表于 2020-8-1 15:07 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
本帖最后由 woabclf 于 2020-8-2 14:21 编辑

今天继续讲蓝烟清剩余的教学:

第六讲 基本API函数  第十二讲 GetD SetD  第十三讲 GetS SetS

苍炎的一些函数有七成都可以在黑山使用,有一部份不行。

旧版黑山原本有一个档 API.lua  (将黑山的最新函数全部重新整里)

新版的这个档反而消失了。

顺便谈谈这个函数,剧情设置函数。

instruct_3(sceneid,id,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)

篮大已经把instruct_3函数的用法已经说的很白了,我就不在重复了。

我要补充的内容是我对剧情函数的观点跟他相反,我认为剧情函数比较简单,菜单选项比较难。

第十二讲和第十三讲的剧情函数可以一起完成,这样学得会比较快 (SetD和GetD) (SetS和GetS)

蓝烟清认为   剧情函数,比较难   菜单选项,较简单

我认为      剧情函数,较简单    菜单选项,比较难

我认为难是因为要学会菜单选项要先学一个特别的东西,数组,俗称表变量或阵列,蓝大的教学没有深谈这个东西。

也叫数组变量,可以是字串或数字,对数组不熟,光除错的闪退数就会吓死你,我讲到菜单选项会谈数组的教学。

回来谈S事件和D事件的学习,简单的说法就是S函数设置坐标编号,D函数才是真正设置事件编号。

蓝大的教学不太好,容易让新手把两种事件搞混,其实只有一个是设定事件(D),另外一个是设定坐标(S)

可以说S事件(S函数)是在讲场景地图的设置,这样会比较容易懂,解析S事件。

GetS(场景id, x, y, 3(事件层))    GetS是读,SetS是写,SetS比GetS多一个数值。

读取 GetS(sceneid,x,y,3)  数值就是 instruct_3() 的第二个位置。
instruct_3(sceneid,id)   其它的instruct_3是D函数用得较多。

GetS()的最后一个数值有六个层  0:地面  1:墙或建筑  2:空中层  3:事件层  4:建筑海拔  5:空中海拔

假如你想把小村的建筑全部拆光的话,只要用两个for回圈就好。

---------------

for x=1, 63 do
    for y=1, 63 do
        SetS(70,x,y,1,0)
    end
end

---------------

小村的建筑会全部清光,只剩下人和物品,选地面层输入0就换成地板一片黑。

空中层可以当是第二种建筑,使用不多,都是些器物或设备,有时是花瓶。

4和5的海拔就是拉高或压低特定场景建筑,设置100,某一点就会变非常高,-100相反。

D事件没什么特别需要提的,篮大都教过了,只要S事件懂了就不容意混淆。
  
D函数就是instruct_3函数的定位版,D事件最后的数字就是instruct_3函数的位置。

instruct_3(sceneid,id,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)
        GetD(sceneid,id,v) (0 ~ 10)

还有两个函数在龙人版就已经有了,而蓝大没有教  addevent()  null()

addevent(sid,  id,  yesno,  event,  etype,  pic,  x,  y)
           场景 人物 是否挡路 事件id  1~3   图
                                                 1:谈话
                                                 2:用物品触发
                                                 3:走路触发

是instruct_3的简化版,黑山大部份都在用这个函数 (很少用instruct_3)

null(sid, id) 也是个方便的事件函数,拿来消除人物用的,效果跟instruct_3的第二个位置后全设0一样。

instruct_3(sceneid,id,0,0,0,0,0,0,0,0,0,0,0)

null(70, 4) 就是消除北丑,null也是黑山常使用的函数 (包含山寨江湖和金书等)

已经对事件函数融会贯通的人一定会有个疑问?就是想执行剧情为何要有个媒介角色触发事件?

例如北丑说的欠我五两银子要找北丑,迷之少女的搜刮或挑战隐藏人物也要找她谈话。

有!还真的有直接执行剧情的方法,只要知道剧情编号就行 (D事件)

S大的教程,讲事件的可以直接忽视  (天赋和称号的修改法,黑山仍可用)

1 :公布添加事件的方式

2 :事件编辑实例详解(一)

他提到的这些方法和两个函数,黑山Mod都已经没在用了。

黑山把全部的剧情分到一个新的资料夹 CEvent。

档案编号刚好就是它的事件编号,一目了然,优点明显,缺点也很明显。

没办法搜关键字(找剧情),还要一个一个档找,很麻烦 (隔壁金书把剧情全集中在一个档了 Kdef.lua)

黑山用了个新的触发剧情函数  CallCEvent(num)

例如北丑的五两银子的编号    谈话:696  银两:697

迷之少女的编号  4100和4103   开局搜刮和挑战

CallCEvent(697)   有五两银子以上自动执行事件

CallCEvent(4103)  不找迷之少女直接挑战

各位可能又有一个疑问,我是怎么知道北丑和迷之少女事件的编号?

一个是笨方法,另一个是聪明的方法,笨方法就是CEvent中的档案一个一个找。

聪明的方法就是问电脑 S事件(坐标id) 和 D事件 "事件编号"  先找坐标id,在找事件编号。

要先知道 x轴和y轴,主角就是最好的测量者,回报主角的坐标就知道坐标在哪了。

上一篇帖(分享DIY诀窍)讲到的三个函数,say、DrawStrBox、QZXS,谈话框和弹出框,用一用就知。

say("x  "..x.."  y  "..y, 0, 1)   --为什么空两格是我习惯隔开字串,这样才看得清楚

这样就知道小村迷之少女的坐标是 X:18  Y:33

读取 GetS(70,18,33,3) --70是小村的编号

这个就是迷之少女的id编号 87

读取 GetD(70,87,2)  --2是谈话  3用物品  4是走动

答案是 4103 (挑战)

试试之前我教的消除函数,少女就消失了。

null(70,87)

多用几次就会变得很熟,其实并没有多少难度。

如果对 CallCEvent函数有兴趣的话,弄个for回圈从1000~2000一直跑都可以,剧情会跑很久。

今天就讲到这里了,下次有空来讲菜单选项的细节。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-5-5 19:22

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表