|  |  |  | 
|---|
|  |  |  | import IpyGameDataPY | 
|---|
|  |  |  | import PlayerTalk | 
|---|
|  |  |  | import PlayerGeTui | 
|---|
|  |  |  | import PlayerStore | 
|---|
|  |  |  | import GameWorldActionControl | 
|---|
|  |  |  | import GMT_CTG | 
|---|
|  |  |  | import PyGameData | 
|---|
|  |  |  | import GMShell | 
|---|
|  |  |  | #--------------------------------------------------------------------- | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #--------------------------------------------------------------------- | 
|---|
|  |  |  | 
|---|
|  |  |  | #通知玩家登陆信息,来自运营方 | 
|---|
|  |  |  | #DoLogic_LoginUserData(curPlayer) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #通知开服天数 | 
|---|
|  |  |  | PlayerEventCounter.Sync_OpenServerDay(curPlayer) | 
|---|
|  |  |  | #通知开服天数, 登录时改为地图通知,因为GameServer的PlayerLogin在地图之后,前端有些功能处理需要提前得到开服天 | 
|---|
|  |  |  | #PlayerEventCounter.Sync_OpenServerDay(curPlayer) | 
|---|
|  |  |  | # 通知广播信息 | 
|---|
|  |  |  | GMCommon.SendBroadCastToClient(curPlayer) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | PlayerXMZZ.OnXMZZOnLogin(curPlayer) | 
|---|
|  |  |  | #等级奖励 | 
|---|
|  |  |  | PlayerLVAward.OnPlayerLogin(curPlayer) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #商店购买次数 | 
|---|
|  |  |  | PlayerStore.OnPlayerLogin(curPlayer) | 
|---|
|  |  |  | #通知世界boss信息 | 
|---|
|  |  |  | GameWorldBoss.OnPlayerLogin(curPlayer) | 
|---|
|  |  |  | #家族副本boss状态通知 | 
|---|
|  |  |  | 
|---|
|  |  |  | PlayerGeTui.CleanNewGuyCallBackGeTui(curPlayer.GetID()) | 
|---|
|  |  |  | #活动 | 
|---|
|  |  |  | GameWorldActionControl.OnPlayerLogin(curPlayer) | 
|---|
|  |  |  | #玩家等级记录 | 
|---|
|  |  |  | PyGameData.g_todayPlayerLVDict[curPlayer.GetID()] = curPlayer.GetLV() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | GMShell.OnPlayerLogin(curPlayer) | 
|---|
|  |  |  | GMT_CTG.OnPlayerLogin(curPlayer) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #通知地图服务器自己初始化成功 | 
|---|
|  |  |  | 
|---|
|  |  |  | def MSGetReward(curPlayer): | 
|---|
|  |  |  | #PlayerCanGetReward.SynClient_CanGetRewardList(curPlayer) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 通知首次开服时间 | 
|---|
|  |  |  | #  @param curPlayer: 玩家实例 | 
|---|
|  |  |  | #  @return: None | 
|---|
|  |  |  | def Sync_InitOpenServerTime(curPlayer): | 
|---|
|  |  |  | #    initOpenServerTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime) | 
|---|
|  |  |  | #    packData = ChPyNetSendPack.tagInitOpenServerTime() | 
|---|
|  |  |  | #    packData.Clear() | 
|---|
|  |  |  | #    packData.Time = initOpenServerTime | 
|---|
|  |  |  | #    NetPackCommon.SendFakePack(curPlayer, packData) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 运营登陆信息处理 | 
|---|
|  |  |  | #  @param curPlayer | 
|---|
|  |  |  | 
|---|
|  |  |  | elif packType == IPY_GameServer.CDBPlayerRefresh_LV: | 
|---|
|  |  |  | curPlayer.SetLV(packValue) | 
|---|
|  |  |  | PlayerSocial.UpdateSocialInfo(curPlayer, packType, packValue) | 
|---|
|  |  |  | #玩家等级记录 | 
|---|
|  |  |  | playerID = curPlayer.GetID() | 
|---|
|  |  |  | if playerID in PyGameData.g_todayPlayerLVDict: | 
|---|
|  |  |  | PyGameData.g_todayPlayerLVDict[playerID] = packValue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | elif packType == IPY_GameServer.CDBPlayerRefresh_Job: | 
|---|
|  |  |  | curPlayer.SetJob(packValue) | 
|---|
|  |  |  | 
|---|
|  |  |  | GameWorld.Log("玩家 : %s,%s,FBID=%s 切换地图" % (curPlayer.GetName(), curPlayer.GetRealMapID(), curPlayer.GetFBID()) , curPlayer.GetPlayerID()) | 
|---|
|  |  |  | PlayerTeam.OnPlayerChangeMap(curPlayer, tick) | 
|---|
|  |  |  | GameWorldBoss.OnPlayerChangeMap(curPlayer) | 
|---|
|  |  |  | PlayerFamily.OnPlayerChangeMap(curPlayer, tick) | 
|---|
|  |  |  | PlayerFamilyParty.OnPlayerChangeMap(curPlayer, tick) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 玩家切换真实地图 | 
|---|
|  |  |  | 
|---|
|  |  |  | NetPackCommon.SendFakePack(curPlayer, serverDateTime) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def UpdataPlayerLVInfo(): | 
|---|
|  |  |  | #Onday更新玩家等级信息 | 
|---|
|  |  |  | PyGameData.g_yesterdayPlayerLVDict = PyGameData.g_todayPlayerLVDict | 
|---|
|  |  |  | PyGameData.g_todayPlayerLVDict = {} | 
|---|
|  |  |  | playerManager = GameWorld.GetPlayerManager() | 
|---|
|  |  |  | for i in xrange(playerManager.GetActivePlayerCount()): | 
|---|
|  |  |  | curPlayer = playerManager.GetActivePlayerAt(i) | 
|---|
|  |  |  | if curPlayer == None or not curPlayer.GetInitOK(): | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | if PlayerControl.GetIsTJG(curPlayer): | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | PyGameData.g_todayPlayerLVDict[curPlayer.GetID()] = curPlayer.GetLV() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def LoadPlayerLVData(): | 
|---|
|  |  |  | #服务器开启时加载活跃玩家等级信息 | 
|---|
|  |  |  | universalRecMgr = GameWorld.GetUniversalRecMgr() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | recDataList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_TodayPlayerLVInfo) | 
|---|
|  |  |  | allCnt = recDataList.Count() | 
|---|
|  |  |  | for index in xrange(allCnt): | 
|---|
|  |  |  | recData = recDataList.At(index) | 
|---|
|  |  |  | PyGameData.g_todayPlayerLVDict[recData.GetValue1()] = recData.GetValue2() | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | recDataList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_YesterdayPlayerLVInfo) | 
|---|
|  |  |  | allCnt = recDataList.Count() | 
|---|
|  |  |  | for index in xrange(allCnt): | 
|---|
|  |  |  | recData = recDataList.At(index) | 
|---|
|  |  |  | PyGameData.g_yesterdayPlayerLVDict[recData.GetValue1()] = recData.GetValue2() | 
|---|
|  |  |  | GameWorld.DebugLog('    服务器开启时加载活跃玩家等级信息g_todayPlayerLVDict=%s, g_yesterdayPlayerLVDict=%s'%(PyGameData.g_todayPlayerLVDict,PyGameData.g_yesterdayPlayerLVDict)) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def SavePlayerLVData(): | 
|---|
|  |  |  | #服务器关闭前时保存活跃玩家等级信息 | 
|---|
|  |  |  | GameWorld.GetUniversalRecMgr().Delete(ShareDefine.Def_UniversalGameRecType_TodayPlayerLVInfo) | 
|---|
|  |  |  | GameWorld.GetUniversalRecMgr().Delete(ShareDefine.Def_UniversalGameRecType_YesterdayPlayerLVInfo) | 
|---|
|  |  |  | universalRecMgr = GameWorld.GetUniversalRecMgr() | 
|---|
|  |  |  | recDataList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_TodayPlayerLVInfo) | 
|---|
|  |  |  | for playerID, lv in PyGameData.g_todayPlayerLVDict.items(): | 
|---|
|  |  |  | recData = recDataList.AddRec() | 
|---|
|  |  |  | recData.SetValue1(playerID) | 
|---|
|  |  |  | recData.SetValue2(lv) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | recDataList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_YesterdayPlayerLVInfo) | 
|---|
|  |  |  | for playerID, lv in PyGameData.g_yesterdayPlayerLVDict.items(): | 
|---|
|  |  |  | recData = recDataList.AddRec() | 
|---|
|  |  |  | recData.SetValue1(playerID) | 
|---|
|  |  |  | recData.SetValue2(lv) | 
|---|
|  |  |  | return | 
|---|