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