From a02d7379e60b7b3fe0ae8d1ada4cf86fc4d0a1be Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 11 九月 2020 14:27:11 +0800
Subject: [PATCH] 1111 媒体卡固定码支持按appid配置;
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py | 66 ++++++++++++++++++++++++++++++---
1 files changed, 60 insertions(+), 6 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 a9e6ec7..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, # 开启开服天
@@ -80,7 +82,13 @@
recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % campaignType)
- if campaignType not in [ShareDefine.Def_Campaign_Type_StoneLV, ShareDefine.Def_Campaign_Type_FightPower] and value <= recordData:
+ if value == recordData:
+ GameWorld.DebugLog(" 开服活动数据等于历史记录, 不更新 campaignType=%s,recordData=%s,updValue=%s"
+ % (campaignType, recordData, value), curPlayer.GetPlayerID())
+ return
+
+ if campaignType not in [ShareDefine.Def_Campaign_Type_StoneLV, ShareDefine.Def_Campaign_Type_FightPower,
+ ShareDefine.Def_Campaign_Type_RuneLV, ShareDefine.Def_Campaign_Type_LingGen, ShareDefine.Def_Campaign_Type_StarLV] and value < recordData:
GameWorld.DebugLog(" 开服活动数据小于历史记录, 不更新 campaignType=%s,recordData=%s,updValue=%s"
% (campaignType, recordData, value), curPlayer.GetPlayerID())
return
@@ -132,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)
@@ -158,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(" 已经在查询中...")
@@ -208,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):
@@ -224,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):
@@ -261,6 +306,7 @@
return
def DoGiveOSCBillAward(curPlayer, awardResultList):
+ ## 给排行奖励
campTypeList, isEndMail, queryResultList = awardResultList
if len(campTypeList) != len(queryResultList):
return
@@ -275,6 +321,8 @@
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):
@@ -305,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):
@@ -331,7 +379,7 @@
for itemInfo in giveItemList:
itemID, itemCount = itemInfo[:2]
isBind = itemInfo[2] if len(itemInfo) > 2 else 1
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem],
+ ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem],
event=[ChConfig.ItemGive_OpenServerCampaign, True, drDict])
return
@@ -358,5 +406,11 @@
NetPackCommon.SendFakePack(curPlayer, oscAwardListPack)
return
-
+def UpdOpenServerCampaignLingGenData(curPlayer):
+ # 记录开服活动数据
+ totalLingGen = curPlayer.GetFreePoint() + PlayerControl.GetMetal(curPlayer) + PlayerControl.GetWood(curPlayer) + \
+ PlayerControl.GetWater(curPlayer) + PlayerControl.GetFire(curPlayer) + PlayerControl.GetEarth(curPlayer)
+ #GameWorld.DebugLog("总灵根: %s" % totalLingGen)
+ UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_LingGen, totalLingGen)
+ return
--
Gitblit v1.8.0