铁血丹心

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

第十二讲 SetD和GetD

[复制链接]
发表于 2011-10-17 09:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 蓝烟清 于 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剧情的。重复一下它的定义:
  1. 最复杂的函数instruct_3重新修改事件内容,一共有13个参数
  2. 第1个参数:场景编号,-2表示当前场景
  3. 第2个参数:场景位置编号
  4. 第3个参数:是否能通过,0可以通过,1被拦住走不过
  5. 第4个参数:不明白,都是写0
  6. 第5个参数:第一个事件编号,空格触发,不想触发直接写0
  7. 第6个参数:第二个事件编号,使用物品触发
  8. 第7个参数:第三个事件编号,自动触发
  9. 第8个参数:开始贴图编号,-2表示贴图不变,0表示清除贴图
  10. 第9个参数:结束贴图编号,-2表示贴图不变,0表示清除贴图
  11. 第10个参数:临时贴图编号,-2表示贴图不变,0表示清除贴图
  12. 第11个参数:动画延迟,-2表示不变
  13. 第12个参数:横坐标X,-2表示不变,当场景位置为0时,此XY参数生效
  14. 第13个参数:纵坐标Y,-2表示不变
  15. instruct_3(70,1,0,0,4101,4100,0,9168,9168,9168,0,18,29);
复制代码
12.3.1      修改D*事件的简洁写法
        有些时候我们并不是要修改事件中的所有参数,而且是其中一个,那么就可以使用SetD。
  1. 修改事件简洁的写法SetD(Sceneid,id,i,v)
  2. 第1个参数:场景编号
  3. 第2个参数:场景位置编号
  4. 第3个参数:事件层,范围0-10,对应的是instruct_3函数的第3个参数-第13个参数
  5. 第4个参数:需要修改的值
  6. 例子:给门口两个木桩增加事件
  7. SetD(70,65,2,26);     --70小村编号,65右边木桩的位置编号,2对话触发事件,26获取食材10的事件
复制代码
这样和小村右边的木桩对话就可以得10个食材
        instruct_3函数中3-13个参数都可以使用这个方法来进行修修改

12.3.2        获取D*事件
        与SetD对应,此函数为获取事件对应的值

  1.         获取事件简洁的写法GetD(Sceneid,id,i)
  2.         第1个参数:场景编号
  3.         第2个参数:场景位置编号
  4.         第3个参数:事件层编号,范围0-10,对应的是instruct_3函数的第3个参数-第13个参数
  5.         和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

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-10-17 12:14 | 显示全部楼层
沙发

点评

感谢支持  发表于 2011-10-17 12:58
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-10-17 13:03 | 显示全部楼层

点评

很抽象的函数,呵呵。 如果没有instruct_3函数使用的基础是看不懂的。。。。  发表于 2011-10-17 14:17
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-10-17 21:22 | 显示全部楼层
本帖最后由 jy02785317 于 2011-10-17 21:55 编辑

一般不用setd的
要用就用instruct_3

点评

嗯,使用的时候是这样子的,单独改一个参数的情况比较少,所以SetD确实不太用。 GetD用得相对多一点  发表于 2011-10-18 10:13
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-10-17 21:46 | 显示全部楼层
蓝大的教程都是精品啊
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-10-19 19:19 | 显示全部楼层
一直沒看明SetD, GetD, SetS, GetS 等function, 在此謝謝楼主

另外楼主能說明一下 d*.grp, s*.grp 等文件的資料結構及順序嗎

点评

期待你的下一讲  发表于 2011-10-20 11:02
d*和s*文件,二进制的呢,这个也不明白。 水平有限,50指令都还没有搞清楚。。。达摩堂有人懂,但是真不多。你可以去问问  发表于 2011-10-19 23:49
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-5-9 00:57 | 显示全部楼层
这个必须顶!受益匪浅啊
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-12-24 02:57

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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