#!/usr/bin/python # -*- coding: GBK -*- # # ##@package UpdatePlayerName.py # # @todo:Íæ¼Ò¸ÄÃû # # @author jiang # @date 2013-01-23 13:30 # @version 1.4 # @note: # # @change: "2013-03-13 17:00" wdb ɾ³ý·â°ü # @change: "2014-05-22 10:20" xcc »Ö¸´¸ÄÃû¹¦ÄÜ # @change: "2014-05-30 1:20" xmnathan ¸ÄÃûʱÐ޸ļÒ×åÄÚÃû³Æ # @change: "2016-03-28 17:00" hxp ¸ÄÃûÈ«Ãû¸ñʽÅäÖà #------------------------------------------------------------------------------ #"""Version = 2016-03-28 17:00""" #------------------------------------------------------------------------------ # µ¼Èë import GameWorld import IPY_GameServer import ChConfig import ChPyNetSendPack import NetPackCommon import ShareDefine import PlayerControl import DirtyList import DataRecordPack import PlayerUniversalGameRec import PlayerBillboard import PlayerSocial #------------------------------------------------------------------------------ ## MapServerÇëÇóÍæ¼Ò¸ü¸ÄÃû×Ö # @param curPlayer: Íæ¼ÒʵÀý # @param newNameMsg: ÐÂÃû×Ö # @param tick: ʱ¼ä´Á # @return: None def MapServer_UpdatePlayerName(curPlayer, newNameMsg, tick): GameWorld.DebugLog("MapServer_UpdatePlayerName newNameMsg=%s" % newNameMsg) if __GetNameByUniversalGameRec(curPlayer): #¸ÄÃû½øÐÐÖÐ return newName, serverID = eval(newNameMsg) __UpdatePlayerName(curPlayer, newName, serverID, tick) return ## Íæ¼Ò¸ü¸ÄÃû×Ö # @param curPlayer: Íæ¼ÒʵÀý # @param newName: ÐÂÃû×Ö # @param tick: ʱ¼ä´Á # @return: None def __UpdatePlayerName(curPlayer, newName, serverID, tick): curPlayerID = curPlayer.GetID() GameWorld.Log("UpdatePlayerName NewName = %s, serverID=%s " % (newName, serverID), curPlayerID) #C++¹ýÂ˿ոñ newName = GameWorld.GetGameWorld().GetCharTrim(newName) if newName.strip() == "" or DirtyList.IsWordForbidden(newName): #Ãû×Ö²»ºÏ·¨ UpdatePlayerNameResult(curPlayer, ShareDefine.Def_Rename_Result_Err) return False playerNameLen = len(newName) if playerNameLen < ChConfig.Def_CreatRole_MinStr or playerNameLen > ChConfig.Def_CreatRole_MaxStr: #Ãû×Ö³¤¶È²»ÕýÈ· UpdatePlayerNameResult(curPlayer, ShareDefine.Def_Rename_Result_LenErr) return False fullName = GameWorld.GetPlayerFullName(curPlayer, newName, serverID) if not fullName: #Ãû×Ö³¤¶È²»ÕýÈ· UpdatePlayerNameResult(curPlayer, ShareDefine.Def_Rename_Result_LenErr) return False #¼Ç¼½ÇÉ«¸ÄÃûÐÅÏ¢[ÐÂÃû×Ö, ¾ÉÃû×Ö, Íæ¼ÒID, serverID] #noteInfoList = [newName, curPlayer.GetName(), curPlayerID, serverID] # ÕâÀï²»´æfullName PlayerUniversalGameRec.MapServer_UniversalGameRec(curPlayer, ShareDefine.Def_UniversalGameRecType_UpdatePlayerName, [curPlayerID, serverID], [newName, curPlayer.GetName()]) #֪ͨdb½øÐд¦Àí curPlayer.SendToDbRenamePlayer(fullName) return ## ÊÕµ½DB»ØÓ¦(GameServerScript.iniÀàÃû×¢²á½Å±¾) # @param index: Íæ¼ÒË÷Òý # @param tick: ʱ¼ä´Á # @return: ½á¹û def OnRenamePlayerReply(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) result = curPlayer.GetRenamePlayerResult() newName = curPlayer.GetNewPlayerName() GameWorld.Log("OnRenamePlayerReply Reply result = %s, newName = %s"%(result, newName), curPlayer.GetID()) if not (result and newName): #¸ÄÃûʧ°Ü»òÃû×ÖΪ¿Õ GameWorld.ErrLog("UpdatePlayerName NewName repeat, db Reply result = %s, newName = %s"%\ (result, newName), curPlayer.GetID()) #֪ͨ¸ÄÃû½á¹û UpdatePlayerNameResult(curPlayer, ShareDefine.Def_Rename_Result_Repeat) return False #֪ͨMapServer½øÐиÄÃû´¦Àí curPlayer.SynMapServerPlayerName(newName) return True #=============================================================================== # //01 17ͬ²½½ÇÉ«Ãû½á¹û#tagGUpdatePlayerNameResult # # struct tagGUpdatePlayerNameResult # { # tagHead Head; # BYTE Result; # } #=============================================================================== ## ÊÕµ½MapServer·µ»Ø½á¹û # @param index: Íæ¼ÒË÷Òý # @param tick: ʱ¼ä´Á # @return: ½á¹û def MapServer_UpdatePlayerNameResult(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) sendPack = IPY_GameServer.IPY_GUpdatePlayerNameResult() result = sendPack.GetResult() GameWorld.Log("UpdatePlayerName, MapServer Reply result = %s"%result) if not result: #MapServer·µ»Ø¸ÄÃûʧ°Ü֪ͨ¸ÄÃû½á¹û UpdatePlayerNameResult(curPlayer, ShareDefine.Def_Rename_Result_MapErr) return False #¼Ç¼¾ÉÃû×Ö oldPlayerName = curPlayer.GetName() #ÉèÖÃÐÂÃû×Ö newName = curPlayer.GetNewPlayerName() curPlayer.SetName(newName) #»ñÈ¡ÐÂÃû×Ö playerName = curPlayer.GetName() #֪ͨLoginServer curPlayer.SynLoginServerPlayerName(playerName) #֪ͨRouteServer¸ÄÃû curPlayer.SynRouteServerPlayerName(playerName) #¸ÄÃû³É¹¦ UpdatePlayerNameResult(curPlayer, ShareDefine.Def_Rename_Result_Succeed) #Á÷Ïò¼Ç¼ DataRecordPack.DR_UpdatePlayerName(curPlayer, oldPlayerName) #È«¼Ò×å֪ͨ familyID = curPlayer.GetFamilyID() if familyID: #jiazu_pan_243780 °ï»á³ÉÔ±%sÒѾ­¸üÃûΪ%s. PlayerControl.FamilyNotify(familyID, 'jiazu_pan_243780', [oldPlayerName, newName]) return True ## »ñÈ¡¼Ç¼ÖеÄÃû×Ö # @param curPlayer: Íæ¼ÒʵÀý # @return: None def __GetNameByUniversalGameRec(curPlayer): curPlayerID = curPlayer.GetID() recTypeListData = PlayerUniversalGameRec.GetRecordList(ShareDefine.Def_UniversalGameRecType_UpdatePlayerName) for index in range(recTypeListData.Count()): universalRecData = recTypeListData.At(index) if curPlayerID != universalRecData.GetValue1(): #²»ÊÇÒª²éÕÒµÄÍæ¼Ò continue return universalRecData return None ## ɾ³ýͨÓñí¼Ç¼µÄ¸ÄÃûÐÅÏ¢ # @param curPlayer: Íæ¼ÒʵÀý # @return: None def __DelUniversalGameRec(curPlayer): curPlayerID = curPlayer.GetID() recTypeListData = PlayerUniversalGameRec.GetRecordList(ShareDefine.Def_UniversalGameRecType_UpdatePlayerName) for index in range(recTypeListData.Count()): universalRecData = recTypeListData.At(index) if curPlayerID != universalRecData.GetValue1(): #²»ÊÇÒª²éÕÒµÄÍæ¼Ò continue recTypeListData.Delete(index) return return ## ¸ÄÃû½á¹û # @param curPlayer: Íæ¼ÒʵÀý # @param result: ½á¹û # @return: None def UpdatePlayerNameResult(curPlayer, result): #֪ͨMapServer½â³ý¸ÄÃûËø curPlayerID = curPlayer.GetID() GameWorld.GetPlayerManager().MapServer_QueryPlayer(curPlayerID, 0, curPlayerID, curPlayer.GetMapID(), 'ChearUpdatePlayerName', '%s'%(result), len(str(result))) #¸ÄÃû³É¹¦ if result == ShareDefine.Def_Rename_Result_Succeed: #¾ÀÕýÅÅÐаñÖеÄÍæ¼ÒÃû×ּǼ PlayerBillboard.RedressBillboard(curPlayer) #¾ÀÕýͨÓüǼ±íÖеÄÍæ¼ÒÃû×Ö RedressUniversalGameRec(curPlayer) #¾ÀÕý¼Ò×åÐÐΪ¼Ç¼ RedressFamilyAction(curPlayer) #Ð޸ļÒ×åÐÅÏ¢ RedressFamily(curPlayer) #¾ÀÕýÉç½»ÖÐÍæ¼ÒÃû×Ö PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), IPY_GameServer.CDBPlayerRefresh_PlayerName, curPlayer.GetName()) #ɾ³ýͨÓñí¼Ç¼µÄ¸ÄÃûÐÅÏ¢ #@warning: ±ØÐëÔÚ¾ÀÕýÅÅÐкó, ÒòΪ¾ÀÕý³èÎïÅÅÐаñÓÐÓõ½Íæ¼Ò¸ÄÃûǰµÄ¾ÉÃû×Ö __DelUniversalGameRec(curPlayer) #֪ͨ¿Í»§¶Ë¸ÄÃû½á¹û Sync_UpdatePlayerNameResult(curPlayer, result) return #=============================================================================== # //A9 21 ½ÇÉ«¸ÄÃû½á¹û #tagUpdatePlayerNameResult # # struct tagUpdatePlayerNameResult # { # tagHead Head; # BYTE Result; //½ÇÉ«¸ÄÃû½á¹û # }; #=============================================================================== ## ֪ͨ½ÇÉ«¸ÄÃû½á¹û # @param curPlayer: Íæ¼ÒʵÀý # @param result: ½á¹û # @return: None def Sync_UpdatePlayerNameResult(curPlayer, result): pack = ChPyNetSendPack.tagUpdatePlayerNameResult() pack.Clear() pack.Result = result NetPackCommon.SendFakePack(curPlayer, pack) return ## ¾ÀÕýͨÓÃÐÅÏ¢±íÖÐÍæ¼ÒÃû×Ö # @param curPlayer: Íæ¼ÒʵÀý # @return: None def RedressUniversalGameRec(curPlayer): redressGameRecTypeList = ( ShareDefine.Def_UniversalGameRecType_HijackTruck, # ½ÙïÚ1 ) curPlayerName = curPlayer.GetName() gameRecData = __GetNameByUniversalGameRec(curPlayer) if not gameRecData: return oldName = gameRecData.GetStrValue2() universalRecMgr = GameWorld.GetUniversalRecMgr() for index in redressGameRecTypeList: recTypeListData = universalRecMgr.GetTypeList(index) recCount = recTypeListData.Count() for index in range(0, recCount): universalRecData = recTypeListData.At(index) if oldName == universalRecData.GetStrValue1(): universalRecData.SetStrValue1(curPlayerName) if ShareDefine.Def_UniversalGameRecType_HijackTruck and oldName == universalRecData.GetStrValue2(): #½ÙïڼǼÖÐ, ×Ö¶Î2Ϊ½ÙïÚÕßÃû×Ö universalRecData.SetStrValue2(curPlayerName) return #------------------------------------------------------------------------------ ## ¾ÀÕý¼Ò×åÐÐΪ¼Ç¼ÖеÄÍæ¼ÒÃû×Ö # @param curPlayer: Íæ¼ÒʵÀý # @return: None def RedressFamilyAction(curPlayer): familyId = curPlayer.GetFamilyID() if not familyId: #¸ÄÍæ¼ÒûÓмÒ×å return gameRecData = __GetNameByUniversalGameRec(curPlayer) if not gameRecData: return curPlayerName = curPlayer.GetName() oldName = gameRecData.GetStrValue2() allFamilyActionManager = GameWorld.GetFamilyActionManager() for actionType in ShareDefine.Def_ActionTypeList: familyAction = allFamilyActionManager.GetFamilyAction(familyId, actionType) for index in range(0, familyAction.Count()): familyActionData = familyAction.At(index) name = familyActionData.GetName() if name != oldName: continue familyActionData.SetName(curPlayerName) # ÉèÖÃÃû×Ö return ## ¾ÀÕý¼Ò×åÖеÄÍæ¼ÒÃû×Ö # @param curPlayer: Íæ¼ÒʵÀý # @return: None def RedressFamily(curPlayer): familyId = curPlayer.GetFamilyID() if not familyId: #Íæ¼ÒûÓмÒ×å return curFamily = curPlayer.GetFamily() #¼Ò×峤Ãû×Ö if curFamily.GetLeaderID() == curPlayer.GetID(): curFamily.SetLeaderName(curPlayer.GetName()) #¼Ò×å³ÉÔ±Ãû×Ö curMember = curFamily.FindMember(curPlayer.GetID()) if curMember: curMember.SetName(curPlayer.GetName()) return #------------------------------------------------------------------------------ ## Íæ¼ÒÉÏÏß¾ÀÕýÃû×ÖÐ޸Ľá¹û # @param curPlayer: Íæ¼ÒʵÀý # @param tick: ʱ¼ä´Á # @return: None def PlayerLoadMapRedressUpdatePlayerName(curPlayer, tick): gameRecData = __GetNameByUniversalGameRec(curPlayer) if not gameRecData: return newName = gameRecData.GetStrValue1() serverID = gameRecData.GetValue2() #¾ÀÕýÒì³£, ÖØÐ¾ÀÕý GameWorld.Log("RedressUpdatePlayerName Err Afresh Redress, curPlayerName = %s, newName = %s"%\ (curPlayer.GetName(), newName), curPlayer.GetID()) __UpdatePlayerName(curPlayer, newName, serverID, tick) return