添加多人组队副本
1、添加副本主要涉及到的配置表包括Map.xlsx、FuBen.xlsx,若需要添加怪物则还需配置Monster.xlsx以及相关的刷怪CreateMon和爆率DropItems,若需要添加副本道具则还需要配置Items.xlsx,若需要添加副本相关npc则还需要配置CreateNpc.xlsx
2、配置Map.xlsx
其中比较特殊的字段:MapType填1,表示副本类型的地图
Script需要配置该Map对应的脚本功能的lua文件名,通常副本功能的脚本文件一般放在Script\FuBen中,故该项配置为FuBen.XXX(XXX为文件名)
ReConnectTime表示因断网等异常原因掉线后,在所配置的时间内上线仍保持在副本状态内,由于副本的特殊性,一般会配置保存时间,单位为秒
3、配置FuBen.xlsx
其中比较特殊的字段:Type表示副本类型,填1表示组队副本,允许队伍内的所有玩家进入
EnterPoint表示进入副本时玩家的到达坐标,[格式为x : y],当填写多个时,以"|"相隔,表示随机到达其中一个坐标
Script需要配置该FuBen对应的脚本功能的lua文件名,通常副本功能的脚本文件一般放在Script\FuBen中,故该项配置为FuBen.XXX(XXX为文件名)
Maps表示存在关联地图,即一个副本可以由多张地图组成,多张地图id以","相隔
4、主要配置完成后,进行脚本配置,一开始需要在Script\FuBen的init.lua中定义XXX脚本文件
5、创建以XXX命名的脚本文件
(一)开启副本时触发函数function OnOpenCopy(fuben , player) 红色方框内一般为保留内容,记录异常掉线的时间状态,用于重新上线后设置新的倒计时,若配置了Map.xlsx中的ReConnectTime字段就可以触发函数function OnPlayerReconnect(fuben , player)
(二) 进入副本时触发函数function OnEnterCopy(fuben , player) 红色方框内一般为保留内容,即每个副本都需要配置的
(三)进入当前地图时触发函数function OnEnterMap(map , player)
(四)退出副本时触发函数function OnleaveCopy(fuben , player) 红色方框内一般为保留内容,即每个副本都需要配置的
(五)离开当前地图时触发函数function OnLeaveMap(map , player)
6、除了以上固有的副本的相关函数、接口外,其余副本的玩法则需要开发者自己完成,另外若需要当前副本能够实现死亡后元宝复活功能,则需要在playerprocess.lua脚本文件的ReliveMap数组中增加当前副本地图的id号
7、副本功能完成后,则需要将副本信息添加进游戏右上角的副本界面中,需要配置groupcopy.lua脚本文件,在group_copy_data数组中增加相关的副本信息
其中curtimes和buytims参数对应的id需要在Define.lua脚本文件中中定义,且不能重复
8、完成后将配置表Map.xlsx、FuBen.xlsx和脚本文件XXX.lua用发布工具导出,上传,GM在游戏中输入指令"@reload map"、"@reload fuben"和"@reload script"动态加载即可
9(特殊)如需要在副本中配置怪物、怪物爆率、道具以及npc,则分别配置Monster.xlsx、CreateMon、DropItems(或者GiftConfig)、Items.xlsx以及CreateNpc.xlsx
注意1:副本活动内的怪物掉率若想指定玩家拣取,即只有标有自己名字的道具才能拾取,则需要配置GiftConfig配置爆率,同时在FuBen.xlsx配置的Option字段中配置everyonegift属性,爆率加载的命令为"@reload gift"
在需要掉落的怪物Monster.xlsx表上配置,Script需要配置该怪物对应的脚本功能的lua文件名,通常副本功能的脚本文件一般放在Script\Mon中,故该项配置为Mon.XXX(XXX为文件名)
配置完成后,进行脚本配置,一开始需要在Script\Mon的init.lua中定义XXX脚本文件
创建以XXX命名的脚本文件 红色方框内一般为保留内容,即每个副本都需要配置的
注意2:副本内多个地图间的地图跳转不能通过MapLink.xlsx文件进行配置,只能在脚本中进行填写,脚本接口为fuben : CreateMapLink(int nSrcMapId, int nSrcX, int nSrcY, int nDestMapId, int nDestX, int nDestY, int nEffectId, int nDuration, string sScript="");
|