hxp
5 天以前 a0dd1dc92bb2f6eb7067a624df20a9c326ecde87
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -24,7 +24,6 @@
import ItemCommon
import ReadChConfig
import BuffSkill
import PetControl
import OperControlManager
import PlayerFamily
import ShareDefine
@@ -44,13 +43,7 @@
import GameFuncComm
import IpyGameDataPY
import PyGameData
import PlayerActTurntable
import PlayerCostRebate
import PlayerActLunhuidian
import GY_Query_CrossRealmReg
import OpenServerActivity
import CrossRealmPlayer
import CrossPlayerData
import PlayerActivity
import ChNetSendPack
import PlayerState
@@ -617,10 +610,6 @@
#    curPlayer.SetIsConfronting(False)
#    #通知客户端 //0进入;其他退出
#    curPlayer.View_PlayerBattle(0, 0, 1)
#
#    #清除战宠仇恨
#    PetControl.ClearFightPetAngry(curPlayer)
#
#    #添加测试信息
#    GameWorld.GodLog(curPlayer, '退出战斗对峙成功')
    return
@@ -881,8 +870,6 @@
    PassiveBuffEffMng.OnPlayerLeaveMap(curPlayer)
    #杀死所有召唤的灵
    KillPlayerSummonNPC(curPlayer)
    #召唤回出战的宠物
    PetControl.ReCallFightPet(curPlayer)
    curPlayer.DeleteMirror()
    return
@@ -960,8 +947,6 @@
    
    PlayerSuccess.FinishDelayAddSuccessProgress(curPlayer, tick)
    playerID = curPlayer.GetPlayerID()
    if not isDisconnect:
        CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
    #清除地图玩家缓存
    PyGameData.g_playerReqEnterFBEx.pop(playerID, None)
    #移除地图缓存的境界难度玩家ID信息
@@ -1115,9 +1100,6 @@
# @return 返回值无意义
# @remarks 玩家离开服务器
def PlayerLeaveServer(curPlayer, tick):
    #宠物下线逻辑, 这里要进行排行榜, 优先做, 避免玩家光环等属性影响宠物属性失效
    PetControl.DoLogic_PetInfo_OnLeaveServer(curPlayer, tick)
    RecordTodayOnlineTime(curPlayer)
    #清除下线消失的buff, 在更新排行榜之前
    __DisconnectClearBuff(curPlayer, tick)
@@ -1175,8 +1157,6 @@
    
    FBLogic.DoPlayerChangeMapLogic(curPlayer, tick)
    #summonList = list()
    #召回宠物
    PetControl.ReCallFightPet(curPlayer)
    #1. 删除自己不需要的召唤兽(火焰之灵等)
    #必须用while, 因为在循环中要删除
    # 召唤兽切地图不带过去
@@ -1232,7 +1212,6 @@
    
    GameWorld.Log("PlayerLeaveFB...", curPlayer.GetPlayerID())
    if GameWorld.IsCrossServer():
        CrossRealmPlayer.PlayerExitCrossServer(curPlayer)
        return
    
    funcLineID = 0
@@ -1310,74 +1289,6 @@
    return
#---------------------------------------------------------------------
def PlayerEnterCrossServer(curPlayer, mapID, lineID):
    playerID = curPlayer.GetPlayerID()
    GameWorld.Log("玩家请求进入跨服地图: mapID=%s,lineID=%s" % (mapID, lineID), playerID)
    if mapID not in ChConfig.Def_CrossMapIDList:
        return
    tick = GameWorld.GetGameWorld().GetTick()
    lastRequestTick = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_RequestEnterCrossServerTick)
    if lastRequestTick and tick - lastRequestTick < 5000:
        GameWorld.DebugLog("    请求进入跨服CD中!", playerID)
        NotifyCode(curPlayer, "RequestEnterCrossServerCD")
        return
    crossRegisterMap = curPlayer.NomalDictGetProperty(ChConfig.Def_PlayerKey_CrossRegisterMap)
    if crossRegisterMap:
        GameWorld.ErrLog("跨服已经在上传数据,不重复提交!crossRegisterMap=%s,mapID=%s" % (crossRegisterMap, mapID), playerID)
        return
    if GameWorld.IsCrossServer():
        GameWorld.DebugLog("跨服服务器不允许该操作!")
        return
    if GetCrossMapID(curPlayer):
        GameWorld.ErrLog("玩家当前为跨服状态,不允许再次请求进入跨服!", curPlayer.GetPlayerID())
        return
    if not CrossRealmPlayer.IsCrossServerOpen():
        NotifyCode(curPlayer, "CrossMatching18")
        return
    if GameObj.GetHP(curPlayer) <= 0:
        NotifyCode(curPlayer, "CrossMap4")
        return
    if PlayerState.IsInPKState(curPlayer):
        NotifyCode(curPlayer, "SingleEnterPK", [mapID])
        return
    fbIpyData = FBCommon.GetFBIpyData(mapID)
    if fbIpyData:
        fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID, False)
        if not fbLineIpyData:
            GameWorld.DebugLog("副本表找不到副本对应功能线路!mapID=%s,lineID=%s" % (mapID, lineID))
            return
        ret = FBCommon.CheckCanEnterFBComm(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData)
        if ret != ShareDefine.EntFBAskRet_OK:
            return
        if not FBLogic.OnEnterFBEvent(curPlayer, mapID, lineID, tick):
            GameWorld.DebugLog("    OnEnterFBEvent False!", curPlayer.GetPlayerID())
            NotifyCode(curPlayer, "SingleEnterDefaul")
            return
    # 需要动态分布线路的地图,发送到跨服服务器进行分配
    if mapID in ChConfig.Def_CrossDynamicLineMap:
        extendInfo = {}
        msgDict = {"PlayerID":curPlayer.GetPlayerID(), "MapID":mapID, "FuncLineID":lineID, "LV":curPlayer.GetLV()}
        if extendInfo:
            msgDict.update(extendInfo)
        GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_EnterFB, msgDict)
    else:
        isSend = GY_Query_CrossRealmReg.RegisterEnterCrossServer(curPlayer, mapID, lineID=lineID)
        if not isSend:
            return
    curPlayer.SetDict(ChConfig.Def_PlayerKey_RequestEnterCrossServerTick, tick)
    return
##玩家进入副本
# @param curPlayer 玩家实例
# @param mapID 地图ID
@@ -2764,10 +2675,6 @@
    elif type_Price == IPY_GameWorld.TYPE_Price_Silver_Paper:
        __PayMoneyAfterBySilverPaper(curPlayer, price)
        
    #转盘活动
    #PlayerActTurntable.OnPlayerUseGold(curPlayer, type_Price, price)
    #轮回殿
    #PlayerActLunhuidian.AddLunhuidianValue(curPlayer, PlayerActLunhuidian.AwardType_PayMoney, type_Price, price)
    if type_Price == ShareDefine.TYPE_Price_Xiantao:
        # 累加未结算战锤 - 经验
        unXiantaoCntExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntExp)
@@ -2850,17 +2757,6 @@
#  @param price ,货币价格
#  @return None
def __PayMoneyAfterByGoldMoney(curPlayer, type_Price, price, costType, infoDict, costVIPGold):
    # 充值活动玩家消耗元宝处理
    #PlayerGoldAction.PlayerUseGold(curPlayer, price)
    # 消费返利
    if costType not in ChConfig.CostRebate_DisableType:
        PlayerCostRebate.AddCostRebateGold(curPlayer, costType, price, infoDict)
    else:
        GameWorld.DebugLog("不计入消费活动的消费类型!costType=%s" % costType, curPlayer.GetPlayerID())
    return
## 付款以后后续操作(金票)
@@ -3389,7 +3285,6 @@
            #aftFreePoint = curPlayer.GetFreePoint()
            if aftLV > befLV:
                curPlayer.SetLV(aftLV, False) # 这里不再通知GameServer
                #PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_LVUp, aftLV - befLV)
                PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_LV)
                ChPlayer.OnPlayerBaseInfoChange(curPlayer, IPY_PlayerDefine.CDBPlayerRefresh_LV) # 等级
                
@@ -3602,9 +3497,6 @@
        #杀死所有召唤的灵
        KillPlayerSummonNPC(curPlayer)
        #召唤回出战的宠物
        PetControl.ReCallFightPet(curPlayer)
        
        #清空使用技能记录
        curPlayer.ClearUseSkillRec()
@@ -4020,7 +3912,7 @@
    
    if crossActName and crossActIDKey:
        playerActID = curPlayer.NomalDictGetProperty(crossActIDKey)
        actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, crossActName)
        actInfo = {}#GetPlayerCrossActInfo(curPlayer, crossActName)
        actID = actInfo.get(ShareDefine.ActKey_ID, 0)
        cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
        state = actInfo.get(ShareDefine.ActKey_State, 0)
@@ -4323,11 +4215,8 @@
def GetFBFuncLineID(curPlayer): return 0
## 跨服状态所在地图ID: 0-非跨服状态,非0-跨服状态对应的地图ID
def GetCrossMapID(curPlayer): return curPlayer.GetExAttr5()
def GetCrossMapID(curPlayer): return 0
def SetCrossMapID(curPlayer, value):
    curPlayer.SetExAttr5(value, False, True)
    if not value:
        CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
    return
## 铜钱点, 支持铜钱超20亿
@@ -4432,10 +4321,8 @@
    #if value < beforeFightPower:
    #    DataRecordPack.DR_FightPowerChangeInfo(curPlayer, beforeFightPower)
    GameWorld.DebugLog("总战力: %s, beforeFightPower=%s" % (value, beforeFightPower), curPlayer.GetPlayerID())
    #PlayerBillboard.UpdatePlayerFPTotalBillboard(curPlayer)
    #if beforeFightPower != totalFightPower:
    #    CrossPlayerData.OnPlayerFightPowerChange(curPlayer)
    ChPlayer.OnPlayerBaseInfoChange(curPlayer, IPY_PlayerDefine.CDBPlayerRefresh_FightPower) # 战力
    if beforeFightPower != value:
        ChPlayer.OnPlayerBaseInfoChange(curPlayer, IPY_PlayerDefine.CDBPlayerRefresh_FightPower) # 战力
    return
## 设置模块战斗力,支持超过20E = 模块公式战力 + 技能附加战力 + 其他附加战力
@@ -4724,13 +4611,6 @@
#-------------------------------------------------------------------------------
## 设置玩家字典值, 存库
def NomalDictSetProperty(curPlayer, key, value, dType=0):
    if CrossPlayerData.IsNeedProcessCrossPlayer(curPlayer) and key not in \
        [ChConfig.Def_PlayerKey_CrossRegisterMap]:
        playerID = curPlayer.GetPlayerID()
        changeDict = PyGameData.g_crossPlayerDictChangeInfo.get(playerID, {})
        changeDict[(key, dType)] = value
        PyGameData.g_crossPlayerDictChangeInfo[playerID] = changeDict
    if value == 0:
        curPlayer.NomalDictDelProperty(key, dType)
        return 0