本帖最后由 蓝烟清 于 2011-10-17 09:59 编辑
第十二讲 SetD和GetD
最近比较忙,讲解耽搁了一下。这一次还是进行剧情方面的讲解。
12.1 介绍与遗留问题
修改和获取D*事件的两个函数,原型是lib.SetD和lib.GetD。这个两个函数见过的人很多,不了解的人也很多。掌握这两个函数对编写DIY剧情提供不少简便的方式。
学习目标:掌握SetD和GetD的运用方法方式
遗留问题:暂无
12.2 函数定义
函数定义不说了,lib库函数。在运用中再具体讲解,函数声明如下:
function SetD(Sceneid,id,i,v)
function GetD(Sceneid,id,i)
12.3 函数运用
在说明函数运用之前,先回顾一下第六讲中的instruct_3函数,巨复杂的函数,并且不会用是无法编写DIY剧情的。重复一下它的定义:- 最复杂的函数instruct_3重新修改事件内容,一共有13个参数
- 第1个参数:场景编号,-2表示当前场景
- 第2个参数:场景位置编号
- 第3个参数:是否能通过,0可以通过,1被拦住走不过
- 第4个参数:不明白,都是写0
- 第5个参数:第一个事件编号,空格触发,不想触发直接写0
- 第6个参数:第二个事件编号,使用物品触发
- 第7个参数:第三个事件编号,自动触发
- 第8个参数:开始贴图编号,-2表示贴图不变,0表示清除贴图
- 第9个参数:结束贴图编号,-2表示贴图不变,0表示清除贴图
- 第10个参数:临时贴图编号,-2表示贴图不变,0表示清除贴图
- 第11个参数:动画延迟,-2表示不变
- 第12个参数:横坐标X,-2表示不变,当场景位置为0时,此XY参数生效
- 第13个参数:纵坐标Y,-2表示不变
- instruct_3(70,1,0,0,4101,4100,0,9168,9168,9168,0,18,29);
复制代码 12.3.1 修改D*事件的简洁写法
有些时候我们并不是要修改事件中的所有参数,而且是其中一个,那么就可以使用SetD。- 修改事件简洁的写法SetD(Sceneid,id,i,v)
- 第1个参数:场景编号
- 第2个参数:场景位置编号
- 第3个参数:事件层,范围0-10,对应的是instruct_3函数的第3个参数-第13个参数
- 第4个参数:需要修改的值
- 例子:给门口两个木桩增加事件
- SetD(70,65,2,26); --70小村编号,65右边木桩的位置编号,2对话触发事件,26获取食材10的事件
复制代码 这样和小村右边的木桩对话就可以得10个食材
instruct_3函数中3-13个参数都可以使用这个方法来进行修修改
12.3.2 获取D*事件
与SetD对应,此函数为获取事件对应的值
- 获取事件简洁的写法GetD(Sceneid,id,i)
- 第1个参数:场景编号
- 第2个参数:场景位置编号
- 第3个参数:事件层编号,范围0-10,对应的是instruct_3函数的第3个参数-第13个参数
- 和SetD一样,只是GetD是获取对应的事件
复制代码 比较常用的方法是用来判断事件是否已经触发
if GetD(70,65,2) > 0 then
Talk(“小村右边的木桩可以对话触发事件”,0);
end
DIY编写过程中最常用的方法,获取贴图,获取事件
在DIY中经常遇到的事情是不知道NPC当前的事件编号,要查旧事件很麻烦,用工具还不一定能查得到(工具看到的都是初始事件),我们就可以写一个方法,以小村北丑事件为例,在工具上肯定是查不到的:
Talk(GetD(70,4,2), 0); --北丑对话触发的事件
Talk(GetD(70,4,3), 0); --北丑使用物品触发的事件
Talk(GetD(70,4,5), 0); --北丑的贴图
OK就可以在S大提供的原事件中,查找相应的事件内容了。其它人物也可以使用同样的方法,是不是很方便。
12.4 结束语
只要你了解instruct_3函数使用起来就很简单,一看就会明白。如果你不了解么,建议还是回头看一下,instruct_3函数才是编写剧情的重点事件函数。
SetD和GetD函数都必须要有场景的位置编号,而自定义的剧情没有场景位置的编号,这可怎么办呢。 下一讲将会为你解答。
此讲至此结束,下一讲是SetS和GetS
|