|  |  | 
 |  |  | #import ReadChConfig
 | 
 |  |  | import ShareDefine
 | 
 |  |  | import ChPyNetSendPack
 | 
 |  |  | import CrossRealmPlayer
 | 
 |  |  | import NetPackCommon
 | 
 |  |  | import EventReport
 | 
 |  |  | import PlayerSuccess
 | 
 |  |  | 
 |  |  | import ItemCommon
 | 
 |  |  | import ChItem
 | 
 |  |  | import PlayerTJG
 | 
 |  |  | import EventShell
 | 
 |  |  | #---------------------------------------------------------------------
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |     
 | 
 |  |  |     
 | 
 |  |  |     #如果在普通地图, 就广播, 如果在副本就单个通知
 | 
 |  |  |     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)
 | 
 |  |  | 
 |  |  |     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
 | 
 |  |  | 
 | 
 |  |  | ## 国家频道(封包参数)
 | 
 |  |  | 
 |  |  | #  @return None
 | 
 |  |  | #  @remarks 函数详细说明.
 | 
 |  |  | def TalkCountry(index, tick):
 | 
 |  |  |     #===========================================================================
 | 
 |  |  |     # #20150918 hxp目前作为跨服阵营聊天频道
 | 
 |  |  |     # #20151009 hxp增加py自定义聊天频道
 | 
 |  |  |     # return
 | 
 |  |  |     # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
 | 
 |  |  |     #  | 
 |  |  |     #  | 
 |  |  |     # #等级判断
 | 
 |  |  |     # #if curPlayer.GetLV() < ChConfig.Def_PlayerTalkCountryLV:
 | 
 |  |  |     # #    PlayerControl.NotifyCode(curPlayer, "PlayerCall_Error_NoCountry")
 | 
 |  |  |     # #    return
 | 
 |  |  |     #  | 
 |  |  |     # #获得国家频封包
 | 
 |  |  |     # sendPack = IPY_GameWorld.IPY_CTalkCountry()
 | 
 |  |  |     # #玩家聊天内容
 | 
 |  |  |     # content = sendPack.GetContent()
 | 
 |  |  |     #  | 
 |  |  |     # #通用判断
 | 
 |  |  |     # if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick):
 | 
 |  |  |     #    return
 | 
 |  |  |     #  | 
 |  |  |     # #国王说话免费
 | 
 |  |  |     # #if PlayerCountry.CheckIsCountryKing(curPlayer.GetCountry() , curPlayer.GetID()):
 | 
 |  |  |     # #    PlayerControl.NotifyCode(curPlayer , "C16615EF-FDBC-49AF-9285668F7C8930AA")
 | 
 |  |  |     # #else:
 | 
 |  |  |     # #    moneyType = curPlayer.GetUseSilverType()
 | 
 |  |  |     # #    #金钱判定
 | 
 |  |  |     # #    if not PlayerControl.PayMoney(curPlayer, moneyType, ChConfig.Def_PlayerTalkCoutryMoney):
 | 
 |  |  |     # #        return False
 | 
 |  |  |     #  | 
 |  |  |     # #通用设置
 | 
 |  |  |     # SetTalkTime(curPlayer, content, IPY_GameWorld.tcCountry, tick)
 | 
 |  |  |     #  | 
 |  |  |     # #说话
 | 
 |  |  |     # extraValue = GetTalkExtraValue(curPlayer)
 | 
 |  |  |     # extras = ''
 | 
 |  |  |     # curPlayer.ChatCountry(content, extraValue, extras)
 | 
 |  |  |     #===========================================================================
 | 
 |  |  |     ## 跨服世界频道
 | 
 |  |  |     if GameWorld.IsCrossServer():
 | 
 |  |  |         return
 | 
 |  |  |      | 
 |  |  |     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
 | 
 |  |  |      | 
 |  |  |     if not CrossRealmPlayer.IsCrossServerOpen():
 | 
 |  |  |         PlayerControl.NotifyCode(curPlayer, "CrossMatching18")
 | 
 |  |  |         return
 | 
 |  |  |      | 
 |  |  |     sendPack = IPY_GameWorld.IPY_CTalkCountry()
 | 
 |  |  |     #玩家聊天内容
 | 
 |  |  |     content = sendPack.GetContent()
 | 
 |  |  |      | 
 |  |  |     #通用检测
 | 
 |  |  |     if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, checkSameMsg = False):
 | 
 |  |  |         return
 | 
 |  |  |      | 
 |  |  |     #通用设置
 | 
 |  |  |     SetTalkTime(curPlayer, content, IPY_GameWorld.tcCountry, tick)
 | 
 |  |  |     #发送聊天内容
 | 
 |  |  |     extras = GetTalkExtraValue(curPlayer)
 | 
 |  |  |     curPlayer.ChatCountry(content, 0, extras)
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | ## 联盟家族频道(封包参数)
 | 
 |  |  | 
 |  |  |     curPlayer.ChatFamily(content, 0, extras)
 | 
 |  |  |     #仙盟频道发言成就
 | 
 |  |  |     PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TalkFamily, 1)
 | 
 |  |  |     EventShell.EventRespons_Talk(curPlayer, 'talkfamily')
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | ## 队伍频道(封包参数)
 | 
 |  |  | 
 |  |  |     vipLv = objTalk.GetVIPLv()  # 玩家vip等级
 | 
 |  |  |     GMLevel = objTalk.GetGMLevel()
 | 
 |  |  |     job = objTalk.GetJob()
 | 
 |  |  |     #mergeWarRank = PlayerControl.GetMergeWarRank(objTalk)  | 
 |  |  |     #freshmanGuiderDay = PlayerFreshmanGuide.GetFreshmanGuiderDay(objTalk)
 | 
 |  |  |     
 | 
 |  |  |     extraValueStr = ""
 | 
 |  |  |     # vip等级
 | 
 |  |  | 
 |  |  |     extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_GM)% (GMLevel > 0)
 | 
 |  |  |     # job
 | 
 |  |  |     extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_JOB)% job
 | 
 |  |  |      | 
 |  |  |     # 跨服预选赛排位(称呼)
 | 
 |  |  |     #extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_MergeWarRank)%mergeWarRank
 | 
 |  |  |     # 新手指导员
 | 
 |  |  |     #extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_NewGuider)% (freshmanGuiderDay > 0)
 | 
 |  |  |     # QQ会员
 | 
 |  |  |     #operateInfo = int(objTalk.GetOperateInfo())
 | 
 |  |  |     #extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_QQOperate)% (operateInfo)
 | 
 |  |  |     # 气泡框
 | 
 |  |  |     extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_BubbleBox) % PlayerControl.GetChatBubbleBox(objTalk)
 | 
 |  |  |     # 服务器组ID
 | 
 |  |  |     extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_ServerGroupID) % PlayerControl.GetPlayerServerGroupID(objTalk)
 | 
 |  |  |     # 等级
 | 
 |  |  |     extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_LV) % objTalk.GetLV()
 | 
 |  |  |     return extraValueStr
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | # };
 | 
 |  |  | #===============================================================================
 | 
 |  |  | def OnVoiceChat(index, clientPack, tick):
 | 
 |  |  |     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
 | 
 |  |  |     if GetGMToolForbidTalk(curPlayer):
 | 
 |  |  |         return
 | 
 |  |  |     if clientPack.ChannelType != ShareDefine.Def_ChannelChat_Area:
 | 
 |  |  |         return
 | 
 |  |  |     sendPack = ChPyNetSendPack.tagGCVoiceChat()
 | 
 |  |  |     sendPack.Clear()
 | 
 |  |  |     sendPack.ChannelType = clientPack.ChannelType
 | 
 |  |  |     sendPack.SrcName = curPlayer.GetName()
 | 
 |  |  |     sendPack.SrcNameLen = len(curPlayer.GetName())
 | 
 |  |  |     sendPack.PlayerID = curPlayer.GetID()
 | 
 |  |  |     sendPack.Len = clientPack.Len
 | 
 |  |  |     sendPack.Content = clientPack.Content
 | 
 |  |  |     sendPack.Extras = GetTalkExtraValue(curPlayer)
 | 
 |  |  |     sendPack.ExtraValue = len(sendPack.Extras)
 | 
 |  |  |      | 
 |  |  |     # 区域频道
 | 
 |  |  |      | 
 |  |  |     #如果在普通地图, 就广播, 如果在副本就单个通知
 | 
 |  |  |     if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull:
 | 
 |  |  |         curPlayer.BroadCastAll(sendPack.GetBuffer(), len(sendPack.GetBuffer()))
 | 
 |  |  |     else:
 | 
 |  |  |         playerManager = GameWorld.GetMapCopyPlayerManager()
 | 
 |  |  |          | 
 |  |  |         for index in range(0 , playerManager.GetPlayerCount()):
 | 
 |  |  |             #广播玩家
 | 
 |  |  |             tempPlayer = playerManager.GetPlayerByIndex(index)
 | 
 |  |  |             if not tempPlayer.GetPlayerID():
 | 
 |  |  |                 continue
 | 
 |  |  |              | 
 |  |  |             if PlayerTJG.GetIsTJG(tempPlayer):
 | 
 |  |  |                 continue
 | 
 |  |  |                  | 
 |  |  |             NetPackCommon.SendFakePack(tempPlayer, sendPack)
 | 
 |  |  | #    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
 | 
 |  |  | #    if GetGMToolForbidTalk(curPlayer):
 | 
 |  |  | #        return
 | 
 |  |  | #    if clientPack.ChannelType != ShareDefine.Def_ChannelChat_Area:
 | 
 |  |  | #        return
 | 
 |  |  | #    sendPack = ChPyNetSendPack.tagGCVoiceChat()
 | 
 |  |  | #    sendPack.Clear()
 | 
 |  |  | #    sendPack.ChannelType = clientPack.ChannelType
 | 
 |  |  | #    sendPack.SrcName = curPlayer.GetName()
 | 
 |  |  | #    sendPack.SrcNameLen = len(curPlayer.GetName())
 | 
 |  |  | #    sendPack.PlayerID = curPlayer.GetID()
 | 
 |  |  | #    sendPack.Len = clientPack.Len
 | 
 |  |  | #    sendPack.Content = clientPack.Content
 | 
 |  |  | #    sendPack.Extras = GetTalkExtraValue(curPlayer)
 | 
 |  |  | #    sendPack.ExtraValue = len(sendPack.Extras)
 | 
 |  |  | #     | 
 |  |  | #    # 区域频道
 | 
 |  |  | #     | 
 |  |  | #    #如果在普通地图, 就广播, 如果在副本就单个通知
 | 
 |  |  | #    if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull:
 | 
 |  |  | #        curPlayer.BroadCastAll(sendPack.GetBuffer(), len(sendPack.GetBuffer()))
 | 
 |  |  | #    else:
 | 
 |  |  | #        playerManager = GameWorld.GetMapCopyPlayerManager()
 | 
 |  |  | #         | 
 |  |  | #        for index in range(0 , playerManager.GetPlayerCount()):
 | 
 |  |  | #            #广播玩家
 | 
 |  |  | #            tempPlayer = playerManager.GetPlayerByIndex(index)
 | 
 |  |  | #            if not tempPlayer.GetPlayerID():
 | 
 |  |  | #                continue
 | 
 |  |  | #             | 
 |  |  | #            if PlayerTJG.GetIsTJG(tempPlayer):
 | 
 |  |  | #                continue
 | 
 |  |  | #                 | 
 |  |  | #            NetPackCommon.SendFakePack(tempPlayer, sendPack)
 | 
 |  |  |     return
 | 
 |  |  | 
 |