#!/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_dbPlayerIDMap = {} # DBPlayerÍæ¼Ò±íIDÓ³Éä¹Øϵ {playerID:accID, ...} g_allMapServerInitOK = False 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_marryReqInfo = {} # µ±Ç°½øÐÐÖеÄÇóÇ×ÐÅÏ¢ {ÇëÇóÍæ¼ÒID:MarryReq, ...} g_marryCandyInfo = {} # ½øÐÐÖеÄϲÌÇÐÅÏ¢ {(playerIDA, playerIDB):MarryCandy, ...} g_marryCandySortList = [] # °´½áËãʱ¼äÅÅÐòºóµÄϲÌÇÁÐ±í£¬ÉýÐò g_marryBreakInfo = {} # ½øÐÐÖеÄÀë»éÐÅÏ¢{(playerIDA, playerIDB):MarryCandy, ...} g_marryBreakSortList = [] # °´Ìύʱ¼äÅÅÐòºóµÄϲÌÇÁÐ±í£¬ÉýÐò g_arenaPlayerBattleRecDict = {} # ±¾·þ¾º¼¼³¡Íæ¼ÒÌôÕ½¼Ç¼»º´æ {playerID:[ArenaBattleRec, ...], ...} g_arenaPlayerMatchDict = {} # ±¾·þ¾º¼¼³¡Íæ¼ÒÆ¥Åä¼Ç¼»º´æ {playerID:[ArenaMatchPlayer, ...], ...} g_arenaRobotLVList = [] # ±¾·þ¾º¼¼³¡»úÆ÷È˵ȼ¶Áбí g_autoViceleaderDict = {}#×Ô¶¯°²ÅŸ±ÃËÖ÷µÄÍæ¼Ò¼Ç¼{familyID:[]} g_forbidAutoViceleaderFamily = [] #½ûÖ¹×Ô¶¯°²ÅŸ±ÃËÖ÷µÄÏÉÃË[familyID,..] g_crossZoneName = "" # ¿ç·þ·ÖÇøÃû g_crossServerTimeInfo = [0, 0, 0] # ¿ç·þʱ¼äÐÅÏ¢ [crossServerTime, curServerTime, syncMapTime] g_luckyCloudBuyNumDict = {} # ÐÒÔËÔƹº¹ºÂò¼Ç¼ {zoneID:[LuckyCloudBuyNum, ...], ...} g_luckyCloudBuyLotteryDict = {} # ÐÒÔËÔƹº¿ª½±¼Ç¼ {zoneID:[LuckyCloudBuyLottery, ...], ...} g_unNotifyCloudBuyNumDict = {} # δ֪ͨµÄ¿ç·þÔƹº¹ºÂòÐÅÏ¢ {playerID:msgData, ...} 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_unNotifyPlayerCrossMsgDict = {} # δ֪ͨÍæ¼ÒµÄ¿ç·þÃüÁî {playerID:{msgType:[msgInfo], ...}, ...} g_crossBattlefieldBuyInfo = {} # ¿ç·þÕ½³¡¹ºÂò¼Ç¼ {zoneID:{hmNum:{playerID:CrossBattlefieldBuy, ...}, ...}, ...} g_familyTalkCache = {} #{familyID:[[time,content,extras],..]} g_worldTalkCache = [] #[[time,name, playerID, content,extras],..] g_unTJLogoffTime = {} #·ÇÍÑ»úÀëÏßʱ¼ä {playerID:time, ...}