From 8418473f574503da7bcd4891e9b9ce4af456147f Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 23 九月 2019 15:36:25 +0800 Subject: [PATCH] 8279 【后端】【主干】开服排行榜的奖励过天通过邮件发放 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py | 46 +++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 43 insertions(+), 3 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 76d9f06..595dc4d 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py +++ b/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): -- Gitblit v1.8.0