新增巡航
|
|
@ -17,6 +17,107 @@ MapCfg.Info = MapCfg_for()
|
||||||
|
|
||||||
MapCfg.dalumap = Func.require("cfg_大陆地图信息")
|
MapCfg.dalumap = Func.require("cfg_大陆地图信息")
|
||||||
|
|
||||||
|
MapCfg.daluCheck = {
|
||||||
|
[2] = { mapid = "神龙帝国", npcid = 29 },
|
||||||
|
}
|
||||||
|
|
||||||
|
function MapCfg.checkdalu(player, level, silent)
|
||||||
|
level = tonumber(level) or 1
|
||||||
|
if level <= 1 then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
local checkInfo = MapCfg.daluCheck[level]
|
||||||
|
if not checkInfo then
|
||||||
|
if not silent then
|
||||||
|
Func.sendmsg(player, "大陆进入条件未配置!")
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if not NPCGotoMapOBJ or not NPCGotoMapOBJ.checkCfg then
|
||||||
|
if not silent then
|
||||||
|
Func.sendmsg(player, "大陆进入条件未加载!")
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local data = nil
|
||||||
|
if checkInfo.mapid and NPCGotoMapOBJ.getMapCfg then
|
||||||
|
data = NPCGotoMapOBJ:getMapCfg(checkInfo.mapid)
|
||||||
|
end
|
||||||
|
|
||||||
|
local cfg = data and data.cfg
|
||||||
|
if not cfg and checkInfo.npcid and NPCGotoMapOBJ.npcid and NPCGotoMapOBJ.npcid[checkInfo.npcid] then
|
||||||
|
cfg = NPCGotoMapOBJ.npcid[checkInfo.npcid][1]
|
||||||
|
end
|
||||||
|
|
||||||
|
if not cfg then
|
||||||
|
if not silent then
|
||||||
|
Func.sendmsg(player, "大陆进入条件未配置!")
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
return NPCGotoMapOBJ:checkCfg(player, cfg, false, silent)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
----* 通用地图传送
|
||||||
|
function MapCfg.checkgotomap(player, mapid, silent)
|
||||||
|
if not isnotnull(player) then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if not isplayer(player) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
if getgmlevel(player) >= 10 then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
local cfg = MapCfg.dalumap[mapid]
|
||||||
|
|
||||||
|
if not cfg then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if not MapCfg.checkdalu(player, cfg.level, silent) then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if cfg.timer_close then
|
||||||
|
local SeverMin = Sys.getint(VarCfg.Global.int.SeverMin) or 0
|
||||||
|
if SeverMin >= cfg.timer_close then
|
||||||
|
if not silent then
|
||||||
|
Func.sendmsg9(player, string.format("开区%d分钟后已关闭!", SeverMin))
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
if cfg.gongchen then
|
||||||
|
if castleinfo(5) then
|
||||||
|
if not silent then
|
||||||
|
Func.sendmsg9(player, "攻沙期间禁止下图!")
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if cfg.zhandou then
|
||||||
|
if Func.getzhandou(player) then
|
||||||
|
if not silent then
|
||||||
|
Func.sendmsg9(player, "战斗状态禁止传送")
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
----* 通用地图传送
|
----* 通用地图传送
|
||||||
function MapCfg.gotomap(player, ...)
|
function MapCfg.gotomap(player, ...)
|
||||||
|
|
@ -37,51 +138,10 @@ function MapCfg.gotomap(player, ...)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not isplayer(player) then
|
if not MapCfg.checkgotomap(player, data[1]) then
|
||||||
gotomap()
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if getgmlevel(player) >= 10 then
|
|
||||||
gotomap()
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local cfg = MapCfg.dalumap[data[1]]
|
|
||||||
|
|
||||||
if not cfg then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
---* 检测开荒大陆 -- GM权限无效
|
|
||||||
local dalu_level = Player.getint(player, VarCfg.Player.int["大陆开荒"])
|
|
||||||
if dalu_level < cfg.level then
|
|
||||||
Func.sendmsg(player, "禁止跨大陆野外传送!")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
if cfg.timer_close then
|
|
||||||
local SeverMin = Sys.getint(VarCfg.Global.int.SeverMin) or 0
|
|
||||||
if SeverMin >= cfg.timer_close then
|
|
||||||
Func.sendmsg9(actor, string.format("开区%d分钟后已关闭!", SeverMin))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
if cfg.gongchen then
|
|
||||||
if castleinfo(5) then
|
|
||||||
Func.sendmsg9(player, "攻沙期间禁止下图!")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if cfg.zhandou then
|
|
||||||
if Func.getzhandou(player) then
|
|
||||||
Func.sendmsg9(player, "战斗状态禁止传送")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
gotomap()
|
gotomap()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ local _, errinfo = pcall(function()
|
||||||
require("Envir/QuestDiary/util/提升基类")
|
require("Envir/QuestDiary/util/提升基类")
|
||||||
Message.dispatch_handler["GmBoxOBJ"] = require("Envir/QuestDiary/util/GM操作台")
|
Message.dispatch_handler["GmBoxOBJ"] = require("Envir/QuestDiary/util/GM操作台")
|
||||||
Message.dispatch_handler["NPCGotoMapOBJ"] = require("Envir/QuestDiary/util/挂机地图传送")
|
Message.dispatch_handler["NPCGotoMapOBJ"] = require("Envir/QuestDiary/util/挂机地图传送")
|
||||||
|
Message.dispatch_handler["AutoXunHangOBJ"] = require("Envir/QuestDiary/util/自动巡航下图")
|
||||||
|
|
||||||
-- 初始化游戏内容所有文件
|
-- 初始化游戏内容所有文件
|
||||||
for i, v in ipairs(GetFileList(string.format("QuestDiary/%s", "系统类")) or {}) do
|
for i, v in ipairs(GetFileList(string.format("QuestDiary/%s", "系统类")) or {}) do
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
kuangbao = 1,
|
kuangbao = 1,
|
||||||
},
|
},
|
||||||
["圣域"] = {
|
["圣域"] = {
|
||||||
|
|
@ -17,6 +18,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
chuanyunjian = 1,
|
chuanyunjian = 1,
|
||||||
},
|
},
|
||||||
["起始之地"] = {
|
["起始之地"] = {
|
||||||
|
|
@ -24,29 +26,34 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["痛苦大厅"] = {
|
["痛苦大厅"] = {
|
||||||
level = 0,
|
level = 0,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["魔兽前哨"] = {
|
["魔兽前哨"] = {
|
||||||
level = 0,
|
level = 0,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["巨魔巢穴"] = {
|
["巨魔巢穴"] = {
|
||||||
level = 0,
|
level = 0,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
[3] = {
|
[3] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
Auto = 1,
|
||||||
chuanyunjian = 1,
|
chuanyunjian = 1,
|
||||||
},
|
},
|
||||||
["赤月深处"] = {
|
["赤月深处"] = {
|
||||||
|
|
@ -59,12 +66,14 @@ local config = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["赤月祭坛"] = {
|
["赤月祭坛"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["沃玛一层"] = {
|
["沃玛一层"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
|
|
@ -83,6 +92,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["祖玛四层"] = {
|
["祖玛四层"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
|
|
@ -101,6 +111,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["蜈蚣洞"] = {
|
["蜈蚣洞"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
|
|
@ -119,6 +130,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["僵尸洞穴"] = {
|
["僵尸洞穴"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
|
|
@ -137,6 +149,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
chuanyunjian = 1,
|
chuanyunjian = 1,
|
||||||
},
|
},
|
||||||
["卧龙山庄"] = {
|
["卧龙山庄"] = {
|
||||||
|
|
@ -144,6 +157,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
chuanyunjian = 1,
|
chuanyunjian = 1,
|
||||||
},
|
},
|
||||||
["山庄秘阁"] = {
|
["山庄秘阁"] = {
|
||||||
|
|
@ -151,6 +165,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["奴隶山谷"] = {
|
["奴隶山谷"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
|
|
@ -174,6 +189,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["狐月山"] = {
|
["狐月山"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
|
|
@ -185,34 +201,40 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["boss之家一层"] = {
|
["boss之家一层"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["boss之家二层"] = {
|
["boss之家二层"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["boss之家三层"] = {
|
["boss之家三层"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["boss之家四层"] = {
|
["boss之家四层"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["神龙帝国"] = {
|
["神龙帝国"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
|
xunhang = 1,
|
||||||
chuanyunjian = 1,
|
chuanyunjian = 1,
|
||||||
},
|
},
|
||||||
["废墟之城"] = {
|
["废墟之城"] = {
|
||||||
|
|
@ -226,6 +248,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["静谧山谷"] = {
|
["静谧山谷"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
|
|
@ -238,6 +261,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["天龙遗址"] = {
|
["天龙遗址"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
|
|
@ -250,6 +274,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["水上世界"] = {
|
["水上世界"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
|
|
@ -262,12 +287,14 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["幽灵船"] = {
|
["幽灵船"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["龙爪要塞"] = {
|
["龙爪要塞"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
|
|
@ -280,6 +307,7 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["秦王地宫"] = {
|
["秦王地宫"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
|
|
@ -292,12 +320,14 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["秦王陵墓"] = {
|
["秦王陵墓"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["冰晶雪域"] = {
|
["冰晶雪域"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
|
|
@ -310,12 +340,14 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["冰封王座"] = {
|
["冰封王座"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["熔岩之地"] = {
|
["熔岩之地"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
|
|
@ -328,35 +360,42 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["岩浆地狱"] = {
|
["岩浆地狱"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["boss之家五层"] = {
|
["boss之家五层"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["boss之家六层"] = {
|
["boss之家六层"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["boss之家七层"] = {
|
["boss之家七层"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["灵魂祭坛"] = {
|
["灵魂祭坛"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["遗忘之地"] = {
|
["遗忘之地"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
|
|
@ -370,101 +409,117 @@ local config = {
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
},
|
},
|
||||||
["先天秘境"] = {
|
["先天秘境9层"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["天关"] = {
|
["天关"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["恶魔深渊"] = {
|
["恶魔深渊"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["归墟神殿"] = {
|
["归墟神殿"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["玛法禁地"] = {
|
["玛法禁地"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["般若神殿"] = {
|
["般若神殿"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["洞天秘境"] = {
|
["洞天秘境"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["阴曹地府"] = {
|
["阴曹地府"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["狼烟梦境"] = {
|
["狼烟梦境"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["狐月神殿"] = {
|
["狐月神殿"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["祭坛皇宫"] = {
|
["祭坛皇宫"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["神墟"] = {
|
["神墟"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["万龙巢"] = {
|
["万龙巢"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["皇陵"] = {
|
["皇陵"] = {
|
||||||
level = 2,
|
level = 2,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["埋葬之地"] = {
|
["埋葬之地"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
["皇宫"] = {
|
["皇宫"] = {
|
||||||
level = 1,
|
level = 1,
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
Auto = 1,
|
Auto = 1,
|
||||||
kuangbao = 1,
|
kuangbao = 1,
|
||||||
},
|
},
|
||||||
|
|
@ -473,6 +528,65 @@ local config = {
|
||||||
gongcheng = 1,
|
gongcheng = 1,
|
||||||
zhandou = 1,
|
zhandou = 1,
|
||||||
notrandom = 1,
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
|
Auto = 1,
|
||||||
|
kuangbao = 1,
|
||||||
|
},
|
||||||
|
["先天秘境1层"] = {
|
||||||
|
level = 1,
|
||||||
|
gongcheng = 1,
|
||||||
|
zhandou = 1,
|
||||||
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
|
},
|
||||||
|
["先天秘境2层"] = {
|
||||||
|
level = 1,
|
||||||
|
gongcheng = 1,
|
||||||
|
zhandou = 1,
|
||||||
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
|
},
|
||||||
|
["先天秘境3层"] = {
|
||||||
|
level = 1,
|
||||||
|
gongcheng = 1,
|
||||||
|
zhandou = 1,
|
||||||
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
|
},
|
||||||
|
["先天秘境4层"] = {
|
||||||
|
level = 1,
|
||||||
|
gongcheng = 1,
|
||||||
|
zhandou = 1,
|
||||||
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
|
},
|
||||||
|
["先天秘境5层"] = {
|
||||||
|
level = 1,
|
||||||
|
gongcheng = 1,
|
||||||
|
zhandou = 1,
|
||||||
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
|
},
|
||||||
|
["先天秘境6层"] = {
|
||||||
|
level = 1,
|
||||||
|
gongcheng = 1,
|
||||||
|
zhandou = 1,
|
||||||
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
|
},
|
||||||
|
["先天秘境7层"] = {
|
||||||
|
level = 1,
|
||||||
|
gongcheng = 1,
|
||||||
|
zhandou = 1,
|
||||||
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
|
},
|
||||||
|
["先天秘境8层"] = {
|
||||||
|
level = 1,
|
||||||
|
gongcheng = 1,
|
||||||
|
zhandou = 1,
|
||||||
|
notrandom = 1,
|
||||||
|
xunhang = 1,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
return config
|
return config
|
||||||
|
|
@ -26,6 +26,10 @@ VarCfg.Player.int["
|
||||||
VarCfg.Player.int["攻击力排行榜"] = "INT_攻击力排行榜"
|
VarCfg.Player.int["攻击力排行榜"] = "INT_攻击力排行榜"
|
||||||
VarCfg.Player.int["九秘排行榜"] = "INT_九秘排行榜"
|
VarCfg.Player.int["九秘排行榜"] = "INT_九秘排行榜"
|
||||||
VarCfg.Player.int["狂暴击杀人数"] = "INT_狂暴击杀人数"
|
VarCfg.Player.int["狂暴击杀人数"] = "INT_狂暴击杀人数"
|
||||||
|
VarCfg.Player.int["自动巡航自动狂暴"] = "INT_自动巡航自动狂暴"
|
||||||
|
VarCfg.Player.int["自动巡航死亡停止"] = "INT_自动巡航死亡停止"
|
||||||
|
VarCfg.Player.int["自动巡航未攻击切图"] = "INT_自动巡航未攻击切图"
|
||||||
|
VarCfg.Player.int["自动巡航顺序下图"] = "INT_自动巡航顺序下图"
|
||||||
|
|
||||||
VarCfg.Player.int["长生戟敌方maxdc"] = "INT_长生戟敌方maxdc"
|
VarCfg.Player.int["长生戟敌方maxdc"] = "INT_长生戟敌方maxdc"
|
||||||
VarCfg.Player.int["雮尘珠_吸收"] = "INT_雮尘珠吸收"
|
VarCfg.Player.int["雮尘珠_吸收"] = "INT_雮尘珠吸收"
|
||||||
|
|
@ -70,6 +74,7 @@ VarCfg.Player.str["
|
||||||
VarCfg.Player.str["九秘升级保底"] = "STR_九秘升级失败记录"
|
VarCfg.Player.str["九秘升级保底"] = "STR_九秘升级失败记录"
|
||||||
VarCfg.Player.str["九秘BUFF"] = "STR_九秘BUFF"
|
VarCfg.Player.str["九秘BUFF"] = "STR_九秘BUFF"
|
||||||
VarCfg.Player.str["特戒盒子"] = "STR_特戒盒子" ---* 特戒盒子位置解锁记录
|
VarCfg.Player.str["特戒盒子"] = "STR_特戒盒子" ---* 特戒盒子位置解锁记录
|
||||||
|
VarCfg.Player.str["自动巡航地图"] = "STR_自动巡航地图"
|
||||||
|
|
||||||
|
|
||||||
---* 玩家期限
|
---* 玩家期限
|
||||||
|
|
@ -99,6 +104,7 @@ VarCfg.Player.TL.str["ÿ
|
||||||
VarCfg.Player.temp = {}
|
VarCfg.Player.temp = {}
|
||||||
VarCfg.Player.temp.str = {}
|
VarCfg.Player.temp.str = {}
|
||||||
VarCfg.Player.temp.str["礼包类型"] = "STR_礼包类型" ---* 拉起充值时礼包类型
|
VarCfg.Player.temp.str["礼包类型"] = "STR_礼包类型" ---* 拉起充值时礼包类型
|
||||||
|
VarCfg.Player.temp.str["地图限时地图"] = "STR_地图限时地图"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -107,6 +113,10 @@ VarCfg.Player.temp.int["
|
||||||
VarCfg.Player.temp.int["九秘升级状态"] = "INT_九秘升级状态" ---* 拉起充值时礼包类型
|
VarCfg.Player.temp.int["九秘升级状态"] = "INT_九秘升级状态" ---* 拉起充值时礼包类型
|
||||||
VarCfg.Player.temp.int["熔灵再生"] = "INT_熔灵再生" ---* 熔灵再生_双烈火状态
|
VarCfg.Player.temp.int["熔灵再生"] = "INT_熔灵再生" ---* 熔灵再生_双烈火状态
|
||||||
VarCfg.Player.temp.int["迅捷如风"] = "INT_迅捷如风" ---* 迅捷如风_野蛮重置CD状态
|
VarCfg.Player.temp.int["迅捷如风"] = "INT_迅捷如风" ---* 迅捷如风_野蛮重置CD状态
|
||||||
|
VarCfg.Player.temp.int["自动巡航开关"] = "INT_自动巡航开关"
|
||||||
|
VarCfg.Player.temp.int["自动巡航死亡次数"] = "INT_自动巡航死亡次数"
|
||||||
|
VarCfg.Player.temp.int["自动巡航最后攻击"] = "INT_自动巡航最后攻击"
|
||||||
|
VarCfg.Player.temp.int["地图限时结束"] = "INT_地图限时结束"
|
||||||
|
|
||||||
|
|
||||||
---* 物品变量
|
---* 物品变量
|
||||||
|
|
@ -188,6 +198,8 @@ VarCfg.sys.TL.int["
|
||||||
VarCfg.Timer = {}
|
VarCfg.Timer = {}
|
||||||
VarCfg.Timer["攻沙定时器"] = 20
|
VarCfg.Timer["攻沙定时器"] = 20
|
||||||
VarCfg.Timer["拾取精灵巡检"] = 21
|
VarCfg.Timer["拾取精灵巡检"] = 21
|
||||||
|
VarCfg.Timer["自动巡航巡检"] = 22
|
||||||
|
VarCfg.Timer["地图限时巡检"] = 23
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,25 @@ NPCGotoMapOBJ._name = "NPCGotoMapOBJ"
|
||||||
-- 配置文件
|
-- 配置文件
|
||||||
NPCGotoMapOBJ.cfg = Func.require("cfg_地图进入NPC")
|
NPCGotoMapOBJ.cfg = Func.require("cfg_地图进入NPC")
|
||||||
|
|
||||||
|
local function NPCGotoMapOBJ_mapid(pos)
|
||||||
|
if type(pos) == "table" then
|
||||||
|
return pos[1]
|
||||||
|
end
|
||||||
|
return pos
|
||||||
|
end
|
||||||
|
|
||||||
|
local function NPCGotoMapOBJ_addmap(mapcfg, mapid, cfg, npcid, id)
|
||||||
|
if not mapid then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
mapcfg[mapid] = { cfg = cfg, npcid = npcid, id = id, mapid = mapid }
|
||||||
|
end
|
||||||
|
|
||||||
local function NPCGotoMapOBJ_for()
|
local function NPCGotoMapOBJ_for()
|
||||||
local tbl = {}
|
local tbl = {}
|
||||||
local id = {}
|
local id = {}
|
||||||
local leavemap = {}
|
local leavemap = {}
|
||||||
|
local mapcfg = {}
|
||||||
for i, v in ipairs(NPCGotoMapOBJ.cfg) do
|
for i, v in ipairs(NPCGotoMapOBJ.cfg) do
|
||||||
table.insert(id, v.npcid)
|
table.insert(id, v.npcid)
|
||||||
if not tbl[v.npcid] then
|
if not tbl[v.npcid] then
|
||||||
|
|
@ -18,6 +33,12 @@ local function NPCGotoMapOBJ_for()
|
||||||
end
|
end
|
||||||
|
|
||||||
table.insert(tbl[v.npcid], v)
|
table.insert(tbl[v.npcid], v)
|
||||||
|
local cfgid = #tbl[v.npcid]
|
||||||
|
|
||||||
|
NPCGotoMapOBJ_addmap(mapcfg, NPCGotoMapOBJ_mapid(v.pos), v, v.npcid, cfgid)
|
||||||
|
for _, pos in ipairs(v.randompos or {}) do
|
||||||
|
NPCGotoMapOBJ_addmap(mapcfg, NPCGotoMapOBJ_mapid(pos), v, v.npcid, cfgid)
|
||||||
|
end
|
||||||
|
|
||||||
if v.LeaveMapCD then
|
if v.LeaveMapCD then
|
||||||
if v.pos then
|
if v.pos then
|
||||||
|
|
@ -39,11 +60,10 @@ local function NPCGotoMapOBJ_for()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return tbl, id, leavemap
|
return tbl, id, leavemap, mapcfg
|
||||||
end
|
end
|
||||||
|
|
||||||
NPCGotoMapOBJ.npcid, NPCGotoMapOBJ.id, NPCGotoMapOBJ.LeaveMapCD = NPCGotoMapOBJ_for()
|
NPCGotoMapOBJ.npcid, NPCGotoMapOBJ.id, NPCGotoMapOBJ.LeaveMapCD, NPCGotoMapOBJ.mapid = NPCGotoMapOBJ_for()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- ---* 加入上线同步数据
|
-- ---* 加入上线同步数据
|
||||||
|
|
@ -116,28 +136,31 @@ function NPCGotoMapOBJ:up(actor, p1, p2, p3, data)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if cfg.limitedTime then
|
local limitedMapId = nil
|
||||||
changemoney(actor, 21, "=", cfg.limitedTime * 60, "ÉèÖõØÍ¼Ê±Ð§", true)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
if type(cfg.pos) == "table" then
|
if type(cfg.pos) == "table" then
|
||||||
|
limitedMapId = cfg.pos[1]
|
||||||
MapCfg.gotomap(actor, cfg.pos[1], cfg.pos[2], cfg.pos[3])
|
MapCfg.gotomap(actor, cfg.pos[1], cfg.pos[2], cfg.pos[3])
|
||||||
else
|
else
|
||||||
|
limitedMapId = cfg.pos
|
||||||
MapCfg.gotomap(actor, cfg.pos)
|
MapCfg.gotomap(actor, cfg.pos)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if cfg.randompos then
|
if cfg.randompos then
|
||||||
local _random = math.random(1, #cfg.randompos)
|
local _random = math.random(1, #cfg.randompos)
|
||||||
if type(cfg.randompos[_random]) == "table" then
|
if type(cfg.randompos[_random]) == "table" then
|
||||||
|
limitedMapId = cfg.randompos[_random][1]
|
||||||
MapCfg.gotomap(actor, cfg.randompos[_random][1], cfg.randompos[_random][2], cfg.randompos[_random][3])
|
MapCfg.gotomap(actor, cfg.randompos[_random][1], cfg.randompos[_random][2], cfg.randompos[_random][3])
|
||||||
else
|
else
|
||||||
|
limitedMapId = cfg.randompos[_random]
|
||||||
MapCfg.gotomap(actor, cfg.randompos[_random])
|
MapCfg.gotomap(actor, cfg.randompos[_random])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if cfg.limitedTime and limitedMapId and tostring(getbaseinfo(actor, ConstCfg.gbase.mapid)) == tostring(limitedMapId) then
|
||||||
|
self:startLimitedTime(actor, limitedMapId, cfg.limitedTime)
|
||||||
|
else
|
||||||
|
self:clearLimitedTime(actor)
|
||||||
|
end
|
||||||
if cfg.sendmsg then
|
if cfg.sendmsg then
|
||||||
Func.sendmsg(actor,
|
Func.sendmsg(actor,
|
||||||
string.format("[地图传送]:#70|勇士#255|[%s]#215|闯入了#255|%s#215|%s!#255", Player.getname(actor), cfg.name,
|
string.format("[地图传送]:#70|勇士#255|[%s]#215|闯入了#255|%s#215|%s!#255", Player.getname(actor), cfg.name,
|
||||||
|
|
@ -146,18 +169,93 @@ function NPCGotoMapOBJ:up(actor, p1, p2, p3, data)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function NPCGotoMapOBJ:checkgotomap(actor, npcid, id)
|
function NPCGotoMapOBJ:getMapCfg(mapid)
|
||||||
if not npcid or not id then
|
if not mapid then
|
||||||
self:violation(actor)
|
return nil
|
||||||
|
end
|
||||||
|
return self.mapid[mapid] or self.mapid[tostring(mapid)] or self.mapid[tonumber(mapid)]
|
||||||
|
end
|
||||||
|
|
||||||
|
function NPCGotoMapOBJ:getLimitedMap(actor)
|
||||||
|
return Player.gettempstr(actor, VarCfg.Player.temp.str["華芞癹奀華芞"]) or ""
|
||||||
|
end
|
||||||
|
|
||||||
|
function NPCGotoMapOBJ:getLimitedEndTime(actor)
|
||||||
|
return Player.gettempint(actor, VarCfg.Player.temp.int["華芞癹奀賦旰"]) or 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function NPCGotoMapOBJ:sendLimitedTimeMsg(actor, remain, showTime)
|
||||||
|
remain = math.max(0, tonumber(remain) or 0)
|
||||||
|
showTime = tonumber(showTime) or 10
|
||||||
|
senddelaymsg(actor, string.format("[華芞數奀]: 呁豻%d鏃, 奀潔善蔚ッ秶燭羲華芞.", remain), showTime, 250, 1, nil, 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
function NPCGotoMapOBJ:clearLimitedTime(actor)
|
||||||
|
local timerId = VarCfg.Timer["華芞癹奀挐潰"]
|
||||||
|
if timerId and hastimer(actor, timerId) then
|
||||||
|
setofftimer(actor, timerId)
|
||||||
|
end
|
||||||
|
Player.settempstr(actor, VarCfg.Player.temp.str["華芞癹奀華芞"], "")
|
||||||
|
Player.settempint(actor, VarCfg.Player.temp.int["華芞癹奀賦旰"], 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
function NPCGotoMapOBJ:startLimitedTime(actor, mapid, limitedTime)
|
||||||
|
limitedTime = tonumber(limitedTime) or 0
|
||||||
|
if limitedTime <= 0 or not mapid then
|
||||||
|
self:clearLimitedTime(actor)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local cfg = self.npcid[npcid][id]
|
local staySeconds = limitedTime * 60
|
||||||
|
local endTime = os.time() + staySeconds
|
||||||
|
Player.settempstr(actor, VarCfg.Player.temp.str["華芞癹奀華芞"], tostring(mapid))
|
||||||
|
Player.settempint(actor, VarCfg.Player.temp.int["華芞癹奀賦旰"], endTime)
|
||||||
|
|
||||||
|
local timerId = VarCfg.Timer["華芞癹奀挐潰"]
|
||||||
|
if timerId and not hastimer(actor, timerId) then
|
||||||
|
setontimer(actor, timerId, 1, 0)
|
||||||
|
end
|
||||||
|
self:sendLimitedTimeMsg(actor, staySeconds, 10)
|
||||||
|
end
|
||||||
|
|
||||||
|
function NPCGotoMapOBJ:onLimitedTimer(actor)
|
||||||
|
local limitedMapId = self:getLimitedMap(actor)
|
||||||
|
local endTime = self:getLimitedEndTime(actor)
|
||||||
|
if limitedMapId == "" or endTime <= 0 then
|
||||||
|
self:clearLimitedTime(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local curMap = getbaseinfo(actor, ConstCfg.gbase.mapid)
|
||||||
|
if tostring(curMap) ~= tostring(limitedMapId) then
|
||||||
|
self:clearLimitedTime(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local remain = endTime - os.time()
|
||||||
|
if remain <= 0 then
|
||||||
|
self:clearLimitedTime(actor)
|
||||||
|
Func.sendmsg9(actor, "[枑尨]:#70|華芞礿隱奀潔眒善,撈蔚ッ秶燭羲華芞!")
|
||||||
|
mapmove(actor, 3, 330, 330)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if remain <= 10 then
|
||||||
|
self:sendLimitedTimeMsg(actor, remain, 2)
|
||||||
|
elseif remain % 10 == 0 then
|
||||||
|
self:sendLimitedTimeMsg(actor, remain, 10)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function NPCGotoMapOBJ:checkCfg(actor, cfg, isTake, silent)
|
||||||
|
if not cfg then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
local check_bool = true
|
local check_bool = true
|
||||||
if cfg.check and cfg.check_2 then
|
if cfg.check and cfg.check_2 then
|
||||||
local check_1 = Func.checkcontion(actor, cfg.check, false, true)
|
local check_1 = Func.checkcontion(actor, cfg.check, false, not silent)
|
||||||
local check_2 = Func.checkcontion(actor, cfg.check_2, false, true)
|
local check_2 = Func.checkcontion(actor, cfg.check_2, false, not silent)
|
||||||
if not check_1 and not check_2 then
|
if not check_1 and not check_2 then
|
||||||
check_bool = false
|
check_bool = false
|
||||||
end
|
end
|
||||||
|
|
@ -166,7 +264,7 @@ function NPCGotoMapOBJ:checkgotomap(actor, npcid, id)
|
||||||
|
|
||||||
|
|
||||||
if cfg.check and not cfg.check_2 then
|
if cfg.check and not cfg.check_2 then
|
||||||
if not Func.checkcontion(actor, cfg.check, false, true) then
|
if not Func.checkcontion(actor, cfg.check, false, not silent) then
|
||||||
check_bool = false
|
check_bool = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -178,7 +276,7 @@ function NPCGotoMapOBJ:checkgotomap(actor, npcid, id)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
if cfg.xh then
|
if cfg.xh and isTake ~= false then
|
||||||
if Func.takeitmes(actor, cfg.xh, true, true) then
|
if Func.takeitmes(actor, cfg.xh, true, true) then
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
|
|
@ -188,6 +286,24 @@ function NPCGotoMapOBJ:checkgotomap(actor, npcid, id)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function NPCGotoMapOBJ:checkgotomapByMapId(actor, mapid, isTake, silent)
|
||||||
|
local data = self:getMapCfg(mapid)
|
||||||
|
if not data then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return self:checkCfg(actor, data.cfg, isTake, silent)
|
||||||
|
end
|
||||||
|
|
||||||
|
function NPCGotoMapOBJ:checkgotomap(actor, npcid, id)
|
||||||
|
if not npcid or not id then
|
||||||
|
self:violation(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local cfg = self.npcid[npcid][id]
|
||||||
|
return self:checkCfg(actor, cfg, true)
|
||||||
|
end
|
||||||
|
|
||||||
---* 打开仓库
|
---* 打开仓库
|
||||||
function NPCGotoMapOBJ:opencanggku(actor)
|
function NPCGotoMapOBJ:opencanggku(actor)
|
||||||
openstorage(actor)
|
openstorage(actor)
|
||||||
|
|
@ -253,9 +369,16 @@ function NPCGotoMapOBJ.LeaveMapEvent(actor, mapId, x, y, mapId2)
|
||||||
if NPCGotoMapOBJ.LeaveMapCD[mapId] then
|
if NPCGotoMapOBJ.LeaveMapCD[mapId] then
|
||||||
Player.setint(actor, NPCGotoMapOBJ.LeaveMapCD[mapId].name, os.time())
|
Player.setint(actor, NPCGotoMapOBJ.LeaveMapCD[mapId].name, os.time())
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if tostring(NPCGotoMapOBJ:getLimitedMap(actor)) == tostring(mapId) then
|
||||||
|
NPCGotoMapOBJ:clearLimitedTime(actor)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
GameEvent.add(EventCfg.goLeaveMap, NPCGotoMapOBJ.LeaveMapEvent, NPCGotoMapOBJ)
|
GameEvent.add(EventCfg.goLeaveMap, NPCGotoMapOBJ.LeaveMapEvent, NPCGotoMapOBJ)
|
||||||
|
GameEvent.add(EventCfg.onExitGame, function(actor)
|
||||||
|
NPCGotoMapOBJ:clearLimitedTime(actor)
|
||||||
|
end, NPCGotoMapOBJ)
|
||||||
|
|
||||||
|
|
||||||
NPCGotoMapOBJ.allowFunc = {"up", "main"}
|
NPCGotoMapOBJ.allowFunc = {"up", "main"}
|
||||||
|
|
|
||||||
427
Mirserver/Mir200/Envir/QuestDiary/util/自动巡航下图.lua
Normal file
|
|
@ -0,0 +1,427 @@
|
||||||
|
AutoXunHangOBJ = Up_BaseClass:new()
|
||||||
|
|
||||||
|
AutoXunHangOBJ._name = "AutoXunHangOBJ"
|
||||||
|
AutoXunHangOBJ.maxMap = 3
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:getMapCfg(mapid)
|
||||||
|
if not mapid or not MapCfg or not MapCfg.dalumap then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
return MapCfg.dalumap[mapid] or MapCfg.dalumap[tostring(mapid)] or MapCfg.dalumap[tonumber(mapid)]
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:isForbidMap(mapid)
|
||||||
|
local cfg = self:getMapCfg(mapid)
|
||||||
|
if not cfg then
|
||||||
|
return true, "地图配置不存在!"
|
||||||
|
end
|
||||||
|
if cfg.xunhang then
|
||||||
|
return true, "当前地图禁止巡航!"
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:getMaps(actor)
|
||||||
|
local str = Player.getstr(actor, VarCfg.Player.str["自动巡航地图"]) or ""
|
||||||
|
if str == "" then
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
local ok, data = pcall(json2tbl, str)
|
||||||
|
if ok and type(data) == "table" then
|
||||||
|
return data
|
||||||
|
end
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:saveMaps(actor, maps)
|
||||||
|
Player.setstr(actor, VarCfg.Player.str["自动巡航地图"], tbl2json(maps or {}))
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:getSetting(actor)
|
||||||
|
return {
|
||||||
|
autoKuangBao = Player.getint(actor, VarCfg.Player.int["自动巡航自动狂暴"]) or 0,
|
||||||
|
dieStop = Player.getint(actor, VarCfg.Player.int["自动巡航死亡停止"]) or 0,
|
||||||
|
noAttackSec = Player.getint(actor, VarCfg.Player.int["自动巡航未攻击切图"]) or 0,
|
||||||
|
orderMode = Player.getint(actor, VarCfg.Player.int["自动巡航顺序下图"]) or 0,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:isOpen(actor)
|
||||||
|
return (Player.gettempint(actor, VarCfg.Player.temp.int["自动巡航开关"]) or 0) == 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:setOpen(actor, value)
|
||||||
|
Player.settempint(actor, VarCfg.Player.temp.int["自动巡航开关"], value and 1 or 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:setLastAttack(actor)
|
||||||
|
Player.settempint(actor, VarCfg.Player.temp.int["自动巡航最后攻击"], os.time())
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:getLastAttack(actor)
|
||||||
|
return Player.gettempint(actor, VarCfg.Player.temp.int["自动巡航最后攻击"]) or 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:startTimer(actor)
|
||||||
|
local timerId = VarCfg.Timer["自动巡航巡检"]
|
||||||
|
if not hastimer(actor, timerId) then
|
||||||
|
setontimer(actor, timerId, 3, 0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:stopTimer(actor)
|
||||||
|
local timerId = VarCfg.Timer["自动巡航巡检"]
|
||||||
|
if hastimer(actor, timerId) then
|
||||||
|
setofftimer(actor, timerId)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:getClientData(actor)
|
||||||
|
local setting = self:getSetting(actor)
|
||||||
|
return {
|
||||||
|
maps = self:getMaps(actor),
|
||||||
|
isOpen = self:isOpen(actor) and 1 or 0,
|
||||||
|
autoKuangBao = setting.autoKuangBao,
|
||||||
|
dieStop = setting.dieStop,
|
||||||
|
dieCount = Player.gettempint(actor, VarCfg.Player.temp.int["自动巡航死亡次数"]) or 0,
|
||||||
|
noAttackSec = setting.noAttackSec,
|
||||||
|
orderMode = setting.orderMode,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:sendSync(actor)
|
||||||
|
Message:SubLink(actor, self._name .. "_syncData", self:getClientData(actor))
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:sync(actor)
|
||||||
|
self:sendSync(actor)
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:recordMap(actor)
|
||||||
|
LOGDump("进来了~~~~~")
|
||||||
|
local mapid = getbaseinfo(actor, ConstCfg.gbase.mapid)
|
||||||
|
local forbid, msg = self:isForbidMap(mapid)
|
||||||
|
if forbid then
|
||||||
|
Func.sendmsg9(actor, msg)
|
||||||
|
self:sendSync(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local maps = self:getMaps(actor)
|
||||||
|
for _, v in ipairs(maps) do
|
||||||
|
if tostring(v) == tostring(mapid) then
|
||||||
|
Func.sendmsg9(actor, "该地图已记录!")
|
||||||
|
self:sendSync(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if #maps >= self.maxMap then
|
||||||
|
Func.sendmsg9(actor, "最多只能记录3个巡航地图!")
|
||||||
|
self:sendSync(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
table.insert(maps, mapid)
|
||||||
|
self:saveMaps(actor, maps)
|
||||||
|
Func.sendmsg9(actor, string.format("已记录巡航地图:%s", tostring(mapid)))
|
||||||
|
self:sendSync(actor)
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:delMap(actor, p1, p2, p3, data)
|
||||||
|
data = type(data) == "table" and (data[1] or data) or data
|
||||||
|
local idx = tonumber(data and data.index or data) or 0
|
||||||
|
local maps = self:getMaps(actor)
|
||||||
|
if idx > 0 and maps[idx] then
|
||||||
|
table.remove(maps, idx)
|
||||||
|
self:saveMaps(actor, maps)
|
||||||
|
Func.sendmsg9(actor, "已删除巡航地图!")
|
||||||
|
end
|
||||||
|
self:sendSync(actor)
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:saveSetting(actor, p1, p2, p3, data)
|
||||||
|
data = type(data) == "table" and (data[1] or data) or {}
|
||||||
|
local autoKuangBao = tonumber(data.autoKuangBao) or 0
|
||||||
|
local dieStop = math.max(0, tonumber(data.dieStop) or 0)
|
||||||
|
local noAttackSec = math.max(0, tonumber(data.noAttackSec) or 0)
|
||||||
|
local orderMode = tonumber(data.orderMode) or 0
|
||||||
|
|
||||||
|
Player.setint(actor, VarCfg.Player.int["自动巡航自动狂暴"], autoKuangBao == 1 and 1 or 0)
|
||||||
|
Player.setint(actor, VarCfg.Player.int["自动巡航死亡停止"], dieStop)
|
||||||
|
Player.setint(actor, VarCfg.Player.int["自动巡航未攻击切图"], noAttackSec)
|
||||||
|
Player.setint(actor, VarCfg.Player.int["自动巡航顺序下图"], orderMode == 1 and 1 or 0)
|
||||||
|
Func.sendmsg9(actor, "自动巡航设置已保存!")
|
||||||
|
self:sendSync(actor)
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:getCanGotoMaps(actor, excludeMap)
|
||||||
|
local ret = {}
|
||||||
|
for _, mapid in ipairs(self:getMaps(actor)) do
|
||||||
|
if tostring(mapid) ~= tostring(excludeMap) then
|
||||||
|
local forbid = self:isForbidMap(mapid)
|
||||||
|
if not forbid then
|
||||||
|
table.insert(ret, mapid)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:isRecordMap(actor, mapid)
|
||||||
|
for _, v in ipairs(self:getMaps(actor)) do
|
||||||
|
if tostring(v) == tostring(mapid) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:tryOpenKuangBao(actor)
|
||||||
|
local setting = self:getSetting(actor)
|
||||||
|
if setting.autoKuangBao ~= 1 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if checktitle(actor, "狂暴之力") then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if KuangBaoOBJ and KuangBaoOBJ.up then
|
||||||
|
KuangBaoOBJ:up(actor)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:checkMapCost(actor, mapid)
|
||||||
|
self:tryOpenKuangBao(actor)
|
||||||
|
|
||||||
|
if MapCfg and MapCfg.checkgotomap and not MapCfg.checkgotomap(actor, mapid) then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if NPCGotoMapOBJ and NPCGotoMapOBJ.checkgotomapByMapId then
|
||||||
|
if not NPCGotoMapOBJ:checkgotomapByMapId(actor, mapid, true) then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:gotoMap(actor, mapid)
|
||||||
|
local forbid, msg = self:isForbidMap(mapid)
|
||||||
|
if forbid then
|
||||||
|
Func.sendmsg9(actor, msg)
|
||||||
|
self:stop(actor, nil, nil, nil, { nomsg = 1 })
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if not self:checkMapCost(actor, mapid) then
|
||||||
|
self:stop(actor, nil, nil, nil, { nomsg = 1 })
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
MapCfg.gotomap(actor, mapid)
|
||||||
|
startautoattack(actor)
|
||||||
|
self:setLastAttack(actor)
|
||||||
|
self:sendSync(actor)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:selectNextMap(actor, excludeMap)
|
||||||
|
local setting = self:getSetting(actor)
|
||||||
|
local maps = self:getMaps(actor)
|
||||||
|
if setting.orderMode ~= 1 then
|
||||||
|
local canMaps = self:getCanGotoMaps(actor, excludeMap)
|
||||||
|
if #canMaps == 0 then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
return canMaps[math.random(1, #canMaps)]
|
||||||
|
end
|
||||||
|
|
||||||
|
local startIndex = 0
|
||||||
|
if excludeMap then
|
||||||
|
for i, mapid in ipairs(maps) do
|
||||||
|
if tostring(mapid) == tostring(excludeMap) then
|
||||||
|
startIndex = i
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1, #maps do
|
||||||
|
local index = ((startIndex + i - 1) % #maps) + 1
|
||||||
|
local mapid = maps[index]
|
||||||
|
if tostring(mapid) ~= tostring(excludeMap) then
|
||||||
|
local forbid = self:isForbidMap(mapid)
|
||||||
|
if not forbid then
|
||||||
|
return mapid
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:gotoRandomMap(actor)
|
||||||
|
local curMap = getbaseinfo(actor, ConstCfg.gbase.mapid)
|
||||||
|
local mapid = self:selectNextMap(actor, curMap)
|
||||||
|
if not mapid then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
return self:gotoMap(actor, mapid)
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:start(actor)
|
||||||
|
if getflagstatus(actor, VarCfg.Falg_tequan) == 0 then
|
||||||
|
Func.sendmsg9(actor, "开通王者特权后才可开启自动巡航!")
|
||||||
|
self:sendSync(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local maps = self:getMaps(actor)
|
||||||
|
if #maps == 0 then
|
||||||
|
Func.sendmsg9(actor, "请先记录巡航地图!")
|
||||||
|
self:sendSync(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local curMap = getbaseinfo(actor, ConstCfg.gbase.mapid)
|
||||||
|
local curMapRecorded = false
|
||||||
|
for _, mapid in ipairs(maps) do
|
||||||
|
if tostring(mapid) == tostring(curMap) then
|
||||||
|
curMapRecorded = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local curMapForbid = self:isForbidMap(curMap)
|
||||||
|
if curMapRecorded and not curMapForbid then
|
||||||
|
if not self:checkMapCost(actor, curMap) then
|
||||||
|
self:sendSync(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
self:setOpen(actor, true)
|
||||||
|
Player.settempint(actor, VarCfg.Player.temp.int["自动巡航死亡次数"], 0)
|
||||||
|
self:setLastAttack(actor)
|
||||||
|
self:startTimer(actor)
|
||||||
|
startautoattack(actor)
|
||||||
|
Func.sendmsg9(actor, "自动巡航已开启!")
|
||||||
|
self:sendSync(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local targetMap = self:selectNextMap(actor, curMapRecorded and curMap or nil)
|
||||||
|
if not targetMap then
|
||||||
|
Func.sendmsg9(actor, "没有可巡航的记录地图!")
|
||||||
|
self:sendSync(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
self:setOpen(actor, true)
|
||||||
|
Player.settempint(actor, VarCfg.Player.temp.int["自动巡航死亡次数"], 0)
|
||||||
|
self:setLastAttack(actor)
|
||||||
|
self:startTimer(actor)
|
||||||
|
|
||||||
|
if self:gotoMap(actor, targetMap) then
|
||||||
|
Func.sendmsg9(actor, "自动巡航已开启!")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:stop(actor, p1, p2, p3, data)
|
||||||
|
self:setOpen(actor, false)
|
||||||
|
self:stopTimer(actor)
|
||||||
|
stopautoattack(actor)
|
||||||
|
if not data or data.nomsg ~= 1 then
|
||||||
|
Func.sendmsg9(actor, "自动巡航已停止!")
|
||||||
|
end
|
||||||
|
self:sendSync(actor)
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:onTimer(actor)
|
||||||
|
if not self:isOpen(actor) then
|
||||||
|
self:stopTimer(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local curMap = getbaseinfo(actor, ConstCfg.gbase.mapid)
|
||||||
|
local forbid, msg = self:isForbidMap(curMap)
|
||||||
|
if forbid then
|
||||||
|
Func.sendmsg9(actor, msg)
|
||||||
|
self:stop(actor, nil, nil, nil, { nomsg = 1 })
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not self:isRecordMap(actor, curMap) then
|
||||||
|
if not self:gotoRandomMap(actor) then
|
||||||
|
self:stop(actor, nil, nil, nil, { nomsg = 1 })
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
startautoattack(actor)
|
||||||
|
|
||||||
|
local setting = self:getSetting(actor)
|
||||||
|
if setting.noAttackSec <= 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local lastAttack = self:getLastAttack(actor)
|
||||||
|
if lastAttack <= 0 then
|
||||||
|
self:setLastAttack(actor)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if os.time() - lastAttack >= setting.noAttackSec then
|
||||||
|
self:gotoRandomMap(actor)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:onAttackMon(actor)
|
||||||
|
if self:isOpen(actor) then
|
||||||
|
self:setLastAttack(actor)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:onNextdie(actor)
|
||||||
|
if not self:isOpen(actor) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local dieCount = (Player.gettempint(actor, VarCfg.Player.temp.int["自动巡航死亡次数"]) or 0) + 1
|
||||||
|
Player.settempint(actor, VarCfg.Player.temp.int["自动巡航死亡次数"], dieCount)
|
||||||
|
|
||||||
|
local setting = self:getSetting(actor)
|
||||||
|
if setting.dieStop > 0 and dieCount >= setting.dieStop then
|
||||||
|
Func.sendmsg9(actor, "死亡次数达到设置值,自动巡航已停止!")
|
||||||
|
self:stop(actor, nil, nil, nil, { nomsg = 1 })
|
||||||
|
return
|
||||||
|
end
|
||||||
|
self:sendSync(actor)
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:onRevive(actor)
|
||||||
|
if not self:isOpen(actor) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if not self:gotoRandomMap(actor) then
|
||||||
|
startautoattack(actor)
|
||||||
|
self:setLastAttack(actor)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
GameEvent.add(EventCfg.onAttackMon, function(actor)
|
||||||
|
AutoXunHangOBJ:onAttackMon(actor)
|
||||||
|
end, AutoXunHangOBJ)
|
||||||
|
|
||||||
|
GameEvent.add(EventCfg.onNextdie, function(actor)
|
||||||
|
AutoXunHangOBJ:onNextdie(actor)
|
||||||
|
end, AutoXunHangOBJ)
|
||||||
|
|
||||||
|
GameEvent.add(EventCfg.onRevive, function(actor)
|
||||||
|
AutoXunHangOBJ:onRevive(actor)
|
||||||
|
end, AutoXunHangOBJ)
|
||||||
|
|
||||||
|
GameEvent.add(EventCfg.onExitGame, function(actor)
|
||||||
|
AutoXunHangOBJ:setOpen(actor, false)
|
||||||
|
AutoXunHangOBJ:stopTimer(actor)
|
||||||
|
end, AutoXunHangOBJ)
|
||||||
|
|
||||||
|
AutoXunHangOBJ.allowFunc = { "recordMap", "delMap", "start", "stop", "saveSetting", "sync" }
|
||||||
|
return AutoXunHangOBJ
|
||||||
|
|
@ -53,6 +53,10 @@ CreateTopIconOBJ.cfg = {
|
||||||
name = "YueKa",
|
name = "YueKa",
|
||||||
open = "YueKaOBJ_main",
|
open = "YueKaOBJ_main",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name = "AutoXunHang",
|
||||||
|
client_open = "AutoXunHangOBJ",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
function CreateTopIconOBJ:checkShow(actor, cfg)
|
function CreateTopIconOBJ:checkShow(actor, cfg)
|
||||||
|
|
|
||||||
|
|
@ -480,7 +480,45 @@ ClickOnItem.cfg = {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
local function getChuanyuanjianConditionStr(mapid)
|
||||||
|
if not NPCGotoMapOBJ or not NPCGotoMapOBJ.getMapCfg then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
local mapData = NPCGotoMapOBJ:getMapCfg(mapid)
|
||||||
|
local cfg = mapData and mapData.cfg
|
||||||
|
local zstz = cfg and cfg.zstz
|
||||||
|
if not zstz then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
local condition = {}
|
||||||
|
if type(zstz) == "table" then
|
||||||
|
for _, v in ipairs(zstz) do
|
||||||
|
table.insert(condition, tostring(v))
|
||||||
|
end
|
||||||
|
else
|
||||||
|
table.insert(condition, tostring(zstz))
|
||||||
|
end
|
||||||
|
|
||||||
|
if #condition == 0 then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
return string.format("<Text|x=30.0|y=112.0|color=251|size=16|text=进入条件:%s>", table.concat(condition, " "))
|
||||||
|
end
|
||||||
|
|
||||||
function chuanyuanjian(actor, mapid, x, y, name, maptitle)
|
function chuanyuanjian(actor, mapid, x, y, name, maptitle)
|
||||||
|
if MapCfg.checkgotomap and not MapCfg.checkgotomap(actor, mapid, true) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if NPCGotoMapOBJ and NPCGotoMapOBJ.checkgotomapByMapId then
|
||||||
|
if not NPCGotoMapOBJ:checkgotomapByMapId(actor, mapid, false, true) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local _map = getbaseinfo(actor, ConstCfg.gbase.mapid)
|
local _map = getbaseinfo(actor, ConstCfg.gbase.mapid)
|
||||||
|
|
||||||
local _bool = false
|
local _bool = false
|
||||||
|
|
@ -492,6 +530,9 @@ function chuanyuanjian(actor, mapid, x, y, name, maptitle)
|
||||||
|
|
||||||
if _bool then
|
if _bool then
|
||||||
local str = {}
|
local str = {}
|
||||||
|
local conditionStr = getChuanyuanjianConditionStr(mapid)
|
||||||
|
local actionY = 146
|
||||||
|
|
||||||
table.insert(str, "<Img|reset=1|img=public/bg_npc_01.png|show=0|move=0|loadDelay=1|bg=1>")
|
table.insert(str, "<Img|reset=1|img=public/bg_npc_01.png|show=0|move=0|loadDelay=1|bg=1>")
|
||||||
table.insert(str, "<Layout|x=545|y=0|width=80|height=80|link=@exit>")
|
table.insert(str, "<Layout|x=545|y=0|width=80|height=80|link=@exit>")
|
||||||
table.insert(str, "<Button|x=546|y=0|pimg=public/1900000511.png|nimg=public/1900000510.png|link=@exit>")
|
table.insert(str, "<Button|x=546|y=0|pimg=public/1900000511.png|nimg=public/1900000510.png|link=@exit>")
|
||||||
|
|
@ -502,27 +543,38 @@ function chuanyuanjian(actor, mapid, x, y, name, maptitle)
|
||||||
table.insert(str, "<Text|x=59.0|y=88.0|color=255|size=18|text=行会成员:[" .. name .. "]正在召唤>")
|
table.insert(str, "<Text|x=59.0|y=88.0|color=255|size=18|text=行会成员:[" .. name .. "]正在召唤>")
|
||||||
table.insert(str, "<Img|x=336.0|y=90.0|esc=0|img=public/bg_zbxlzy_02.png>")
|
table.insert(str, "<Img|x=336.0|y=90.0|esc=0|img=public/bg_zbxlzy_02.png>")
|
||||||
table.insert(str, "<Text|x=350.0|y=86.0|color=251|size=18|text=集结地:" .. maptitle .. ">")
|
table.insert(str, "<Text|x=350.0|y=86.0|color=251|size=18|text=集结地:" .. maptitle .. ">")
|
||||||
table.insert(str, "<Text|x=30.0|y=131.0|color=249|size=18|text=倒计时:>")
|
if conditionStr ~= "" then
|
||||||
table.insert(str, "<TIMETIPS|x=94.0|y=131.0|time=60|count=1|size=18|color=249|showWay=1|link=@exit>")
|
table.insert(str, conditionStr)
|
||||||
table.insert(str, "<Img|x=236.0|y=132.0|esc=0|img=public/btn_npcfh_03.png>")
|
end
|
||||||
|
table.insert(str, string.format("<Text|x=30.0|y=%s|color=249|size=18|text=倒计时:>", actionY))
|
||||||
|
table.insert(str, string.format("<TIMETIPS|x=94.0|y=%s|time=60|count=1|size=18|color=249|showWay=1|link=@exit>", actionY))
|
||||||
|
table.insert(str, string.format("<Img|x=236.0|y=%s|esc=0|img=public/btn_npcfh_03.png>", actionY + 1))
|
||||||
table.insert(str,
|
table.insert(str,
|
||||||
"<Text|x=261.0|y=130.0|size=18|color=251|text=立即前往|link=@goto_hanghui," ..
|
string.format("<Text|x=261.0|y=%s|size=18|color=251|text=立即前往|link=@goto_hanghui,%s,%s,%s>",
|
||||||
mapid .. "," .. x .. "," .. y .. ">")
|
actionY - 1, mapid, x, y))
|
||||||
table.insert(str, "<Img|x=394.0|y=132.0|esc=0|img=public/btn_npcfh_03.png>")
|
table.insert(str, string.format("<Img|x=394.0|y=%s|esc=0|img=public/btn_npcfh_03.png>", actionY + 1))
|
||||||
table.insert(str, "<Text|x=419.0|y=130.0|size=18|color=251|text=拒绝前往|link=@exit>")
|
table.insert(str, string.format("<Text|x=419.0|y=%s|size=18|color=251|text=拒绝前往|link=@exit>", actionY - 1))
|
||||||
say(actor, table.concat(str))
|
say(actor, table.concat(str))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function goto_hanghui(actor, mapid, x, y)
|
function goto_hanghui(actor, mapid, x, y)
|
||||||
|
if MapCfg.checkgotomap and not MapCfg.checkgotomap(actor, mapid) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if NPCGotoMapOBJ and NPCGotoMapOBJ.checkgotomapByMapId then
|
||||||
|
if not NPCGotoMapOBJ:checkgotomapByMapId(actor, mapid, true) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
Func.sendmsg9(actor, "[提示]:#70|正在前往行会召集令指定位置...")
|
Func.sendmsg9(actor, "[提示]:#70|正在前往行会召集令指定位置...")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MapCfg.gotomap(actor, mapid, x, y, 5)
|
MapCfg.gotomap(actor, mapid, x, y, 5)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function ClickOnItem:trigger(actor, item)
|
function ClickOnItem:trigger(actor, item)
|
||||||
local item_name = Item.GetNameByObj(actor, item)
|
local item_name = Item.GetNameByObj(actor, item)
|
||||||
local func = self.cfg[item_name]
|
local func = self.cfg[item_name]
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,18 @@ OntimerOBJ.ontimer = {
|
||||||
|
|
||||||
[21] = function(actor)
|
[21] = function(actor)
|
||||||
OntimerOBJ:refreshPickupSprite(actor)
|
OntimerOBJ:refreshPickupSprite(actor)
|
||||||
|
end,
|
||||||
|
|
||||||
|
[22] = function(actor)
|
||||||
|
if AutoXunHangOBJ and AutoXunHangOBJ.onTimer then
|
||||||
|
AutoXunHangOBJ:onTimer(actor)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
|
[23] = function(actor)
|
||||||
|
if NPCGotoMapOBJ and NPCGotoMapOBJ.onLimitedTimer then
|
||||||
|
NPCGotoMapOBJ:onLimitedTimer(actor)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@ end
|
||||||
|
|
||||||
---* 人物复活时触发
|
---* 人物复活时触发
|
||||||
function revival(actor)
|
function revival(actor)
|
||||||
|
GameEvent.push(EventCfg.onRevive, actor)
|
||||||
if checkitemw(actor, "东皇钟", 1) then
|
if checkitemw(actor, "东皇钟", 1) then
|
||||||
changemode(actor, 1, 2)
|
changemode(actor, 1, 2)
|
||||||
playeffect(actor, 50025, 0, 0, 1, 0, 0)
|
playeffect(actor, 50025, 0, 0, 1, 0, 0)
|
||||||
|
|
|
||||||
182
client/dev/GUIExport/game/Tongyong/AutoXunHangUI.lua
Normal file
|
|
@ -0,0 +1,182 @@
|
||||||
|
local ui = {}
|
||||||
|
function ui.init(parent)
|
||||||
|
-- Create Layer
|
||||||
|
local Layer = GUI:Node_Create(parent, "Layer", 0.00, 0.00)
|
||||||
|
GUI:setAnchorPoint(Layer, 0.50, 0.50)
|
||||||
|
GUI:setTag(Layer, -1)
|
||||||
|
|
||||||
|
-- Create bg_close
|
||||||
|
local bg_close = GUI:Layout_Create(Layer, "bg_close", 0.00, 0.00, 1136.00, 640.00, false)
|
||||||
|
GUI:Layout_setBackGroundColorType(bg_close, 1)
|
||||||
|
GUI:Layout_setBackGroundColor(bg_close, "#000000")
|
||||||
|
GUI:Layout_setBackGroundColorOpacity(bg_close, 0)
|
||||||
|
GUI:setTouchEnabled(bg_close, true)
|
||||||
|
GUI:setTag(bg_close, -1)
|
||||||
|
|
||||||
|
-- Create nd_root
|
||||||
|
local nd_root = GUI:Node_Create(Layer, "nd_root", 568.00, 320.00)
|
||||||
|
GUI:setAnchorPoint(nd_root, 0.50, 0.50)
|
||||||
|
GUI:setTag(nd_root, -1)
|
||||||
|
|
||||||
|
-- Create img_bg
|
||||||
|
local img_bg = GUI:Layout_Create(nd_root, "img_bg", -210.00, -150.00, 420.00, 300.00, false)
|
||||||
|
GUI:Layout_setBackGroundColorType(img_bg, 1)
|
||||||
|
GUI:Layout_setBackGroundColor(img_bg, "#1f1a14")
|
||||||
|
GUI:Layout_setBackGroundColorOpacity(img_bg, 230)
|
||||||
|
GUI:setTouchEnabled(img_bg, true)
|
||||||
|
GUI:setTag(img_bg, -1)
|
||||||
|
|
||||||
|
-- Create title
|
||||||
|
local title = GUI:Text_Create(img_bg, "title", 168.00, 270.00, 20, "#fff000", "自动巡航")
|
||||||
|
GUI:setTouchEnabled(title, false)
|
||||||
|
GUI:setTag(title, -1)
|
||||||
|
|
||||||
|
-- Create btn_close
|
||||||
|
local btn_close = GUI:Layout_Create(img_bg, "btn_close", 378.00, 266.00, 28.00, 24.00, false)
|
||||||
|
GUI:Layout_setBackGroundColorType(btn_close, 1)
|
||||||
|
GUI:Layout_setBackGroundColor(btn_close, "#6b1f1f")
|
||||||
|
GUI:Layout_setBackGroundColorOpacity(btn_close, 210)
|
||||||
|
GUI:setTouchEnabled(btn_close, true)
|
||||||
|
GUI:setTag(btn_close, -1)
|
||||||
|
|
||||||
|
-- Create btn_close_Text
|
||||||
|
local btn_close_Text = GUI:Text_Create(btn_close, "btn_close_Text", 14.00, 12.00, 13, "#ffffff", "X")
|
||||||
|
GUI:setAnchorPoint(btn_close_Text, 0.50, 0.50)
|
||||||
|
GUI:setTouchEnabled(btn_close_Text, false)
|
||||||
|
GUI:setTag(btn_close_Text, -1)
|
||||||
|
|
||||||
|
-- Create statusText
|
||||||
|
local statusText = GUI:Text_Create(img_bg, "statusText", 24.00, 242.00, 14, "#c0c0c0", "状态: 未开启")
|
||||||
|
GUI:setTouchEnabled(statusText, false)
|
||||||
|
GUI:setTag(statusText, -1)
|
||||||
|
|
||||||
|
-- Create mapTitle
|
||||||
|
local mapTitle = GUI:Text_Create(img_bg, "mapTitle", 24.00, 216.00, 14, "#ffffff", "巡航地图")
|
||||||
|
GUI:setTouchEnabled(mapTitle, false)
|
||||||
|
GUI:setTag(mapTitle, -1)
|
||||||
|
|
||||||
|
-- Create recordBtn
|
||||||
|
local recordBtn = GUI:Layout_Create(img_bg, "recordBtn", 300.00, 205.00, 86.00, 26.00, false)
|
||||||
|
GUI:Layout_setBackGroundColorType(recordBtn, 1)
|
||||||
|
GUI:Layout_setBackGroundColor(recordBtn, "#5a3a16")
|
||||||
|
GUI:Layout_setBackGroundColorOpacity(recordBtn, 210)
|
||||||
|
GUI:setTouchEnabled(recordBtn, true)
|
||||||
|
GUI:setTag(recordBtn, -1)
|
||||||
|
|
||||||
|
-- Create recordBtn_Text
|
||||||
|
local recordBtn_Text = GUI:Text_Create(recordBtn, "recordBtn_Text", 43.00, 13.00, 13, "#ffffff", "记录当前")
|
||||||
|
GUI:setAnchorPoint(recordBtn_Text, 0.50, 0.50)
|
||||||
|
GUI:setTouchEnabled(recordBtn_Text, false)
|
||||||
|
GUI:setTag(recordBtn_Text, -1)
|
||||||
|
|
||||||
|
for i = 1, 3 do
|
||||||
|
local y = 174.00 - (i - 1) * 34.00
|
||||||
|
|
||||||
|
local mapSlot = GUI:Layout_Create(img_bg, "mapSlot" .. i, 24.00, y, 260.00, 26.00, false)
|
||||||
|
GUI:Layout_setBackGroundColorType(mapSlot, 1)
|
||||||
|
GUI:Layout_setBackGroundColor(mapSlot, "#101010")
|
||||||
|
GUI:Layout_setBackGroundColorOpacity(mapSlot, 150)
|
||||||
|
GUI:setTouchEnabled(mapSlot, false)
|
||||||
|
GUI:setTag(mapSlot, -1)
|
||||||
|
|
||||||
|
local mapText = GUI:Text_Create(mapSlot, "mapText" .. i, 8.00, 13.00, 13, "#d8d8d8", i .. ". 空")
|
||||||
|
GUI:setAnchorPoint(mapText, 0.00, 0.50)
|
||||||
|
GUI:setTouchEnabled(mapText, false)
|
||||||
|
GUI:setTag(mapText, -1)
|
||||||
|
|
||||||
|
local delBtn = GUI:Layout_Create(img_bg, "delBtn" .. i, 300.00, y, 58.00, 26.00, false)
|
||||||
|
GUI:Layout_setBackGroundColorType(delBtn, 1)
|
||||||
|
GUI:Layout_setBackGroundColor(delBtn, "#6b1f1f")
|
||||||
|
GUI:Layout_setBackGroundColorOpacity(delBtn, 210)
|
||||||
|
GUI:setTouchEnabled(delBtn, true)
|
||||||
|
GUI:setTag(delBtn, -1)
|
||||||
|
|
||||||
|
local delBtn_Text = GUI:Text_Create(delBtn, "delBtn" .. i .. "_Text", 29.00, 13.00, 13, "#ffffff", "删除")
|
||||||
|
GUI:setAnchorPoint(delBtn_Text, 0.50, 0.50)
|
||||||
|
GUI:setTouchEnabled(delBtn_Text, false)
|
||||||
|
GUI:setTag(delBtn_Text, -1)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Create autoKuangBao
|
||||||
|
local autoKuangBao = GUI:CheckBox_Create(img_bg, "autoKuangBao", 24.00, 72.00, "res/private/gui_edit/CheckBox_Normal.png", "res/private/gui_edit/CheckBox_Press.png")
|
||||||
|
GUI:setTouchEnabled(autoKuangBao, true)
|
||||||
|
GUI:setTag(autoKuangBao, -1)
|
||||||
|
|
||||||
|
-- Create autoKuangBaoText
|
||||||
|
local autoKuangBaoText = GUI:Text_Create(img_bg, "autoKuangBaoText", 48.00, 78.00, 14, "#ffffff", "自动开启狂暴")
|
||||||
|
GUI:setTouchEnabled(autoKuangBaoText, false)
|
||||||
|
GUI:setTag(autoKuangBaoText, -1)
|
||||||
|
|
||||||
|
-- Create orderMode
|
||||||
|
local orderMode = GUI:CheckBox_Create(img_bg, "orderMode", 188.00, 72.00, "res/private/gui_edit/CheckBox_Normal.png", "res/private/gui_edit/CheckBox_Press.png")
|
||||||
|
GUI:setTouchEnabled(orderMode, true)
|
||||||
|
GUI:setTag(orderMode, -1)
|
||||||
|
|
||||||
|
-- Create orderModeText
|
||||||
|
local orderModeText = GUI:Text_Create(img_bg, "orderModeText", 212.00, 78.00, 14, "#ffffff", "顺序下图")
|
||||||
|
GUI:setTouchEnabled(orderModeText, false)
|
||||||
|
GUI:setTag(orderModeText, -1)
|
||||||
|
|
||||||
|
-- Create dieText
|
||||||
|
local dieText = GUI:Text_Create(img_bg, "dieText", 24.00, 46.00, 14, "#ffffff", "死亡停止")
|
||||||
|
GUI:setTouchEnabled(dieText, false)
|
||||||
|
GUI:setTag(dieText, -1)
|
||||||
|
|
||||||
|
-- Create dieInput
|
||||||
|
local dieInput = GUI:TextInput_Create(img_bg, "dieInput", 92.00, 35.00, 44.00, 24.00, 14)
|
||||||
|
GUI:TextInput_setFontColor(dieInput, "#fff000")
|
||||||
|
GUI:TextInput_setString(dieInput, "0")
|
||||||
|
GUI:setTouchEnabled(dieInput, true)
|
||||||
|
GUI:setTag(dieInput, -1)
|
||||||
|
|
||||||
|
-- Create dieText2
|
||||||
|
local dieText2 = GUI:Text_Create(img_bg, "dieText2", 142.00, 46.00, 14, "#ffffff", "次")
|
||||||
|
GUI:setTouchEnabled(dieText2, false)
|
||||||
|
GUI:setTag(dieText2, -1)
|
||||||
|
|
||||||
|
-- Create noAtkText
|
||||||
|
local noAtkText = GUI:Text_Create(img_bg, "noAtkText", 188.00, 46.00, 14, "#ffffff", "未攻击切图")
|
||||||
|
GUI:setTouchEnabled(noAtkText, false)
|
||||||
|
GUI:setTag(noAtkText, -1)
|
||||||
|
|
||||||
|
-- Create noAtkInput
|
||||||
|
local noAtkInput = GUI:TextInput_Create(img_bg, "noAtkInput", 274.00, 35.00, 50.00, 24.00, 14)
|
||||||
|
GUI:TextInput_setFontColor(noAtkInput, "#fff000")
|
||||||
|
GUI:TextInput_setString(noAtkInput, "0")
|
||||||
|
GUI:setTouchEnabled(noAtkInput, true)
|
||||||
|
GUI:setTag(noAtkInput, -1)
|
||||||
|
|
||||||
|
-- Create noAtkText2
|
||||||
|
local noAtkText2 = GUI:Text_Create(img_bg, "noAtkText2", 330.00, 46.00, 14, "#ffffff", "秒")
|
||||||
|
GUI:setTouchEnabled(noAtkText2, false)
|
||||||
|
GUI:setTag(noAtkText2, -1)
|
||||||
|
|
||||||
|
-- Create toggleBtn
|
||||||
|
local toggleBtn = GUI:Layout_Create(img_bg, "toggleBtn", 76.00, 8.00, 112.00, 30.00, false)
|
||||||
|
GUI:Layout_setBackGroundColorType(toggleBtn, 1)
|
||||||
|
GUI:Layout_setBackGroundColor(toggleBtn, "#23531f")
|
||||||
|
GUI:Layout_setBackGroundColorOpacity(toggleBtn, 210)
|
||||||
|
GUI:setTouchEnabled(toggleBtn, true)
|
||||||
|
GUI:setTag(toggleBtn, -1)
|
||||||
|
|
||||||
|
-- Create toggleBtnText
|
||||||
|
local toggleBtnText = GUI:Text_Create(toggleBtn, "toggleBtnText", 56.00, 15.00, 13, "#ffffff", "开启巡航")
|
||||||
|
GUI:setAnchorPoint(toggleBtnText, 0.50, 0.50)
|
||||||
|
GUI:setTouchEnabled(toggleBtnText, false)
|
||||||
|
GUI:setTag(toggleBtnText, -1)
|
||||||
|
|
||||||
|
-- Create saveBtn
|
||||||
|
local saveBtn = GUI:Layout_Create(img_bg, "saveBtn", 232.00, 8.00, 112.00, 30.00, false)
|
||||||
|
GUI:Layout_setBackGroundColorType(saveBtn, 1)
|
||||||
|
GUI:Layout_setBackGroundColor(saveBtn, "#5a3a16")
|
||||||
|
GUI:Layout_setBackGroundColorOpacity(saveBtn, 210)
|
||||||
|
GUI:setTouchEnabled(saveBtn, true)
|
||||||
|
GUI:setTag(saveBtn, -1)
|
||||||
|
|
||||||
|
-- Create saveBtn_Text
|
||||||
|
local saveBtn_Text = GUI:Text_Create(saveBtn, "saveBtn_Text", 56.00, 15.00, 13, "#ffffff", "保存设置")
|
||||||
|
GUI:setAnchorPoint(saveBtn_Text, 0.50, 0.50)
|
||||||
|
GUI:setTouchEnabled(saveBtn_Text, false)
|
||||||
|
GUI:setTag(saveBtn_Text, -1)
|
||||||
|
end
|
||||||
|
return ui
|
||||||
|
|
@ -72,9 +72,18 @@ function CreateTopIconOBJ:createIcon()
|
||||||
elseif v.path then
|
elseif v.path then
|
||||||
self.ui[icon] = GUI:Button_Create(self.ui.btn_switch, icon, 0, 0, v.path)
|
self.ui[icon] = GUI:Button_Create(self.ui.btn_switch, icon, 0, 0, v.path)
|
||||||
GUI:Win_SetParam(self.ui[icon], #self.cfg - i)
|
GUI:Win_SetParam(self.ui[icon], #self.cfg - i)
|
||||||
|
elseif v.name == "AutoXunHang" then
|
||||||
|
self.ui[icon] = GUI:Layout_Create(self.ui.btn_switch, icon, 0, 0, 54, 54, false)
|
||||||
|
GUI:Layout_setBackGroundColorType(self.ui[icon], 1)
|
||||||
|
GUI:Layout_setBackGroundColor(self.ui[icon], "#1f1a14")
|
||||||
|
GUI:Layout_setBackGroundColorOpacity(self.ui[icon], 210)
|
||||||
|
GUI:setTouchEnabled(self.ui[icon], true)
|
||||||
|
local text = GUI:Text_Create(self.ui[icon], icon .. "_Text", 27, 27, 14, "#fff000", "巡航")
|
||||||
|
GUI:setAnchorPoint(text, 0.50, 0.50)
|
||||||
|
GUI:Win_SetParam(self.ui[icon], #self.cfg - i)
|
||||||
end
|
end
|
||||||
|
|
||||||
if v.icon or v.path then
|
if v.icon or v.path or self.ui[icon] then
|
||||||
--稳定红点 key:优先用 cfg.name,过渡期兼容下标
|
--稳定红点 key:优先用 cfg.name,过渡期兼容下标
|
||||||
local redKey = "TopIcon_" .. (v.name or i)
|
local redKey = "TopIcon_" .. (v.name or i)
|
||||||
|
|
||||||
|
|
|
||||||
93
client/dev/GUILayout/game/GotoMap/AutoXunHangOBJ.lua
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
AutoXunHangOBJ = {}
|
||||||
|
|
||||||
|
AutoXunHangOBJ.__cname = "AutoXunHangOBJ"
|
||||||
|
AutoXunHangOBJ.data = {}
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:main()
|
||||||
|
if self._parent and GUI:Win_IsNotNull(self._parent) then
|
||||||
|
GUI:Win_Close(self._parent)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local parent = GUI:Win_Create(self.__cname, 0, 0, 0, 0, false, false, true, false)
|
||||||
|
GUI:LoadExport(parent, "game/Tongyong/AutoXunHangUI")
|
||||||
|
|
||||||
|
self._parent = parent
|
||||||
|
self.ui = GUI:ui_delegate(parent)
|
||||||
|
|
||||||
|
ssrUIManager:OpenAlgin(self)
|
||||||
|
self:bindEvent()
|
||||||
|
|
||||||
|
ssrMessage:SubLink(self.__cname .. "_sync")
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:bindEvent()
|
||||||
|
GUI:addOnClickEvent(self.ui.bg_close, function()
|
||||||
|
GUI:Win_Close(self._parent)
|
||||||
|
end)
|
||||||
|
|
||||||
|
GUI:addOnClickEvent(self.ui.btn_close, function()
|
||||||
|
GUI:Win_Close(self._parent)
|
||||||
|
end)
|
||||||
|
|
||||||
|
GUI:addOnClickEvent(self.ui.recordBtn, function()
|
||||||
|
ssrMessage:SubLink(self.__cname .. "_recordMap")
|
||||||
|
end)
|
||||||
|
|
||||||
|
for i = 1, 3 do
|
||||||
|
GUI:addOnClickEvent(self.ui["delBtn" .. i], function()
|
||||||
|
ssrMessage:SubLink(self.__cname .. "_delMap", { index = i })
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
GUI:addOnClickEvent(self.ui.toggleBtn, function()
|
||||||
|
if tonumber(self.data.isOpen) == 1 then
|
||||||
|
ssrMessage:SubLink(self.__cname .. "_stop")
|
||||||
|
else
|
||||||
|
ssrMessage:SubLink(self.__cname .. "_start")
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
GUI:addOnClickEvent(self.ui.saveBtn, function()
|
||||||
|
self:saveSetting()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:saveSetting()
|
||||||
|
local data = {
|
||||||
|
autoKuangBao = GUI:CheckBox_isSelected(self.ui.autoKuangBao) and 1 or 0,
|
||||||
|
orderMode = GUI:CheckBox_isSelected(self.ui.orderMode) and 1 or 0,
|
||||||
|
dieStop = tonumber(GUI:TextInput_getString(self.ui.dieInput)) or 0,
|
||||||
|
noAttackSec = tonumber(GUI:TextInput_getString(self.ui.noAtkInput)) or 0,
|
||||||
|
}
|
||||||
|
ssrMessage:SubLink(self.__cname .. "_saveSetting", data)
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:refresh()
|
||||||
|
if not self._parent or GUI:Win_IsNull(self._parent) or not self.ui then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local isOpen = tonumber(self.data.isOpen) == 1
|
||||||
|
GUI:Text_setString(self.ui.statusText, isOpen and "状态: 巡航中" or "状态: 未开启")
|
||||||
|
GUI:Text_setTextColor(self.ui.statusText, isOpen and "#00ff00" or "#c0c0c0")
|
||||||
|
GUI:Text_setString(self.ui.toggleBtnText, isOpen and "停止巡航" or "开启巡航")
|
||||||
|
|
||||||
|
GUI:CheckBox_setSelected(self.ui.autoKuangBao, tonumber(self.data.autoKuangBao) == 1)
|
||||||
|
GUI:CheckBox_setSelected(self.ui.orderMode, tonumber(self.data.orderMode) == 1)
|
||||||
|
GUI:TextInput_setString(self.ui.dieInput, tostring(tonumber(self.data.dieStop) or 0))
|
||||||
|
GUI:TextInput_setString(self.ui.noAtkInput, tostring(tonumber(self.data.noAttackSec) or 0))
|
||||||
|
|
||||||
|
local maps = self.data.maps or {}
|
||||||
|
for i = 1, 3 do
|
||||||
|
local name = maps[i] and tostring(maps[i]) or "空"
|
||||||
|
GUI:Text_setString(self.ui["mapText" .. i], i .. ". " .. name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function AutoXunHangOBJ:syncData(arg1, arg2, arg3, data)
|
||||||
|
self.data = data or {}
|
||||||
|
self:refresh()
|
||||||
|
end
|
||||||
|
|
||||||
|
return AutoXunHangOBJ
|
||||||
BIN
client/dev/res/custom/47/wulin_juexue_content_mock.png
Normal file
|
After Width: | Height: | Size: 653 KiB |
BIN
client/dev/res/custom/47/wulin_juexue_layered_psdtools.psd
Normal file
BIN
client/dev/res/custom/47/wulin_juexue_unlock_popup_mock.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
client/dev/res/custom/47/武林绝学.psd
Normal file
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 7 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 182 B After Width: | Height: | Size: 222 B |
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 394 KiB After Width: | Height: | Size: 422 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 440 KiB After Width: | Height: | Size: 479 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 124 KiB After Width: | Height: | Size: 201 KiB |
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 223 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 255 KiB |
|
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 202 B |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 635 B After Width: | Height: | Size: 311 B |
|
Before Width: | Height: | Size: 7.6 KiB |
BIN
client/dev/res/private/be_strong/bg_jindutiao_1221.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 5 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5.1 KiB |