| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776 |
- -- 跨服鏈接和重连管理
- local msg_parse = _G.msg_inner_parse
- local Config = require("Config")
- local Log = require("common.Log")
- local CommonDB = require("common.CommonDB")
- local InnerMsg = require("core.InnerMsg")
- local MiddleManager = require("middle.MiddleManager")
- local MiddleHeartBeat = require("middle.MiddleHeartBeat")
- local Define = require("platform.Define")
- local Json = require("common.Json")
- local JjcLadderMiddle = require("jjcLadder.JjcLadderMiddle")
- local WarZoneConf = require("excel.WarZone") --- 战区配置
- local ChatHandler = require("chat.Handler")
- local MiddleCommonRank = require("middle.MiddleCommonRank")
- local BanLogic = require("scene.BanLogic")
- IS_MIDDLE_CONNECT = IS_MIDDLE_CONNECT or nil -- 是否連上跨服 收到WLhello才認為連上了
- local nServerOffSet = 810538 -- 配置中服务器ID偏移量
- YY_ACT_FLAG = nil
- -- 请求middleInfo
- local s2aParam = {}
- local function questMiddleInfo()
- s2aParam.sid = Config.SVR_INDEX
- s2aParam.api_cbMethod = "setMiddleInfo"
- _G.thread_http.send(Define.MIDDLE_INFO_URL, Json.Encode(s2aParam))
- end
- -- 获取战区最小和最大服务器ID
- function MiddleConnect_GetWarZoneServer(nSeverID)
- local tWarZoneConf = WarZoneConf.group
- if not tWarZoneConf then
- return 0, 0
- end
- for _, v in pairs(tWarZoneConf) do
- if v.nMinServerID <= nSeverID and v.nMaxServerID >= nSeverID then
- return v.nMinServerID, v.nMaxServerID
- end
- end
- return 0, 0
- end
- -- 获取战区服务器ID
- function MiddleConnect_ConfServerID2TrueServerID(nServerIDConf)
- return nServerIDConf + nServerOffSet - 1
- end
- -- 获取战区配置服务器ID
- function MiddleConnect_TrueServerID2ConfServerID(nServerID)
- return nServerID - nServerOffSet + 1
- end
- local function MiddleConnect_GetWarFirstServerFD(nSrcServerID)
- local nConfigServerID = MiddleConnect_TrueServerID2ConfServerID(nSrcServerID)
- local nWarServerID = MiddleConnect_GetWarZoneServer(nConfigServerID)
- if 0 >= nWarServerID then
- print("[MiddleConnect_GetWarFirstServerFD] 获取不到对应的战区ID nSrcServerID = "..nSrcServerID
- .." nConfigServerID = "..nConfigServerID.." nWarServerID = "..nWarServerID)
- return
- end
- -- 转换成战区真正的ID
- nWarServerID = MiddleConnect_ConfServerID2TrueServerID(nWarServerID)
- local nWarFD = MiddleManager.getFDBySvrIndex(nWarServerID)
- if not nWarFD then
- print("[MiddleConnect_GetWarFirstServerFD] 获取不到对应的战区的FD nSrcServerID = "..nSrcServerID
- .." nConfigServerID = "..nConfigServerID.." nWarServerID = "..nWarServerID)
- return
- end
- return nWarFD
- end
- function setMiddleInfo(ip, port, host)
- if _G.is_middle == true then return end
- local middleDBInfo = CommonDB.getMiddleInfo()
- if middleDBInfo.ip == ip and middleDBInfo.port == port and middleDBInfo.host == host then
- -- 沒變化
- return
- end
- local oldIp = middleDBInfo.ip
- local oldPort = middleDBInfo.port
- CommonDB.setMiddleInfo(ip, port, host)
- if oldIp == ip and oldPort == port then
- -- 只有host变了 不需要重連
- return
- else
- tryConnectMiddle(ip, port) -- try的時候會把之前的鏈接斷開
- end
- end
- function getMiddleInfo()
- --调试模式使用配置的IP
- if Config.IS_DEBUG then
- return Config.MIDDLE_IP, Config.MIDDLE_PORT, Config.MIDDLE_HOST
- end
- local middleDBInfo = CommonDB.getMiddleInfo()
- return middleDBInfo.ip, middleDBInfo.port, middleDBInfo.host
- end
- function initAfterStart()
- onTimer() -- 啟動拉取一下middleInfo
- MiddleCommonRank.MiddleCommonRank_InitAfterStart()
- end
- function onTimer()
- if _G.is_middle == true then return end
- -- 如果没有middleip 去找后台请求middleip 1分钟1次
- local ip, port = getMiddleInfo()
- if ip == nil then
- -- reyes todo get ip
- print("no middleInfo try to get")
- questMiddleInfo()
- return
- end
- -- 如果ip有了 但是一直没连上 1分钟重连1次
- if isConnect() ~= true then
- tryConnectMiddle(ip, port)
- return
- end
- -- 如果3分钟之内 没有收到middle的心跳包 并且底层还是连接中的状态 我们认为出故障了 这个时候重连一下middle 这是一个异常处理
- if MiddleHeartBeat.LAST_HEARTBEAT_TIME then
- local now = os.time()
- if now - MiddleHeartBeat.LAST_HEARTBEAT_TIME > 180 then
- stopConnectMiddle()
- end
- end
- end
- function autoResetMiddle()
- if _G.is_middle == true then return end
- -- 每周一凌晨2點 斷開鏈接 并且重新取一下php的跨服信息 重新連新跨服
- CommonDB.setMiddleInfo(nil, nil, nil)
- stopConnectMiddle()
- onTimer() -- 拉取一下middleInfo
- end
- function isConnect()
- -- 這個接口和IS_MIDDLE_CONNECT的區別是 這個表示底層鏈接連上了 但是不一定正確收到了middle會包 lua層業務判斷最好別用這個接口 盡量用IS_MIDDLE_CONNECT
- local ret = msg_parse.check_connect()
- if ret == true then
- return true
- end
- end
- function tryConnectMiddle(ip, port)
- print("try connect middle ", ip, port)
- Log.write(Log.LOGID_INNER_CLOSE, "tryConnectMiddle", ip, port)
- msg_parse.set_connect(ip, port)
- end
- function stopConnectMiddle()
- print("stop connect middle ")
- Log.write(Log.LOGID_INNER_CLOSE, "stopConnectMiddle")
- msg_parse.close_connect()
- IS_MIDDLE_CONNECT = nil
- MiddleHeartBeat.LAST_HEARTBEAT_TIME = nil
- MiddleHeartBeat.LAST_SEND_HB_TS = nil
- end
- function LW_HELLO(fd, msg)
- print("LW Hello fd = "..fd)
- --table.print_lua_table(msg)
- --local stackTrace = debug.traceback("", 2)
- --print("[LW_HELLO] 堆栈信息 "..stackTrace)
- -- Log.write(Log.LOGID_INNER_CLOSE, "LW_HELLO")
- Log.write(Log.LOGID_INNER_CLOSE, string.format("LW_HELLO, client: %s, fd: %s", msg.svrIndex, fd))
- MiddleManager.addLogicServer(fd, msg.svrIndex)
- local szMsgData = InnerMsg.wl.WL_HELLO
- --table.print_lua_table(szMsgData)
- szMsgData.nGetSvrID = msg.svrIndex
- szMsgData.nNowSvrID = Config.SVR_INDEX
- --table.print_lua_table(msg)
- --table.print_lua_table(szMsgData)
- InnerMsg.sendMsg(fd, szMsgData)
- msg = InnerMsg.wl.WL_HEARTBEAT
- InnerMsg.sendMsg(fd, msg)
- -- 同步其它信息
- -- JjcLadderMiddle.sendWLMobaiCnt(fd)
- end
- function WL_HELLO(fd, msg)
- print("WL hello fd = "..fd)
- Log.write(Log.LOGID_INNER_CLOSE, "WL_HELLO")
- if not IS_MIDDLE_CONNECT then
- print("middle server upup!!!---")
- IS_MIDDLE_CONNECT = true
- local openTime = CommonDB.getServerOpenTime()
- if openTime ~= 0 then
- -- local msg = InnerMsg.lw.LW_SET
- -- msg.openTime = openTime or 0
- -- msg.svrIndex = Config.SVR_INDEX
- -- InnerMsg.sendMsg(fd, msg)
- end
- BanLogic.NS_Get_BanData()
- end
- end
- function LW_SET(fd,msg)
- MiddleManager.setServerOpenDay(fd,msg.svrIndex,msg.openTime)
- end
- function LW_DISCONNECT(fd, msg)
- print("LW_DISCONNECT")
-
- MiddleManager.delLogicServer(fd)
- end
- --middle断线,C++层触发
- function WL_DISCONNECT(fd, msg)
- if IS_MIDDLE_CONNECT then
- IS_MIDDLE_CONNECT = nil
- MiddleHeartBeat.LAST_HEARTBEAT_TIME = nil
- MiddleHeartBeat.LAST_SEND_HB_TS = nil
- Log.write(Log.LOGID_INNER_CLOSE, "middle server disconnect!!!")
- print("middle server disconnect!!!---")
- end
- end
- -- 跨服聊天请求
- function LW_MIDDLE_CHAT(fd, msg)
- local tAllConnectFD = MiddleManager.MiddleManager_GetAllFD()
- if not _G.next(tAllConnectFD) then
- print("[LW_MIDDLE_CHAT] 不存在连接上的服务器")
- return
- end
- local szMsgData = InnerMsg.wl.WL_MIDDLE_CHAT
- szMsgData.tChatMsg = msg.tChatMsg
-
- local nMsgType = szMsgData.tChatMsg.item.msgType
- if ChatHandler.CHAT_TYPE_MIDDLE == nMsgType then
- for _, nFD in pairs(tAllConnectFD) do
- InnerMsg.sendMsg(nFD, szMsgData)
- end
-
- print("[LW_MIDDLE_CHAT] 全服发送消息结束")
- elseif ChatHandler.CHAT_TYPE_WARZONE == nMsgType then
- local nSendServerID = msg.svrIndex
- local nConfServerID = nSendServerID - nServerOffSet + 1
- local nMinServerID, nMaxServerID = MiddleConnect_GetWarZoneServer(nConfServerID)
- if 0 >= nMinServerID or 0 >= nMaxServerID then
- print("[LW_MIDDLE_CHAT 获取不到配置 nSendServerID = "..nSendServerID.." nConfServerID = "..nConfServerID)
- return
- end
- local nServeL, nServerR = nMinServerID + nServerOffSet - 1, nMaxServerID + nServerOffSet - 1
- for i = nServeL, nServerR, 1 do
- local nFD = MiddleManager.getFDBySvrIndex(i)
- if nFD then
- InnerMsg.sendMsg(nFD, szMsgData)
- else
- print("[LW_MIDDLE_CHAT] 不存在对应的fd i = "..i)
- end
- end
- print("[LW_MIDDLE_CHAT] 战区发送消息结束")
- else
- print("[LW_MIDDLE_CHAT] 未处理的发送消息结束")
- end
- end
- -- 获取聊天英雄信息
- function LW_MIDDLE_CHAT_QUERY_HERO_DATA(fd, msg)
- local nDesServerID = msg.nDesServerID
- local nDesFD = MiddleManager.getFDBySvrIndex(nDesServerID)
- if not nDesFD then
- print("[LW_MIDDLE_CHAT_QUERY_HERO_DATA] 不存在对应的fd nDesServerID = "..nDesServerID)
- return
- end
- print("[LW_MIDDLE_CHAT_QUERY_HERO_DATA] nDesServerID = "..nDesServerID.." nDesFD = "..nDesFD)
- local szMsgData = InnerMsg.wl.WL_MIDDLE_CHAT_QUERY_HERO_DATA
- szMsgData.nSrcServerID = msg.nSrcServerID
- szMsgData.nSrcUID = msg.nSrcUID
- szMsgData.nDesUID = msg.nDesUID
- szMsgData.nHeroIndex = msg.nHeroIndex
- szMsgData.nChatType = msg.nChatType
- InnerMsg.sendMsg(nDesFD, szMsgData)
- end
- function LW_MIDDLE_CHAT_GET_HERO_DATA(fd, msg)
- local nSrcServerID = msg.nSrcServerID
- local nSrcFD = MiddleManager.getFDBySvrIndex(nSrcServerID)
- if not nSrcFD then
- print("[LW_MIDDLE_CHAT_GET_HERO_DATA] 不存在对应的fd nSrcServerID = "..nSrcServerID)
- return
- end
- print("[LW_MIDDLE_CHAT_GET_HERO_DATA] nSrcServerID = "..nSrcServerID.." nSrcFD = "..nSrcFD)
- local szMsgData = InnerMsg.wl.WL_MIDDLE_CHAT_GET_HERO_DATA
- szMsgData.nSrcUID = msg.nSrcUID
- szMsgData.tHeroData = msg.tHeroData
- InnerMsg.sendMsg(nSrcFD, szMsgData)
- end
- function LW_WARREPORT_GET_COMBATINFO(fd, msg)
- local nDesServerID = msg.nDesServerID
- local nDesFD = MiddleManager.getFDBySvrIndex(nDesServerID)
- --local nSrcFD = MiddleManager.getFDBySvrIndex(msg.nSrcServerID)
- if not nDesFD then
- print("[LW_WARREPORT_GET_COMBATINFO] 不存在对应的fd nDesServerID = "..nDesServerID.." nSrcServerID = "..msg.nSrcServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_WARREPORT_GET_COMBATINFO
- tMsgData.nSrcUID = msg.nSrcUID
- tMsgData.type = msg.type
- tMsgData.id = msg.id
- tMsgData.nSrcServerID = msg.nSrcServerID
- tMsgData.mode = msg.mode
- InnerMsg.sendMsg(nDesFD, tMsgData)
- end
- function LW_WARREPORT_SEND_COMBATINFO(fd, msg)
- local nSrcServerID = msg.nSrcServerID
- local nSrcFD = MiddleManager.getFDBySvrIndex(nSrcServerID)
- if not nSrcFD then
- print("[LW_MIDDLE_CHAT_GET_HERO_DATA] 不存在对应的fd nSrcServerID = "..nSrcServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_WARREPORT_SEND_COMBATINFO
- tMsgData.nSrcUID = msg.nSrcUID
- tMsgData.combatInfo = msg.combatInfo
- tMsgData.mode = msg.mode
- InnerMsg.sendMsg(nSrcFD, tMsgData)
- end
- -------------------- 跨服玩家头像数据开始 --------------------
- function LW_CHAT_PLAYER_INFO(fd, msg)
- local nDesFD = MiddleManager.getFDBySvrIndex(msg.nDesServerID)
- if not nDesFD then
- print("[LW_CHAT_PLAYER_INFO] 不存在对应的fd nDesServerID = "..msg.nDesServerID.." nSrcServerID = "..msg.nSrcServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_CHAT_PLAYER_INFO
- tMsgData.nSrcUID = msg.nSrcUID
- tMsgData.nDesUID = msg.nDesUID
- tMsgData.nSrcServerID = msg.nSrcServerID
- tMsgData.nFrom = msg.nFrom
- tMsgData.nType = msg.nType
-
- InnerMsg.sendMsg(nDesFD, tMsgData)
- end
- function LW_CHAT_PLAYER_INFO_SEND(fd, msg)
- local nSrcFD = MiddleManager.getFDBySvrIndex(msg.nSrcServerID)
- if not nSrcFD then
- print("[LW_CHAT_PLAYER_INFO_SEND] 不存在对应的fd nSrcServerID = "..msg.nSrcServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_CHAT_PLAYER_INFO_SEND
- tMsgData.nSrcUID = msg.nSrcUID
- tMsgData.tData = msg.tData
- tMsgData.nFrom = msg.nFrom
- tMsgData.nType = msg.nType
- InnerMsg.sendMsg(nSrcFD, tMsgData)
- end
- -------------------- 跨服玩家头像数据结束 --------------------
- -------------------- 跨服请求战斗数据开始 --------------------
- function LW_COMBAT_GETINFO(fd, msg)
- local nDesFD = MiddleManager.getFDBySvrIndex(msg.nDesServerID)
- if not nDesFD then
- print("[LW_COMBAT_QIECUO_GETINFO] 不存在对应的fd nDesServerID = "..msg.nDesServerID.." nSrcServerID = "..msg.nSrcServerID)
- return
- end
- print("[LW_COMBAT_GETINFO] 收到")
- local tMsgData = InnerMsg.wl.WL_COMBAT_GETINFO
- tMsgData.nSrcUID = msg.nSrcUID
- tMsgData.nDesUID = msg.nDesUID
- tMsgData.nSrcServerID = msg.nSrcServerID
- tMsgData.nCombatType = msg.nCombatType
- InnerMsg.sendMsg(nDesFD, tMsgData)
- print("[LW_COMBAT_GETINFO] 发送 WL_COMBAT_QIECUO_GETINFO")
- end
- function LW_COMBAT_GETINFO_SEND(fd, msg)
- local nSrcFD = MiddleManager.getFDBySvrIndex(msg.nSrcServerID)
- if not nSrcFD then
- print("[LW_COMBAT_GETINFO_SEND] 不存在对应的fd nSrcServerID = "..msg.nSrcServerID)
- return
- end
- print("[LW_COMBAT_GETINFO_SEND] 收到")
- local tMsgData = InnerMsg.wl.WL_COMBAT_GETINFO_SEND
- tMsgData.nResult = msg.nResult
- tMsgData.nSrcUID = msg.nSrcUID
- tMsgData.tObjList = msg.tObjList
- tMsgData.tHelpList = msg.tHelpList
- tMsgData.tRoleBase = msg.tRoleBase
- tMsgData.formation = msg.formation
- tMsgData.tJiBan = msg.tJiBan
- InnerMsg.sendMsg(nSrcFD, tMsgData)
- print("[LW_COMBAT_GETINFO_SEND] 发送 WL_COMBAT_GETINFO_SEND")
- end
- -------------------- 跨服请求战斗数据结束 --------------------
- -------------------- 天梯赛开始 ---------------------------
- -- 请求参加天梯赛(普通->中心)
- function LW_JJC_NEWLADDER_JOINLADDER_O2C(fd, msg)
- local nSrcServerID = msg.nSrcServerID
- local nWarFD = MiddleConnect_GetWarFirstServerFD(nSrcServerID)
- if not nWarFD then
- print("[LW_JJC_NEWLADDER_JOINLADDER_O2C] 获取不到对应的战区的FD nSrcServerID = "..nSrcServerID)
- return
- end
- print("[LW_JJC_NEWLADDER_JOINLADDER_O2C] 玩家请求参加天梯赛")
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_JOINLADDER_C2D
- tMsgData.uuid = msg.uuid
- tMsgData.name = msg.name
- tMsgData.head = msg.head
- tMsgData.headFrame = msg.headFrame
- tMsgData.nSrcServerID = msg.nSrcServerID
- tMsgData.szServerName = msg.szServerName
- tMsgData.zhandouli = msg.zhandouli
-
- InnerMsg.sendMsg(nWarFD, tMsgData)
- print("[LW_JJC_NEWLADDER_JOINLADDER_O2C] 玩家请求参加天梯赛, 发送到对应的战区数据服成功")
- end
- -- 请求参加天梯赛(数据->中心)
- function LW_JJC_NEWLADDER_JOINLADDER_D2C(fd, msg)
- local nFd = MiddleManager.getFDBySvrIndex(msg.nSrcServerID)
- if not nFd then
- print("[LW_JJC_NEWLADDER_JOINLADDER_D2C] 获取不到对应的天梯赛回复的服务器FD nSrcServerID = "..msg.nSrcServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_JOINLADDER_C2O
- tMsgData.uuid = msg.uuid
- tMsgData.nRank = msg.nRank
- tMsgData.tEnemy = msg.tEnemy
- tMsgData.nPoint = msg.nPoint
- InnerMsg.sendMsg(nFd, tMsgData)
- print("[LW_JJC_NEWLADDER_JOINLADDER_D2C] 请求参加天梯赛(数据->中心) 回复结束")
- end
- -- 请求刷新对战列表(普通->中心)
- function LW_JJC_NEWLADDER_REFRESH_O2C(msg)
- local nSrcServerID = msg.nSrcServerID
- local nWarFD = MiddleConnect_GetWarFirstServerFD(nSrcServerID)
- if not nWarFD then
- print("[LW_JJC_NEWLADDER_REFRESH_O2C] 获取不到对应的战区的FD nSrcServerID = "..nSrcServerID)
- return
- end
- print("[LW_JJC_NEWLADDER_REFRESH_O2C] 玩家请求刷新对战列表")
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_REFRESH_C2D
- tMsgData.uuid = msg.uuid
- tMsgData.nSrcServerID = msg.nSrcServerID
- InnerMsg.sendMsg(nWarFD, tMsgData)
- print("[LW_JJC_NEWLADDER_REFRESH_O2C] 玩家请求刷新对战列表, 发送到对应的战区数据服成功")
- end
- -- 请求刷新对战列表(数据->中心)
- function LW_JJC_NEWLADDER_REFRESH_D2C(msg)
- local nFd = MiddleManager.getFDBySvrIndex(msg.nSrcServerID)
- if not nFd then
- print("[LW_JJC_NEWLADDER_REFRESH_D2C] 获取不到对应的天梯赛回复的服务器FD nSrcServerID = "..msg.nSrcServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_REFRESH_C2O
- tMsgData.uuid = msg.uuid
- tMsgData.tEnemy = msg.tEnemy
- InnerMsg.sendMsg(nFd, tMsgData)
- print("[LW_JJC_NEWLADDER_REFRESH_D2C] 请求刷新对战列表(数据->中心) 发送完成")
- end
- -- 请求上一轮排名前三数据(普通->中心)
- function LW_JJC_NEWLADDER_LAST3RANK_O2C(msg)
- local nWarFD = MiddleConnect_GetWarFirstServerFD(msg.nSrcServerID)
- if not nWarFD then
- print("[LW_JJC_NEWLADDER_LAST3RANK_O2C] 获取不到对应的战区的FD nSrcServerID = "..msg.nSrcServerID)
- return
- end
- print("[LW_JJC_NEWLADDER_LAST3RANK_O2C] 开始先数据服发送请求上一轮前三")
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_LAST3RANK_C2D
- tMsgData.nSrcServerID = msg.nSrcServerID
- InnerMsg.sendMsg(nWarFD, tMsgData)
- end
- -- 请求上一轮排名前三数据(数据->中心)
- function LW_JJC_NEWLADDER_LAST3RANK_D2O(msg)
- local nFd = MiddleManager.getFDBySvrIndex(msg.nSrcServerID)
- if not nFd then
- print("[LW_JJC_NEWLADDER_LAST3RANK_D2O] 获取不到对应的天梯赛回复的服务器FD nSrcServerID = "..msg.nSrcServerID)
- return
- end
- print("[LW_JJC_NEWLADDER_LAST3RANK_D2O] 获取到对应的 上一轮排名前三数据")
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_LAST3RANK_C2O
- tMsgData.nExist = msg.nExist
- tMsgData.tLastRankInfo = msg.tLastRankInfo
- InnerMsg.sendMsg(nFd, tMsgData)
- end
- -- 进行点赞(普通->中心)
- function LW_JJC_NEWLADDER_SEND_WORSHIP_O2C(msg)
- local nDesServerID = msg.nDesServerID
- local nDesFD = MiddleManager.getFDBySvrIndex(nDesServerID)
- if not nDesFD then
- print("[LW_JJC_NEWLADDER_SEND_WORSHIP_O2C] 获取不到需要传递的服务器FD nSrcServerID = "..msg.nSrcServerID.." nDesServerID = "..nDesServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_SEND_WORSHIP_C2D
- tMsgData.uuidSrc = msg.uuidSrc
- tMsgData.uuidDes = msg.uuidDes
- tMsgData.nSrcServerID = msg.nSrcServerID
- InnerMsg.sendMsg(nDesFD, tMsgData)
- end
- -- 进行点赞(数据(被点赞玩家所在服)->中心)
- function LW_JJC_NEWLADDER_SEND_WORSHIP_D2C(msg)
- local nSrcFD = MiddleManager.getFDBySvrIndex(msg.nSrcServerID)
- if not nSrcFD then
- print("[LW_JJC_NEWLADDER_SEND_WORSHIP_D2C] 获取不到回复的服务器FD nSrcServerID = "..msg.nSrcServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_SEND_WORSHIP_C2O
- tMsgData.uuidSrc = msg.uuidSrc
- tMsgData.uuidDes = msg.uuidDes
- tMsgData.nNowWorShip = msg.nNowWorShip
- -- 回复对应的服务器
- InnerMsg.sendMsg(nSrcFD, tMsgData)
- -- 发给战区数据服,更新点赞数
- local nWarFD = MiddleConnect_GetWarFirstServerFD(msg.nSrcServerID)
- if nWarFD then
- tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_WORSHIP_CHANGE_C2D
- tMsgData.uuidDes = msg.uuidDes
- tMsgData.nAddNum = 1
- InnerMsg.sendMsg(nWarFD, tMsgData)
- else
- print("[LW_JJC_NEWLADDER_SEND_WORSHIP_D2C] 不存在对应的战区fd")
- end
- end
- -- 通知战区下属服务器最新的点赞数
- function LW_JJC_NEWLADDER_WORSHIP_CHANGE_D2C(msg)
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_WORSHIP_UPDATE_D2C
- tMsgData.uuidDes = msg.uuidDes
- tMsgData.nNowWorShip = msg.nNowWorShip
- local nConfigServerID = MiddleConnect_TrueServerID2ConfServerID(msg.nSrcServerID)
- local nMinServerID, nMaxServerID = MiddleConnect_GetWarZoneServer(nConfigServerID)
-
- for i = nMinServerID, nMaxServerID, 1 do
- local nTrueServerID = MiddleConnect_ConfServerID2TrueServerID(i)
- local nFD = MiddleManager.getFDBySvrIndex(nTrueServerID)
- if nFD then
- InnerMsg.sendMsg(nFD, tMsgData)
- else
- print("[LW_JJC_NEWLADDER_WORSHIP_CHANGE_D2C] 没有获取到对应的 nTrueServerID = "..nTrueServerID)
- end
- end
- end
- -- 请求天梯赛排行榜数据(普通->中心)
- function LW_JJC_NEWLADDER_QUERY_RANK_O2C(msg)
- local nWarFD = MiddleConnect_GetWarFirstServerFD(msg.nSrcServerID)
- if not nWarFD then
- print("[LW_JJC_NEWLADDER_QUERY_RANK_O2C] 获取不到对应的战区的FD")
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_QUERY_RANK_C2D
- tMsgData.nSrcServerID = msg.nSrcServerID
- InnerMsg.sendMsg(nWarFD, tMsgData)
- end
- -- 回复天梯赛排行榜数据(中心->数据服)
- function LW_JJC_NEWLADDER_QUERY_RANK_D2C(msg)
- local nFD = MiddleManager.getFDBySvrIndex(msg.nSrcServerID)
- if not nFD then
- print("[LW_JJC_NEWLADDER_QUERY_RANK_D2C] 找不到请求服务器对应的FD nSrcServerID = "..msg.nSrcServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_QUERY_RANK_C2O
- tMsgData.nIsEnd = msg.nIsEnd
- tMsgData.nFirst = msg.nFirst
- tMsgData.tRankInfo = msg.tRankInfo
- InnerMsg.sendMsg(nFD, tMsgData)
- end
- -- 查询是否能够战斗(普通->中心)
- function LW_JJC_NEWLADDER_QUERY_CAN_FIGHT_O2C(msg)
- local nWarFD = MiddleConnect_GetWarFirstServerFD(msg.nSrcServerID)
- if not nWarFD then
- print("[LW_JJC_NEWLADDER_QUERY_CAN_FIGHT_O2C] 获取不到对应的战区的FD")
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_QUERY_CAN_FIGHT_C2D
- tMsgData.uuid = msg.uuid
- tMsgData.uuidDes = msg.uuidDes
- tMsgData.nSrcServerID = msg.nSrcServerID
- InnerMsg.sendMsg(nWarFD, tMsgData)
- print("[LW_JJC_NEWLADDER_QUERY_CAN_FIGHT_O2C] 查询是否能够战斗(普通->中心)")
- end
- -- 查询是否能够战斗(数据服->中心)
- function LW_JJC_NEWLADDER_QUERY_CAN_FIGHT_D2C(msg)
- local nFD = MiddleManager.getFDBySvrIndex(msg.nSrcServerID)
- if not nFD then
- print("[LW_JJC_NEWLADDER_QUERY_CAN_FIGHT_D2C] 找不到请求服务器对应的FD nSrcServerID = "..msg.nSrcServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_QUERY_CAN_FIGHT_C2O
- tMsgData.uuid = msg.uuid
- tMsgData.uuidDes = msg.uuidDes
- tMsgData.nIsFight = msg.nIsFight
- InnerMsg.sendMsg(nFD, tMsgData)
- end
- -- 战斗结束(普通->中心)
- function LW_JJC_NEWLADDER_CANCEL_FIGHT_END_O2C(msg)
- local nWarFD = MiddleConnect_GetWarFirstServerFD(msg.nSrcServerID)
- if not nWarFD then
- print("[LW_JJC_NEWLADDER_CANCEL_FIGHT_END_O2C] 获取不到对应的战区的FD")
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_CANCEL_FIGHT_END_C2D
- tMsgData.uuid = msg.uuid
- tMsgData.uuidDes = msg.uuidDes
- tMsgData.nSrcServerID = msg.nSrcServerID
- tMsgData.nResult = msg.nResult
- tMsgData.tEnemyUid = msg.tEnemyUid
- tMsgData.nZhanDouLi = msg.nZhanDouLi
- InnerMsg.sendMsg(nWarFD, tMsgData)
- end
- -- 战斗结束(数据服->中心)
- function LW_JJC_NEWLADDER_CANCEL_FIGHT_END_D2C(msg)
- local nFD = MiddleManager.getFDBySvrIndex(msg.nSrcServerID)
- if not nFD then
- print("[LW_JJC_NEWLADDER_CANCEL_FIGHT_END_D2C] 找不到请求服务器对应的FD nSrcServerID = "..msg.nSrcServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_CANCEL_FIGHT_END_C2O
- tMsgData.uuid = msg.uuid
- tMsgData.nNewRank = msg.nNewRank
- tMsgData.nNewPoint = msg.nNewPoint
- tMsgData.uuidDes = msg.uuidDes
- tMsgData.tNewOneEnemy = msg.tNewOneEnemy
- tMsgData.tOldEnemyData = msg.tOldEnemyData
- InnerMsg.sendMsg(nFD, tMsgData)
- end
- --发送失败邮件
- function LW_JJC_NEWLADDER_SEND_MAIL_D2C(msg)
- local nFD = MiddleManager.getFDBySvrIndex(msg.nDesServerID)
- if not nFD then
- print("[LW_JJC_NEWLADDER_SEND_MAIL_D2C] 找不到请求服务器对应的FD nDesServerID = "..msg.nDesServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_SEND_MAIL_C2O
- tMsgData.uuidDes = msg.uuidDes
- tMsgData.szServerName = msg.szServerName
- tMsgData.szName = msg.szName
- tMsgData.nNewRank = msg.nNewRank
- InnerMsg.sendMsg(nFD, tMsgData)
- end
- function LW_JJC_NEWLADDER_SEND_RANK_PRIZE_D2C(msg)
- local nFD = MiddleManager.getFDBySvrIndex(msg.nServerID)
- if not nFD then
- print("[LW_JJC_NEWLADDER_SEND_RANK_PRIZE_D2C] 找不到请求服务器对应的FD nServerID = "..msg.nServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_SEND_RANK_PRIZE_C2O
- tMsgData.uuid = msg.uuid
- tMsgData.nRank = msg.nRank
- InnerMsg.sendMsg(nFD, tMsgData)
- print("[LW_JJC_NEWLADDER_SEND_RANK_PRIZE_D2C] 发送对应玩家的奖励邮件")
- end
- function LW_JJC_NEWLADDER_QUERY_WORSHIP_D2C(msg)
- local nFD = MiddleManager.getFDBySvrIndex(msg.nServerID)
- if not nFD then
- print("[LW_JJC_NEWLADDER_QUERY_WORSHIP_D2C] 找不到请求服务器对应的FD nServerID = "..msg.nServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_QUERY_WORSHIP_C20
- tMsgData.uuid = msg.uuid
- tMsgData.nFromServerID = msg.nFromServerID
- InnerMsg.sendMsg(nFD, tMsgData)
- end
- function LW_JJC_NEWLADDER_QUERY_WORSHIP_O2C(msg)
- local nFD = MiddleManager.getFDBySvrIndex(msg.nFromServerID)
- if not nFD then
- print("[LW_JJC_NEWLADDER_QUERY_WORSHIP_O2C] 找不到请求服务器对应的FD nServerID = "..msg.nFromServerID)
- return
- end
- local tMsgData = InnerMsg.wl.WL_JJC_NEWLADDER_QUERY_WORSHIP_C2D
- tMsgData.uuid = msg.uuid
- tMsgData.nWorShip = msg.nWorShip
- InnerMsg.sendMsg(nFD, tMsgData)
- end
- -------------------- 天梯赛结束 ---------------------------
|