Browse Source

战区争霸轮空服改为发战败奖励

gitxsm 4 tháng trước cách đây
mục cha
commit
4c554a0e89

+ 35 - 14
script/module/areaBattle/AreaBattleCS.lua

@@ -185,10 +185,12 @@ local function genMacthArr()
             joinSrvArr_cp[srvCnt] = nil
             srvCnt = srvCnt - 1
 
+            -- 新修改: 被移除的服务器为轮空服, 轮空服改为发战败服奖励, 发奖励时需要用到参战玩家数据, 所以不删除轮空服数据
+
             -- 把被移除的服务器从服务器数据列表中移除
-            local serverList = AreaBattleDB.GetServerList()
-            serverList[deleteSrvId] = nil
-            AreaBattleDB.UpdateServerList(serverList)
+            -- local serverList = AreaBattleDB.GetServerList()
+            -- serverList[deleteSrvId] = nil
+            -- AreaBattleDB.UpdateServerList(serverList)
 
             -- 记录日志
             local logStr = "移除多余的区服, 区服Id:  " .. deleteSrvId
@@ -358,24 +360,43 @@ local function updateDBBattleResult(battleInfo)
     AreaBattleDB.UpdateServerList(serverList)
 end
 
+-- 检查服务器是否是轮空服
+local function isByeServer(matchSrvArr, serverId)
+    local isBye = true
+    for _, serverTb in ipairs(matchSrvArr or {}) do
+        if table.find(serverTb, serverId) then
+            isBye = false
+            break
+        end
+    end
+
+    return isBye
+end
 
 -- 生成用于通知各个普通服发奖的数据
-local function genNotifyInfo(serverInfo)
+local function genNotifyInfo(serverInfo, matchSrvArr, serverId)
     local info = {
         isWin = 0,
         winPlayerArr = {},
-        defeatPlayerArr = {}
+        defeatPlayerArr = {},
+        isBye = 0, -- 是否轮空
     }
 
-    if (serverInfo.winTimes or 0) > (serverInfo.defeatTimes or 0) then
-        info.isWin = 1
-    end
+    local isBye = isByeServer(matchSrvArr, serverId)
 
-    for _, playerInfo in ipairs(serverInfo.playerInfoArr) do
-        if table.find(serverInfo.winPlayerArr, playerInfo.uuid) then
-            table.insert(info.winPlayerArr, playerInfo.uuid)
-        else
-            table.insert(info.defeatPlayerArr, playerInfo.uuid)
+    if isBye then
+        info.isBye = 1
+    else
+        if (serverInfo.winTimes or 0) > (serverInfo.defeatTimes or 0) then
+            info.isWin = 1
+        end
+
+        for _, playerInfo in ipairs(serverInfo.playerInfoArr) do
+            if table.find(serverInfo.winPlayerArr, playerInfo.uuid) then
+                table.insert(info.winPlayerArr, playerInfo.uuid)
+            else
+                table.insert(info.defeatPlayerArr, playerInfo.uuid)
+            end
         end
     end
 
@@ -773,7 +794,7 @@ function BatchServer()
         local fd = MiddleManager.getFDBySvrIndex(serverId)
         if fd then
             len = len + 1
-            local notifyInfo = genNotifyInfo(serverInfo)
+            local notifyInfo = genNotifyInfo(serverInfo, matchSrvArr, serverId)
             srvTb[fd] = notifyInfo
         end
 

+ 0 - 1
script/module/areaBattle/AreaBattleDB.lua

@@ -24,7 +24,6 @@ AreaBattleData = nil
 
 --     serverList = {    -- 服务器信息列表
 --         [serverId] = {
---             serverId = serverId,
 --             winTimes = 0,
 --             defeatTimes = 0,
 --             winPlayerArr = {playerUuid1, playerUuid2,},

+ 3 - 0
script/module/areaBattle/AreaBattleDefine.lua

@@ -47,6 +47,8 @@ AWARD_TYPE4 = 4 -- 战败服个人战胜奖励
 AWARD_TYPE5 = 5 -- 战败服个人战败奖励
 AWARD_TYPE6 = 6 -- 战败服全服奖励
 
+AWARD_TYPE7 = 7 -- 轮空服奖励
+
 -- 奖励类型 —— 邮件ID映射表
 AWARDTYPE2MAILID = {
     [AWARD_TYPE1] = 7026,
@@ -55,6 +57,7 @@ AWARDTYPE2MAILID = {
     [AWARD_TYPE4] = 7028,
     [AWARD_TYPE5] = 7029,
     [AWARD_TYPE6] = 7025,
+    [AWARD_TYPE7] = 7034,
 }
 
 GET_BATTLE_MAX_CNT_TIMES = 20  -- 一次最多请求30名玩家的战斗数据

+ 10 - 4
script/module/areaBattle/AreaBattleNS.lua

@@ -163,11 +163,17 @@ local function genPlayerAwardArray(srvBattleRes)
     local len = 0
     local playerAwardArray = {}
 
-    insertPlayerAward(playerAwardArray, srvBattleRes.winPlayerArr, battleWinAwward, winAwardType)
-    insertPlayerAward(playerAwardArray, srvBattleRes.winPlayerArr, normalAward, normalAwardType)
+    if srvBattleRes.isBye == 0 then -- 非轮空服
+        insertPlayerAward(playerAwardArray, srvBattleRes.winPlayerArr, battleWinAwward, winAwardType)
+        insertPlayerAward(playerAwardArray, srvBattleRes.winPlayerArr, normalAward, normalAwardType)
 
-    insertPlayerAward(playerAwardArray, srvBattleRes.defeatPlayerArr, battleDefeatAward, defeateAwardType)
-    insertPlayerAward(playerAwardArray, srvBattleRes.defeatPlayerArr, normalAward, normalAwardType)
+        insertPlayerAward(playerAwardArray, srvBattleRes.defeatPlayerArr, battleDefeatAward, defeateAwardType)
+        insertPlayerAward(playerAwardArray, srvBattleRes.defeatPlayerArr, normalAward, normalAwardType)
+    else
+        -- 轮空服
+        normalAwardType = AreaBattleDefine.AWARD_TYPE7
+        normalAward = AreaBattleConfig[1].defeatAward3
+    end
 
 
     len = #playerAwardArray