[传奇技术]传奇Lua使用说明 副本模块
说明: 副本模块依托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
|