| | |
| | | import PlayerFamilyRedPacket
|
| | | import ItemCommon
|
| | |
|
| | | OSCBillAward_IsAutoMail = True # 排名奖励是否过天直接系统自动发放,如果不是则玩家可手动领取
|
| | |
|
| | | (
|
| | | OSC_BillLimitValue, # 上榜限制值
|
| | | OSC_StartDay, # 开启开服天
|
| | |
| | | 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)
|
| | |
| | | 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(" 已经在查询中...")
|
| | |
| | | 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):
|
| | |
| | | return
|
| | |
|
| | | def DoGiveOSCTagAward(curPlayer, campaignType, index, tagAwardIpyData, isEndMail=False):
|
| | | ## 给目标奖励
|
| | |
|
| | | tagAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_TagAwardRecord % campaignType)
|
| | | if tagAwardRecord & pow(2, index):
|
| | |
| | | return
|
| | |
|
| | | def DoGiveOSCBillAward(curPlayer, awardResultList):
|
| | | ## 给排行奖励
|
| | | campTypeList, isEndMail, queryResultList = awardResultList
|
| | | if len(campTypeList) != len(queryResultList):
|
| | | return
|
| | |
| | | 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):
|