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
125
126
127
128
129
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package E:/GameSVN/U3DGame/ProjectSServer/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
# @todo: 
#
# @author: Alee
# @date 2017-9-4 ÏÂÎç08:31:29
# @version 1.0
#
# @note: µ¥¶À±£´æpyÊý¾Ý²»ÖضÁÎļþ£¬´ËÎļþ²»ÒªimportÆäËûÄ£¿é£¬±ÜÃâÖØ¶ÁÓÐÎÊÌâ
#
#---------------------------------------------------------------------
 
g_pyGameDataManager = None
 
g_commMapLineInfo = {} # µØÍ¼ÏßÂ·ÕæÊµµØÍ¼ÐéÄâÏßÐÅÏ¢ {(dataMapID, lineID):(realMapID, copyMapID), ...}
g_commMapLineRouteDict = {} # µØÍ¼Ïß··ÓÉ·þÎñË÷ÒýÐÅÏ¢ {(dataMapID, lineID):routeServerIndex, ...}
g_commMapLinePlayerCountDict = {} # ³£¹æµØÍ¼·ÖÏßÈËÊý {dataMapID:{lineID:ÈËÊý, ...}}
g_needSyncCommMapLinePlayerCount = False # ³£¹æµØÍ¼·ÖÏßÈËÊýÊÇ·ñÓбä¸üÐèҪ֪ͨ
 
#---------------------------- ×é¶Óϵͳ»º´æ ------------------------------
g_sceneTeamIDDict = {} # ³¡¾°¶ÓÎéID×Öµä {³¡¾°µØÍ¼ID:[teamID, teamID, ...], ...}
g_scenePlayerIDDict = {} # ³¡¾°Íæ¼ÒID×Öµä {³¡¾°µØÍ¼ID:[playerID, playerID, ...], ...}
## ÓÉÓڲ߻®ÒªÇó¿Í»§¶ËÇëÇóµÃµ½µÄÁбíÐèÒªÊÇʵʱµÄ£¬²¢ÇÒÇëÇóƵÂʱȽϸߣ¬¹ÊÕâÀï×ö¸ö°æ±¾¿ØÖÆ
#g_sceneTeamServerVersion = {} # ³¡¾°¶ÓÎé±ä¸ü°æ±¾tick {mapID:tick, ...}
#g_sceneTeamQueryVersion = {} # Íæ¼Ò³¡¾°¶ÓÎé²éѯ°æ±¾tick {playerID:{mapID:tick, ...}, ...}
g_tagMapTeamDict = {} # Ä¿±ê¶ÓÎé {tagMapID:[teamID, teamID, ...], ...}
g_tagMapTeamTimeDict = {} # ¶ÓÎé×îºóÒ»´Î¸üÐÂÄ¿±ê¶ÓÎéµÄʱ¼ä {teamID:[mapID, time], ...}
g_matchingTeamDict = {} # Æ¥ÅäÖеĶÓÎ飬ֻ»á¼Ç¼¸±±¾Æ¥Åä {(tagMapID, tagMapEx):[teamID, teamID, ...], ...}
g_matchingPlayerDict = {} # Æ¥ÅäÖеÄÍæ¼Ò£¬Ö»»á¼Ç¼¸±±¾Æ¥Åä {(tagMapID, tagMapEx):[playerID, playerID, ...], ...}
 
g_teamFBEnterAskDict = {} # Ñ¯Îʿɷñ½øÈë×é¶Ó¸±±¾µÄ¶ÓÎéÐÅÏ¢ {teamID:[askMapID, askMapEx, {playerID:[ÑéÖ¤½á¹û, ½á¹ûÌáʾ²ÎÊýÐÅÏ¢], ...}], ...}
#×¼±¸×´Ì¬: 0-δ׼±¸£¬1-×¼±¸£¬2-¾Ü¾ø£¬3-µôÏߣ¨´ËÇé¿öÔÝʱ²»×ö´¦Àí£¬µôÏߵϰֱ½Ó°Ñ¸ÃÍæ¼Ò´Ó×¼±¸¶ÓÁÐÀïÒÆ³ý£¬µ±×ö´Ë¶ÓÔ±²»´æÔÚ´¦Àí£©
g_prepareTeamDict = {} # ×¼±¸ÖеĶÓÎéÐÅÏ¢ {teamID:[askMapID, askMapEx, {playerID:×¼±¸×´Ì¬, ...}], ...}
 
g_queryTeamMemFuncDataDict = {} # ²éѯ¶ÓÔ±¹¦ÄÜÊý¾Ý {(queryFuncType, teamID, srcPlayerID):[[queryID, ...], {queryID:ret, ...}], ...}
 
g_tjgKickPlayerTeamDict = {} # ÍÑ»ú¹ÒÍæ¼Ò±»Ìß¶ÓÎéIDÁбí {ÍÑ»úplayerID:[ÌßËûµÄteamID, ...], ...}
g_countdownLeaveTeamDict = {} # µ¹¼ÆÊ±À뿪¶ÓÎéµÄÍæ¼ÒÐÅÏ¢ {playerID:[teamID, leaveServerTick], ...}
#---------------------------------------------------------------------
 
#Íæ¼ÒÉ罻Ȧ´æÔÚµ¥ÏòµÄÇé¿ö£¬¼Ç¼±»É罻ȺÌå
#ÀýÈçAÍæ¼Ò±»BÍæ¼Ò¼ÓÈëºÚÃûµ¥£¬µ«ÊÇAÍæ¼Ò²»¸ÐÖª£¬µ±AÍæ¼ÒÉý¼¶Ê±ÒªÍ¨ÖªBÍæ¼Ò
#{AÍæ¼ÒID£º{BÍæ¼ÒID£º¼Ç¼´ÎÊý}}
g_BeSocialList = {}
 
#ÇëÇóÁбí Íæ¼ÒµÄAddRequest·ÏÆú
g_playerRequests = {}
 
g_fightPowerChangeFamilyIDList = [] #ÏÉÃ˳ÉÔ±Õ½Á¦Óбä¸üµÄÏÉÃËID [familyID, ...]
g_sortFamilyIDList = [] #ÏÉÃËÅÅÐò˳Ðò [familyID, ...]
g_familyWarFightingIDList = [] # ÏÉÃËÁªÈüÖÐÕýÔÚÕ½¶·ÖеÄÏÉÃËIDÁбí [familyID, ...]
g_familyWarFamilyIDList = [] # ÏÉÃËÁªÈü²ÎÈüÏÉÃËIDÁбí [familyID, ...]
g_familyWarMemDict = {} # ÏÉÃËÁªÈü²ÎÈüÈËÔ±Ãûµ¥ {playerID:memRecData, ...}
 
#bossË¢ÐÂÅÅÐòÁбí
g_sortBOSSRefreshList = []
g_swrhJoinRecord = [] #ÊØ»¤È˻ʼÒ×å½ñÈղμӼǼ(ÒÑÕý³£½áËã)[familyID]
 
g_bossShuntPlayerInfo = {} # boss·ÖÁ÷Íæ¼ÒÐÅÏ¢{(mapID, lineID):{playerID:[bossID, teamID, relatedTick], ...}, ...}
g_bossShuntLineState = {} # boss·ÖÁ÷Ïß·¶ÔÓ¦boss״̬ {bossID:{lineID:isAlive, ...}, ...}
g_bossShuntStateChangeBoss = [] # boss·ÖÁ÷BossÏß·״̬Óбä¸üµÄbossÁбí
 
g_familyOwnerBossInfo = {} # µØÍ¼Í¬²½ÉÏÀ´µÄÏÉÃ˹éÊôbossÐÅÏ¢ {bossID:[curHp, maxHP, ownerFamilyID, ownerFamilyName], ...}
g_horsePetRobBossHurtPlayerIDInfo = {} # Æï³èÕù¶áÓжÔbossÉËѪ¹ýµÄÍæ¼ÒIDÐÅÏ¢ {bossID:{familyID:[playerID, ...], ...}, ...}
g_familyKillHorsePetRobBossCntDict = {} # Æï³èÕù¶áÏÉÃËÒÑ»÷ɱbossÊý {familyID:»÷ɱÊý, ...}
 
g_todayPlayerLVDict = {} #½ñÈÕÍæ¼ÒµÈ¼¶×Öµä {playerID:lv,..}
g_yesterdayPlayerLVDict = {} #×òÈÕÍæ¼ÒµÈ¼¶×Öµä{playerID:lv,..}
g_onedayJobPlayerLoginoffTimeDict = {} #½ü24СʱµÇ¼/ÀëÏßµÄÍæ¼ÒÖ°ÒµÊý {Ö°Òµ:{playerID:loginoffTime, ...}}
 
g_ctgOfflinePlayerInfo = {} # {playerID:[[ctgInfo], ...], ...} # ÀëÏßÍæ¼ÒCTGÐÅÏ¢»º´æ
g_gmtOfflinePlayerInfo = {} # {(queryType, playerFind):[gmtInfo, ...], ...} # ÀëÏßÍæ¼ÒGMTÐÅÏ¢»º´æ
 
g_questionIDHistory = {}#³ö¹ýµÄÌâ¼Ç¼ {familyid:[³ö¹ýµÄÌâid,..]}
g_familyAnswerDict = {} #ÏÉÃË´ðÌâÊýÁ¿ {familyid:[´ðÌâÊýÁ¿,tick],..}
g_familyPartyTopInfo = [] #ÏÉÃËÑç»á´ðÌâÍõ [playerID,Ãû×Ö]
g_partyheroAnswerDict = {} #ÏÉÃËÑç»áÍæ¼Ò´ð¶ÔÌâÄ¿ÊýÁ¿ {playerid:´ðÌâÊýÁ¿,..}
g_familyAnswerPlayerIDDict = {} #ÏÉÃËÑç»áÍæ¼Ò²ÎÓë´ðÌâÊýÁ¿  {playerID:[ÌâÄ¿ID, ...], ...}
 
g_redPacketMgr = None # RedPacketMgr
 
g_bourseItemTradingTimeDict = {} # ÎïÆ·¿ªÊ¼½»Ò×µÄʱ¼ä¼Ç¼ {guid:tick}
 
g_fbHelpBattleCheckInPlayerDict = {} # ¸±±¾ÖúÕ½Íæ¼ÒµÇ¼Ç»º´æ {playerID:HelpBattlePlayer, ...}
 
g_arenaPlayerBattleRecDict = {} # ±¾·þ¾º¼¼³¡Íæ¼ÒÌôÕ½¼Ç¼»º´æ {playerID:[ArenaBattleRec, ...], ...}
g_arenaPlayerMatchDict = {} # ±¾·þ¾º¼¼³¡Íæ¼ÒÆ¥Åä¼Ç¼»º´æ {playerID:[ArenaMatchPlayer, ...], ...}
g_arenaRobotLVList = [] # ±¾·þ¾º¼¼³¡»úÆ÷È˵ȼ¶Áбí
 
g_autoViceleaderDict = {}#×Ô¶¯°²ÅŸ±ÃËÖ÷µÄÍæ¼Ò¼Ç¼{familyID:[]}
g_forbidAutoViceleaderFamily = [] #½ûÖ¹×Ô¶¯°²ÅŸ±ÃËÖ÷µÄÏÉÃË[familyID,..]
 
g_crossZoneName = "" # ¿ç·þ·ÖÇøÃû
 
g_crossActInfoDict = None # ¿ç·þÔËÓª»î¶¯ÐÅÏ¢ {actName:{actInfoDict}, ...}
 
g_playerDelMailGUIDDict = {} # Íæ¼ÒÓʼþGUIDÐÅÏ¢ {playerID:[GUID, ...], ...} ½ö´¥·¢É¾³ý²ÅÓÐÊý¾Ý£¬ÇÒ²¢²»Ò»¶¨ËùÓÐGUID¶¼´æÔÚ£¬½ö×÷Ϊɾ³ýÓʼþʱÓõ½
g_crossMailPlayerDict = {} # Óпç·þÓʼþµÄÍæ¼ÒIDÐÅÏ¢ {playerID:tick, ...}
 
g_crossPlayerViewCache = {} # ²é¿´¿ç·þÍæ¼ÒÐÅÏ¢ {playerID:[cacheInfo, updTick], ...}
 
g_crossPKPlayerDict = {} # ¿ç·þPKÍæ¼Ò×ֵ䠠{playerID:PKPlayer, ...}
g_crossPKZoneMatchPlayerDict = {} # ¿ç·þPKÆ¥ÅäÖеÄÍæ¼Ò×Öµä {zoneID:[playerID, ...], ...}
g_crossPKZoneMatchRobotPlayerDict = {} # ¿ç·þPKÆ¥Åä»úÆ÷È˵ÄÍæ¼Ò×Öµä {playerID:PKPlayer, ...}
g_crossPKRoomDict = {} # ¿ç·þPK·¿¼ä×Öµä {roomID:PKRoom, ...}
g_crossPKRoomID = 0 # ¿ç·þPKµ±Ç°ÒѾ­´´½¨µ½µÄ·¿¼äID£¬×ÔÔö´´½¨
g_crossPKTodayPKRecordInfo = {} # ¿ç·þPKÍæ¼Ò½ñÈÕPK¼Ç¼ {playerID:[[tagPlayerID, winnerID], ...]}
g_crossPKBesureMatchRobotInfo = {} # ¿ç·þPKÍæ¼Ò±Ø¶¨Æ¥Åä»úÆ÷ÈË´ÎÊýÐÅÏ¢ {playerID:besureMatchRobotCount, ...}
 
g_crossPKUnNotifyOverInfo = {} # ¿ç·þPKδͬ²½µÄ½áËãÐÅÏ¢ {player:[overInfo], ...}
 
g_unNotifyKillCrossBossDict = {} # Î´Í¨Öª³É¹¦µÄ»÷ɱ¿ç·þboss {playerID:[killInfo], ...}£¬Ö÷ҪΪÁË·ÀË¢£¨»÷ɱÂíÉÏÏÂÏßµ¼ÖÂ֪ͨ²»µ½£¬È»ºóÉÏÏß¼ñ¶«Î÷£©
 
g_crossMapNPCInfo = {} # ¿ç·þµØÍ¼NPCÐÅÏ¢ {mapID:[tick, npcInfo], ...}
 
g_crossSetPlayerAttr = {} # ¿ç·þÍæ¼Ò¸üÐÂÍæ¼ÒÊý¾Ý {playerID:[[setType, setDict], ...], ...}
 
g_crossMapCopyMapCountDict = {} # ¿ç·þµØÍ¼¶¯Ì¬·ÖÅäÐéÄâÏß·ÌõÊýÐÅÏ¢ {mapID:copyMapCount, ...}
g_crossDynamicLineInfo = {} # ¿ç·þ¶¯Ì¬Ïß·ÐÅÏ¢ {dataMapID:{(zoneID, funcLineID):[CrossFuncLineInfo, CrossFuncLineInfo, ...], ...}, ...}
g_crossDynamicLineCopyMapInfo = {} # ¿ç·þ¶¯Ì¬Ïß·ÐéÄâÏß·ÐÅÏ¢ {(mapID, copyMapID):CrossCopyMapInfo, ...}
 
g_crossFBFuncLinePlayerCountInfo = {} # ¿ç·þ¸±±¾¹¦ÄÜÏß·ÈËÊýÐÅÏ¢£¬±¾·þ»º´æ {mapID:{funcLineID:[playerCount], ...}, ...}
 
g_familyTalkCache = {} #{familyID:[[time,content,extras],..]}
g_worldTalkCache = [] #[[time,name, playerID, content,extras],..]
 
g_unTJLogoffTime = {} #·ÇÍÑ»úÀëÏßʱ¼ä {playerID:time, ...}