hxp
2024-03-07 3d3a72a7c8482ec217d936c8fcee3cea07cfb785
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
@@ -50,6 +51,7 @@
import GameWorldBoss
import GameWorldFamilyWar
#import PlayerFamilyTech
import PlayerFamilyZhenfa
import PlayerFamilyRedPacket
import PlayerFBHelpBattle
import PlayerHorsePetBoss
@@ -66,15 +68,28 @@
import PyGameData
import PlayerTalk
import PlayerStore
import CrossYaomoBoss
import CrossRealmPlayer
import CrossRealmMsg
import CrossRealmPK
import CrossChampionship
import CrossBattlefield
import CrossFamilyFlagwar
import CrossActAllRecharge
import ChPyNetSendPack
import NetPackCommon
import AuctionHouse
import PlayerFairyDomain
import GameWorldSkyTower
import GameWorldMineArea
import GameWorldArena
import GameWorldItem
import PlayerAssist
import PlayerLove
import time
import datetime
import json
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
@@ -329,16 +344,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 +506,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":
@@ -512,19 +549,12 @@
        PlayerControl.CrossNotify(serverGroupIDList, crossNotifyList)
        return
    
    if callName == "DynamicLineMapOpen":
        realMapID, copyMapID = eval(resultName)
        PlayerFB.OnCrossDynamicLineOpen(realMapID, copyMapID)
        return
    if callName == "DynamicLineMapClose":
        realMapID, copyMapID = eval(resultName)
        PlayerFB.OnCrossDynamicLineClose(realMapID, copyMapID)
    if callName == "DynamicLineMapStateChange":
        PlayerFB.OnCrossDynamicLineStateChange(eval(resultName))
        return
    
    if callName == "DynamicLineMapInitOK":
        realMapID, copyMapCount = eval(resultName)
        PlayerFB.OnCrossDynamicMapReset(realMapID, copyMapCount)
        PlayerFB.OnCrossDynamicMapReset(eval(resultName))
        return
    
    if callName == "CommMapServerInitOK":
@@ -535,6 +565,10 @@
    if callName == "UpdateBillboard":     #地图服务器更新排行榜
        PlayerBillboard.MapServer_UpdateBillboard(eval(resultName), tick)
        return
    if callName == "UpdateCrossBillboard":     #地图服务器更新跨服排行榜
        CrossBillboard.MapServer_UpdateCrossBillboard(eval(resultName))
        return
    
    if callName == 'PyAddFamilyInfoValue':     #地图服务器增加战盟信息值
@@ -550,6 +584,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':
@@ -591,6 +632,11 @@
        GameDataRecord.ChangeCoinCnt(eval(resultName))
        return
    
    #跨服排位PK战斗结算
    if callName == "CrossChampionshipPKOver":
        CrossChampionship.MapServer_CrossChampionshipPKOver(eval(resultName), tick)
        return
    #跨服匹配PK战斗结算
    if callName == "CrossPKOver":
        CrossRealmPK.MapServer_CrossPKOver(eval(resultName), tick)
@@ -620,6 +666,29 @@
    #跨服注册结果
    if callName == "CrossRealmReg":
        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
    
    #py喇叭聊天
@@ -666,12 +735,6 @@
                
        return
    
    # 战盟副本boss开始、被击杀
    if callName =="FamilyBossFBState":
        PlayerFamilyBoss.FamilyBossOnKilled(eval(resultName), tick)
        return
    # 击杀boss掉落好物品
    if callName =="BossDropGoodItem":
        GameWorldBoss.OnKillBossDropGoodItem(eval(resultName), tick)
@@ -708,6 +771,11 @@
    # 全局击杀数统计
    if callName =="GlobalKillCount":
        GameWorldProcess.UpdGlobalKillCount(eval(resultName))
        return
    # 缓存装备广播信息中的装备明细信息
    if callName == "NotifyEquipDetailInfo":
        GameWorldItem.OnCacheNotifyEquipDetailInfo(json.loads(resultName), tick)
        return
    
    #生成仙盟红包
@@ -769,15 +837,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":
@@ -833,9 +911,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分割线-----------------------------------------------------------------
@@ -902,6 +1000,51 @@
        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 '' # 需要重置间隔,每次都回复
    # 仙盟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 =="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
        
#    # 战盟仓库
#    if callName == "FamilyStore":
@@ -909,7 +1052,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: