From 3d214c60456c914be4fde1b3c07e30d6729e6315 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 21 八月 2018 15:02:20 +0800
Subject: [PATCH] fix:【2728】新增任务接口
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py | 115 ++++++++++++++++++++++++++++++++++++---------------------
1 files changed, 73 insertions(+), 42 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
index f90eea0..dc7b415 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
@@ -38,7 +38,9 @@
# 活动中同步活动信息
if actCostRebateInfo.get(ShareDefine.ActKey_State):
SyncBossRebornInfo(curPlayer)
+ SyncBossRebornPlayerInfo(curPlayer)
return
+
def RefreshOperationAction_BossReborn():
playerManager = GameWorld.GetPlayerManager()
@@ -58,43 +60,48 @@
bossRebornID = actBossRebornInfo.get(ShareDefine.ActKey_ID, 0)
state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
- playerBossRebornID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornID) # 玩家身上的活动ID
+ playerBossRebornID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornID) # 玩家身上的活动ID
# 活动ID 相同的话不处理
if bossRebornID == playerBossRebornID:
#GameWorld.DebugLog("BOSS复活活动ID不变,不处理!", curPlayer.GetPlayerID())
return
- BRWorldLV = actBossRebornInfo.get(ShareDefine.ActKey_WorldLV, 0)
- playerBRWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionWorldLV)
- GameWorld.DebugLog("BOSS复活重置! costRebateID=%s,playerCostRebateID=%s,state=%s,BRWorldLV=%s,playerBRWorldLV=%s"
- % (bossRebornID, playerBossRebornID, state, BRWorldLV, playerBRWorldLV), playerID)
+ templateID = actBossRebornInfo.get(ShareDefine.ActKey_TemplateID, 0)
+ playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornTemplateID)
+
+ GameWorld.DebugLog("BOSS复活重置! costRebateID=%s,playerCostRebateID=%s,state=%s,templateID=%s,playerTemplateID=%s"
+ % (bossRebornID, playerBossRebornID, state, templateID, playerTemplateID), playerID)
# 未领取的奖励邮件发放
- __SendBossRebornMail(curPlayer, playerBRWorldLV)
+ __SendBossRebornMail(curPlayer, playerTemplateID)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossRebornID, bossRebornID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionWorldLV, BRWorldLV)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossRebornTemplateID, templateID)
for brid in ChConfig.BossRebornActIDList:
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionCurTimes % brid, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionGotTimes % brid, 0)
-
+
SyncBossRebornInfo(curPlayer)
+ SyncBossRebornPlayerInfo(curPlayer)
return True
-def __SendBossRebornMail(curPlayer, playerBRWorldLV):
- #未领取的奖励邮件发放
+
+def __SendBossRebornMail(curPlayer, playerTemplateID):
+ # 未领取的奖励邮件发放
+ ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("BossReborn", {'TemplateID':playerTemplateID}, True)
+ if not ipyDataList:
+ return
+
totalItemDict = {}
- for brid in ChConfig.BossRebornActIDList:
- ipyData = IpyGameDataPY.GetIpyGameData('BossReborn', brid)
- if not ipyData:
- continue
+ for ipyData in ipyDataList:
+ brid = ipyData.GetID()
singleTimes = ipyData.GetSingleTimes()
curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionCurTimes % brid)
gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionGotTimes % brid)
canGotCnt = (curTimes - gotTimes) / singleTimes
if not canGotCnt:
continue
- itemDict = __GetAwardItem(curPlayer, playerBRWorldLV, ipyData, canGotCnt)
+ itemDict = __GetAwardItem(curPlayer, ipyData, canGotCnt)
GameWorld.AddDictValue(totalItemDict, itemDict)
#去掉复活点道具
@@ -105,6 +112,7 @@
PlayerControl.SendMailByKey('BossFHUnGetMail', [curPlayer.GetID()], totalItemList)
return
+
def AddBossRebornActionCnt(curPlayer, actionID, addCnt=1):
'''增加boss复活相关活动完成次数'''
#判断活动是否开启
@@ -112,7 +120,8 @@
state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
if not state:
return
- ipyData = IpyGameDataPY.GetIpyGameData('BossReborn', actionID)
+ playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornTemplateID)
+ ipyData = IpyGameDataPY.GetIpyGameData('BossReborn', playerTemplateID, actionID)
if not ipyData:
return
totalTimes = ipyData.GetTotalTimes()
@@ -123,12 +132,14 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionCurTimes % actionID, curTimes + addCnt)
- SyncBossRebornInfo(curPlayer, actionID)
+ SyncBossRebornPlayerInfo(curPlayer, actionID)
return
+
def GetBossRebornActionAward(curPlayer, actionID):
'''领取boss复活活动奖励'''
- ipyData = IpyGameDataPY.GetIpyGameData('BossReborn', actionID)
+ playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornTemplateID)
+ ipyData = IpyGameDataPY.GetIpyGameData('BossReborn', playerTemplateID, actionID)
if not ipyData:
return
singleTimes = ipyData.GetSingleTimes()
@@ -138,8 +149,7 @@
return
#给奖励
- curWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionWorldLV)
- awardDict = __GetAwardItem(curPlayer, curWorldLV, ipyData)
+ awardDict = __GetAwardItem(curPlayer, ipyData)
# 检查背包
needSpace = len(awardDict)
packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
@@ -153,40 +163,25 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionGotTimes % actionID, newGotTimes)
for itemID, itemCnt in awardDict.items():
ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 1, [IPY_GameWorld.rptItem])
- SyncBossRebornInfo(curPlayer, actionID)
+ SyncBossRebornPlayerInfo(curPlayer, actionID)
return
-def __GetAwardItem(curPlayer, worldLV, ipyData, times=1):
- worldLVList = ipyData.GetWorldLVList()
- playerLV = curPlayer.GetLV()
-
- awardIndex = len(worldLVList) - 1
- for i, lv in enumerate(worldLVList):
- prelv = 0 if i ==0 else worldLVList[i-1]
- if prelv<=playerLV < lv:
- awardIndex = i
- break
+
+def __GetAwardItem(curPlayer, ipyData, times=1):
awardDict = {}
- for i in xrange(3): #目前配置3个奖励
- if not hasattr(ipyData, 'GetRewardItemID%s' % (i + 1)):
- break
- itemIDList = getattr(ipyData, 'GetRewardItemID%s' % (i + 1))()
- itemCntList = getattr(ipyData, 'GetRewardItemCnt%s' % (i + 1))()
- if awardIndex >= len(itemIDList) or awardIndex >= len(itemCntList):
- GameWorld.ErrLog('BOSS复活表奖励配置错误!')
- return awardDict
- itemID, itemCnt = itemIDList[awardIndex], itemCntList[awardIndex]
+ for itemID, itemCnt, isbind in ipyData.GetReward():
if not itemID or not itemCnt:
continue
awardDict[itemID] = awardDict.get(itemID, 0) + itemCnt * times
return awardDict
-def SyncBossRebornInfo(curPlayer, actID= -1):
+
+def SyncBossRebornPlayerInfo(curPlayer, actID=-1):
#通知当前次数、已领次数
packData = ChPyNetSendPack.tagMCBossRebornPlayerInfo()
packData.DataList = []
- if actID !=-1:
+ if actID != -1:
syneActIDList = [actID]
else:
syneActIDList = []
@@ -207,3 +202,39 @@
packData.Count = len(packData.DataList)
NetPackCommon.SendFakePack(curPlayer, packData)
return
+
+
+def SyncBossRebornInfo(curPlayer):
+ actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BossReborn, {})
+ state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
+ if not state:
+ return
+ templateID = actBossRebornInfo.get(ShareDefine.ActKey_TemplateID, 0)
+ if not templateID:
+ return
+ ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("BossReborn", {'TemplateID':templateID}, True)
+ if not ipyDataList:
+ return
+ actInfo = ChPyNetSendPack.tagMCBossRebornInfo()
+ actInfo.Clear()
+ actInfo.StartDate = actBossRebornInfo.get(ShareDefine.ActKey_StartDate, "")
+ actInfo.EndtDate = actBossRebornInfo.get(ShareDefine.ActKey_EndDate, "")
+ actInfo.LimitLV = actBossRebornInfo.get(ShareDefine.ActKey_LVLimit, 0)
+ actInfo.TaskInfo = []
+ for ipyData in ipyDataList:
+ taskInfo = ChPyNetSendPack.tagMCBossRebornTaskInfo()
+ taskInfo.TaskID = ipyData.GetID()
+ taskInfo.TotalTimes = ipyData.GetTotalTimes()
+ taskInfo.SingleTimes = ipyData.GetSingleTimes()
+ taskInfo.AwardItem = []
+ for itemID, itemCnt, isBind in ipyData.GetReward():
+ awardItem = ChPyNetSendPack.tagMCBossRebornAwardItem()
+ awardItem.ItemID = itemID
+ awardItem.ItemCount = itemCnt
+ awardItem.IsBind = isBind
+ taskInfo.AwardItem.append(awardItem)
+ taskInfo.AwardItemCount = len(taskInfo.AwardItem)
+ actInfo.TaskInfo.append(taskInfo)
+ actInfo.TaskCnt = len(actInfo.TaskInfo)
+ NetPackCommon.SendFakePack(curPlayer, actInfo)
+ return
--
Gitblit v1.8.0