From a5e22c39c2b9c8f2c32c0c4e654eb90eec867d75 Mon Sep 17 00:00:00 2001 From: Admin Date: Thu, 25 Jun 2026 23:53:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B4=BB=E5=8A=A8=E5=A4=A7?= =?UTF-8?q?=E5=8E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../游戏功能/A0_通用类/活动大厅.lua | 97 ++++++++++++++----- 1 file changed, 74 insertions(+), 23 deletions(-) diff --git a/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A0_通用类/活动大厅.lua b/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A0_通用类/活动大厅.lua index 8b34f4cf..a36694fa 100644 --- a/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A0_通用类/活动大厅.lua +++ b/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A0_通用类/活动大厅.lua @@ -143,6 +143,56 @@ HuodongzhongxinOBJ.openVar = { HuodongzhongxinOBJ.BingMoMon = Func.require("cfg_ħ֮ˢ") +HuodongzhongxinOBJ.activityMapCfg = { + ["ʥ"] = function() + return (Sys.getint(VarCfg.sys.int["ʥᱦ"]) or 0) == 1 + end, + ["ʼ֮"] = function() + local status = Sys.getint(VarCfg.sys.int["ħ֮"]) or 0 + return status == 1 or status == 2 + end, + ["ħǰ"] = function() + local status = Sys.getint(VarCfg.sys.int["ħ֮"]) or 0 + return status == 1 or status == 2 + end, + ["ħѨ"] = function() + local status = Sys.getint(VarCfg.sys.int["ħ֮"]) or 0 + return status == 1 or status == 2 + end, + ["ߴҶ"] = function() + return (Sys.getint(VarCfg.sys.int["Ҷ"]) or 0) == 1 + end, +} + +function HuodongzhongxinOBJ:kickPlayer(player, msg) + if msg then + Func.sendmsg9(player, msg) + end + mapmove(player, "3", 330, 330, 8) +end + +function HuodongzhongxinOBJ:kickPlayersInMaps(mapSet, msg) + local player_list = getplayerlst(0) + for _, player in ipairs(player_list or {}) do + local mapid = getbaseinfo(player, ConstCfg.gbase.mapid) + if mapSet[mapid] then + self:kickPlayer(player, msg) + end + end +end + +function HuodongzhongxinOBJ:checkActivityMap(player) + local mapid = getbaseinfo(player, ConstCfg.gbase.mapid) + local checkFunc = self.activityMapCfg[mapid] + if checkFunc and not checkFunc() then + Player.setTLint(player, VarCfg.Player.TL.int["Ҷѱ"], 0) + Player.setTLint(player, VarCfg.Player.TL.int["Ҷ"], 0) + self:kickPlayer(player, "[]:#70|ѽ,Զͻذȫ!") + return false + end + return true +end + function HuodongzhongxinOBJ:up(actor, p1, p2, p3, data) @@ -184,14 +234,8 @@ function huodongzhongxinobj_shengyu_start(sys) end function huodongzhongxinobj_shengyu_end(sys) - local player_list = getplayerlst(0) - for i, player in ipairs(player_list or {}) do - local mapid = getbaseinfo(player, ConstCfg.gbase.mapid) - if mapid == "ʥ" then - MapCfg.gotomap(actor, "3", 330, 330, 8) - end - end Sys.setint(VarCfg.sys.int["ʥᱦ"], 2) + HuodongzhongxinOBJ:kickPlayersInMaps({ ["ʥ"] = true }, "[]:#70|ʥᱦѾ,Զͻذȫ!") sendmsg(-1, 2, string.format('{"Msg":"%s","FColor":251,"BColor":0,"Type":5,"Y":30}', string.format("[]ʥᱦѾ!"))) end @@ -222,18 +266,16 @@ function huodongzhongxinobj_binmo_start(sys) sendmsg(-1, 2, string.format('{"Msg":"%s","FColor":251,"BColor":0,"Type":5,"Y":30}', string.format("[]ħ֮Ѿ,ͨ!"))) end -function HuodongzhongxinOBJ_BinMo_End(sys) - local player_list = getplayerlst(0) - for i, player in ipairs(player_list or {}) do - local mapid = getbaseinfo(player, ConstCfg.gbase.mapid) - if mapid == "ʼ֮" or mapid == "ħǰ" or mapid == "ħѨ" then - MapCfg.gotomap(player, "3", 330, 330, 8) - end - end +function huodongzhongxinobj_binmo_on(sys) Sys.setint(VarCfg.sys.int["ħ֮"], 3) + HuodongzhongxinOBJ:kickPlayersInMaps({ ["ʼ֮"] = true, ["ħǰ"] = true, ["ħѨ"] = true }, "[]:#70|ħ֮Ѿ,Զͻذȫ!") sendmsg(-1, 2, string.format('{"Msg":"%s","FColor":251,"BColor":0,"Type":5,"Y":30}', string.format("[]ħ֮Ѿ!"))) end +function HuodongzhongxinOBJ_BinMo_End(sys) + huodongzhongxinobj_binmo_on(sys) +end + function huodongzhongxinobj_binmo_closemap(sys) Sys.setint(VarCfg.sys.int["ħ֮"], 2) sendmsg(-1, 2, string.format('{"Msg":"%s","FColor":251,"BColor":0,"Type":5,"Y":30}', string.format("[]ħ֮Ѿر!"))) @@ -285,14 +327,15 @@ function huodongzhongxinobj_daluandou_end(sys) if Sys.getint(VarCfg.sys.int["Ҷ"]) > 0 then Sys.setint(VarCfg.sys.int["Ҷ"], 0) local player_list = getplayerlst(0) - for i, player in ipairs(player_list or {}) do - local _bool = Player.getTLint(player, VarCfg.Player.TL.int["Ҷѱ"]) - if _bool then - local _mapid = getbaseinfo(player, ConstCfg.gbase.mapid) - if _mapid == "ߴҶ" then - Player.setTLint(player, VarCfg.Player.TL.int["Ҷѱ"], 0) - MapCfg.gotomap(player, "3", 330, 330, 8) - end + for _, player in ipairs(player_list or {}) do + local mapid = getbaseinfo(player, ConstCfg.gbase.mapid) + local isApply = (Player.getTLint(player, VarCfg.Player.TL.int["Ҷѱ"]) or 0) > 0 + if isApply or mapid == "ߴҶ" then + Player.setTLint(player, VarCfg.Player.TL.int["Ҷѱ"], 0) + Player.setTLint(player, VarCfg.Player.TL.int["Ҷ"], 0) + end + if mapid == "ߴҶ" then + HuodongzhongxinOBJ:kickPlayer(player, "[]:#70|ߴҶѾ,Զͻذȫ!") end end sendmsg(-1, 2, string.format('{"Msg":"%s","FColor":251,"BColor":0,"Type":5,"Y":30}', string.format("[]ߴҶѾ,ֱӷ͵ʤʼ,뱣!"))) @@ -356,6 +399,14 @@ local function HuodongzhongxinOBJ_killplay(actor, killed, Info) end GameEvent.add(EventCfg.onkillplay, HuodongzhongxinOBJ_killplay, HuodongzhongxinOBJ) +GameEvent.add(EventCfg.onLogin, function(actor) + HuodongzhongxinOBJ:checkActivityMap(actor) +end, HuodongzhongxinOBJ) + +GameEvent.add(EventCfg.goEnterMap, function(actor) + HuodongzhongxinOBJ:checkActivityMap(actor) +end, HuodongzhongxinOBJ) + ------* Ҷȡ function HuodongzhongxinOBJ:luandouGetData(actor, p1, p2, p3, sendata)