From c24be2a64b5db696a92b6afea349c1766f2e699b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 20 三月 2019 14:49:51 +0800
Subject: [PATCH] 3085 【BUG】【2.0】拍卖,拍下物品没有广播
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py | 70 ++++++++++++++++++++++++++--------
1 files changed, 53 insertions(+), 17 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py
index e9dc42f..5044233 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py
@@ -28,6 +28,15 @@
import GameWorld
import ChConfig
+def GetTemplateID(cfgID, dayIndex):
+ if cfgID == None or dayIndex == None:
+ return 0
+ ipyData = IpyGameDataPY.GetIpyGameData("ActCostRebate", cfgID)
+ if not ipyData:
+ return 0
+ templateIDList = ipyData.GetTemplateIDList()
+ templateID = templateIDList[-1] if dayIndex >= len(templateIDList) else templateIDList[dayIndex]
+ return templateID
def OnPlayerLogin(curPlayer):
isReset = __CheckPlayerCostRebateAction(curPlayer)
@@ -64,18 +73,20 @@
if costRebateID == playerCostRebateID:
#GameWorld.DebugLog("消费返利活动ID不变,不处理!", curPlayer.GetPlayerID())
return
-
- templateID = actCostRebateInfo.get(ShareDefine.ActKey_TemplateID, 0)
+ actWorldLV = actCostRebateInfo.get(ShareDefine.ActKey_WorldLV, 0)
+ playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateWorldLV)
+ templateID = GetTemplateID(actCostRebateInfo.get(ShareDefine.ActKey_CfgID, 0), actCostRebateInfo.get(ShareDefine.ActKey_DayIndex, 0))
playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateTemplateID)
GameWorld.DebugLog("消费返利重置! costRebateID=%s,playerCostRebateID=%s,state=%s,templateID=%s,playerTemplateID=%s"
% (costRebateID, playerCostRebateID, state, templateID, playerTemplateID), playerID)
# 未领取的奖励邮件发放
- __SendCostRebateMail(curPlayer, playerTemplateID)
+ __SendCostRebateMail(curPlayer, playerTemplateID, playerWorldLV)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateID, costRebateID)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateTemplateID, templateID)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateWorldLV, actWorldLV)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateGold, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateAwardRecord, 0)
@@ -83,7 +94,7 @@
Sync_CostRebateInfo(curPlayer)
return True
-def __SendCostRebateMail(curPlayer, playerTemplateID):
+def __SendCostRebateMail(curPlayer, playerTemplateID, playerWorldLV):
# 未领取的奖励邮件发放
if not playerTemplateID:
@@ -96,7 +107,7 @@
ipyDataList = IpyGameDataPY.GetIpyGameDataList("CostRebateTemplate", playerTemplateID)
if not ipyDataList:
return
-
+ job = curPlayer.GetJob()
playerID = curPlayer.GetPlayerID()
batchPlayerIDList, batchAddItemList, batchParamList = [], [], []
awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateAwardRecord)
@@ -111,7 +122,7 @@
continue
awardRecord |= pow(2, awardIndex)
- awardItemList = ipyData.GetAwardItemList()
+ awardItemList = __GetItemList(ipyData.GetAwardItemList(), job, playerWorldLV)
batchPlayerIDList.append([playerID])
batchAddItemList.append(awardItemList)
batchParamList.append([needCostGold])
@@ -121,6 +132,23 @@
PlayerControl.SendMailBatch("ConsumptionRebateMail", batchPlayerIDList, batchAddItemList, batchParamList)
return
+
+
+def __GetItemList(itemDict, job, worldLV):
+ #{世界等级范围:[(物品ID,个数,是否绑定), ...]},若物品ID要区分职业则配{世界等级范围:[({职业:物品ID,..},个数,是否绑定), ...]}
+ itemList = []
+ itemInfoList = GameWorld.GetDictValueByRangeKey(itemDict, worldLV, [])
+ for itemInfo in itemInfoList:
+ if type(itemInfo[0]) == dict:
+ itemID = itemInfo[0].get(job)
+ if not itemID:
+ GameWorld.ErrLog('累计充值奖励未配置该职业itemDict=%s,job=%s'%(itemDict, job))
+ continue
+ else:
+ itemID = itemInfo[0]
+ itemList.append([itemID, itemInfo[1], itemInfo[2]])
+ return itemList
+
def AddCostRebateGold(curPlayer, costType, costGold, infoDict):
if costGold <= 0:
@@ -135,7 +163,7 @@
return
actID = actCostRebateInfo.get(ShareDefine.ActKey_ID)
- templateID = actCostRebateInfo.get(ShareDefine.ActKey_TemplateID)
+ templateID = GetTemplateID(actCostRebateInfo.get(ShareDefine.ActKey_CfgID, 0), actCostRebateInfo.get(ShareDefine.ActKey_DayIndex, 0))
if not actID or not templateID:
GameWorld.ErrLog("消费返利活动数据异常!actID=%s,templateID=%s" % (actID, templateID), curPlayer.GetPlayerID())
return
@@ -158,7 +186,7 @@
actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_CostRebate, {})
costRebateID = actCostRebateInfo.get(ShareDefine.ActKey_ID, 0)
state = actCostRebateInfo.get(ShareDefine.ActKey_State, 0)
- templateID = actCostRebateInfo.get(ShareDefine.ActKey_TemplateID, 0)
+ templateID = GetTemplateID(actCostRebateInfo.get(ShareDefine.ActKey_CfgID, 0), actCostRebateInfo.get(ShareDefine.ActKey_DayIndex, 0))
if not state or not templateID:
GameWorld.DebugLog("没有消费返利活动,无法领奖!state=%s,templateID=%s" % (state, templateID), playerID)
return
@@ -187,7 +215,8 @@
return
needCostGold = awardIpyData.GetNeedCostGold()
- awardItemList = awardIpyData.GetAwardItemList()
+ actWorldLV = actCostRebateInfo.get(ShareDefine.ActKey_WorldLV, 0)
+ awardItemList = __GetItemList(awardIpyData.GetAwardItemList(), curPlayer.GetJob(), actWorldLV)
curCostGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateGold)
if curCostGold < needCostGold:
@@ -209,7 +238,7 @@
PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), needCostGold])
for itemID, itemCount, isBind in awardItemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem])
+ ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
addDataDict = {"TemplateID":templateID, "NeedCostGold":needCostGold, "AwardIndex":awardIndex,
"ItemList":str(awardItemList)}
@@ -233,15 +262,22 @@
if not actCostRebateInfo.get(ShareDefine.ActKey_State):
return
- templateIDList = actCostRebateInfo.get(ShareDefine.ActKey_TemplateIDList)
- if not templateIDList:
+ cfgID = actCostRebateInfo.get(ShareDefine.ActKey_CfgID)
+ ipyData = IpyGameDataPY.GetIpyGameData("ActCostRebate", cfgID)
+ if not ipyData:
return
+ templateIDList = ipyData.GetTemplateIDList()
+ if not templateIDList:
+ return
+ job = curPlayer.GetJob()
+ actWorldLV = actCostRebateInfo.get(ShareDefine.ActKey_WorldLV, 0)
+ openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
actInfo = ChPyNetSendPack.tagMCCostRebateInfo()
- actInfo.StartDate = actCostRebateInfo.get(ShareDefine.ActKey_StartDate, "")
- actInfo.EndtDate = actCostRebateInfo.get(ShareDefine.ActKey_EndDate, "")
- actInfo.LimitLV = actCostRebateInfo.get(ShareDefine.ActKey_LVLimit, 0)
- actInfo.IsDayReset = actCostRebateInfo.get(ShareDefine.ActKey_IsDayReset, 0)
+ actInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
+ actInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
+ actInfo.LimitLV = ipyData.GetLVLimit()
+ actInfo.IsDayReset = ipyData.GetIsDayReset()
actInfo.AwardDayInfo = []
for templateID in templateIDList:
ipyDataList = IpyGameDataPY.GetIpyGameDataList("CostRebateTemplate", templateID)
@@ -255,7 +291,7 @@
awardInfo.AwardIndex = ipyData.GetAwardIndex()
awardInfo.NeedGold = ipyData.GetNeedCostGold()
awardInfo.AwardItem = []
- for itemID, itemCount, isBind in ipyData.GetAwardItemList():
+ for itemID, itemCount, isBind in __GetItemList(ipyData.GetAwardItemList(), job, actWorldLV):
awardItem = ChPyNetSendPack.tagMCCostRebateAwardItem()
awardItem.ItemID = itemID
awardItem.ItemCount = itemCount
--
Gitblit v1.8.0