#!/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 NetPackCommon import EventReport import PlayerSuccess import IpyGameDataPY import ItemCommon import ChItem import PlayerTJG #--------------------------------------------------------------------- ## ÇøÓòƵµÀ(·â°ü²ÎÊý) # @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): return #ͨÓÃÉèÖà SetTalkTime(curPlayer, content, IPY_GameWorld.tcArea, tick) #Èç¹ûÔÚÆÕͨµØÍ¼, ¾Í¹ã²¥, Èç¹ûÔÚ¸±±¾¾Íµ¥¸ö֪ͨ if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull: #¹ã²¥ 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): return #ͨÓÃÉèÖà SetTalkTime(curPlayer, content, IPY_GameWorld.tcWorld, tick) #·¢ËÍÁÄÌìÄÚÈÝ extras = GetTalkExtraValue(curPlayer) curPlayer.ChatGong(content, 0, extras) #ÊÀ½çƵµÀ·¢ÑÔ³É¾Í PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TalkWorld, 1) return ## ¹ú¼ÒƵµÀ(·â°ü²ÎÊý) # @param index Íæ¼ÒË÷Òý # @param tick µ±Ç°Ê±¼ä # @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) #=========================================================================== 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): return extras = GetTalkExtraValue(curPlayer) curPlayer.ChatFamily(content, 0, extras) #ÏÉÃËÆµµÀ·¢ÑÔ³É¾Í PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TalkFamily, 1) 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): 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): return #ͨÓÃÉèÖà SetTalkTime(curPlayer, content, IPY_GameWorld.tcPrivate, tick) #˵»° extras = GetTalkExtraValue(curPlayer) curPlayer.ChatMiByID(sendPack.GetTalkType(), sendPack.GetPlayerID(), 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): 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): 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 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() #mergeWarRank = PlayerControl.GetMergeWarRank(objTalk) #freshmanGuiderDay = PlayerFreshmanGuide.GetFreshmanGuiderDay(objTalk) 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_MergeWarRank)%mergeWarRank # ÐÂÊÖÖ¸µ¼Ô± #extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_NewGuider)% (freshmanGuiderDay > 0) # QQ»áÔ± #operateInfo = int(objTalk.GetOperateInfo()) #extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_QQOperate)% (operateInfo) 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): return 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