From 0faf0cd221e7aa589b5d085c05b84ce9ebf8631c Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 30 十月 2018 19:58:16 +0800
Subject: [PATCH] 4449 【1.2】【后端】仙盟宴会传功经验
---
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