gitxsm 10 месяцев назад
Родитель
Сommit
75037d8c4c

+ 7 - 1
script/common/InnerHandler.lua

@@ -627,7 +627,7 @@ function LW_GODSATREA_QUERY_RANK_VIDEO(fd, msg)
     GodsAreaCS.CS_Query_CombatVideo(msg.sourceServerId, msg.playerUid, msg.targetRank)
 end
 function WL_GODSATREA_QUERY_RANK_VIDEO(fd, msg)
-    GodsAreaNS.NS_Query_CombatVideo(msg.playerUid,  msg.videoData)
+    GodsAreaNS.NS_Query_CombatVideo(msg.isFinish, msg.playerUid, msg.videoData)
 end
 
 
@@ -648,4 +648,10 @@ function WL_GODSATREA_BROCAST_REWARD(fd, msg)
     GodsAreaNS.NS_SendReward(msg.uid2RankTb)
 end
 
+
+-- 跨服让玩家更新基础数据
+function WL_GODSATREA_UPDATE_PLAYER_INFO(fd, msg)
+    GodsAreaNS.NS_UpdatePlayerBaseInfo(msg.playerUid)
+end
+
 ----------------------------------------------------------

+ 9 - 1
script/common/InnerProto.lua

@@ -837,13 +837,14 @@ LW_GODSATREA_QUERY_RANK_VIDEO = {
 }
 -- 跨服向请求服发送目标的战斗录像
 WL_GODSATREA_QUERY_RANK_VIDEO = {
+  {"isFinish",              "int"},        -- 是否发送完成,0-否, 1-是
   {"playerUid",            "string"},      -- 玩家uuid
   {"videoData",            "table"},       -- 排名战斗录像
 }
 
 
 
--- 通知跨服, 玩家数据有更新
+-- 通知跨服, 玩家基础数据有更新
 LW_GODSATREA_UPDATE_PLAYER_BASE_INFO = {
   -- {"sourceServerId",        "int"},      -- 服务器ID
   {"playerUid",             "string"},      -- 玩家uuid
@@ -853,6 +854,7 @@ LW_GODSATREA_UPDATE_PLAYER_BASE_INFO = {
 LW_GODSATREA_UPDATE_PLAYER_HERO_INFO = {
   -- {"sourceServerId",        "int"},      -- 服务器ID
   {"playerUid",             "string"},      -- 玩家uuid
+  {"power",                 "int"},         -- 战力
   {"heroInfo",              "table"},       -- 玩家英雄信息
 }
 
@@ -861,4 +863,10 @@ WL_GODSATREA_BROCAST_REWARD = {
   {"uid2RankTb",            "table"},       -- uid->rank 表
 }
 
+-- 跨服通知玩家, 更新数据
+WL_GODSATREA_UPDATE_PLAYER_INFO = {
+  {"playerUid",             "string"},      -- 玩家uuid
+}
+
+
 ---------------------------------------------------------------------

+ 1 - 0
script/common/InnerProtoID.lua

@@ -109,3 +109,4 @@ _ENV[109] = 'WL_GODSATREA_QUERY_RANK_VIDEO'
 _ENV[110] = 'LW_GODSATREA_UPDATE_PLAYER_BASE_INFO'
 _ENV[111] = 'LW_GODSATREA_UPDATE_PLAYER_HERO_INFO'
 _ENV[112] = 'WL_GODSATREA_BROCAST_REWARD'
+_ENV[113] = 'WL_GODSATREA_UPDATE_PLAYER_INFO'

+ 1 - 1
script/module/combat/CombatVideo.lua

@@ -23,7 +23,7 @@ VIDEO_SINGLE_MAXCNT = 5 	-- 个人记录条数上限
 TOWER_PER_MAXCNT = 3 		-- 通天塔每层保留3条记录
 THRONE_RECORD_MAX_CNT = 10  -- 王者争霸记录条数
 BATTLE_RECORD_MAX_CNT = 1   -- 战役战斗记录条数
-GODSAREA_RECORD_MAX_CNT = 3  -- 诸神圣域每个排名战斗记录条数
+GODSAREA_RECORD_MAX_CNT = 5  -- 诸神圣域每个排名战斗记录条数
 
 -- 录像类型
 VIDEOTYPE_COMMON = 1 		-- 个人记录

+ 112 - 30
script/module/godsArea/GodsAreaCS.lua

@@ -21,6 +21,15 @@ local SEND_REWARD_HOUR = 23
 local challengeList = {}
 
 
+
+local function getSameIdx(heroList, targetUid)
+    for k,  v in pairs(heroList) do
+        if v.heroUuid == targetUid then
+            return k
+        end
+    end
+end
+
 -- 通过uid查找排名
 local function getRankInfoByUid(rankList, uid)
     local finalRank = 0
@@ -44,22 +53,26 @@ local function getRankListBySrvId(rankList, targetSrvId)
     return rankTb
 end
 
+-- 清理超时的挑战数据
+local function clearChallengeList()
+    if not next(challengeList) then
+        return
+    end
 
-local function getSanmeIdx(heroArr, targetUid)
-    for k,  v in ipairs(heroArr) do
-        if v.heroUuid == targetUid then
-            return k
+    local now = os.time()
+    for k ,v in pairs(challengeList) do
+        if v.startTime + MAX_CHALLENGE_TIME < now then
+            challengeList[k] = nil
         end
     end
 end
 
+
 local function writeLog(logId ,logStr)
     -- Log.write(Log.LOGID_OSS_GODSAREA_CHALLENGE, logStr)
     Log.write(logId, logStr)
 end
 
-
-
 local function getAllSrvFd()
     local fdList = MiddleManager.MiddleManager_GetAllFD()
 
@@ -77,6 +90,25 @@ local function getAllSrvFd()
     return fdArray
 end
 
+--通知玩家
+local function notifyPlayer(playerUid, serverId)
+    local fd = MiddleManager.getFDBySvrIndex(serverId)
+    local msgData = InnerMsg.wl.WL_GODSATREA_UPDATE_PLAYER_INFO
+    msgData.playerUid = playerUid
+    InnerMsg.sendMsg(fd, msgData)
+end
+
+-- 通知玩家更新数据。新需求,兼容老数据。
+local function playerInfoCheck(rankList)
+    for _, playerInfo in ipairs(rankList) do
+        if playerInfo.uid and not playerInfo.power then
+            notifyPlayer(playerInfo.uid, playerInfo.serverId)
+        end
+    end
+end
+
+
+
 -- 通知游戏服
 function BrocastServer(srvTb, rankList)
     for _, srvInfo in ipairs(srvTb) do
@@ -165,6 +197,10 @@ function CS_RankList_Query(sourceServerId, playerUid)
             body = playerInfo.body or 0,
             name = playerInfo.name or "",
             uid = playerInfo.uid,
+            power = playerInfo.power,
+            serverId = playerInfo.serverId,
+            head = playerInfo.head,
+            headFrame = playerInfo.headFrame,
         }
 
         if playerInfo.uid and playerInfo.uid == playerUid then
@@ -175,6 +211,8 @@ function CS_RankList_Query(sourceServerId, playerUid)
 
     local fd = MiddleManager.getFDBySvrIndex(sourceServerId)
     InnerMsg.sendMsg(fd, msgData)
+
+    playerInfoCheck(rankList)
 end
 
 -- 普通服请求某个排名的玩家数据
@@ -246,6 +284,8 @@ function CS_Challenge_Query(sourceServerId, defenseRank, defenseUid, attackerUid
         return InnerMsg.sendMsg(fd, msgData)
     end
 
+    clearChallengeList()
+
     -- 如果有一方处于挑战/被挑战中, 则提醒
     local now = os.time()
     local aChallengeInfo = challengeList[attackerRank]
@@ -334,30 +374,66 @@ function CS_Challenge_Win(sourceServerId, defenseRank, defenseUid, attackerUid,
     writeLog(Log.LOGID_OSS_GODSAREA_CHALLENGE ,logStr)
 end
 
+local function getTargetVideo(videoArray, playerUid)
+    local len = 0
+    local tbl = {}
+
+    -- if not playerUid or not videoArray then
+    --     return tbl
+    -- end
+
+    for _, videoData in ipairs(videoArray) do
+        if videoData.combatInfo.defender.uuid == playerUid then
+            len = len +  1
+            tbl[len] = videoData
+        end
+    end
+    return tbl
+end
+
 -- 普通服请求战斗录像数据
 function CS_Query_CombatVideo(sourceServerId, playerUid, targetRank)
-    local videoList = CombatVideo.getCombatVideosByType(CombatVideo.VIDEOTYPE_GODSAREA, targetRank)
-
+    local videoArray = CombatVideo.getCombatVideosByType(CombatVideo.VIDEOTYPE_GODSAREA, targetRank)
+    local fd = MiddleManager.getFDBySvrIndex(sourceServerId)
     local msgData = InnerMsg.wl.WL_GODSATREA_QUERY_RANK_VIDEO
+
+    local rankList = GodsAreaDB.GetRankList()
+    local rankData = rankList[targetRank]
+    local targetUuid = rankData.uid or ""
+    -- if not targetUuid then
+    --     local rankCfg = GodsAreaConfig.rankList[targetRank]
+    --     targetUuid = rankCfg.monsterOutID
+    -- end
+
+    local targetVideoArray = getTargetVideo(videoArray, targetUuid)
+
     msgData.playerUid = playerUid
+    msgData.isFinish = 0
     msgData.videoData = {}
+    local videoCnt = #targetVideoArray
+
+    if videoCnt <= 0 then
+        msgData.isFinish = 1
+        InnerMsg.sendMsg(fd, msgData)
+        return
+    end
 
 
-    for k,v in ipairs(videoList) do
-        -- if k > CombatVideo.GODSAREA_RECORD_MAX_CNT then
-        --     break
-        -- end
-        if k > 1 then
+    for k,v in ipairs(targetVideoArray) do
+        if k > CombatVideo.GODSAREA_RECORD_MAX_CNT then
             break
         end
-        msgData.videoData[k] = v
-    end
 
-    local fd = MiddleManager.getFDBySvrIndex(sourceServerId)
-    InnerMsg.sendMsg(fd, msgData)
+        msgData.videoData = v
+        if k == videoCnt or k == CombatVideo.GODSAREA_RECORD_MAX_CNT then
+            msgData.isFinish = 1
+        end
+
+        InnerMsg.sendMsg(fd, msgData)
+    end
 end
 
--- 更新玩家数据
+-- 更新玩家基础数据
 function CS_Update_PlayerInfo(playerUid, newPlayerInfo)
     local rankList = GodsAreaDB.GetRankList()
     local rank, rankData = getRankInfoByUid(rankList, playerUid)
@@ -382,26 +458,30 @@ function CS_Update_HeroInfo(playerUid, newHeroInfo)
 
     local isChange = false
     if newHeroInfo.opType == 0 then
-        local rmIdx = 0
-        for k, v in ipairs(rankData.heroList) do
-            if v.heroUuid == newHeroInfo.heroUuid then
-                rmIdx = k
-                break
-            end
-        end
+        local rmIdx = getSameIdx(rankData.heroList, newHeroInfo.removeHeroUuid)
 
-        if rmIdx ~= 0 then
+        if rmIdx then
             isChange = true
-            table.remove(rankData.heroList, rmIdx)
+            -- table.remove(rankData.heroList, rmIdx)
+            rankData.heroList[rmIdx] = nil
+            rankData.power = newHeroInfo.power
         end
-    else
-        for _, v in ipairs(newHeroInfo.heroList) do
-            local targetIdx = getSanmeIdx(rankData.heroList, v.heroUuid)
+    elseif newHeroInfo.opType == 1 then
+        for _, v in pairs(newHeroInfo.heroList) do
+            local targetIdx = getSameIdx(rankData.heroList, v.heroUuid)
             if targetIdx then
                 isChange = true
                 rankData.heroList[targetIdx] = v
+                rankData.power = newHeroInfo.power
+                break
             end
         end
+    else
+        if next(newHeroInfo.heroList) then
+            rankData.heroList = newHeroInfo.heroList
+            rankData.power = newHeroInfo.power
+            isChange = true
+        end
     end
 
     if isChange then
@@ -409,6 +489,8 @@ function CS_Update_HeroInfo(playerUid, newHeroInfo)
     end
 end
 
+
+
 -- 通知游戏服, 给玩家发奖
 function CS_Send_Reward(fd, rankTb)
     local msgData = InnerMsg.wl.WL_GODSATREA_BROCAST_REWARD

+ 12 - 2
script/module/godsArea/GodsAreaDB.lua

@@ -1,6 +1,4 @@
 -- 诸神圣域
-
-
 local LuaMongo = _G.lua_mongo
 local DB = require("common.DB")
 local CreateRole = require("role.CreateRole")
@@ -24,6 +22,7 @@ local function generatePlayer(rank)
     -- 真实玩家才有这些数据
     -- player.uid = ""
     -- player.serverId = 0
+    -- player.power = 0
     -- player.heroList = 
     -- {
         -- heroUuid = heroUuid,
@@ -92,6 +91,17 @@ function initAfterStart()
     end
 end
 
+local function getNew()
+    
+end
+
+
+
+-- 合服后处理排行榜
+function UpdateAfterMergeSrv(mergeSrvTb)
+    
+end
+
 
 function GetRankList()
     return rankList

+ 152 - 16
script/module/godsArea/GodsAreaNS.lua

@@ -32,6 +32,8 @@ local Log = require("common.Log")
 local Timer = require("core.Timer")
 local CommonDB = require("common.CommonDB")
 local RoleSystemExcel = require("excel.roleSystem")
+local Grid = require("bag.Grid")
+local MonsterGrid = require("monster.MonsterGrid")
 
 -- 战败通知邮件Id
 local DEFAULT_MIAL_ID = 7021
@@ -40,15 +42,19 @@ local REWARD_MAIL_ID = 7020
 
 local REWARD_MAIL_ID2 = 7022
 
-
-
 local FAIL_TAG = "fail"
 local SUCC_TAG = "succ"
 
+
+local MONSTER_SRV_NAME = "1服"
+local SRV_BASE_NUM = 810537
+
+
+
 MailQueue = {
     uidArray = {},
-    insertMaxNum = 100, --一次最多插入数据库数量
-    repeatMaxTimes = 3,
+    insertMaxNum = 100, -- 一次最多插入数据库的邮件数量
+    repeatMaxTimes = 3, -- 第一次失败后重试次数
     repeatTb = {}
 }
 
@@ -122,6 +128,7 @@ local function generateShowInfo(human)
         level = human.db.lv,
         uid = human.db._id,
         serverId = Config.SVR_INDEX,
+        power = human.attr[RoleDefine.ZHANDOULI],
     }
 
     showInfo.head = RoleHeadLogic.getRoleAppearance(human, RoleHeadLogic.HEAD_TYPE_1)
@@ -133,6 +140,25 @@ local function generateShowInfo(human)
     return showInfo
 end
 
+local function calcMOnsterPower(monsterOutID)
+    local power = 0
+    local objList = MonsterGrid.createMonsterObjListByMonsterOutID(monsterOutID)
+    if not objList then
+        return power
+    end
+
+    for _, monster in ipairs(objList) do
+        power = power + (monster.power or 0)
+    end
+
+    return power
+end
+
+local function getPlayerSrvIdx(human)
+    local newUniqueTag = human.db.newUniqueTag
+    local tbl = Util.split(newUniqueTag, "|")
+    return tbl[2]
+end
 
 local function getRankReward(rank)
     local rewardCfg = GodsAreaConfig.reward
@@ -176,7 +202,6 @@ local function getCorrectUuidArray(uid2RankTb)
     return uidArray
 end
 
-
 local function writeLog(logStr)
     Log.write(Log.LOGID_OSS_GODSAREA_MAIL, logStr)
 end
@@ -195,6 +220,20 @@ local function sendMail(mailId, receiverUuid, itemArray, arg)
 end
 
 
+
+
+
+
+-- local function timed_clear_videoCache(playerUid)
+--     local human = ObjHuman.onlineUuid[playerUid]
+--     if not human then
+--         return
+--     end
+
+--     human.GodsAreaVideoArray = nil
+-- end
+
+
 -- GM,清理所有诸神圣域的称号
 function GM_ClearChenghao(human)
     for _, rankCfg in ipairs(GodsAreaConfig.rankList) do
@@ -253,7 +292,7 @@ end
 
 -- 更新玩家英雄数据
 -- 参数heroUuid, opType 都没有时标识更新全部英雄数据
--- opType 表示更新类型, 0-删除, 1-更新
+-- opType: 操作类型, 0-删除, 1-更新单个英雄数据, 2- 更新所有英雄数据
 function UpdateHeroData(human, heroUuid, opType)
     if not isOpen(human) then
         return
@@ -266,8 +305,12 @@ function UpdateHeroData(human, heroUuid, opType)
     local heroInfoList = {opType = 1}
     if opType and opType == 0 then
         heroInfoList.opType = 0
-        heroInfoList.heroUuid = heroUuid
+        heroInfoList.removeHeroUuid = heroUuid
     else
+        if not opType and not heroUuid then
+            heroInfoList.opType = 2
+        end
+
         heroInfoList.heroList = getHeroListInfo(human, heroUuid)
         if not heroInfoList.heroList then
             return
@@ -326,8 +369,6 @@ end
 
 
 
-
-
 -- 查询排行榜信息
 function Query_RankList(human)
     if not isOpen(human) then
@@ -416,13 +457,40 @@ function UpdatePlayerBaseInfo(human, newPlayerInfo)
     local msgData = InnerMsg.lw.LW_GODSATREA_UPDATE_PLAYER_BASE_INFO
     msgData.playerUid = human.db._id
     msgData.playerInfo = newPlayerInfo or {}
+
+    InnerMsg.sendMsg(0, msgData)
 end
 
 -- 通知跨服, 更新玩家英雄数据
 function UpdatePlayerHeroInfo(human, newPlayerInfo)
     local msgData = InnerMsg.lw.LW_GODSATREA_UPDATE_PLAYER_HERO_INFO
     msgData.playerUid = human.db._id
-    msgData.playerInfo = newPlayerInfo or {}
+    msgData.power = human.attr[RoleDefine.ZHANDOULI]
+    msgData.heroInfo = newPlayerInfo or {}
+
+    InnerMsg.sendMsg(0, msgData)
+end
+
+-- 客户端请求排行榜奖励
+function Query_RankReward(human)
+    local msgRet = Msg.gc.GC_GODSAREA_GET_RANK_REWARD
+    local rewardList = msgRet.rewardList
+    rewardList[0] = 0
+
+    for k,v in ipairs(GodsAreaConfig.reward) do
+        rewardList[0] = k
+        rewardList[k].rankLeft = v.rankArea[1]
+        rewardList[k].rankRight = v.rankArea[2]
+
+        local itemList = rewardList[k].itemList
+        itemList[0] = 0
+        for idx, itemCfg in ipairs(v.awardList) do
+            itemList[0] = idx
+            Grid.makeItem(itemList[idx], itemCfg[1], itemCfg[2])
+        end
+    end
+
+    Msg.send(msgRet, human.fd)
 end
 
 
@@ -436,22 +504,52 @@ function NS_Send_RankList(playerUid, myRank, rankList)
         return
     end
 
+    local srvIdx = getPlayerSrvIdx(human)
     local msgRet = Msg.gc.GC_GODSAREA_QUERY_RANKLIST
-    msgRet.myRank = myRank
-    local msgRankList = msgRet.rankList
+    msgRet.myRank.body = RoleHeadLogic.getRoleAppearance(human, RoleHeadLogic.HEAD_TYPE_3)
+    msgRet.myRank.name = human.db.name
+    msgRet.myRank.uid = playerUid
+    msgRet.myRank.rank = myRank
+    msgRet.myRank.power = human.attr[RoleDefine.ZHANDOULI] or 0
+    msgRet.myRank.serverName = srvIdx .. "服"
+    msgRet.myRank.head = RoleHeadLogic.getRoleAppearance(human, RoleHeadLogic.HEAD_TYPE_1)
+    msgRet.myRank.headFrame = RoleHeadLogic.getRoleAppearance(human, RoleHeadLogic.HEAD_TYPE_2)
 
+    msgRet.attrs[0] = 0
+    if myRank ~= 0 then
+        local rankCfg = GodsAreaConfig.rankList[myRank]
+        local chenghaoCfg = RoleExcel.chenghao[rankCfg.chenghaoID]
+
+        for k, v in ipairs(chenghaoCfg.attrs) do
+            msgRet.attrs[0] = k
+            msgRet.attrs[k].key = v[1]
+            msgRet.attrs[k].value = v[2]
+        end
+    end
+
+
+    local msgRankList = msgRet.rankList
     msgRankList[0] = 0
+
     for rank, playerInfo in ipairs(rankList) do
         msgRankList[0] = rank
         msgRankList[rank].body = playerInfo.body
         msgRankList[rank].name = playerInfo.name
         msgRankList[rank].rank = rank
+        msgRankList[rank].head = playerInfo.head
+        msgRankList[rank].headFrame = playerInfo.headFrame
 
         if playerInfo.uid then -- 真实玩家
             msgRankList[rank].uid = playerInfo.uid
+            msgRankList[rank].power = playerInfo.power or 999999
+            local playerServerIdx  = math.max((playerInfo.serverId or 0) - SRV_BASE_NUM, 1)
+            msgRankList[rank].serverName = playerServerIdx .. "服"
         else
             local npcCfg = GodsAreaConfig.rankList[rank]
-            msgRankList[rank].uid = tostring(npcCfg.monsterOutID)
+            local monsterOutID = npcCfg.monsterOutID
+            msgRankList[rank].uid = tostring(monsterOutID)
+            msgRankList[rank].power = calcMOnsterPower(monsterOutID)
+            msgRankList[rank].serverName = MONSTER_SRV_NAME
         end
     end
 
@@ -616,20 +714,35 @@ function NS_Change_Chenghao(playerUid, newRank, isWinner, enemyName)
 end
 
 -- 跨服返回录像数据
-function NS_Query_CombatVideo(playerUid, videoData)
+function NS_Query_CombatVideo(isFinish, playerUid, videoData)
     local human = ObjHuman.onlineUuid[playerUid]
     if not human then
         return
     end
 
 
+    if next(videoData) then
+        if not human.GodsAreaVideoArray then
+            human.GodsAreaVideoArray = {}
+            -- Timer.addLater(3, timed_clear_videoCache, playerUid)
+        end
+
+        human.GodsAreaVideoArray[#human.GodsAreaVideoArray+1] = videoData
+
+        if isFinish == 0 then
+            return
+        end
+    end
+
+
     local msgRet = Msg.gc.GC_GODSAREA_QUERY_COMBATVIDEO
     msgRet.videoList[0] = 0
+    local videoCnt = human.GodsAreaVideoArray and #human.GodsAreaVideoArray or 0
 
-    for i = 1, #videoData do
+    for i = 1, videoCnt do
         if msgRet.videoList[0] < #msgRet.videoList then
             msgRet.videoList[0] = i
-            local combatVideo = videoData[i]
+            local combatVideo = human.GodsAreaVideoArray[i]
             local combatInfo = combatVideo.combatInfo
             local net = msgRet.videoList[i]
             RoleLogic.makeRoleBase(combatInfo.attacker, net.atkData)
@@ -652,6 +765,8 @@ function NS_Query_CombatVideo(playerUid, videoData)
         end
     end
 
+    human.GodsAreaVideoArray = nil
+
     Msg.send(msgRet, human.fd)
 end
 
@@ -676,6 +791,27 @@ function NS_SendReward(uid2RankTb)
     MailQueue:insertDB()
 end
 
+-- 收到跨服通知,更新玩家基础数据
+function NS_UpdatePlayerBaseInfo(playerUid)
+    local human = ObjHuman.onlineUuid[playerUid]
+    if not human then
+        local db = RoleDBLogic.getDb(playerUid)
+        if not db then
+            return
+        end
+
+        human = {}
+        human.db = db
+    end
+
+    local msgData = InnerMsg.lw.LW_GODSATREA_UPDATE_PLAYER_BASE_INFO
+    msgData.playerUid = human.db._id
+    msgData.playerInfo = generateShowInfo(human)
+    msgData.playerInfo.heroList = nil
+
+    InnerMsg.sendMsg(0, msgData)
+end
+
 
 
 

+ 4 - 0
script/module/godsArea/Handler.lua

@@ -14,4 +14,8 @@ end
 
 function CG_GODSAREA_QUERY_COMBATVIDEO(human, msg)
     GodsAreaNS.Query_CombatVideo(human, msg.rank, msg.uid)
+end
+
+function CG_GODSAREA_GET_RANK_REWARD(human, msg)
+    GodsAreaNS.Query_RankReward(human)
 end

+ 25 - 4
script/module/godsArea/Proto.lua

@@ -1,13 +1,18 @@
 local RoleBase = require("role.Proto").RoleBase
 local Attr = require("role.Proto").Attr
 local HeroInfo = require("hero.Proto").HeroInfo
+local ItemData = require("bag.Proto").ItemData
 
 -- 排行榜的简单信息
 RANK_INFO = {
     {"body",            1,      "int"},     -- 形象
     {"name",            1,      "string"},  -- 名字
     {"rank",            1,      "byte"},    -- 排名
-    {"uid",             1,      "string"},  -- 唯一标识
+    {"uid",             1,      "string"},  -- 玩家唯一标识
+    {"power",           1,      "int"},     -- 战力
+    {"serverName",      1,      "string"},  -- 区服名
+    {"head",            1,      "int"},     -- 头像
+    {"headFrame",       1,      "int"},     -- 头像框
 }
 
 -- 英雄的简单信息
@@ -30,12 +35,20 @@ GODSAREA_COMBAT_VIDEO_INFO = {
 }
 
 
+RANK_REWARD_INFO = {
+    {"rankLeft",        1,      "byte"},          -- 排名区间
+    {"rankRight",       1,      "byte"},          -- 排名区间
+    {"itemList",        4,      ItemData},        -- 奖励数据
+}
+
+
 -- 查询排行榜信息
 CG_GODSAREA_QUERY_RANKLIST = {}
 
 GC_GODSAREA_QUERY_RANKLIST = {
-    {"myRank",          1,              "byte"},         -- 自己的排名
-    {"rankList",        49,              RANK_INFO},     -- 排行榜信息
+    {"myRank",          1,              RANK_INFO},      -- 自己的排名
+    {"attrs",           2,              Attr},           -- 自己排名获得的加成属性
+    {"rankList",        49,             RANK_INFO},      -- 排行榜信息
 }
 
 
@@ -69,7 +82,6 @@ CG_GODSAREA_CHALLENGE = {
 
 
 
-
 -- 查看战斗录像
 CG_GODSAREA_QUERY_COMBATVIDEO = {
     {"rank",            1,        "byte"},         -- 排名
@@ -78,3 +90,12 @@ CG_GODSAREA_QUERY_COMBATVIDEO = {
 GC_GODSAREA_QUERY_COMBATVIDEO = {
     {"videoList",     10,     GODSAREA_COMBAT_VIDEO_INFO},     -- 回放记录列表
 }
+
+
+-- 获取排名奖励
+CG_GODSAREA_GET_RANK_REWARD = {
+}
+
+GC_GODSAREA_GET_RANK_REWARD = {
+    {"rewardList",            9,        RANK_REWARD_INFO},         -- 奖励
+}