#!/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