From 40f2e314ff6df3d45e643419c6f155bb665b78dc Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 14 九月 2024 13:34:19 +0800
Subject: [PATCH] 10249 【越南】【砍树】【英文】仙宫(增加获得气运提示;)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py |   91 +++++++++++++++++++++++++++++++--------------
 1 files changed, 63 insertions(+), 28 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
index 8bd9d39..c1f7cf3 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
@@ -26,7 +26,6 @@
 import CrossRealmMsg
 import ChNetSendPack
 import NetPackCommon
-import PlayerGeTui
 import PyGameData
 
 import re
@@ -146,8 +145,6 @@
             if len(g_ChatMi[tagPlayerID]) > 8:
                 g_ChatMi[tagPlayerID].pop(0)
                 return
-        
-        PlayerGeTui.ChatMiGeTui(tagPlayerID, tagPlayerName, curPlayer.GetName())
 
 # 登录时将离线消息下发
 def LoginChatMi(curPlayer):
@@ -187,10 +184,18 @@
 
 def ClientServerMsg_ChatCrossWorld(serverGroupID, msgData, tick):
     ## 收到子服跨服世界频道聊天
-    zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByServerGroupID(0, serverGroupID)
-    if not zoneIpyData:
-        return
-    serverGroupIDList = zoneIpyData.GetServerGroupIDList()
+    chatCrossType = IpyGameDataPY.GetFuncCfg("TalkCross", 1) # 跨服聊天范围设定 0-全服;1-boss分区;2-跨服竞技场分区
+    if chatCrossType == 0:
+        serverGroupIDList = []
+    else:
+        crossTypeMapDict = {1:ChConfig.Def_FBMapID_CrossPenglai, 2:ChConfig.Def_FBMapID_CrossRealmPK}
+        if chatCrossType not in crossTypeMapDict:
+            GameWorld.ErrLog("跨服聊天范围配置错误! chatCrossType=%s" % chatCrossType)
+            return
+        zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByServerGroupID(crossTypeMapDict[chatCrossType], serverGroupID)
+        if not zoneIpyData:
+            return
+        serverGroupIDList = zoneIpyData.GetServerGroupIDList()
     CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_ChatCrossWorld, msgData, serverGroupIDList)
     return
 
@@ -437,7 +442,8 @@
     vipLv = player.GetVIPLv()  # 玩家vip等级
     GMLevel = player.GetGMLevel()
     job = player.GetJob()
-
+    playerID = player.GetID()
+    
     extraValueStr = ""
     # vip等级
     extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_VipLv)%vipLv
@@ -451,6 +457,16 @@
     extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_ServerGroupID) % PlayerControl.GetPlayerServerGroupID(player)
     # 等级
     extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_LV) % player.GetLV()
+    # 伴侣信息
+    coupleName, coupleJob, bridePriceMaxID = "", 1, 0
+    couple = PyDataManager.GetDBPyCoupleManager().GetCouple(playerID)
+    if couple:
+        coupleName = couple.GetCoupleName(playerID)
+        coupleJob = couple.GetCoupleJob(playerID)
+        bridePriceMaxID = couple.BridePriceMaxID
+    face = player.GetFace()
+    facePic = player.GetFacePic()
+    extraValueStr = "%s|%s|%s|%s|%s|%s" % (extraValueStr, coupleName, coupleJob, bridePriceMaxID, face, facePic)
     return extraValueStr
 
 
@@ -496,13 +512,18 @@
     return
 
 def NotifyTalkCache(curPlayer):
-    ##上线通知聊天缓存
-    sendPack = ChPyNetSendPack.tagGCTalkCache()
-    sendPack.Clear()
-    sendPack.InfoList = []
+    ##上线通知非脱机离线后的聊天缓存
+    if PlayerControl.GetIsTJG(curPlayer):
+        return
+    playerID = curPlayer.GetPlayerID()
+    unTJLogoffTime = PyGameData.g_unTJLogoffTime.get(playerID, 0)
+    
+    familyCacheList, worldCacheList = [], []
     familyID = curPlayer.GetFamilyID()
     if familyID and familyID in PyGameData.g_familyTalkCache:
         for curTime, name, playerID, content, extras in PyGameData.g_familyTalkCache[familyID]:
+            if curTime < unTJLogoffTime:
+                continue
             contentInfo = ChPyNetSendPack.tagGCTalkCacheInfo()
             contentInfo.Clear()
             contentInfo.ChannelType = 2
@@ -513,20 +534,34 @@
             contentInfo.Content = content
             contentInfo.Len = len(content)
             contentInfo.Extras = extras
-            sendPack.InfoList.append(contentInfo)
-    elif PyGameData.g_worldTalkCache:
-        for curTime, name, playerID, content, extras in PyGameData.g_worldTalkCache:
-            contentInfo = ChPyNetSendPack.tagGCTalkCacheInfo()
-            contentInfo.Clear()
-            contentInfo.ChannelType = 1
-            contentInfo.Name = name
-            contentInfo.NameLen = len(name)
-            contentInfo.PlayerID = playerID
-            contentInfo.Time = curTime
-            contentInfo.Content = content
-            contentInfo.Len = len(content)
-            contentInfo.Extras = extras
-            sendPack.InfoList.append(contentInfo)
-    sendPack.Count = len(sendPack.InfoList)
-    NetPackCommon.SendFakePack(curPlayer, sendPack)
+            familyCacheList.append(contentInfo)
+            
+    for curTime, name, playerID, content, extras in PyGameData.g_worldTalkCache:
+        if curTime < unTJLogoffTime:
+            continue
+        contentInfo = ChPyNetSendPack.tagGCTalkCacheInfo()
+        contentInfo.Clear()
+        contentInfo.ChannelType = 1
+        contentInfo.Name = name
+        contentInfo.NameLen = len(name)
+        contentInfo.PlayerID = playerID
+        contentInfo.Time = curTime
+        contentInfo.Content = content
+        contentInfo.Len = len(content)
+        contentInfo.Extras = extras
+        worldCacheList.append(contentInfo)
+        
+    if familyCacheList:
+        sendPack = ChPyNetSendPack.tagGCTalkCache()
+        sendPack.Clear()
+        sendPack.InfoList = familyCacheList
+        sendPack.Count = len(sendPack.InfoList)
+        NetPackCommon.SendFakePack(curPlayer, sendPack)
+        
+    if worldCacheList:
+        sendPack = ChPyNetSendPack.tagGCTalkCache()
+        sendPack.Clear()
+        sendPack.InfoList = worldCacheList
+        sendPack.Count = len(sendPack.InfoList)
+        NetPackCommon.SendFakePack(curPlayer, sendPack)
     return
\ No newline at end of file

--
Gitblit v1.8.0