From 12392320a13113f580f75c314e74c952b7a9ab7d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 14 十一月 2019 10:31:05 +0800
Subject: [PATCH] 8338 【主干】【后端】女娲的祝福等buff物品的类型分配(新增类型18效果与类型9相同)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py |   86 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 83 insertions(+), 3 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
index 1d267d8..b911b61 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
@@ -18,8 +18,6 @@
 import PyDataManager
 import ChConfig
 import EventReport
-import ChPyNetSendPack
-import NetPackCommon
 import PlayerFamilyParty
 import ChPyNetSendPack
 import ShareDefine
@@ -29,7 +27,12 @@
 import ChNetSendPack
 import NetPackCommon
 import PlayerGeTui
+import PyGameData
+
 import re
+import time
+import IpyGameDataPY
+
 
 g_ChatMi = {}   # 离线聊天记录 {玩家ID:[信息]} 一个玩家最多8条
 
@@ -234,7 +237,8 @@
     extraValue = sendPack.GetExtraValue()
     extras = sendPack.GetExtras()
     curPlayer.ChatGong(content, extraValue, extras)
-    
+    #缓存
+    DoTalkCache(0, curPlayer.GetName(), curPlayer.GetPlayerID(), content, extras)
     return
 
 
@@ -272,6 +276,8 @@
     curPlayer.ChatFamily(content, extraValue, extras)
     #仙盟宴会答题
     PlayerFamilyParty.OnTalkFamily(curPlayer, content, tick)
+    #缓存
+    DoTalkCache(curPlayer.GetFamilyID(), curPlayer.GetName(), curPlayer.GetPlayerID(), content, extras)
     return
 
 
@@ -469,3 +475,77 @@
 
     return True
 
+
+def DoTalkCache(familyID, name, playerID, content, extras):
+    #仙盟、世界频道聊天缓存
+    curTime = int(time.time())
+    saveInfo = [curTime, name, playerID, content, extras]
+    if familyID:
+        if familyID not in PyGameData.g_familyTalkCache:
+            PyGameData.g_familyTalkCache[familyID] = []
+        else:
+            maxCnt = IpyGameDataPY.GetFuncCfg('TalkCache', 2)
+            if maxCnt and len(PyGameData.g_familyTalkCache[familyID]) >= maxCnt:
+                del PyGameData.g_familyTalkCache[familyID][0]
+        PyGameData.g_familyTalkCache[familyID].append(saveInfo)
+    else:
+        maxCnt = IpyGameDataPY.GetFuncCfg('TalkCache', 1)
+        if maxCnt and len(PyGameData.g_worldTalkCache) >= maxCnt:
+            del PyGameData.g_worldTalkCache[0]
+        PyGameData.g_worldTalkCache.append(saveInfo)
+    return
+
+def NotifyTalkCache(curPlayer):
+    ##上线通知非脱机离线后的聊天缓存
+    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
+            contentInfo.Name = name
+            contentInfo.NameLen = len(name)
+            contentInfo.PlayerID = playerID
+            contentInfo.Time = curTime
+            contentInfo.Content = content
+            contentInfo.Len = len(content)
+            contentInfo.Extras = extras
+            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