From 68e048256ca3e40cbc6e73cfd0937663cd41d63c Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 27 十二月 2019 20:50:44 +0800 Subject: [PATCH] Merge branch 'master' of http://mobile.173on.com:10010/r/SnxxServerCode --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py | 81 +++++++++++++++++++++++----------------- 1 files changed, 46 insertions(+), 35 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py index 80653c9..eb5faa8 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py @@ -20,6 +20,7 @@ import IpyGameDataPY import NetPackCommon import PyGameDataStruct +import PlayerFBHelpBattle import ChPyNetSendPack import PlayerControl import PlayerFamily @@ -176,17 +177,15 @@ playerThanksList = thanksMgr.playerThanksDict[playerID] playerThanksList.append(dbData) - # 已经感谢的 - else: - for assistPlayerID, assistPlayerInfo in dbData.AssistPlayerDict.items(): - if "IsGet" in assistPlayerInfo: - # 已经接受感谢奖励的不再处理 - continue - - if assistPlayerID not in thanksMgr.assistPlayerThanksDict: - thanksMgr.assistPlayerThanksDict[assistPlayerID] = [] - assistPlayerThanksList = thanksMgr.assistPlayerThanksDict[assistPlayerID] - assistPlayerThanksList.append(dbData) + for assistPlayerID, assistPlayerInfo in dbData.AssistPlayerDict.items(): + if "IsGet" in assistPlayerInfo: + # 已经接受感谢奖励的不再处理 + continue + + if assistPlayerID not in thanksMgr.assistPlayerThanksDict: + thanksMgr.assistPlayerThanksDict[assistPlayerID] = [] + assistPlayerThanksList = thanksMgr.assistPlayerThanksDict[assistPlayerID] + assistPlayerThanksList.append(dbData) return @@ -688,11 +687,11 @@ curPlayer = playerMgr.FindPlayerByID(playerID) if not curPlayer: continue - __AddAssistThanks(curPlayer, assistAwardItemID, mapID, lineID, assistPlayerDict, npcID) + AddNewAssistThanks(curPlayer, assistAwardItemID, mapID, lineID, assistPlayerDict, npcID) return -def __AddAssistThanks(curPlayer, itemID, mapID, lineID, assistPlayerDict, npcID=0, exData=""): +def AddNewAssistThanks(curPlayer, itemID, mapID, lineID, assistPlayerDict, npcID=0, exData=""): ## 添加协助感谢数据 playerID = curPlayer.GetPlayerID() @@ -718,7 +717,7 @@ assistThanksMgr = PyDataManager.GetPlayerAssistThanksPyManager() OnInitAssistThanksData(assistThanksMgr, newThanks) - GameWorld.DebugLog("增加协助感谢: mapID=%s,lineID=%s,npcID=%s,exData=%s" % (mapID, lineID, npcID, exData), playerID) + GameWorld.DebugLog("增加协助感谢: itemID=%s,mapID=%s,lineID=%s,npcID=%s,exData=%s" % (itemID, mapID, lineID, npcID, exData), playerID) return #// B0 14 使用协助感谢礼盒 #tagCGUseAssistThanksGift @@ -784,16 +783,12 @@ queryData = [itemID] QueryPlayerResult_PlayerAssist(curPlayer, "UseAssistThanksGift", queryData) - # 加入协助玩家接收感谢列表 + # 通知协助玩家可接收的感谢个数 playerMgr = GameWorld.GetPlayerManager() for assistPlayerID in useThanks.AssistPlayerDict.keys(): - if assistPlayerID not in assistThanksMgr.assistPlayerThanksDict: - assistThanksMgr.assistPlayerThanksDict[assistPlayerID] = [] - assistPlayerThanksList = assistThanksMgr.assistPlayerThanksDict[assistPlayerID] - assistPlayerThanksList.append(useThanks) assistPlayer = playerMgr.FindPlayerByID(assistPlayerID) if assistPlayer: - SyncCanGetAssistThanksGiftCount(assistPlayer, len(assistPlayerThanksList)) + SyncCanGetAssistThanksGiftCount(assistPlayer) return #// B0 15 接收协助感谢礼物 #tagCGGetAssistThanksGift @@ -814,9 +809,14 @@ GameWorld.ErrLog("玩家没有可接收感谢的协助感谢礼盒!", playerID) return assistPlayerThanksList = assistThanksMgr.assistPlayerThanksDict[playerID] - if not assistPlayerThanksList: + getThanks = None + for thanks in assistPlayerThanksList: + if thanks.ThanksState: + getThanks = thanks + break + if not getThanks: + GameWorld.ErrLog("找不到玩家可接收感谢的协助感谢礼盒!", playerID) return - getThanks = assistPlayerThanksList[0] # 默认接收第一个 itemID = getThanks.ItemID ipyData = IpyGameDataPY.GetIpyGameData("AssistThanksGift", itemID) if not ipyData: @@ -862,7 +862,7 @@ if getThanks in assistThanksMgr.allAssistThanksList: assistThanksMgr.allAssistThanksList.remove(getThanks) - assistPlayerThanksList.pop(0) # 移除 + assistPlayerThanksList.remove(getThanks) # 移除 updateTodayGiftCount = todayGiftCount + 1 # 更新当天该礼盒ID已领取次数 @@ -874,25 +874,36 @@ assistPlayerInfoDict = thanks.AssistPlayerDict[playerID] assistPlayerInfoDict["TodayGiftCount"] = updateTodayGiftCount - SyncCanGetAssistThanksGiftCount(curPlayer, len(assistPlayerThanksList)) + SyncCanGetAssistThanksGiftCount(curPlayer, True) - # 通知地图 isCurDailyDate = getThanks.DailyDateStr == GameWorld.GetDailyDateStr() + + # 如果是镜像协助的,更新今日接收感谢礼盒次数 + if isCurDailyDate: + if IpyGameDataPY.GetIpyGameDataNotLog("FBHelpBattle", getThanks.MapID, getThanks.LineID): + PlayerFBHelpBattle.UpdateGetThanksGiftCountDict(curPlayer, itemID, updateTodayGiftCount) + + # 通知地图 queryData = [itemID, isExtraAward, isCurDailyDate, updateTodayGiftCount] QueryPlayerResult_PlayerAssist(curPlayer, "GetAssistThanksGift", queryData) return -def SyncCanGetAssistThanksGiftCount(curPlayer, canGetCount=None): +def SyncCanGetAssistThanksGiftCount(curPlayer, isForce=False): ## 通知可接收协助感谢礼物个数 - if canGetCount == None: - playerID = curPlayer.GetPlayerID() - assistThanksMgr = PyDataManager.GetPlayerAssistThanksPyManager() - if playerID not in assistThanksMgr.assistPlayerThanksDict: - return - assistPlayerThanksList = assistThanksMgr.assistPlayerThanksDict[playerID] - if not assistPlayerThanksList: - return - canGetCount = len(assistPlayerThanksList) + + playerID = curPlayer.GetPlayerID() + assistThanksMgr = PyDataManager.GetPlayerAssistThanksPyManager() + if playerID not in assistThanksMgr.assistPlayerThanksDict: + return + assistPlayerThanksList = assistThanksMgr.assistPlayerThanksDict[playerID] + canGetCount = 0 + for thanks in assistPlayerThanksList: + if thanks.ThanksState: + canGetCount += 1 + + if not canGetCount and not isForce: + return + countPack = ChPyNetSendPack.tagGCCanGetAssistThanksGiftCount() countPack.CanGetCount = canGetCount NetPackCommon.SendFakePack(curPlayer, countPack) -- Gitblit v1.8.0