#!/usr/bin/python # -*- coding: GBK -*- # ##@package # # @todo: Íæ¼ÒÁÄÌìÂß¼­ Ö§³ÖÓïÒô # # @author: Alee # @date 2018-4-24 ÏÂÎç07:36:28 # @version 1.0 # # @note: # #--------------------------------------------------------------------- import IPY_GameWorld import GameWorld import PlayerControl import ChConfig import FBLogic #import ReadChConfig import ShareDefine import ChPyNetSendPack import CrossRealmPlayer import NetPackCommon import EventReport import PlayerSuccess import IpyGameDataPY import ItemCommon import ChItem import PlayerTJG import EventShell import PyGameData import PlayerLove import math #--------------------------------------------------------------------- ## ÇøÓòƵµÀ(·â°ü²ÎÊý) # @param index Íæ¼ÒË÷Òý # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. # Õû¸öµØÍ¼µÄÈ˶¼¿ÉÒÔÌýµ½ def TalkArea(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) #»ñµÃÇøÓòƵ·â°ü sendPack = IPY_GameWorld.IPY_CTalkArea() #Íæ¼ÒÁÄÌìÄÚÈÝ content = sendPack.GetContent() #ͨÓÃÅÐ¶Ï if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, talkType=IPY_GameWorld.tcArea): return #ͨÓÃÉèÖà SetTalkTime(curPlayer, content, IPY_GameWorld.tcArea, tick) #Èç¹ûÔÚÆÕͨµØÍ¼, ¾Í¹ã²¥, Èç¹ûÔÚ¸±±¾¾Íµ¥¸ö֪ͨ if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull and not GameWorld.IsCrossServer(): #¹ã²¥ extras = GetTalkExtraValue(curPlayer) curPlayer.ChatArea(content, 0, extras) else: __DoLogic_FB_TalkArea(curPlayer, content) return True ## ¸±±¾ÖÐ˵»° # @param curPlayer µ±Ç°Íæ¼Ò # @param content ½²»°µÄÄÚÈÝ # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def __DoLogic_FB_TalkArea(curPlayer, content): playerManager = GameWorld.GetMapCopyPlayerManager() for index in range(0 , playerManager.GetPlayerCount()): #¹ã²¥Íæ¼Ò tempPlayer = playerManager.GetPlayerByIndex(index) if not tempPlayer.GetPlayerID(): continue #µ¥¸ö¹ã²¥Ëµ»° extras = GetTalkExtraValue(curPlayer) tempPlayer.Sync_ChatArea(curPlayer.GetPlayerID(), content, 0, extras) return ## ÊÀ½çƵµÀ(·â°ü²ÎÊý) # @param index Íæ¼ÒË÷Òý # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def TalkWorld(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) sendPack = IPY_GameWorld.IPY_CTalkGong() #Íæ¼ÒÁÄÌìÄÚÈÝ content = sendPack.GetContent() #ͨÓüì²â if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, checkSameMsg = False, talkType=IPY_GameWorld.tcWorld): return #ͨÓÃÉèÖà SetTalkTime(curPlayer, content, IPY_GameWorld.tcWorld, tick) #·¢ËÍÁÄÌìÄÚÈÝ extras = GetTalkExtraValue(curPlayer) curPlayer.ChatGong(content, 0, extras) #ÊÀ½çƵµÀ·¢ÑÔ³É¾Í #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TalkWorld, 1) PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_TalkWorld, 1) EventShell.EventRespons_Talk(curPlayer, 'talkworld') return ## ¹ú¼ÒƵµÀ(·â°ü²ÎÊý) # @param index Íæ¼ÒË÷Òý # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def TalkCountry(index, tick): ## ¿ç·þÊÀ½çƵµÀ 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, talkType=IPY_GameWorld.tcCountry): return #ͨÓÃÉèÖà SetTalkTime(curPlayer, content, IPY_GameWorld.tcCountry, tick) #·¢ËÍÁÄÌìÄÚÈÝ extras = GetTalkExtraValue(curPlayer) curPlayer.ChatCountry(content, 0, extras) return ## ÁªÃ˼Ò×寵µÀ(·â°ü²ÎÊý) # @param index Íæ¼ÒË÷Òý # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def TalkFamily(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) if curPlayer.GetFamilyID() == 0: PlayerControl.NotifyCode(curPlayer, "jiazu_lhs_0 ") return sendPack = IPY_GameWorld.IPY_CTalkBang() #Íæ¼ÒÁÄÌìÄÚÈÝ content = sendPack.GetContent() 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 ## ¶ÓÎ鯵µÀ(·â°ü²ÎÊý) # @param index Íæ¼ÒË÷Òý # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def TalkTeam(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) if curPlayer.GetTeam() == None: PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_161795 ") return sendPack = IPY_GameWorld.IPY_CTalkDui() #Íæ¼ÒÁÄÌìÄÚÈÝ content = sendPack.GetContent() if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, talkType=IPY_GameWorld.tcTeam): return #ͨÓÃÉèÖà SetTalkTime(curPlayer, content, IPY_GameWorld.tcTeam, tick) #˵»° extras = GetTalkExtraValue(curPlayer) curPlayer.ChatTeam(content, 0, extras) return ## ˽ÁÄÆµµÀ(·â°ü²ÎÊý) # @param index Íæ¼ÒË÷Òý # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def TalkPrivate(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) sendPack = IPY_GameWorld.IPY_CTalkMiFix() #Íæ¼ÒÁÄÌìÄÚÈÝ content = sendPack.GetContent() if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, talkType=IPY_GameWorld.tcPrivate): return #ͨÓÃÉèÖà SetTalkTime(curPlayer, content, IPY_GameWorld.tcPrivate, tick) #˵»° 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 ## ˽ÁÄÆµµÀ(·â°ü²ÎÊý) # @param index Íæ¼ÒË÷Òý # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def TalkPrivateName(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) sendPack = IPY_GameWorld.IPY_CTalkMi() #Íæ¼ÒÁÄÌìÄÚÈÝ content = sendPack.GetContent() if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, talkType=IPY_GameWorld.tcPrivate): return #ͨÓÃÉèÖà SetTalkTime(curPlayer, content, IPY_GameWorld.tcPrivate, tick) #˵»° extras = GetTalkExtraValue(curPlayer) curPlayer.ChatMiByName(sendPack.GetTalkType(), sendPack.GetTargetName(), content, 0, extras) return #-3ÃëÖØ¸´,;ÁÄÌìÐÅϢ̫³¤ ## ÁÄÌìͨÓüì²é # @param curPlayer µ±Ç°Íæ¼Ò # @param content ÁÄÌìÄÚÈÝ # @param length ÁÄÌ쳤¶È # @param tick µ±Ç°Ê±¼ä # @param checkGMForbidenTalk ¼ì²éÊÇ·ñ½ûÑÔ # @param checkSameMsg ÊÇ·ñ¼ì²éÏàͬÐÅÏ¢ # @return True or False # @remarks º¯ÊýÏêϸ˵Ã÷. 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") return False #¼ä¸ôʱ¼ä if tick - curPlayer.GetLastChatTick() < ChConfig.Def_PlayerTalkTick: #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") return False #²»ÄÜÖ»·¢¿Õ¸ñ if content.strip() == '': PlayerControl.NotifyCode(curPlayer, "CanootTalk14") return False return True ## »ñµÃÍæ¼ÒÊÇ·ñ±»½ûÑÔ # @param curPlayer µ±Ç°Íæ¼Ò # @return ÊÇ·ñ½ûÑÔ def GetGMToolForbidTalk(curPlayer): #accIDForbid = (curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalk)) > 0 return curPlayer.GetGMForbidenTalk()# or accIDForbid ## ÁÄÌìʱ¼äͨÓÃÉèÖà # @param curPlayer µ±Ç°Íæ¼Ò # @param content ÁÄÌìÄÚÈÝ # @param type ÀàÐÍ # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def SetTalkTime(curPlayer, content, type, tick): #ÉèÖõ±Ç°Ê±¼äÎªÍæ¼Ò¿ªÊ¼ÁÄÌìʱ¼ä curPlayer.SetLastChatTick(tick) #ÉèÖõ±Ç°ÁÄÌìÄÚÈÝÎªÍæ¼Ò±¾´ÎÁÄÌìÄÚÈÝ #curPlayer.SetLastChatContent(content) #ÉèÖõ±Ç°ÆµµÀʱ¼ä curPlayer.SetTalkTick(type, tick) return ## Ðżþ2B·â°ü # @param index Íæ¼ÒË÷Òý # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def GBLetter(index, tick): #=========================================================================== # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # sendPack = IPY_GameWorld.IPY_CGBLetter() # # if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_GBLetter) <= ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_GBLetter]: # #·¢ÐÅ1Ãë¼ä¸ô # return # # curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_GBLetter, tick) # # #Ðżþ±êÌâºÍÄÚÈÝ # titleStr = sendPack.GetTitle() # contentStr = sendPack.GetContent() # # #·¢¸øGM # curPlayer.Interface_SendGMLetter(titleStr, contentStr) #=========================================================================== return ## ¼ÇÂ¼Íæ¼ÒÁÄÌìÄÚÈÝ # @param messageStr ÁÄÌìÀàÐÍ # @param curPlayer ÁÄÌìµÄÍæ¼Ò # @param tagPlayer None # @param content ÁÄÌìÄÚÈÝ # @param addinfo ¶îÍâÐÅÏ¢ # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def __LogInDBPlayerTalk(messageStr , curPlayer , tagPlayer , content, addinfo=""): # Óɿͻ§¶ËÏòºǫ́·¢ËÍ return #=========================================================================== # tagName = "" if not tagPlayer else tagPlayer.GetName() # #EventReport.WriteEvent_chat_log(curPlayer, content, messageStr, tagName, addinfo) # gameWorld = GameWorld.GetGameWorld() # #¿ª¹ØÎ´¿ªÆô # if not gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_PurTalk): # return # # #½«ÁÄÌìÄÚÈÝ´æÈëÊý¾Ý¿â # gameWorld.DataServer_TalkTrace('%s'%(messageStr), curPlayer, tagPlayer, content) # return #=========================================================================== ## »ñÈ¡ÁÄÌìÄÚÈݸ½¼ÓÖµ # @param objTalk: ÁÄÌì¶ÔÏó # @return: ÁÄÌìÄÚÈݸ½¼ÓÖµ def GetTalkExtraValue(objTalk): vipLv = objTalk.GetVIPLv() # Íæ¼ÒvipµÈ¼¶ GMLevel = objTalk.GetGMLevel() job = objTalk.GetJob() playerID = objTalk.GetID() extraValueStr = "" # vipµÈ¼¶ extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_VipLv)%vipLv # GM extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_GM)% (GMLevel > 0) # job extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_JOB)% job # ÆøÅÝ¿ò 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() # °éÂÂÐÅÏ¢ coupleName = PlayerControl.GetCoupleName(objTalk) coupleJob = PlayerControl.GetCoupleJob(objTalk) bridePriceMaxID = PlayerControl.GetBridePriceMaxID(objTalk) face = objTalk.GetFace() facePic = objTalk.GetFacePic() extraValueStr = "%s|%s|%s|%s|%s|%s" % (extraValueStr, coupleName, coupleJob, bridePriceMaxID, face, facePic) return extraValueStr ## ¸½¼ÓÐÅÏ¢µÄ³¤¶ÈÆ¥Åä # @param extraValueInfo: ¸½¼ÓÐÅÏ¢µÄ³¤¶È # @return: def GetTalkExtraValueStar(extraValueType): extraValueInfo = ShareDefine.Def_TalkExtraValue_LenDict.get(extraValueType) extraValueLen = extraValueInfo[1] - extraValueInfo[0] return "%0" + str(extraValueLen) + "d" #// A2 17 À®°ÈÁÄÌì #tagCMPYSpeaker # #struct tagCMPYSpeaker #{ # tagHead Head; # BYTE SpeakerType; //1-±¾·þ£»2-¿ç·þ # BYTE IsUseGold; //ÊÇ·ñʹÓÃ×êʯ # BYTE ItemIndex; //ʹÓÃÎïÆ·Ëµ»°Ê±, ÎïÆ·Index # BYTE TextLen; //×Ö·û³¤¶È # char Text[TextLen]; //size = TextLen #}; def OnUsePYSpeaker(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) playerID = curPlayer.GetPlayerID() SpeakerType = clientData.SpeakerType IsUseGold = clientData.IsUseGold ItemIndex = clientData.ItemIndex TextLen = clientData.TextLen Text = clientData.Text #GameWorld.Log("Íæ¼ÒÀ®°ÈÁÄÌì: SpeakerType=%s,IsUseGold=%s,ItemIndex=%s" # % (SpeakerType, IsUseGold, ItemIndex), playerID) if not __CheckTalk(curPlayer, Text, TextLen, tick): return if IsUseGold: bugleItemID = IpyGameDataPY.GetFuncCfg('BugleItem', SpeakerType) if not bugleItemID: GameWorld.ErrLog("¹¦ÄÜÅäÖñíûÓÐÅäÖöÔÓ¦À®°ÈÀàÐÍÎïÆ·ÏûºÄ£¡SpeakerType=%s,Çë¼ì²éBugleItem!" % SpeakerType) return costMoney = ItemCommon.GetAutoBuyItemNeedGold({bugleItemID:1}) if not costMoney: return moneyType = IPY_GameWorld.TYPE_Price_Gold_Money infoDict = {"SpeakerType":SpeakerType, ChConfig.Def_Cost_Reason_SonKey:bugleItemID} if not PlayerControl.PayMoney(curPlayer, moneyType, costMoney, ChConfig.Def_Cost_UseSpeaker, infoDict, 1): return # ¼ì²éʹÓÃÀ®°ÈµÀ¾ß elif not ChItem.DoSpeaker_UseItem(curPlayer, ItemIndex, SpeakerType): GameWorld.Log(" À®°ÈµÀ¾ß²»¿ÉÓã¡", playerID) return #֪ͨÊÀ½ç·þÎñÆ÷,ʹÓÃСÀ®°È extraValue = 0 extras = GetTalkExtraValue(curPlayer) msgList = str([SpeakerType, Text, extraValue, extras]) GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(playerID, 0, 0, 'PYSpeaker', msgList, len(msgList)) return #// A2 16 ×Ô¶¨ÒåÍæ¼ÒÁÄÌì #tagCMPyTalk # #struct tagCMPyTalk #{ # tagHead Head; # BYTE TalkType; // ×Ô¶¨ÒåÁÄÌìÀàÐÍ # WORD Len; # char Content[Len]; //size = Len #}; ## ×Ô¶¨ÒåÍæ¼ÒÁÄÌì # @param index # @param clientData # @param tick # @return def OnPyTalk(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) #GameWorld.DebugLog("OnPyTalk, Name:%s" % curPlayer.GetPlayerName()) talkType = clientData.TalkType contentLen = clientData.Len content = clientData.Content if talkType not in ShareDefine.TalkTypeList: GameWorld.ErrLog("OnPyTalk talkType(%s) is not define!" % talkType, curPlayer.GetPlayerID()) return #ͨÓÃÅÐ¶Ï if not __CheckTalk(curPlayer, content, contentLen, tick): return #˵»° extraValue = 0 extras = GetTalkExtraValue(curPlayer) isChatOK = False if talkType == ShareDefine.Def_TalkType_FBFaction: isChatOK = __ChatFBFaction(curPlayer, talkType, content, extraValue, extras) if not isChatOK: return #ÉèÖõ±Ç°Ê±¼äÎªÍæ¼Ò¿ªÊ¼ÁÄÌìʱ¼ä curPlayer.SetLastChatTick(tick) #ÉèÖõ±Ç°ÁÄÌìÄÚÈÝÎªÍæ¼Ò±¾´ÎÁÄÌìÄÚÈÝ curPlayer.SetLastChatContent(content) return True ## py×Ô¶¨ÒåÁÄÌìÍÆËͰü def __GetPyTalkPack(curPlayer, talkType, content, extraValue, extras): pyTalk = ChPyNetSendPack.tagMCPyTalk() pyTalk.Clear() pyTalk.TalkType = talkType pyTalk.Name = curPlayer.GetPlayerName() pyTalk.NameLen = len(pyTalk.Name) pyTalk.PlayerID = curPlayer.GetPlayerID() pyTalk.Len = len(content) pyTalk.Content = content pyTalk.ExtraValue = extraValue pyTalk.Extras = extras return pyTalk ## ¸±±¾ÕóÓªÁÄÌì def __ChatFBFaction(curPlayer, talkType, content, extraValue, extras): curFaction = curPlayer.GetFaction() if not curFaction: return False pyTalkPack = __GetPyTalkPack(curPlayer, talkType, content, extraValue, extras) playerManager = GameWorld.GetMapCopyPlayerManager() for index in range(playerManager.GetPlayerCount()): player = playerManager.GetPlayerByIndex(index) if not player: continue if player.GetFaction() != curFaction: continue if PlayerTJG.GetIsTJG(player): continue NetPackCommon.SendFakePack(player, pyTalkPack) return True #=============================================================================== # //A2 26 ÓïÒôÁÄÌì #tagCMVoiceChat # # struct tagCMVoiceChat # { # tagHead Head; # BYTE ChannelType; // 5 ÇøÓò --- ²é¿´·â°ütagCGVoiceChat 1 ÊÀ½ç 2 ÏÉÃË 3 ˽ÁÄ(ºÃÓÑ) 4 ¶ÓÎé # BYTE TargetNameLen; # char TargetName[TargetNameLen]; //size = TargetNameLen # DWORD TargetID; // ĬÈÏ·¢Íæ¼ÒID£¬Ã»ÓÐID²Å·¢Ãû³Æ # WORD Len; # BYTE Content[Len]; //size = Len # }; #=============================================================================== 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) return