From f8cbb085900ff5959d302879b8073e5cf79aa322 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 27 十二月 2018 22:28:49 +0800 Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(修复无法领奖bug) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py | 35 ++++++++++++++++++++--------------- 1 files changed, 20 insertions(+), 15 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py index 659ed21..d22198a 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py @@ -389,14 +389,15 @@ return dayPKCountAwardDict = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKAward", 1, {}) # {"次数":[[物品ID,个数,是否绑定], ...], ...} awardPKCountList = dayPKCountAwardDict.keys() + awardPKCountList = [int(k) for k in awardPKCountList] awardPKCountList.sort() - awardPKCountStr = str(awardPKCount) - if awardPKCountStr not in awardPKCountList: + GameWorld.DebugLog(" awardPKCountList=%s" % awardPKCountList, playerID) + if awardPKCount not in awardPKCountList: GameWorld.DebugLog(" 没有该PK次数奖励!") return - awardIndex = awardPKCountList.index(awardPKCountStr) + awardIndex = awardPKCountList.index(awardPKCount) awardStateDictName = ChConfig.Def_PDict_CrossPK_DayPKCountAwardState - awardItemList = dayPKCountAwardDict[awardPKCountStr] + awardItemList = dayPKCountAwardDict[str(awardPKCount)] eventName = "PKCount" drDataDict = {"awardPKCount":awardPKCount} @@ -409,14 +410,15 @@ return dayWinCountAwardDict = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKAward", 2, {}) # {"次数":[[物品ID,个数,是否绑定], ...], ...} awardWinCountList = dayWinCountAwardDict.keys() + awardWinCountList = [int(k) for k in awardWinCountList] awardWinCountList.sort() - awardWinCountStr = str(awardWinCount) - if awardWinCountStr not in awardWinCountList: + GameWorld.DebugLog(" awardWinCountList=%s" % awardWinCountList, playerID) + if awardWinCount not in awardWinCountList: GameWorld.DebugLog(" 没有该胜利次数奖励!", playerID) return - awardIndex = awardWinCountList.index(awardWinCountStr) + awardIndex = awardWinCountList.index(awardWinCount) awardStateDictName = ChConfig.Def_PDict_CrossPK_DayWinCountAwardState - awardItemList = dayWinCountAwardDict[awardWinCountStr] + awardItemList = dayWinCountAwardDict[str(awardWinCount)] eventName = "WinCount" drDataDict = {"awardWinCount":awardWinCount} @@ -483,16 +485,17 @@ ## 邮件发放未领取的每日奖励 playerID = curPlayer.GetPlayerID() awardCountList = awardItemDict.keys() + awardCountList = [int(k) for k in awardCountList] awardCountList.sort() - for i, awardCountStr in enumerate(awardCountList): - awardCount = int(awardCountStr) + GameWorld.DebugLog(" awardCountList=%s" % awardCountList, playerID) + for i, awardCount in enumerate(awardCountList): if dataCount < awardCount: GameWorld.DebugLog("跨服PK每日奖励次数不足: eventName=%s,i=%s,awardCount=%s > dataCount=%s" % (eventName, i, awardCount, dataCount), playerID) break if pow(2, i) & awardState: GameWorld.DebugLog("已领取该跨服PK每日奖励: eventName=%s,i=%s,awardCount=%s" % (eventName, i, awardCount), playerID) continue - awardItemList = awardItemDict[awardCountStr] + awardItemList = awardItemDict[str(awardCount)] GameWorld.Log("邮件发放跨服PK未领取的每日奖励: zoneID=%s,seasonID=%s,eventName=%s,i=%s,awardCount=%s,dataCount=%s,awardState=%s,awardItemList=%s" % (zoneID, seasonID, eventName, i, awardCount, dataCount, awardState, awardItemList), playerID) @@ -536,13 +539,15 @@ if order > 0: PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonOrder % seasonID, order) seasonOrderAwardDict = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKAward", 3, {}) # {"名次":[[物品ID,个数,是否绑定], ...], ...} + awardOrderList = seasonOrderAwardDict.keys() + awardOrderList = [int(k) for k in awardOrderList] + awardOrderList.sort() + GameWorld.DebugLog(" awardOrderList=%s" % awardOrderList, playerID) fromOrder, toOrder = 1, 1 - awardOrderList = sorted(seasonOrderAwardDict.keys()) - for i, awardOrderStr in enumerate(awardOrderList): - awardOrder = int(awardOrderStr) + for i, awardOrder in enumerate(awardOrderList): if order <= awardOrder: toOrder = awardOrder - awardItemList = seasonOrderAwardDict[awardOrderStr] + awardItemList = seasonOrderAwardDict[str(awardOrder)] maxDanLV = IpyGameDataPY.IPY_Data().GetCrossRealmPKDanCount() - 1 # 因为段位等级从0开始,所以最大段位等级要减1 seasonAwardLV = maxDanLV + (len(awardOrderList) - i) GameWorld.Log("获得排名奖励, 更新奖励等级: awardOrderList=%s,i=%s,maxDanLV=%s,seasonAwardLV=%s" % (awardOrderList, i, maxDanLV, seasonAwardLV), playerID) -- Gitblit v1.8.0