From 23876f36a929f7e8f1fe94ae543b03bc24a61f1e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 25 二月 2025 20:24:08 +0800
Subject: [PATCH] 10263 【越南】【英文】【BT】【GM】【砍树】后端支持NPC仿真实玩家战斗和快速战斗(镜像回收时同步清除地图中缓存的镜像被动buff效果;)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCharm.py |   39 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCharm.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCharm.py
index fa0e9b7..def7d09 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCharm.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCharm.py
@@ -17,6 +17,7 @@
 
 import CommFunc
 import ShareDefine
+import IpyGameDataPY
 import PlayerControl
 import ChPyNetSendPack
 import PyGameDataStruct
@@ -126,6 +127,21 @@
     Sync_PlayerCharmInfo(curPlayer)
     return
 
+def OnMixServerFirstLogin(curPlayer):
+    playerID = curPlayer.GetPlayerID()
+    charmValueRecMgr = PyDataManager.GetDBPyCharmValueRecManager()
+    if playerID not in charmValueRecMgr.charmTotalDict:
+        return
+    recTypeValueDict = charmValueRecMgr.charmTotalDict.get(playerID, {})
+    charmTotal = recTypeValueDict.get(CharmValueRecType_Total, 0)
+    charmWeek = recTypeValueDict.get(CharmValueRecType_Week, 0)
+    charmDay = recTypeValueDict.get(CharmValueRecType_Day, 0)
+    GameWorld.Log("合服首登同步魅力榜单: charmTotal=%s,charmWeek=%s,charmDay=%s" % (charmTotal, charmWeek, charmDay), playerID)
+    PlayerBillboard.UpdatePlayerBillboardEx(curPlayer, playerID, ShareDefine.Def_BT_CharmTotal, charmTotal)
+    PlayerBillboard.UpdatePlayerBillboardEx(curPlayer, playerID, ShareDefine.Def_BT_CharmWeek, charmWeek)
+    PlayerBillboard.UpdatePlayerBillboardEx(curPlayer, playerID, ShareDefine.Def_BT_CharmDay, charmDay)
+    return
+
 def GetPlayerCharmOfferSortList(playerID, recType):
     ## 获取排序后的玩家魅力贡献榜
     
@@ -160,6 +176,29 @@
         charmValueRecMgr.charmValueRecDict[playerID] = {}
     recTypeDataDict = charmValueRecMgr.charmValueRecDict[playerID]
     
+    dayCharmMax = IpyGameDataPY.GetFuncCfg("CharmCfg", 1)
+    couple = PyDataManager.GetDBPyCoupleManager().GetCouple(playerID)
+    coupleID = couple.GetCoupleID(playerID) if couple else 0
+    if dayCharmMax and offerPlayerID not in [playerID, coupleID]:
+        if CharmValueRecType_Day not in recTypeDataDict:
+            recTypeDataDict[CharmValueRecType_Day] = {}
+        dayOfferPlayerDict = recTypeDataDict[CharmValueRecType_Day]
+        dayFromOtherTotal = 0 # 今日非伴侣来源魅力
+        dayFromOtherList = []
+        for oID, recData in dayOfferPlayerDict.items():
+            if oID not in [playerID, coupleID]:
+                dayFromOtherTotal += recData.CharmValue
+                dayFromOtherList.append([oID, recData.CharmValue, dayFromOtherTotal])
+        if dayFromOtherTotal >= dayCharmMax:
+            GameWorld.Log("今日非自己或伴侣赠送获得魅力值已达上限! dayFromOtherTotal=%s >= %s, %s" 
+                          % (dayFromOtherTotal, dayCharmMax, dayFromOtherList), playerID)
+            return
+        canAddToday = dayCharmMax - dayFromOtherTotal
+        GameWorld.DebugLog("addValue=%s,canAddToday=%s,dayCharmMax=%s,dayFromOtherTotal=%s,%s" 
+                           % (addValue, canAddToday, dayCharmMax, dayFromOtherTotal, dayFromOtherList), playerID)
+        addValue = min(canAddToday, addValue)
+        GameWorld.DebugLog("实际增加: addValue=%s" % (addValue), playerID)
+        
     if playerID not in charmValueRecMgr.charmTotalDict:
         charmValueRecMgr.charmTotalDict[playerID] = {}
     recTypeValueDict = charmValueRecMgr.charmTotalDict[playerID]

--
Gitblit v1.8.0