吾爱尚玩资源基地

标题: 魔兽SF单机中制作简单的任意位置传送门 [打印本页]

作者: admin    时间: 2016-4-26 21:39
标题: 魔兽SF单机中制作简单的任意位置传送门
这个实现主要是给我传新大陆,自己做的大陆而用的,其实也可以用于传你想传的任意位置:
1、首先打开spell.dbc表,我是search了一个传送门效果,比如传送门效果:到奥格瑞玛的那一条,复制(copy line to)到99999

2、在数据库,spell_target_position表里,添加一行,要与dbc里的id相同(例如99999)后边可以添加自己想去的map x y z 坐标
3、在数据库,gameobject_template表里,添加一行,entry随意(例如999999,只有之前没有就可以),type:22,displayId添加传送门或者你想要什么样子的都可以(例如4397),data0这个就是spell技能,里面填入:99999(也就是你在dbc和spell_target_position表里的id)name随便填。faction(阵营,例如1735)其他项都填0就行了。
4、后在游戏中使用GM命令.gobject add 999999
做到这里,理论上可以传至所有地区,但是似乎只能传已有的大陆的任何地区,而做的新大陆却无效(只能是GM打开模式下),后来我在非gm权限下,点击传送门,然后看服务器信息里的数据,反馈是触发点未找到,这个我是这么修复的:
5、在服务器端的areatrigger.dbc里增加我的新地图数据,例如第9999(ID),后面是地图id(例如5000),xyz,后面我都填0。
但是还是无效,我去了数据库……
6、在areatrigger_teleport表里,增加一条9999记录(不要和前面重复),Map5000(这个名字貌似是随意的,不过我遵照dbc里的map id来写),level是1,后面xyz我填了和前面第二步一样的xyz,其他都是0
7我在areatrigger_tavern表里也新增了一条,记录还是9999,后面就是我那个大陆的名字(似乎这步其实是多余的)
总之这样之后,那个传送门就能正确作用了,可以在非gm的情况下,被任意的玩家权限的人点击后传送到新大陆,
不过,我还是没解决以下几个问题:
新大陆仍然不能飞(非GM权限下),地图显示(就是小地图上显示陵墓,屏幕正中显示暮光森林)的问题,另外传送门使用一次后,会显示已锁,但是是绿色的字。

总结一下:
这种方法可行,但并不是最好的设置游戏物件传送的方法,而且也不推荐使用这种方法,维护起来非常的复杂。

首先解答你的问题。

map id并不是随意的,你需要传送到哪就必须写哪里的map id,你这么操作导致新大陆不能飞或显示地名错误是说明你并没有传到预期的地方而是传到了一个引用了当前场景的新区域,而这个区域所对应的map id如果不存在于AreaTable.dbc和相应的数据库条目中,则无法正确引用预期的数值。

至于可飞行属性也是在AreaTable中控制的,用一次显示已锁是GameObject的flag属性设置问题(可以在gameobject表中修改)。

如果有精力我会写一篇用SmartAI制作传送门和NPC的教程,基本思路就是以玩家互动行为来触发AI代码,然后以AI代码实现传送效果。这样无论是修改游戏物件、NPC还是改变传送位置,都只需要改动相应位置而不影响整个系统的运行,可以有效降低维护成本。





欢迎光临 吾爱尚玩资源基地 (http://bbs.523play.com/) Powered by Discuz! X3.4