From e8bf98a53369d63ce2ea76e135d55c43b0494734 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 26 十一月 2018 00:54:52 +0800
Subject: [PATCH] 4762 【后端】增加助战排行榜;增加离线玩家助战信息处理;

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py |   41 +++++++++++++++++++++++++++++++++--------
 1 files changed, 33 insertions(+), 8 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py
index c64f99c..e3fcff1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py
@@ -18,6 +18,7 @@
 import GameWorld
 import ChConfig
 import PlayerControl
+import PlayerBillboard
 import ChPyNetSendPack
 import NetPackCommon
 import PlayerViewCacheTube
@@ -34,8 +35,26 @@
 def DoPlayerOnDay(curPlayer):
     checkInInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HelpBattleCheckInCount)
     checkInCount = checkInInfo / 10 # 累计登记
-    checkInInfo = (checkInCount + 1) * 10 + 0
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HelpBattleCheckInCount, checkInInfo)
+    todayIsCheckIn = checkInInfo % 10 # 今天是否已登记
+    if todayIsCheckIn:
+        checkInInfo = (checkInCount + 1) * 10 + 0
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HelpBattleCheckInCount, checkInInfo)
+        SyncCheckInState(curPlayer, 0, False)
+    return
+
+def DoPlayerLogin(curPlayer):
+    checkInInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HelpBattleCheckInCount)
+    todayIsCheckIn = checkInInfo % 10 # 今天是否已登记
+    if todayIsCheckIn:
+        SyncCheckInState(curPlayer, 1, True)
+    return
+
+def SyncCheckInState(curPlayer, checkInState, isLogin):
+    ## 同步登记状态
+    checkInPack = ChPyNetSendPack.tagMCHelpBattleCheckInResult()
+    checkInPack.IsOK = checkInState
+    checkInPack.IsLogin = int(isLogin)
+    NetPackCommon.SendFakePack(curPlayer, checkInPack)
     return
 
 def GameServer_FBHelpBattleResult(curPlayer, msgList, tick):
@@ -89,9 +108,7 @@
         if not haveViewCache:
             PlayerViewCacheTube.UpdateGameServerPlayerCache(curPlayer, tick, False)
             
-    checkInPack = ChPyNetSendPack.tagMCHelpBattleCheckInResult()
-    checkInPack.IsOK = isOK
-    NetPackCommon.SendFakePack(curPlayer, checkInPack)
+    SyncCheckInState(curPlayer, 1, False)
     
     GameWorld.DebugLog("FBHelpBattleResult: %s,checkInCount=%s,fightPower=%s,isOK=%s,haveViewCache=%s" 
                        % (cmd, checkInCount, fightPower, isOK, haveViewCache), curPlayer.GetPlayerID())
@@ -351,6 +368,7 @@
     return
 
 def __OnHelpBattleRecord(curPlayer, msgList, tick):
+    ## 助战记录同步
     cmd, helpRecordList = msgList
     playerID = curPlayer.GetPlayerID()
     GameWorld.DebugLog("__OnHelpBattleRecord %s,helpRecordList=%s" % (cmd, helpRecordList), playerID)
@@ -359,6 +377,7 @@
     addXianyuanCoinTotalTotay = 0 # 累计需要增加的今日仙缘币
     drList = []
     
+    totalHelpCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HelpBattleTotalCount)
     recordPack = ChPyNetSendPack.tagMCHelpBattleRecordList()
     recordPack.RecordList = []
     for recordInfo in helpRecordList:
@@ -382,16 +401,22 @@
         addXianyuanCoinTotal += xianyuanCoinAdd
         if isSameDay:
             addXianyuanCoinTotalTotay += xianyuanCoinAdd
-            
+        totalHelpCount += 1
+        
     recordPack.RecordCount = len(recordPack.RecordList)
     NetPackCommon.SendFakePack(curPlayer, recordPack)
     
     addDataDict = {"HelpList":drList}
-    GameWorld.DebugLog("    addXianyuanCoinTotal=%s,addXianyuanCoinTotalTotay=%s" % (addXianyuanCoinTotal, addXianyuanCoinTotalTotay), playerID)
+    GameWorld.DebugLog("    addXianyuanCoinTotal=%s,addXianyuanCoinTotalTotay=%s,totalHelpCount=%s" 
+                       % (addXianyuanCoinTotal, addXianyuanCoinTotalTotay, totalHelpCount), playerID)
     PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_XianyuanCoin, addXianyuanCoinTotal, addDataDict=addDataDict, isSysHint=False)
     if addXianyuanCoinTotalTotay:
         PlayerControl.AddTodayXianyuanCoin(curPlayer, addXianyuanCoinTotalTotay)
-        
+    
+    # 更新总助战次数,更新排行榜
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HelpBattleTotalCount, totalHelpCount)
+    if totalHelpCount >= IpyGameDataPY.GetFuncCfg("HelpBattleRefresh", 4):
+        PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_FBHelpBattle, totalHelpCount)
     return
 
 def DoSingleFBAddXianyuanCoin(curPlayer, mapID, lineID):

--
Gitblit v1.8.0