From 8bfa5768bc81e3d8a3838527b22170b3fe95460e Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 26 七月 2019 21:16:57 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py | 74 +++++++++++++++++++++++++++++++++---
1 files changed, 67 insertions(+), 7 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
index 59a7206..8bd9d39 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
@@ -28,9 +26,13 @@
import CrossRealmMsg
import ChNetSendPack
import NetPackCommon
-import json
import PlayerGeTui
+import PyGameData
+
import re
+import time
+import IpyGameDataPY
+
g_ChatMi = {} # 离线聊天记录 {玩家ID:[信息]} 一个玩家最多8条
@@ -89,7 +91,7 @@
curCache = None
tagPlayerName = ""
if tagPlayer == None:
- curCache = PlayerViewCache.ViewCacheMgr.FindCache(tagPlayerID)
+ curCache = PlayerViewCache.FindViewCache(tagPlayerID)
if not curCache:
PlayerControl.NotifyCode(curPlayer, "CanootTalk10")
return
@@ -101,7 +103,7 @@
return
if curCache:
- cacheDict = json.loads(curCache.GetPropData())
+ cacheDict = PlayerViewCache.GetCachePropDataDict(curCache)
tagPlayerName = cacheDict["Name"]
talkType = sendPack.GetTalkType()
@@ -185,7 +187,7 @@
def ClientServerMsg_ChatCrossWorld(serverGroupID, msgData, tick):
## 收到子服跨服世界频道聊天
- zoneIpyData = CrossRealmPlayer.GetCrossCommZoneIpyDataByServerGroupID(serverGroupID)
+ zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByServerGroupID(0, serverGroupID)
if not zoneIpyData:
return
serverGroupIDList = zoneIpyData.GetServerGroupIDList()
@@ -235,7 +237,8 @@
extraValue = sendPack.GetExtraValue()
extras = sendPack.GetExtras()
curPlayer.ChatGong(content, extraValue, extras)
-
+ #缓存
+ DoTalkCache(0, curPlayer.GetName(), curPlayer.GetPlayerID(), content, extras)
return
@@ -273,6 +276,8 @@
curPlayer.ChatFamily(content, extraValue, extras)
#仙盟宴会答题
PlayerFamilyParty.OnTalkFamily(curPlayer, content, tick)
+ #缓存
+ DoTalkCache(curPlayer.GetFamilyID(), curPlayer.GetName(), curPlayer.GetPlayerID(), content, extras)
return
@@ -470,3 +475,58 @@
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):
+ ##上线通知聊天缓存
+ sendPack = ChPyNetSendPack.tagGCTalkCache()
+ sendPack.Clear()
+ sendPack.InfoList = []
+ familyID = curPlayer.GetFamilyID()
+ if familyID and familyID in PyGameData.g_familyTalkCache:
+ for curTime, name, playerID, content, extras in PyGameData.g_familyTalkCache[familyID]:
+ 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
+ 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)
+ return
\ No newline at end of file
--
Gitblit v1.8.0