ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
@@ -34,10 +34,10 @@
import ChConfig
import GMCommon
import DirtyList
import CrossBillboard
import PlayerBillboard
import PlayerExam
import PlayerControl
import PlayerRecall
import PlayerFamilyAction
import PlayerUniversalGameRec
import PlayerFamily
@@ -48,12 +48,12 @@
import PlayerFB
import UpdatePlayerName
import PlayerFamilyBoss
import PlayerManorWar
import GameWorldBoss
import GameWorldFamilyWar
#import PlayerFamilyTech
import PlayerFamilyRedPacket
import PlayerFBHelpBattle
import PlayerHorsePetBoss
#import PlayerFamilyStore
import PlayerFamilySWRH
import GameWorldProcess
@@ -73,9 +73,16 @@
import ChPyNetSendPack
import NetPackCommon
import AuctionHouse
import PlayerFairyDomain
import GameWorldSkyTower
import GameWorldArena
import GameWorldItem
import PlayerAssist
import PlayerLove
import time
import datetime
import json
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
@@ -330,16 +337,25 @@
            SyncPlayerCrossMapNPCInfo(curPlayer, mapID, npcIDList, mapNPCInfoDict)
            return
        
    serverGroupID = GameWorld.GetServerGroupID()
    zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByServerGroupID(mapID, serverGroupID)
    if not zoneIpyData:
        return
    zoneID = zoneIpyData.GetZoneID()
    # 本服缓存超时,发送跨服服务器查询
    playerID = curPlayer.GetPlayerID()
    CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_QueryNPCInfo, {"PlayerID":playerID, "MapID":mapID, "NPCIDList":npcIDList})
    dataMsg = {"PlayerID":playerID, "ZoneID":zoneID, "MapID":mapID, "NPCIDList":npcIDList}
    CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_QueryNPCInfo, dataMsg)
    return
def ClientServerMsg_QueryNPCInfo(serverGroupID, msgData):
    ## 收到子服请求查看跨服地图NPC个数信息
    
    zoneID = msgData["ZoneID"]
    mapID = msgData["MapID"]
    zoneIpyData = CrossRealmPlayer.GetServerCrossZoneMapIpyData(mapID, serverGroupID)
    zoneIpyData = CrossRealmPlayer.GetServerCrossZoneMapIpyData(zoneID, mapID)
    if not zoneIpyData:
        return
    realMapID = zoneIpyData.GetMapID()
@@ -483,6 +499,13 @@
    callName = pack.GetCallName()
    resultName = pack.GetResultName()                       #[queryid, 人气值, 物品ID]
    
    if callName == "PlayerRealLoginOK":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        ChPlayer.DoPlayerRealLoginOK(curPlayer, tick)
        return
    if callName == "SendMail":
        title, content, getDays, playerIDList, addItemList, gold, goldPaper, silver, detail, moneySource = eval(resultName)
        limitTime = str(GameWorld.GetDatetimeByDiffDays(getDays))
@@ -492,6 +515,11 @@
    
    if callName == "SendMailBatch":
        PlayerCompensation.SendPersonalItemMailBatch(eval(resultName))
        return
    if callName == "SendEntireMail":
        mailTypeKey, getDays, limitLV, limitLVType, addItemList, paramList, gold, goldPaper, silver, detail, moneySource = eval(resultName)
        PlayerCompensation.SendEntireMail(mailTypeKey, getDays, limitLV, limitLVType, addItemList, paramList, gold, goldPaper, silver, detail, moneySource)
        return
    
    if callName == "SendMsgToCrossServer":
@@ -513,6 +541,14 @@
        PlayerControl.CrossNotify(serverGroupIDList, crossNotifyList)
        return
    
    if callName == "DynamicLineMapStateChange":
        PlayerFB.OnCrossDynamicLineStateChange(eval(resultName))
        return
    if callName == "DynamicLineMapInitOK":
        PlayerFB.OnCrossDynamicMapReset(eval(resultName))
        return
    if callName == "CommMapServerInitOK":
        dataMapID, lineID, realMapID, copyMapID = eval(resultName)
        PyGameData.g_commMapLineInfo[(dataMapID, lineID)] = (realMapID, copyMapID)
@@ -521,6 +557,10 @@
    if callName == "UpdateBillboard":     #地图服务器更新排行榜
        PlayerBillboard.MapServer_UpdateBillboard(eval(resultName), tick)
        return
    if callName == "UpdateCrossBillboard":     #地图服务器更新跨服排行榜
        CrossBillboard.MapServer_UpdateCrossBillboard(eval(resultName))
        return
    
    if callName == 'PyAddFamilyInfoValue':     #地图服务器增加战盟信息值
@@ -544,11 +584,6 @@
        msg, msgList = eval(resultName)
        
        PlayerControl.TeamNotify(teamID, msg, msgList)
        return
    if callName == 'ReveiveRecallAward':
        #召回奖励领取情况
        PlayerRecall.ReveiveRecallAwardResult(srcPlayerID, resultName)
        return
    
    if callName == "NotifyTruckDestroy":
@@ -657,16 +692,6 @@
                
        return
    
    # 领地争夺战拔旗消耗
    if callName =="ManorWarGetFlagCost":
        PlayerManorWar.ManorWarGetFlagCost(eval(resultName))
        return
    # 领地争夺战获胜战盟
    if callName =="ManorWarWinner":
        PlayerManorWar.DoMapServerManorWarWinner(eval(resultName))
        return
    # 战盟副本boss开始、被击杀
    if callName =="FamilyBossFBState":
        PlayerFamilyBoss.FamilyBossOnKilled(eval(resultName), tick)
@@ -711,14 +736,9 @@
        GameWorldProcess.UpdGlobalKillCount(eval(resultName))
        return
    
    # 新手指导员天数
    if callName =="FreshmanGuiderDay":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        guiderDay = eval(resultName)[0]
        PlayerControl.SetFreshmanGuiderDay(curPlayer, guiderDay)
    # 缓存装备广播信息中的装备明细信息
    if callName == "NotifyEquipDetailInfo":
        GameWorldItem.OnCacheNotifyEquipDetailInfo(json.loads(resultName), tick)
        return
    
    #生成仙盟红包
@@ -780,15 +800,25 @@
        AuctionHouse.MapServer_AuctionHouseLogic(curPlayer, eval(resultName), tick)
        return
    
    # 协助
    if callName == "PlayerAssist":
        curPlayer = None
        if srcPlayerID:
            curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
            if not curPlayer:
                return
        PlayerAssist.MapServer_PlayerAssistLogic(curPlayer, eval(resultName), tick)
        return
    if callName == "TeamMemFuncData":
        PlayerTeam.MapServer_TeamMemFuncData(srcPlayerID, eval(resultName))
        return
    
    #封魔坛结束
    if callName == "SealDemonOver":
        playerID, lineID, rank = eval(resultName)
        PyDataManager.GetSealDemonRecordManager().UpdateSealDemonRecord(playerID,lineID,rank)
        return
#    #封魔坛结束
#    if callName == "SealDemonOver":
#        playerID, lineID, rank = eval(resultName)
#        PyDataManager.GetSealDemonRecordManager().UpdateSealDemonRecord(playerID,lineID,rank)
#        return
    
    #查询副本功能线路人数
    if callName == "FBLinePlayerCnt":
@@ -844,6 +874,14 @@
    if callName =="AllFamilyBossOver":
        PlayerFamilyBoss.AllFamilyBossKilled()
        return
    #骑宠BOSS结束
    if callName =="HorsePetBossOver":
        PlayerHorsePetBoss.HorsePetBossKilled(int(resultName))
        return
    #缥缈仙域事件出现
    if callName =="AddFairyDomainEvent":
        PlayerFairyDomain.AddFairyDomainEvent(eval(resultName))
        return
    
#---return分割线-----------------------------------------------------------------
@@ -888,10 +926,6 @@
            return
        resultName = '%s' % ret
        
    if callName == 'SendInviteCode':
        #邀请码验证回复
        resultName = PlayerRecall.PlayerRecall_InviteCode(srcPlayerID, pack.GetQueryID())
    if callName == 'OpenServerCampaignAward':
        #可否领取开服活动奖励
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
@@ -913,6 +947,31 @@
        if ret == None:
            return
        resultName = '%s' % ret
    # 竞技场
    if callName =="Arena":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        ret = GameWorldArena.MapServer_Arena(curPlayer, eval(resultName))
        resultName = '%s' % ret if ret != None else '' # 需要重置间隔,每次都回复
    # 情缘
    if callName =="Love":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        ret = PlayerLove.MapServer_Love(curPlayer, eval(resultName))
        if ret == None:
            return
        resultName = '%s' % ret
    # 天星塔
    if callName == "SkyTower":
        ret = GameWorldSkyTower.MapServer_SkyTowerInfo(eval(resultName))
        if ret == None:
            return
        resultName = '%s' % ret
        
#    # 战盟仓库
#    if callName == "FamilyStore":
@@ -920,14 +979,6 @@
#        if not curPlayer:
#            return
#        resultName = '%s' % PlayerFamilyStore.DoMapServerFamilyStore(curPlayer, eval(resultName), tick)
    # 玩家天梯奖励
    if callName == "HighLadderReward":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        import HighLadder
        needResult, resultName = HighLadder.MapServer_HighLadderReward(curPlayer, eval(resultName))
        if not needResult:
            return
        
    srcPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)