From 21af42b4f4faaba0d2ccc6ee731c1deec4f514ab Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 27 一月 2022 11:10:38 +0800
Subject: [PATCH] 5349 【主干】【gt_1.103.1】【yn_1.0.1】【bt3_1.102.1】【bt4】【bt5】【bt5_1.101.1】【bt6】开服活动合服后上线的无法结算奖励bug

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py |  175 +++++++++++++++++++++------------------------------------
 1 files changed, 65 insertions(+), 110 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py
index 58c72e2..30a16b1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py
@@ -27,8 +27,6 @@
 import PlayerFamilyRedPacket
 import ItemCommon
 
-OSCBillAward_IsAutoMail = True # 排名奖励是否过天直接系统自动发放,如果不是则玩家可手动领取
-
 (
 OSC_BillLimitValue, # 上榜限制值
 OSC_StartDay, # 开启开服天
@@ -140,8 +138,6 @@
     awardEndOpenServerDay = IpyGameDataPY.GetFuncCfg("OSCBillboardOpen", 2)
     if openServerDay <= awardEndOpenServerDay:
         GameWorld.DebugLog("开服活动中,过天不处理!openServerDay=%s,awardEndOpenServerDay=%s" % (openServerDay, awardEndOpenServerDay))
-        if OSCBillAward_IsAutoMail:
-            __DoOSCBillAward_OnDayAutoGet(curPlayer, openServerDay)
         return False
     
     endMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_EndMailState)
@@ -149,67 +145,27 @@
         GameWorld.DebugLog("已经处理过开服活动奖励补发!")
         return True
     
-    billAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_BillAwardRecord)
-    GameWorld.DebugLog("处理开服活动补发邮件, billAwardRecord=%s" % billAwardRecord, curPlayer.GetPlayerID())
-    
-    sendMailCampTypeList = []
     for campType in ShareDefine.Def_Campaign_Type_List:
-        if not billAwardRecord & pow(2, campType):
-            sendMailCampTypeList.append(campType)
-            
         tagAwardIpyList = GetOSCTagAwardIpyList(campType)
         for index, tagAwardIpyData in enumerate(tagAwardIpyList):
             DoGiveOSCTagAward(curPlayer, campType, index, tagAwardIpyData, True)
             
-    GameWorld.DebugLog("    未领取奖励的活动榜单列表: %s" % sendMailCampTypeList)
-    if sendMailCampTypeList:
-        __SendOSCGameServerQuery(curPlayer, sendMailCampTypeList, True)
-        
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_EndMailState, 1)
     return True
 
-def __DoOSCBillAward_OnDayAutoGet(curPlayer, openServerDay):
-    ## 排行奖励过天自动领取处理
-    playerID = curPlayer.GetPlayerID()
-    
-    billAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_BillAwardRecord)
-    #GameWorld.DebugLog("过天系统自动帮玩家领取开服活动排行奖励! billAwardRecord=%s" % billAwardRecord, playerID)
-    
-    sendMailCampTypeList = []
-    OSCBillboardDataLimitDict = IpyGameDataPY.GetFuncEvalCfg("OSCBillboardOpen", 1)
-    for campType in ShareDefine.Def_Campaign_Type_List:
-        campTypeS = str(campType)
-        if campTypeS not in OSCBillboardDataLimitDict:
-            continue
-        endOpenServerDay = OSCBillboardDataLimitDict[campTypeS][OSC_EndDay]
-        if openServerDay <= endOpenServerDay:
-            #GameWorld.DebugLog("    该开服活动还未结束,无需结算!campType=%s,openServerDay=%s <= endOpenServerDay=%s" 
-            #                   % (campType, openServerDay, endOpenServerDay), playerID)
-            continue
-        if billAwardRecord & pow(2, campType):
-            #GameWorld.DebugLog("    该开服活动排行奖励已经领取过!campType=%s" % (campType), playerID)
-            continue
-        sendMailCampTypeList.append(campType)
-            
-    #GameWorld.DebugLog("    未领取奖励的活动榜单列表: %s" % sendMailCampTypeList, playerID)
-    if sendMailCampTypeList:
-        __SendOSCGameServerQuery(curPlayer, sendMailCampTypeList, True)
-        
-    return
-
-def __SendOSCGameServerQuery(curPlayer, campTypeList, isEndMail=False):
-    # 以下为需要向GameServer请求领取奖励所需信息
-    # @param isEndMail: 是否使用邮件发放
-    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_QueryOpenServerAwardState) == 1:
-        #已经在查询中
-        GameWorld.DebugLog("    已经在查询中...")
-        return
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_QueryOpenServerAwardState, 1)
-    
-    msgListStr = str([campTypeList, isEndMail])
-    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'OpenServerCampaignAward', msgListStr, len(msgListStr))
-    GameWorld.DebugLog("    __SendOSCGameServerQuery campTypeList=%s, isEndMail=%s" % (campTypeList, isEndMail), curPlayer.GetPlayerID())
-    return
+#def __SendOSCGameServerQuery(curPlayer, campTypeList, isEndMail=False):
+#    # 以下为需要向GameServer请求领取奖励所需信息
+#    # @param isEndMail: 是否使用邮件发放
+#    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_QueryOpenServerAwardState) == 1:
+#        #已经在查询中
+#        GameWorld.DebugLog("    已经在查询中...")
+#        return
+#    curPlayer.SetDict(ChConfig.Def_PlayerKey_QueryOpenServerAwardState, 1)
+#    
+#    msgListStr = str([campTypeList, isEndMail])
+#    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'OpenServerCampaignAward', msgListStr, len(msgListStr))
+#    GameWorld.DebugLog("    __SendOSCGameServerQuery campTypeList=%s, isEndMail=%s" % (campTypeList, isEndMail), curPlayer.GetPlayerID())
+#    return
 
 
 #// AB 11 开服活动奖励 #tagCMOpenServerCampaignAward
@@ -249,11 +205,9 @@
     
     # 排行奖励
     if awardType == 1:
-        if OSCBillAward_IsAutoMail:
-            GameWorld.DebugLog("开服排名奖励玩家不可手动领取!")
-            return
-        __SendOSCGameServerQuery(curPlayer, [campaignType])
-        
+        # 自动发放,不可手动领取
+        return
+    
     # 目标奖励
     elif awardType == 2:
         tagAwardIpyList = GetOSCTagAwardIpyList(campaignType)
@@ -307,55 +261,56 @@
 
 def DoGiveOSCBillAward(curPlayer, awardResultList):
     ## 给排行奖励
-    campTypeList, isEndMail, queryResultList = awardResultList
-    if len(campTypeList) != len(queryResultList):
-        return
-    
-    job = str(curPlayer.GetJob())
-    for i, campaignType in enumerate(campTypeList):
-        billAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_BillAwardRecord)
-        if billAwardRecord & pow(2, campaignType):
-            GameWorld.DebugLog("    已经领取过该排行活动奖励, campaignType=%s" % (campaignType), curPlayer.GetPlayerID())
-            continue
-        
-        order = queryResultList[i]
-        billAwardInfo = None
-        billRankAwardIpyList = IpyGameDataPY.GetIpyGameDataList("OSCBillRankAward", campaignType)
-        if not billRankAwardIpyList:
-            continue
-        for billRankIpyData in billRankAwardIpyList:
-            if (billRankIpyData.GetRankA() <= order <= billRankIpyData.GetRankB()) \
-                or (not billRankIpyData.GetRankB() and billRankIpyData.GetRankA() == order):
-                billAwardInfo = billRankIpyData.GetRankAward()
-                break
-            
-        if not billAwardInfo:
-            GameWorld.DebugLog("    玩家名次没有奖励!campaignType=%s,order=%s" % (campaignType, order), curPlayer.GetPlayerID())
-            continue
-        
-        billAwardDict = billAwardInfo
-        if job not in billAwardDict:
-            GameWorld.ErrLog("没有配置该职业对应的开服活动榜单奖励!campaignType=%s,job=%s" % (campaignType, job))
-            continue
-        awardItemList = billAwardDict[job]
-        
-        updBillAwardRecord = billAwardRecord|pow(2, campaignType)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_BillAwardRecord, updBillAwardRecord)
-        GameWorld.DebugLog("    发放活动榜单奖励,campaignType=%s,order=%s,awardItemList=%s,updBillAwardRecord=%s" 
-                           % (campaignType, order, awardItemList, updBillAwardRecord), curPlayer.GetPlayerID())
-        
-        drDict = {"CampaignType":campaignType, "Order":order}
-        mailTypeKey = "OSCBillAward%s" % campaignType
-        mailParamList = [order]
-        __DoGiveOSCAwardItem(curPlayer, awardItemList, drDict, isEndMail, mailTypeKey, mailParamList)
-        #红包奖励
-        redPacketIDDict = IpyGameDataPY.GetFuncEvalCfg('OSCRankRedpackAward', 1, {})
-        redPacketID = GameWorld.GetDictValueByRangeKey(redPacketIDDict, order, 0)
-        if redPacketID:
-            PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, redPacketID)
-        #if not isEndMail:
-        Sync_OpenServerCampaignAward(curPlayer, campaignType)
     return
+#    campTypeList, isEndMail, queryResultList = awardResultList
+#    if len(campTypeList) != len(queryResultList):
+#        return
+#    
+#    job = str(curPlayer.GetJob())
+#    for i, campaignType in enumerate(campTypeList):
+#        billAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_BillAwardRecord)
+#        if billAwardRecord & pow(2, campaignType):
+#            GameWorld.DebugLog("    已经领取过该排行活动奖励, campaignType=%s" % (campaignType), curPlayer.GetPlayerID())
+#            continue
+#        
+#        order = queryResultList[i]
+#        billAwardInfo = None
+#        billRankAwardIpyList = IpyGameDataPY.GetIpyGameDataList("OSCBillRankAward", campaignType)
+#        if not billRankAwardIpyList:
+#            continue
+#        for billRankIpyData in billRankAwardIpyList:
+#            if (billRankIpyData.GetRankA() <= order <= billRankIpyData.GetRankB()) \
+#                or (not billRankIpyData.GetRankB() and billRankIpyData.GetRankA() == order):
+#                billAwardInfo = billRankIpyData.GetRankAward()
+#                break
+#            
+#        if not billAwardInfo:
+#            GameWorld.DebugLog("    玩家名次没有奖励!campaignType=%s,order=%s" % (campaignType, order), curPlayer.GetPlayerID())
+#            continue
+#        
+#        billAwardDict = billAwardInfo
+#        if job not in billAwardDict:
+#            GameWorld.ErrLog("没有配置该职业对应的开服活动榜单奖励!campaignType=%s,job=%s" % (campaignType, job))
+#            continue
+#        awardItemList = billAwardDict[job]
+#        
+#        updBillAwardRecord = billAwardRecord|pow(2, campaignType)
+#        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_BillAwardRecord, updBillAwardRecord)
+#        GameWorld.DebugLog("    发放活动榜单奖励,campaignType=%s,order=%s,awardItemList=%s,updBillAwardRecord=%s" 
+#                           % (campaignType, order, awardItemList, updBillAwardRecord), curPlayer.GetPlayerID())
+#        
+#        drDict = {"CampaignType":campaignType, "Order":order}
+#        mailTypeKey = "OSCBillAward%s" % campaignType
+#        mailParamList = [order]
+#        __DoGiveOSCAwardItem(curPlayer, awardItemList, drDict, isEndMail, mailTypeKey, mailParamList)
+#        #红包奖励
+#        redPacketIDDict = IpyGameDataPY.GetFuncEvalCfg('OSCRankRedpackAward', 1, {})
+#        redPacketID = GameWorld.GetDictValueByRangeKey(redPacketIDDict, order, 0)
+#        if redPacketID:
+#            PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, redPacketID)
+#        #if not isEndMail:
+#        Sync_OpenServerCampaignAward(curPlayer, campaignType)
+#    return
 
 def __DoGiveOSCAwardItem(curPlayer, giveItemList, drDict, isEndMail, mailTypeKey, mailParamList):
     ## 给开服活动奖励 [[itemID, itemCount], ...], 默认绑定

--
Gitblit v1.8.0