hch
2018-10-09 c17e896c0b62d32bf99775b18db07d3ec4252aed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/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