| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package PlayerMergeEvent  | 
| #  | 
| # @todo:Íæ¼Ò¿ç·þ·þÎñÆ÷ÖвúÉúÊý¾Ý±ä»¯µÄʼþ  | 
| # @author hxp  | 
| # @date 2017-06-22  | 
| # @version 1.1  | 
| #  | 
| # @change: "2017-07-06 20:30" hxp Ôö¼Ó»ñµÃ¹¦Ñ«  | 
| #  | 
| # ÏêϸÃèÊö: Íæ¼Ò¿ç·þ·þÎñÆ÷ÖвúÉúÊý¾Ý±ä»¯µÄʼþ  | 
| #  | 
| #-------------------------------------------------------------------------------  | 
| #"""Version = 2017-07-06 20:30"""  | 
| #-------------------------------------------------------------------------------  | 
|   | 
| import PlayerUniversalGameRec  | 
| import PlayerMergeRegister  | 
| import DataRecordPack  | 
| import ShareDefine  | 
| import GameWorld  | 
|   | 
| #---------------------------------------------------------------------------------------------------  | 
|   | 
| (  | 
| Def_MSPEvent_PayMoney, # Ê¹Óûõ±Ò£¬½öÖ§³ÖÏûºÄ»õ±ÒºóÖ»ÔÚ¿ç·þµ±Ï»ñµÃÊÕÒæµÄ¹¦ÄÜ£¬²»Ö§³Ö»Ø·þºó»¹ÓÐÊÕÒæ»ò»ñµÃÎïÆ·µÈ  | 
| Def_MSPEvent_DelItem, # ¿Û³ýÎïÆ·£¬½öÖ§³ÖʹÓÃÎïÆ·ºó»Ø±¾·þûÓгÖÐø×÷ÓõÄÎïÆ·£¬¹¦ÄÜÉè¼ÆµÄʱºòÇë²ß»®ÖªÏþ  | 
| Def_MSPEvent_FBResult, # ¸±±¾½áËã  | 
| Def_MSPEvent_AddExp, # Ôö¼Ó¾Ñé  | 
| Def_MSPEvent_AddZhenQi,# Ôö¼ÓÕæÆø  | 
| Def_MSPEvent_AddGongXun,# Ôö¼Ó¹¦Ñ«  | 
| ) = range(1, 1 + 6)  | 
|   | 
| def OnRecvMergePlayerEvent(eventDict):  | 
|     # ±¾·þÊÕµ½¿ç·þ·þÎñÆ÷ͬ²½µÄÍæ¼Ò´ý´¦Àíʼþ  | 
|     # @param eventDict: ¶ÔÓ¦MapServer¼Ç¼µÄ g_msPlayerEventDict  {playerID:[[ʼþÀàÐÍ, Ê¼þʱ¼ä, Ê¼þÊý¾Ý], ...], ...}  | 
|       | 
|     #¿ç·þÈüÊý¾Ý  | 
|     universalRecMgr = GameWorld.GetUniversalRecMgr()    | 
|     recTypeListData = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_MergeEvent)  | 
|       | 
|     for playerID, eventList in eventDict.items():  | 
|           | 
|         regRecData = PlayerMergeRegister.GetRegisterPlayerRec(playerID)  | 
|         if not regRecData:  | 
|             GameWorld.DebugLog("    ²»ÊDZ¾·þÍæ¼Ò playerID=%s" % playerID)  | 
|             continue  | 
|           | 
|         player = GameWorld.GetPlayerManager().FindPlayerByID(playerID)  | 
|           | 
|         for eventInfo in eventList:  | 
|             eventType, eventTime, eventData = eventInfo  | 
|               | 
|             AddMergePlayerEvent(recTypeListData, playerID, eventType, eventTime, eventData, player)  | 
|     return  | 
|   | 
| def AddMergePlayerEvent(recTypeListData, playerID, eventType, eventTime, eventData, player):  | 
|       | 
|     if player and player.GetInitOK():  | 
|         # Èç¹ûÍæ¼ÒÔÚÏߣ¬Ö±½ÓÍÆË͸øµØÍ¼´¦Àí  | 
|         sendMsg = str([[eventType, eventTime, eventData]])  | 
|         player.MapServer_QueryPlayerResult(0, 0, 'MergeEvent', sendMsg, len(sendMsg))  | 
|         return  | 
|   | 
|     eventDataStr = str(eventData).replace(" ", "")  | 
|     if len(eventDataStr) > 255:  | 
|         # Ìí¼Ó´íÎó¼Ç¼  | 
|         eventTimeStr = GameWorld.ChangeTimeNumToStr(eventTime)  | 
|         DataRecordPack.DR_MergePlayerEvent(playerID, eventType, eventTimeStr, eventData, "AddError")  | 
|         return  | 
|       | 
|     # ÊDZ¾·þÍæ¼Ò ²»ÔÚÏßÔòÌí¼ÓÒ»ÌõеÄÍæ¼Òʼþ¼Ç¼  | 
|     playerRec = recTypeListData.AddRec()          | 
|     playerRec.SetTime(eventTime)  | 
|     playerRec.SetValue1(playerID)  | 
|     playerRec.SetValue2(eventType)  | 
|     PlayerUniversalGameRec.SetUniversalGameRecStrValue3(playerRec, eventDataStr)  | 
|       | 
|     # Ìí¼ÓÁ÷Ïò¼Ç¼  | 
|     eventTimeStr = GameWorld.ChangeTimeNumToStr(eventTime)  | 
|     DataRecordPack.DR_MergePlayerEvent(playerID, eventType, eventTimeStr, eventData, "Add")  | 
|     return  | 
|   | 
| def MergeEventOnPlayerLogin(curPlayer):  | 
|     if GameWorld.IsMergeServer():  | 
|         return  | 
|       | 
|     curPlayerID = curPlayer.GetPlayerID()  | 
|     recTypeListData = GameWorld.GetUniversalRecMgr().GetTypeList(ShareDefine.Def_UniversalGameRecType_MergeEvent)  | 
|     recCount = recTypeListData.Count()  | 
|     playerMergeEventList = []  | 
|     # ´Ó´óµ½Ð¡É¾³ý  | 
|     index = recCount - 1  | 
|     for i in xrange(recCount):  | 
|         delIndex = index - i  | 
|         recData = recTypeListData.At(delIndex)  | 
|         playerID = recData.GetValue1()  | 
|         if playerID != curPlayerID:  | 
|             continue  | 
|         eventTime = recData.GetTime()  | 
|         eventType = recData.GetValue2()  | 
|         eventData = eval(recData.GetStrValue3())  | 
|           | 
|         playerMergeEventList.append([eventType, eventTime, eventData])  | 
|           | 
|         # É¾³ý¸ÃÌõ½±Àø  | 
|         recTypeListData.Delete(delIndex)  | 
|         # Ìí¼Óɾ³ýÁ÷Ïò¼Ç¼  | 
|         eventTimeStr = GameWorld.ChangeTimeNumToStr(eventTime)  | 
|         DataRecordPack.DR_MergePlayerEvent(playerID, eventType, eventTimeStr, eventData, "Del")  | 
|           | 
|     if not playerMergeEventList:  | 
|         GameWorld.DebugLog("Íæ¼Ò±¾´Î¿ç·þûÓвúÉúÊý¾Ý±ä»¯!", curPlayerID)  | 
|         return  | 
|       | 
|     sendMsg = str(playerMergeEventList)  | 
|     curPlayer.MapServer_QueryPlayerResult(0, 0, 'MergeEvent', sendMsg, len(sendMsg))  | 
|     GameWorld.Log("Íæ¼ÒµÇ¼ͬ²½±¾´Î¿ç·þÊý¾Ý±ä»¯ÐÅÏ¢£ºsendMsg=%s" % sendMsg, curPlayerID)  | 
|     return  | 
|   | 
|   |