local Util = require("common.Util") local WarZoneConf = require("excel.WarZone") local MiddleConnect = require("middle.MiddleConnect") local MiddleManager = require("middle.MiddleManager") local InnerMsg = require("core.InnerMsg") local Config = require("Config") local CommonDB = require("common.CommonDB") local Timer = require("core.Timer") local CommonDefine = require("common.CommonDefine") local ServerCommerceManger = require("serverCommerce.ServerCommerceManager") local ServerCommerceActDefine = require("serverCommerce.ServerCommerceActDefine") local ServerCommerceRank = require("serverCommerce.ServerCommerceActRank") -- 缓存开服天数 local tServerOpenDay = nil local SERVERCOMMERCEOPENDAY = 8 -- 活动开启要求天数 -- 起服获取信息 function CommerceMiddle_InitServer() if _G.is_middle ~= true then return end Timer.addLater(ServerCommerceActDefine.COMMERCEACT_INITOPENDAY, CommerceMiddle_GetOpen) print("[CommerceMiddle_InitServer] 起服定时去获取数据 nTime = "..ServerCommerceActDefine.COMMERCEACT_INITOPENDAY) end -- 获取(中心服主动去获取) function CommerceMiddle_GetOpen() if _G.is_middle ~= true then return end print("[CommerceMiddle_GetOpen] 开始去获取服务器开启信息") local tWarZoneConf = WarZoneConf.group for _, v in ipairs(tWarZoneConf) do local nFirstServerID = MiddleConnect.MiddleConnect_ConfServerID2TrueServerID(v.nMinServerID) print("[CommerceMiddle_GetOpen] nMinServerID = "..v.nMinServerID.." nFirstServerID = "..nFirstServerID) local fd = MiddleManager.getFDBySvrIndex(nFirstServerID) if fd then print("[CommerceMiddle_GetOpen] 中心服主动去获取数据 nFirstServerID = "..nFirstServerID) local tMsgData = InnerMsg.wl.WL_COMMERCE_QUERYOPENDAY InnerMsg.sendMsg(fd, tMsgData) print("[CommerceMiddle_GetOpen] 发送结束") else print("[CommerceMiddle_GetOpen] 中心服主动去获取数据, 但是获取不到fd nFirstServerID = "..nFirstServerID) end end end -- 回复开服天数 function CommerceMiddle_SendOpenDay(fd, msg) local nOpenDay = msg.nOpenDay local nServerConfID = MiddleConnect.MiddleConnect_TrueServerID2ConfServerID(msg.nSrcServerID) if not tServerOpenDay then tServerOpenDay = {} end tServerOpenDay[nServerConfID] = nOpenDay print("[CommerceMiddle_SendOpenDay] 回复开服天数 nServerConfID = "..nServerConfID.." nOpenDay = "..nOpenDay) end -- 请求开服天数 function CommerceMiddle_QueryOpenDay(fd, msg) local tMsgData = InnerMsg.lw.LW_COMMERCE_SENDOPENDAY tMsgData.nOpenDay = CommonDB.getServerOpenDay() tMsgData.nSrcServerID = Config.SVR_INDEX InnerMsg.sendMsg(0, tMsgData) print("[CommerceMiddle_QueryOpenDay] 请求开服天数") end function CommerceMiddle_QueryOpenAct(fd, msg) local nConfServerID = MiddleConnect.MiddleConnect_TrueServerID2ConfServerID(msg.nSrcServerID) local nFirstServerID for _, v in ipairs(WarZoneConf.group) do if v.nMinServerID <= nConfServerID and v.nMaxServerID >= nConfServerID then nFirstServerID = v.nMinServerID break end end if nil == nFirstServerID or not tServerOpenDay or not tServerOpenDay[nFirstServerID] then print("[QueryOpenAct] 获取不到战区的第一个服务器\n") return end local nSrcFD = MiddleManager.getFDBySvrIndex(msg.nSrcServerID) if not nSrcFD then return end local tMsgData = InnerMsg.wl.WL_COMMERCE_ACTOPEN tMsgData.nOpen = tServerOpenDay[nFirstServerID] >= SERVERCOMMERCEOPENDAY and 1 or 0 tMsgData.nOperate = msg.nOperate InnerMsg.sendMsg(nSrcFD, tMsgData) print("[CommerceMiddle_QueryOpenAct] 请求中心服活动是否开启 nOpen = "..tMsgData.nOpen) end function CommerceMiddle_SendOpenAct(fd, msg) print("[CommerceMiddle_SendOpenAct] 获取到中心服发送的是否开服数据 nOpen = "..msg.nOpen) ServerCommerceManger.CommerceAct_ActCheckOpen(msg.nOpen, msg.nOperate) end -- 发送玩家排行榜信息 function CommerveMiddle_HumanPointChange(human, nPoint) local tMsgData = InnerMsg.lw.LW_COMMERCE_RANK_POINT_CHANGE tMsgData.uuid = human.db._id tMsgData.name = human.db.name tMsgData.head = human.db.head tMsgData.headFrame = human.db.headFrame tMsgData.nSrcServerID = Config.SVR_INDEX tMsgData.nValue = nPoint tMsgData.nRankType = CommonDefine.COMMONRANK_TYPE_SERVERCOMMERCE tMsgData.nRankSubType = CommonDefine.COMMONRANK_SUB_TYPE_SERVERCOMMERCE_HUMAN tMsgData.nOperate = CommonDefine.COMMONRANK_VALUE_REPLACE InnerMsg.sendMsg(0, tMsgData) end -- 服务器点数改变发送排行榜信息 function CommerveMiddle_ServerPointChange(nPoint) local tMsgData = InnerMsg.lw.LW_COMMERCE_RANK_POINT_CHANGE tMsgData.uuid = Config.NEW_SVR_INDEX tMsgData.name = "寻宝"..Config.NEW_SVR_INDEX.."服" tMsgData.head = -1 tMsgData.headFrame = -1 tMsgData.nSrcServerID = Config.SVR_INDEX tMsgData.nValue = nPoint tMsgData.nRankType = CommonDefine.COMMONRANK_TYPE_SERVERCOMMERCE tMsgData.nRankSubType = CommonDefine.COMMONRANK_SUB_TYPE_SERVERCOMMERCE_SERVER tMsgData.nOperate = CommonDefine.COMMONRANK_VALUE_REPLACE InnerMsg.sendMsg(0, tMsgData) end -- 请求排行榜数据 function CommerveMiddle_QueryRankInfo(nRankType, nRankSubType) local tMsgData = InnerMsg.lw.LW_COMMERCE_QUERY_RANK_INFO tMsgData.nRankType = nRankType tMsgData.nRankSubType = nRankSubType tMsgData.nSrcServerID = Config.SVR_INDEX InnerMsg.sendMsg(0, tMsgData) end -- 获取到排行榜数据 function CommerveMiddle_GetRankInfo(tData) ServerCommerceRank.CommercerActRank_GetRankInfo(tData) end ------------------ 活动管理器操作 ------------------------ -- 请求活动是否开启 function CommerceMiddle_IsActOpen(nOperate) local tMsgData = InnerMsg.lw.LW_COMMERCE_ACTOPEN tMsgData.nSrcServerID = Config.SVR_INDEX tMsgData.nOperate = nOperate InnerMsg.sendMsg(0, tMsgData) print("[CommerceMiddle_IsActOpen] 普通服开始请求活动信息") end -- 请求当前服务器排行最新的排名 function CommerceMiddle_QueryServerRank(nOperate) local tMsgData = InnerMsg.lw.LW_COMMERCE_QUERY_SERVER_RANK tMsgData.nSrcServerID = Config.SVR_INDEX tMsgData.nServerUuid = Config.NEW_SVR_INDEX tMsgData.nOperate = nOperate InnerMsg.sendMsg(0, tMsgData) end -- 获取到 当前服务器排行最新的排名 function CommerceMiddle_GetServerRank(fd, msg) ServerCommerceRank.CommercerActRank_GetServerRank(msg) end -- 通知中心服当前服务器在线全服玩家邮件结束 function CommerceMiddle_TellServerMailOk() local tMsgData = InnerMsg.lw.LW_COMMERCE_TELL_SERVER_MAILOK tMsgData.nSrcServerID = Config.SVR_INDEX InnerMsg.sendMsg(0, tMsgData) end function CommerceMiddle_GetHumanRank(msg) ServerCommerceRank.CommercerActRank_SendHumanRankPrize(msg) end function CommerceMiddle_ClearRank() local tMsgData = InnerMsg.lw.LW_COMMERCE_CLEAR_RANK tMsgData.nSrcServerID = Config.SVR_INDEX InnerMsg.sendMsg(0, tMsgData) end