hxp
2019-09-23 8418473f574503da7bcd4891e9b9ce4af456147f
8279 【后端】【主干】开服排行榜的奖励过天通过邮件发放
1个文件已修改
46 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py
@@ -27,6 +27,8 @@
import PlayerFamilyRedPacket
import ItemCommon
OSCBillAward_IsAutoMail = True # 排名奖励是否过天直接系统自动发放,如果不是则玩家可手动领取
(
OSC_BillLimitValue, # 上榜限制值
OSC_StartDay, # 开启开服天
@@ -138,6 +140,8 @@
    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)
@@ -164,9 +168,38 @@
    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("    已经在查询中...")
@@ -214,9 +247,14 @@
        GameWorld.DebugLog("该开服活动领奖已结束!campaignType=%s,openServerDay=%s > awardEndOpenServerDay=%s" % (campaignType, openServerDay, awardEndOpenServerDay))
        return
    
    if awardType == 1:
    # 排行奖励
    if awardType == 1:
        if OSCBillAward_IsAutoMail:
            GameWorld.DebugLog("开服排名奖励玩家不可手动领取!")
            return
        __SendOSCGameServerQuery(curPlayer, [campaignType])
        
    # 目标奖励
    elif awardType == 2:
        tagAwardIpyList = GetOSCTagAwardIpyList(campaignType)
        if not tagAwardIpyList or awardIndex < 0 or awardIndex >= len(tagAwardIpyList):
@@ -230,6 +268,7 @@
    return
def DoGiveOSCTagAward(curPlayer, campaignType, index, tagAwardIpyData, isEndMail=False):
    ## 给目标奖励
    
    tagAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_TagAwardRecord % campaignType)
    if tagAwardRecord & pow(2, index):
@@ -267,6 +306,7 @@
    return
def DoGiveOSCBillAward(curPlayer, awardResultList):
    ## 给排行奖励
    campTypeList, isEndMail, queryResultList = awardResultList
    if len(campTypeList) != len(queryResultList):
        return
@@ -313,8 +353,8 @@
        redPacketID = GameWorld.GetDictValueByRangeKey(redPacketIDDict, order, 0)
        if redPacketID:
            PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, redPacketID)
        if not isEndMail:
            Sync_OpenServerCampaignAward(curPlayer, campaignType)
        #if not isEndMail:
        Sync_OpenServerCampaignAward(curPlayer, campaignType)
    return
def __DoGiveOSCAwardItem(curPlayer, giveItemList, drDict, isEndMail, mailTypeKey, mailParamList):