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,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