新增巡航

This commit is contained in:
Admin 2026-06-24 21:00:14 +08:00
parent 88f8c49ffe
commit 1858824fdb
1320 changed files with 10595 additions and 6938 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"}

View 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

View file

@ -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)

View file

@ -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]

View file

@ -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
} }

View file

@ -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)

View 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

View file

@ -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)

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 B

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 394 KiB

After

Width:  |  Height:  |  Size: 422 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 KiB

After

Width:  |  Height:  |  Size: 479 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 B

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 635 B

After

Width:  |  Height:  |  Size: 311 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Some files were not shown because too many files have changed in this diff Show more