hxp
2024-10-29 328648da94a07437fc46024f3e9b7e48c2e2ae38
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
@@ -34,6 +34,7 @@
import ChConfig
import GMCommon
import DirtyList
import CrossBillboard
import PlayerBillboard
import PlayerExam
import PlayerControl
@@ -43,6 +44,7 @@
import GameWorldOpenServerCampaign
import ShareDefine
import GameDataRecord
import PlayerPackData
import PlayerCompensation
import PlayerFB
import UpdatePlayerName
@@ -50,7 +52,9 @@
import GameWorldBoss
import GameWorldFamilyWar
#import PlayerFamilyTech
import PlayerFamilyZhenfa
import PlayerFamilyRedPacket
import PlayerFamilyZhenbaoge
import PlayerFBHelpBattle
import PlayerHorsePetBoss
#import PlayerFamilyStore
@@ -66,15 +70,35 @@
import PyGameData
import PlayerTalk
import PlayerStore
import CrossYaomoBoss
import CrossRealmPlayer
import CrossRealmMsg
import CrossRealmPK
import CrossChampionship
import CrossBattlefield
import CrossFamilyFlagwar
import CrossActAllRecharge
import PlayerActGubao
import PlayerActHorsePetTrain
import PlayerActXianXiaMJ
import PlayerActBossTrial
import PlayerActFamilyCTGAssist
import ChPyNetSendPack
import NetPackCommon
import AuctionHouse
import PlayerFairyDomain
import GameWorldSkyTower
import GameWorldMineArea
import PlayerTurnFight
import GameWorldArena
import GameWorldItem
import PlayerRecData
import PlayerAssist
import PlayerLove
import time
import datetime
import json
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
@@ -329,16 +353,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()
@@ -482,15 +515,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":
@@ -529,6 +575,10 @@
    if callName == "UpdateBillboard":     #地图服务器更新排行榜
        PlayerBillboard.MapServer_UpdateBillboard(eval(resultName), tick)
        return
    if callName == "UpdateCrossBillboard":     #地图服务器更新跨服排行榜
        CrossBillboard.MapServer_UpdateCrossBillboard(eval(resultName))
        return
    
    if callName == 'PyAddFamilyInfoValue':     #地图服务器增加战盟信息值
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
@@ -543,6 +593,13 @@
    
    if callName == 'ExitExam': #地图服务器玩家退出答题
        PlayerExam.MapServer_ExitAction(srcPlayerID)
        return
    if callName == 'FuncOpen':
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        PlayerControl.DoFuncOpenLogic(curPlayer, eval(resultName))
        return
    
    if  callName == 'TeamNotify':
@@ -584,6 +641,16 @@
        GameDataRecord.ChangeCoinCnt(eval(resultName))
        return
    
    #请求玩家的打包数据
    if callName == "ReuestPlayerPackData":
        PlayerPackData.OnMGReuestPlayerPackData(eval(resultName))
        return
    #跨服排位PK战斗结算
    if callName == "CrossChampionshipPKOver":
        CrossChampionship.MapServer_CrossChampionshipPKOver(eval(resultName), tick)
        return
    #跨服匹配PK战斗结算
    if callName == "CrossPKOver":
        CrossRealmPK.MapServer_CrossPKOver(eval(resultName), tick)
@@ -615,6 +682,61 @@
        CrossRealmPlayer.OnCrossRealmRegOK(srcPlayerID, eval(resultName), tick)
        return
    
    # 跨服战场结算
    if callName =="CrossBattlefieldOver":
        CrossBattlefield.MapServer_CrossBattlefieldOver(eval(resultName))
        return
    # 跨服仙盟夺旗战/逐鹿万界 结算
    if callName =="CrossFamilyFlagwarOver":
        CrossFamilyFlagwar.MapServer_CrossFamilyFlagwarOver(eval(resultName))
        return
    # 跨服妖魔boss伤害结算
    if callName =="CrossYaomoBossHurtInfo":
        CrossYaomoBoss.MapServer_CrossYaomoBossHurtInfo(eval(resultName))
        return
    # 跨服全民充值
    if callName == "CrossActAllRecharge":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        CrossActAllRecharge.MapServer_CrossActAllRecharge(curPlayer, eval(resultName))
        return
    # Boss历练
    if callName == "BossTrial":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        PlayerActBossTrial.MapServer_BossTrial(curPlayer, eval(resultName))
        return
    # 仙匣秘境
    if callName == "XianXiaMJ":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        PlayerActXianXiaMJ.MapServer_XianXiaMJ(curPlayer, eval(resultName))
        return
    # 古宝养成
    if callName == "ActGubao":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        PlayerActGubao.MapServer_Gubao(curPlayer, eval(resultName))
        return
    # 骑宠养成
    if callName == "ActHorsePetTrain":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        PlayerActHorsePetTrain.MapServer_HorsePetTrain(curPlayer, eval(resultName))
        return
    #py喇叭聊天
    if callName == 'PYSpeaker':
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
@@ -634,6 +756,13 @@
    # 战盟联赛
    if callName =="FamilyWarOver":
        GameWorldFamilyWar.MapServer_FamilyWarOver(eval(resultName))
        return
    # 增加玩家Rec数据
    if callName == "AddPlayerRec":
        curPlayer = None if not srcPlayerID else GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        recType, valueList, userData, notifyType = eval(resultName)
        PlayerRecData.MapServer_AddPlayerRec(curPlayer, recType, valueList, userData, notifyType)
        return
    
    # 删除通用玩家Rec数据
@@ -659,12 +788,6 @@
                
        return
    
    # 战盟副本boss开始、被击杀
    if callName =="FamilyBossFBState":
        PlayerFamilyBoss.FamilyBossOnKilled(eval(resultName), tick)
        return
    # 击杀boss掉落好物品
    if callName =="BossDropGoodItem":
        GameWorldBoss.OnKillBossDropGoodItem(eval(resultName), tick)
@@ -701,6 +824,11 @@
    # 全局击杀数统计
    if callName =="GlobalKillCount":
        GameWorldProcess.UpdGlobalKillCount(eval(resultName))
        return
    # 缓存装备广播信息中的装备明细信息
    if callName == "NotifyEquipDetailInfo":
        GameWorldItem.OnCacheNotifyEquipDetailInfo(json.loads(resultName), tick)
        return
    
    #生成仙盟红包
@@ -762,15 +890,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":
@@ -826,9 +964,29 @@
    if callName =="AllFamilyBossOver":
        PlayerFamilyBoss.AllFamilyBossKilled()
        return
    #仙盟阵法
    if callName =="FamilyZhenfa":
        curPlayer = None
        if srcPlayerID:
            curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
            if not curPlayer:
                return
        PlayerFamilyZhenfa.MapServer_FamilyZhenfa(curPlayer, eval(resultName))
        return
    #仙盟传功
    if callName =="FamilyChuangong":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        PlayerFamily.MapServer_FamilyChuangong(curPlayer, eval(resultName))
        return
    #骑宠BOSS结束
    if callName =="HorsePetBossOver":
        PlayerHorsePetBoss.HorsePetBossKilled(int(resultName))
        return
    #缥缈仙域事件出现
    if callName =="AddFairyDomainEvent":
        PlayerFairyDomain.AddFairyDomainEvent(eval(resultName))
        return
    
#---return分割线-----------------------------------------------------------------
@@ -887,11 +1045,86 @@
    
    
    # 副本助战
    if callName =="FBHelpBattle":
    if callName == "FBHelpBattle":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        ret = PlayerFBHelpBattle.MapServer_FBHelpBattle(curPlayer, eval(resultName))
        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 == "FamilyCTGAssist":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        ret = PlayerActFamilyCTGAssist.MapServer_FamilyCTGAssist(curPlayer, eval(resultName))
        if ret == None:
            return
        resultName = '%s' % ret
    # 仙盟珍宝阁
    if callName =="FamilyZhenbaoge":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        ret = PlayerFamilyZhenbaoge.MapServer_ZhenbaogeOP(curPlayer, eval(resultName))
        if ret == None:
            return
        resultName = '%s' % ret
    # 仙盟boss
    if callName == "FamilyBoss":
        ret = PlayerFamilyBoss.MapServer_FamilyBoss(eval(resultName), tick)
        if ret == None:
            return
        resultName = '%s' % ret
    # 情缘
    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 == "TurnFight":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        ret = PlayerTurnFight.MapServer_TurnFight(curPlayer, eval(resultName))
        if ret == None:
            return
        resultName = '%s' % ret
    # 福地
    if callName == "MineArea":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        ret = GameWorldMineArea.MapServer_MineArea(curPlayer, eval(resultName))
        if ret == None:
            return
        resultName = '%s' % ret
    # 天星塔
    if callName == "SkyTower":
        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
        if not curPlayer:
            return
        ret = GameWorldSkyTower.MapServer_SkyTowerInfo(curPlayer, eval(resultName))
        if ret == None:
            return
        resultName = '%s' % ret
@@ -902,7 +1135,10 @@
#        if not curPlayer:
#            return
#        resultName = '%s' % PlayerFamilyStore.DoMapServerFamilyStore(curPlayer, eval(resultName), tick)
    if not srcPlayerID:
        return
    srcPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
    
    if not srcPlayer: