hxp
2024-06-20 40f41d737bb9f7df71c6260b766756ba8a2ea1fc
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
@@ -28,6 +28,10 @@
import ItemCommon
import ChItem
import PlayerTJG
import EventShell
import PyGameData
import PlayerLove
import math
#---------------------------------------------------------------------
@@ -46,7 +50,7 @@
    content = sendPack.GetContent()
    
    #通用判断
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick):
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, talkType=IPY_GameWorld.tcArea):
        return
    
    #通用设置
@@ -54,7 +58,7 @@
    
    
    #如果在普通地图, 就广播, 如果在副本就单个通知
    if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull:
    if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull and not GameWorld.IsCrossServer():
        #广播
        extras = GetTalkExtraValue(curPlayer)
        curPlayer.ChatArea(content, 0, extras)
@@ -96,7 +100,7 @@
    content = sendPack.GetContent()
    
    #通用检测
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, checkSameMsg = False):
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, checkSameMsg = False, talkType=IPY_GameWorld.tcWorld):
        return
            
    #通用设置
@@ -105,7 +109,9 @@
    extras = GetTalkExtraValue(curPlayer)
    curPlayer.ChatGong(content, 0, extras)
    #世界频道发言成就
    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TalkWorld, 1)
    #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TalkWorld, 1)
    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_TalkWorld, 1)
    EventShell.EventRespons_Talk(curPlayer, 'talkworld')
    return
## 国家频道(封包参数)
@@ -129,7 +135,7 @@
    content = sendPack.GetContent()
    
    #通用检测
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, checkSameMsg = False):
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, checkSameMsg = False, talkType=IPY_GameWorld.tcCountry):
        return
    
    #通用设置
@@ -154,13 +160,17 @@
    #玩家聊天内容
    content = sendPack.GetContent()
    
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick):
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, talkType=IPY_GameWorld.tcFamily):
        return
    #通用设置
    SetTalkTime(curPlayer, content, IPY_GameWorld.tcFamily, tick)
    
    extras = GetTalkExtraValue(curPlayer)
    curPlayer.ChatFamily(content, 0, extras)
    #仙盟频道发言成就
    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TalkFamily, 1)
    EventShell.EventRespons_Talk(curPlayer, 'talkfamily')
    return
## 队伍频道(封包参数)
@@ -178,7 +188,7 @@
    #玩家聊天内容
    content = sendPack.GetContent()
    
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick):
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, talkType=IPY_GameWorld.tcTeam):
        return
    
    #通用设置
@@ -201,7 +211,7 @@
    #玩家聊天内容
    content = sendPack.GetContent()
    
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick):
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, talkType=IPY_GameWorld.tcPrivate):
        return
    
    #通用设置
@@ -210,6 +220,14 @@
    extras = GetTalkExtraValue(curPlayer)
    curPlayer.ChatMiByID(sendPack.GetTalkType(), sendPack.GetPlayerID(), content, 0, extras)
    return
def TalkPrivateByID(curPlayer, tagPlayerID, content):
    #私聊 0为默认 1为1对1聊天
    talkType = 1
    extras = GetTalkExtraValue(curPlayer)
    curPlayer.ChatMiByID(talkType, tagPlayerID, content, 0, extras)
    return
## 私聊频道(封包参数)
@@ -223,7 +241,7 @@
    #玩家聊天内容
    content = sendPack.GetContent()
    
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick):
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, talkType=IPY_GameWorld.tcPrivate):
        return
    
    #通用设置
@@ -244,7 +262,7 @@
#  @param checkSameMsg 是否检查相同信息
#  @return True or False
#  @remarks 函数详细说明.
def __CheckTalk(curPlayer, content, length, tick, checkGMForbidenTalk = True, checkSameMsg = True):
def __CheckTalk(curPlayer, content, length, tick, checkGMForbidenTalk = True, checkSameMsg = True, talkType=None):
    if checkGMForbidenTalk and GetGMToolForbidTalk(curPlayer):
        #GeRen_chenxin_921745 对不起,您已被GM禁言,发送信息失败
        #PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_921745")
@@ -255,6 +273,17 @@
        #PlayerControl.NotifyCode(curPlayer, "CanootTalk02")
        return False
    
    #频道各自间隔时间
    if talkType != None:
        talkCDDict = IpyGameDataPY.GetFuncEvalCfg("TalkCD", 1, {})
        if str(talkType) in talkCDDict:
            cdTicks = talkCDDict[str(talkType)] * 1000
            lastTalkTick = curPlayer.GetTalkTick(talkType)
            remainTick = cdTicks - (tick - lastTalkTick)
            if remainTick > 0:
                PlayerControl.NotifyCode(curPlayer, "CanootTalk01", [int(math.ceil(remainTick/1000.0))])
                return False
    #聊天信息太长
    if length > ChConfig.Def_PlayerTalkMaxCount :
        PlayerControl.NotifyCode(curPlayer, "CanootTalk13")
@@ -291,7 +320,7 @@
    #设置当前聊天内容为玩家本次聊天内容
    #curPlayer.SetLastChatContent(content)
    #设置当前频道时间
    #curPlayer.SetTalkTick(type, tick)
    curPlayer.SetTalkTick(type, tick)
    return
## 信件2B封包
@@ -351,6 +380,7 @@
    vipLv = objTalk.GetVIPLv()  # 玩家vip等级
    GMLevel = objTalk.GetGMLevel()
    job = objTalk.GetJob()
    playerID = objTalk.GetID()
    
    extraValueStr = ""
    # vip等级
@@ -365,6 +395,11 @@
    extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_ServerGroupID) % PlayerControl.GetPlayerServerGroupID(objTalk)
    # 等级
    extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_LV) % objTalk.GetLV()
    # 伴侣信息
    coupleName = PlayerControl.GetCoupleName(objTalk)
    coupleJob = PlayerControl.GetCoupleJob(objTalk)
    bridePriceMaxID = PlayerControl.GetBridePriceMaxID(objTalk)
    extraValueStr = "%s|%s|%s|%s" % (extraValueStr, coupleName, coupleJob, bridePriceMaxID)
    return extraValueStr
@@ -447,7 +482,6 @@
#  @param tick
#  @return
def OnPyTalk(index, clientData, tick):
    return
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    
    #GameWorld.DebugLog("OnPyTalk, Name:%s" % curPlayer.GetPlayerName())