MergeServerCS.lua 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. --跨服服务器, 合服后的处理逻辑
  2. local Config = require("Config")
  3. local MergeServerDefine = require("merge.MergeServerDefine")
  4. local GodsAreaDB = require("godsArea.GodsAreaDB")
  5. -- 服务器服号起始值
  6. local SRV_BASE_NUM = 810537
  7. local function getDBInfo()
  8. for _, chanelId in ipairs(Config.SVR_CHANEL) do
  9. if MergeServerDefine.MERGE_CHECK_TB[chanelId] then
  10. return MergeServerDefine.MERGE_CHECK_TB[chanelId]
  11. end
  12. end
  13. end
  14. local function generateArray()
  15. local dbBaseArray = getDBInfo()
  16. if not dbBaseArray then
  17. return
  18. end
  19. local updateTb, removeTb = {}, {}
  20. for _, v in ipairs(dbBaseArray) do
  21. -- local targetChannelId = v[1][1]
  22. local targetServerId = v[1][2]
  23. local newSrvId = targetServerId + SRV_BASE_NUM
  24. for i=2, #v do
  25. local dbInfo = v[i]
  26. local channelId = dbInfo[1]
  27. local serverId = dbInfo[2]
  28. local opType = dbInfo[3]
  29. local oldSrvId = serverId + SRV_BASE_NUM
  30. if table.find(Config.SVR_CHANEL, channelId) then
  31. -- 同个跨服内合并
  32. if opType == 1 then
  33. updateTb[oldSrvId] = newSrvId
  34. end
  35. -- 合并到其他跨服
  36. if opType == 2 then
  37. removeTb[oldSrvId] = true
  38. end
  39. end
  40. end
  41. end
  42. return updateTb, removeTb
  43. end
  44. function AfterStart()
  45. if _G.is_middle ~= true then return end
  46. if not next(MergeServerDefine.MERGE_CHECK_TB) then
  47. return
  48. end
  49. local updateTb, removeTb = generateArray()
  50. if (not updateTb or not next(updateTb)) and (not removeTb or not next(removeTb)) then
  51. return
  52. end
  53. GodsAreaDB.UpdateAfterMergeSrv(updateTb, removeTb)
  54. end