hxp
2022-02-21 0c27822ef5e6c67782ed143a4ff03ecfbdfda1fb
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
@@ -70,12 +70,20 @@
import CrossRealmPlayer
import CrossRealmMsg
import CrossRealmPK
import CrossBattlefield
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 +338,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,15 +500,28 @@
    callName = pack.GetCallName()
    resultName = pack.GetResultName()                       #[queryid, 人气值, 物品ID]
    
    if callName == "PlayerRealLoginOK":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        loginMsg = eval(resultName)
        ChPlayer.DoPlayerRealLoginOK(curPlayer, loginMsg, tick)
        return
    if callName == "SendMail":
        title, content, getDays, playerIDList, addItemList, gold, goldPaper, silver, detail, moneySource = eval(resultName)
        title, content, getDays, playerIDList, addItemList, gold, goldPaper, silver, detail, moneySource, crossMail = eval(resultName)
        limitTime = str(GameWorld.GetDatetimeByDiffDays(getDays))
        limitTime = limitTime.split(".")[0]
        PlayerCompensation.SendPersonalItemMail(title, content, limitTime, playerIDList, addItemList, gold, goldPaper, silver, detail=detail, moneySource=moneySource)
        PlayerCompensation.SendPersonalItemMail(title, content, limitTime, playerIDList, addItemList, gold, goldPaper, silver, detail=detail, moneySource=moneySource, crossMail=crossMail)
        return
    
    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 +543,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 +559,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 +586,6 @@
        msg, msgList = eval(resultName)
        
        PlayerControl.TeamNotify(teamID, msg, msgList)
        return
    if callName == 'ReveiveRecallAward':
        #召回奖励领取情况
        PlayerRecall.ReveiveRecallAwardResult(srcPlayerID, resultName)
        return
    
    if callName == "NotifyTruckDestroy":
@@ -611,6 +648,11 @@
    #跨服注册结果
    if callName == "CrossRealmReg":
        CrossRealmPlayer.OnCrossRealmRegOK(srcPlayerID, eval(resultName), tick)
        return
    # 跨服战场结算
    if callName =="CrossBattlefieldOver":
        CrossBattlefield.MapServer_CrossBattlefieldOver(eval(resultName))
        return
    
    #py喇叭聊天
@@ -701,14 +743,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
    
    #生成仙盟红包
@@ -770,15 +807,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":
@@ -838,6 +885,10 @@
    if callName =="HorsePetBossOver":
        PlayerHorsePetBoss.HorsePetBossKilled(int(resultName))
        return
    #缥缈仙域事件出现
    if callName =="AddFairyDomainEvent":
        PlayerFairyDomain.AddFairyDomainEvent(eval(resultName))
        return
    
#---return分割线-----------------------------------------------------------------
@@ -882,10 +933,6 @@
            return
        resultName = '%s' % ret
        
    if callName == 'SendInviteCode':
        #邀请码验证回复
        resultName = PlayerRecall.PlayerRecall_InviteCode(srcPlayerID, pack.GetQueryID())
    if callName == 'OpenServerCampaignAward':
        #可否领取开服活动奖励
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
@@ -907,6 +954,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":