From 5abe612e298a749615bb78a73b1b18eabd013505 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期三, 17 十月 2018 16:36:49 +0800
Subject: [PATCH] 4075 增加商城全服购买次数封包,商城支持背包不足发邮件

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerStore.py |   60 +++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 47 insertions(+), 13 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerStore.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerStore.py
index c425e21..c816767 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerStore.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerStore.py
@@ -18,10 +18,11 @@
 """Version = 2018-10-09 17:00"""
 
 import GameWorld
-import PlayerUniversalGameRec
 import ShareDefine
 import PlayerControl
 import IpyGameDataPY
+import ChPyNetSendPack
+import NetPackCommon
 
 RecType = ShareDefine.Def_UniversalGameRecType_StoreServerCntRecord
 
@@ -29,7 +30,7 @@
 #  @param None
 #  @return None
 def OnPlayerLogin(curPlayer):
-    PlayerUniversalGameRec.SendUniversalGameRecInfo(curPlayer, RecType)
+    SyncStoreServerBuyInfo(curPlayer)
     return
 
 
@@ -61,17 +62,10 @@
     if not findRecData:
         findRecData = recTypeListData.AddRec()
         findRecData.SetValue1(goodsID)
-    findRecData.SetValue2(curGotCnt+buyCount)
+    newBuyCnt = curGotCnt+buyCount
+    findRecData.SetValue2(newBuyCnt)
     #通知
-    playerManager = GameWorld.GetPlayerManager()
-    for i in xrange(playerManager.GetActivePlayerCount()):
-        curPlayer = playerManager.GetActivePlayerAt(i)
-        if curPlayer == None or not curPlayer.GetInitOK():
-            continue
-        if PlayerControl.GetIsTJG(curPlayer):
-            continue
-        PlayerUniversalGameRec.SendUniversalGameRecSingle(curPlayer, findRecData)
-    
+    SyncStoreServerBuyInfo(None, {goodsID:newBuyCnt})
     return msgList
 
 def DoResetStoreServerBuyCnt(shopTypeList):
@@ -80,6 +74,7 @@
     recTypeListData = universalRecMgr.GetTypeList(RecType)
     
     delCnt = 0
+    syncDict = {}
     for index in xrange(recTypeListData.Count()):
         dataIndex = index - delCnt
         recData = recTypeListData.At(dataIndex)
@@ -89,11 +84,14 @@
             continue
         if ipyData.GetShopType() not in shopTypeList:
             continue
+        syncDict[curGoodsID] = 0
         recTypeListData.Delete(dataIndex)
         delCnt +=1
+        
     GameWorld.DebugLog('    根据商店类型重置全服购买次数 shopTypeList=%s'%shopTypeList)
     if delCnt:
-        PlayerUniversalGameRec.SendUniversalGameRecInfo(None, RecType)
+        SyncStoreServerBuyInfo(None, syncDict)
+        
     return
 
 
@@ -105,4 +103,40 @@
     dayShopList = shopTypeList[dayIndex] if dayIndex < len(shopTypeList) else shopTypeList[-1]
     shopType = dayShopList[state-1] if state-1 < len(dayShopList) else dayShopList[-1]
     DoResetStoreServerBuyCnt([shopType])
+    return
+
+def SyncStoreServerBuyInfo(curPlayer, syncCntDict={}):
+    #通知商品全服购买次数
+    sendPack = ChPyNetSendPack.tagGCStoreServerBuyCntInfo()
+    sendPack.Clear()
+    sendPack.InfoList = []
+    if syncCntDict:
+        for goodsID, buyCnt in syncCntDict.items():
+            buyInfo = ChPyNetSendPack.tagGCStoreServerBuyCnt()
+            buyInfo.GoodsID = goodsID
+            buyInfo.BuyCnt = buyCnt
+            sendPack.InfoList.append(buyInfo)
+    else:
+        universalRecMgr = GameWorld.GetUniversalRecMgr()
+        recTypeListData = universalRecMgr.GetTypeList(RecType)
+        for index in xrange(recTypeListData.Count()):
+            recData = recTypeListData.At(index)
+            buyInfo = ChPyNetSendPack.tagGCStoreServerBuyCnt()
+            buyInfo.GoodsID = recData.GetValue1()
+            buyInfo.BuyCnt = recData.GetValue2()
+            sendPack.InfoList.append(buyInfo)
+    sendPack.Count = len(sendPack.InfoList)
+    if not curPlayer:
+        playerManager = GameWorld.GetPlayerManager()
+        for i in xrange(playerManager.GetActivePlayerCount()):
+            curPlayer = playerManager.GetActivePlayerAt(i)
+            if curPlayer == None or not curPlayer.GetInitOK():
+                continue
+            if PlayerControl.GetIsTJG(curPlayer):
+                continue
+            NetPackCommon.SendFakePack(curPlayer, sendPack)
+    else:
+        if PlayerControl.GetIsTJG(curPlayer):
+            return
+        NetPackCommon.SendFakePack(curPlayer, sendPack)
     return
\ No newline at end of file

--
Gitblit v1.8.0