From c06d47322d2892a440dc11b94f06950da762e5bd Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 21 六月 2019 19:41:43 +0800
Subject: [PATCH] 7413 宗门试炼评级通知
---
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py | 67 ++++++++++++++++++++-------------
1 files changed, 40 insertions(+), 27 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py
index ca5f9fd..302720e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py
@@ -25,6 +25,7 @@
import NetPackCommon
import PlayerBourse
import PlayerFamily
+import ShareDefine
import ChConfig
import operator
@@ -463,20 +464,23 @@
# 拍卖成功收益,都以玩家收益向上取整
if familyID and auctionItem.FamilyPlayerIDInfo:
familyPlayerIDList = json.loads(auctionItem.FamilyPlayerIDInfo)
- taxRate = IpyGameDataPY.GetFuncCfg("AuctionTaxrate", 2) # 仙盟拍品税率百分比
- personMaxRate = IpyGameDataPY.GetFuncCfg("AuctionTaxrate", 3) # 仙盟拍品个人最大收益百分比
- taxGold = max(1, int(bidderPrice * taxRate / 100.0)) # 最少收税1
- giveTotalGold = max(0, bidderPrice - taxGold)
- giveMaxGold = int(math.ceil(giveTotalGold * personMaxRate / 100.0))
- memCount = len(familyPlayerIDList)
- giveGoldAverage = min(giveMaxGold, int(math.ceil(giveTotalGold * 1.0 / memCount))) # 有收益的人平分
-
- # 仙盟拍品收益邮件
- detail = {"ItemGUID":itemGUID, "ItemID":itemID, "Count":itemCount, "BidderPrice":bidderPrice, "FamilyPlayerIDList":familyPlayerIDList}
- paramList = [itemID, itemID, auctionItem.BidderName, bidderPrice, taxRate, giveGoldAverage, personMaxRate]
- PlayerCompensation.SendMailByKey("PaimaiMail6", familyPlayerIDList, [], paramList, gold=giveGoldAverage,
- detail=detail, moneySource=ChConfig.Def_GiveMoney_AuctionGain)
-
+ if familyPlayerIDList:
+ taxRate = IpyGameDataPY.GetFuncCfg("AuctionTaxrate", 2) # 仙盟拍品税率百分比
+ personMaxRate = IpyGameDataPY.GetFuncCfg("AuctionTaxrate", 3) # 仙盟拍品个人最大收益百分比
+ taxGold = max(1, int(bidderPrice * taxRate / 100.0)) # 最少收税1
+ giveTotalGold = max(0, bidderPrice - taxGold)
+ giveMaxGold = int(math.ceil(giveTotalGold * personMaxRate / 100.0))
+ memCount = len(familyPlayerIDList)
+ giveGoldAverage = min(giveMaxGold, int(math.ceil(giveTotalGold * 1.0 / memCount))) # 有收益的人平分
+
+ # 仙盟拍品收益邮件
+ detail = {"ItemGUID":itemGUID, "ItemID":itemID, "Count":itemCount, "BidderPrice":bidderPrice, "FamilyPlayerIDList":familyPlayerIDList}
+ paramList = [itemID, itemID, auctionItem.BidderName, bidderPrice, taxRate, giveGoldAverage, personMaxRate]
+ PlayerCompensation.SendMailByKey("PaimaiMail6", familyPlayerIDList, [], paramList, gold=giveGoldAverage,
+ detail=detail, moneySource=ChConfig.Def_GiveMoney_AuctionGain)
+ else:
+ GameWorld.ErrLog("仙盟拍品没有人获得收益!familyID=%s,itemID=%s,itemGUID=%s" % (familyID, itemID, itemGUID))
+
elif playerID:
taxRate = IpyGameDataPY.GetFuncCfg("AuctionTaxrate", 1) # 全服拍品税率百分比
taxGold = max(1, int(bidderPrice * taxRate / 100.0)) # 最少收税1
@@ -652,7 +656,8 @@
@param curPlayer: 可能为None
'''
- notifyWorldAddItemList = [] # 新增全服拍品通知 [[itemGUID, itemID, playerID], ...]
+ isSortWorldItem = False
+ notifyAddItemList = [] # 新增拍品通知 [[itemGUID, itemID, playerID], ...]
notifyFamilyAddItemDict = {} # 新增仙盟拍品通知 {familyID:[auctionItem, ...], ...}
for playerID, familyID, familyPlayerIDList, itemData in addAuctionItemList:
if not playerID and not familyID:
@@ -662,25 +667,25 @@
if not auctionItem:
continue
+ itemGUID = auctionItem.ItemGUID
+ itemID = auctionItem.ItemID
+ notifyAddItemList.append([itemGUID, itemID, playerID])
if familyID:
familyAddItemList = notifyFamilyAddItemDict.get(familyID, [])
familyAddItemList.append(auctionItem)
notifyFamilyAddItemDict[familyID] = familyAddItemList
else:
- itemGUID = auctionItem.ItemGUID
- itemID = auctionItem.ItemID
- notifyWorldAddItemList.append([itemGUID, itemID, playerID])
+ isSortWorldItem = True
- if notifyFamilyAddItemDict or notifyWorldAddItemList:
- isSortWorldItem = notifyWorldAddItemList != []
+ if notifyAddItemList:
__SortAuctionitem(isSortWorldItem=isSortWorldItem)
# 通知新增仙盟拍品
for familyID, familyAddItemList in notifyFamilyAddItemDict.items():
Sync_FamilyAuctionItemInfo(None, familyID, familyAddItemList)
- # 通知全服拍品关注玩家
- __NotifyAuctionPlayerAddItem(notifyWorldAddItemList)
+ # 通知拍品关注玩家
+ __NotifyAuctionPlayerAddItem(notifyAddItemList)
return
def __DoAddAuctionItem(curPlayer, playerID, familyID, familyPlayerIDList, itemData):
@@ -747,9 +752,9 @@
GameWorld.DebugLog("更新拍品数: %s" % len(auctionItemMgr.allAuctionItemDict))
return auctionItem
-def __NotifyAuctionPlayerAddItem(notifyWorldAddItemList):
+def __NotifyAuctionPlayerAddItem(notifyAddItemList):
## 通知关注物品的玩家新上架物品了
- if not notifyWorldAddItemList:
+ if not notifyAddItemList:
return
attentionMgr = PyDataManager.GetAuctionAttentionManager()
playerManager = GameWorld.GetPlayerManager()
@@ -763,8 +768,8 @@
if not playerAttentionIDList:
continue
infoPack = None
- for itemGUID, itemID, playerID in notifyWorldAddItemList:
- if playerID == player.GetPlayerID():
+ for itemGUID, itemID, playerID in notifyAddItemList:
+ if playerID and playerID == player.GetPlayerID():
# 自己上架的物品不通知
continue
if itemID not in playerAttentionIDList:
@@ -1079,7 +1084,7 @@
# 载入对应查询条件拍品缓存
auctionItemQueryList = []
for worldAuctionItem in auctionItemMgr.worldAuctionItemList:
- if job and worldAuctionItem.ItemJobLimit != job:
+ if job and worldAuctionItem.ItemJobLimit != job and worldAuctionItem.ItemJobLimit:
continue
if itemTypeList and worldAuctionItem.ItemType not in itemTypeList:
continue
@@ -1380,3 +1385,11 @@
DataRecordPack.SendEventPack("AuctionHouse", dataDict, curPlayer)
return
+def DoAddFamilyAuctionItem(mapID, familyAuctionItemDict):
+ ''' 上架仙盟拍品,因为仙盟拍品默认上架,所以使用批量上架
+ @param familyAuctionItemDict: {仙盟ID:[[享受收益的成员ID, ...], [[拍品ID,个数], [拍品ID,个数,是否拍品], ...]], ...}
+ '''
+ GameWorld.Log("发送地图上架仙盟拍品: mapID=%s, %s" % (mapID, familyAuctionItemDict))
+ GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_AddFamilyAuctionItem, [mapID, familyAuctionItemDict])
+ return
+
--
Gitblit v1.8.0