说明:
副本模块依托ExternLua对镜像地图的一系列功能进行了整合、简化,可以快速构建副本,简化繁杂的老式TXT脚本。
副本模块说明:
副本模块实现了副本功能的简化:简化副本创建、简化任务定义、人物存储在LUA脚本中的相关数据存储与读取。
提供了如下指令:
· CREATE_INSTANCE_ZONE
· LOAD_INSTANCE_ZONE_DATA
· RUN_INSTANCE_TASK
· RESET_INSTANCE_ZONE_TIME
· APPEND_INSTANCE_ZONE_TIME
分别实现了【创建副本】、【读取人物存储的副本地图名】、【处理副本任务】、【重置副本有效时长】、【副本有效时长追加指定秒数】功能。
提供了如下外部方法(可供其它模块进行调用):
· regModMapData(副本模块, 调用此函数的模块, 副本标识名, 副本数据表) 用于注册一个外部副本数据
· getPlayerMapName(副本模块, 调用者模块, 调用函数所附带的参数表, 副本标识符)
创建副本:
CREATE_INSTANCE_ZONE 副本标识符
副本数据定义在modules\副本\data.lua中
示例:CREATE_INSTANCE_ZONE FB_D717A
副本数据定义:
在modules\副本\副本数据\副本标识符 .lua中编写副本数据
需要注意:副本标识符要唯一,如例子中的FB_D717A,副本标识符允许使用中文,但不建议
其余内容参考下面的例子即可,如果删除Task的部分则是不使用任务功能
示例:文件FB_D717A.lua
return {
--原始地图
MapName = "d717",
--镜像图在客户端显示的地图名
MapDesc = "石墓副本",
--玩家存储地图名时的键,可以与副本标识符不同
Marker = "FB_D717A",
--地图过期后返回到哪个图
HomeMap = "0",
--删除后触发QF
DelRecall = "",
--删除后地图内所有玩家触发QF
DelRecallAll = "",
--进入副本后当前NPC执行
DoReCall = "@石墓回调",
--创建副本后进入地图时当前NPC执行,通常用于刷怪、分配任务
DoReCallFirst = "@石墓回调1",
--非创建副本后每次进入副本时NPC执行,没想到能怎么用,但还是给了个接口
DoReCallAfter = "@石墓回调2",
--地图有效期(秒)
Time = 60,
--当此项为true时,地图主人在地图中时,如果地图即将过期则自动续期一个有效时长,可以用来做一些长期性地图
AutoAppendTime= false ,
--任务
Task = {
{
--CHECK [7000]
Flag = 7000,
--标志有效时的值
ValidValue = 1,
--标志无效时的值
InValidValue = 0,
--杀怪检测
MonName = "白野猪",
--物品检测
ItemName = "*",
--任务NPC文件名
QuestName = "FB_D717A_0",
--组队任务
GroupTask = false,
--N$石墓杀怪
KillTaskExtN = "石墓杀怪",
--N$石墓拾取
PickTaskExtN = "石墓拾取",
--杀怪数量
KillCount = 10,
--拾取数量
PickCount = 0,
--杀怪提示
KillHint = "你已消灭%s:%d/%d",
--拾取提示
PickHint = "你已收集%s:%d/%d",
--杀怪任务提示
TaskKillHint = "任务:消灭%s%d只",
--拾取任务提示
TaskPickHint = "任务:收集%s%d个",
--杀怪完成后任务NPC触发
TaskKillFinished = "@杀怪任务完成",
--拾取完成后任务NPC触发
TaskPickFinished = "@拾取任务完成",
--触发概率X/100
TriggerValue = 30,
},
{
Flag = 7001,
ValidValue = 1,
InValidValue = 0,
MonName = "红野猪",
ItemName = "*",
QuestName = "FB_D717A_1",
GroupTask = false,
KillTaskExtN = "石墓杀怪",
PickTaskExtN = "石墓拾取",
KillCount = 15,
PickCount = 0,
KillHint = "你已消灭%s:%d/%d",
PickHint = "你已收集%s:%d/%d",
TaskKillHint = "任务:消灭%s%d只",
TaskPickHint = "任务:收集%s%d个",
TaskKillFinished = "@杀怪任务完成",
TaskPickFinished = "@拾取任务完成",
TriggerValue = 50,
},
{
Flag = 7002,
ValidValue = 1,
InValidValue = 0,
MonName = "黑野猪",
ItemName = "*",
QuestName = "FB_D717A_2",
GroupTask = false,
KillTaskExtN = "石墓杀怪",
PickTaskExtN = "石墓拾取",
KillCount = 15,
PickCount = 0,
KillHint = "你已消灭%s:%d/%d",
PickHint = "你已收集%s:%d/%d",
TaskKillHint = "任务:消灭%s%d只",
TaskPickHint = "任务:收集%s%d个",
TaskKillFinished = "@杀怪任务完成",
TaskPickFinished = "@拾取任务完成",
TriggerValue = 50,
},
},
}
副本数据引入:
在modules\副本\副本数据\副本标识符 .lua中定义好数据之后,打开modules\副本\data.lua
在data.lua的InstanceList中添加副本的文件名 ,即副本标识符即可,
如下所示:
这是修改过的Data文件,将你的副本配置数据单独命名为:副本标识符.lua放到副本配置文件夹
并在下面的table内写上你的副本标识符,这样你的副本就可以被模块加载了
--]]
local InstanceList = {
"FB_D717A",
}
return InstanceList
读取人物数据:
LOAD_INSTANCE_ZONT_DATA 文件名
示例:LOAD_INSTANCE_ZONT_DATA .\Envir\QuestDiary\V2网络\副本数据\<$USERNAME>.json
处理数据:
RUN_INSTANCE_TASK 副本标识符 任务编号(即在Task表中的顺序)
示例:【MapQuest_Def\FB_D717A_0.txt】
[@main]
#ACT
RUN_INSTANCE_TASK FB_D717A 1
[@杀怪任务完成]
#ACT
ChangeExp + 100000
SENDMSG 6 你已完成任务,获得经验:100000!
重置副本时长:
RESET_INSTANCE_ZONE_TIME 副本标识符
示例:RESET_INSTANCE_ZONE_TIME FB_D717A
追加副本有效时长:
APPEND_INSTANCE_ZONE_TIME 副本标识符 时长(秒)
示例:APPEND_INSTANCE_ZONE_TIME FB_D717A 120
如有侵权,请联系 yao4fvip#qq.com (#改@) 删除。