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