hxp
4 天以前 a7ab0247c7b8eff06ad104bee39bc035384ca43e
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -14,10 +14,8 @@
#"""Version = 2017-07-17 15:00"""
#---------------------------------------------------------------------
import GameWorld
import ChEquip
import SkillShell
import ChConfig
import EffGetSet
import PlayerHorse
import PlayerTeam
import SkillCommon
@@ -41,27 +39,15 @@
import ChPyNetSendPack
import NetPackCommon
import DataRecordPack
import CalcNoLineEffect
import CalcLineEffect
import PlayerEquipDecompose
import FormulaControl
import PlayerDienstgrad
import PlayerPrestigeSys
import OpenServerCampaign
import PlayerGodWeapon
import PlayerExpandPackCfgMgr
import PlayerActivity
import FBCommon
import PassiveBuffEffMng
import EventReport
import PlayerGatherSoul
import PlayerGatherTheSoul
import PlayerSuccess
import PlayerPet
import ItemControler
import GameFuncComm
import IpyGameDataPY
import PlayerRune
import PyGameData
import PlayerMagicWeapon
import PlayerFeastTravel
@@ -70,9 +56,6 @@
import GameLogic_ZhuXianBoss
import GameLogic_CrossDemonKing
import PlayerVip
import PlayerRefineStove
import PlayerFamilyTech
import PlayerFamilyZhenfa
import PlayerCostRebate
import PlayerActLunhuidian
import PlayerActGarbageSorting
@@ -80,24 +63,14 @@
import PlayerTongTianLing
import FunctionNPCCommon
import PlayerGoldInvest
import IPY_PlayerDefine
import CrossRealmPlayer
import CrossPlayerData
import NPCHurtManager
import ChNetSendPack
import PlayerLianTi
import PlayerCoat
import PlayerAssist
import PlayerState
import PlayerDogz
import PlayerFaQi
import PlayerLove
import PlayerGubao
import PlayerShentong
import PlayerOnline
import PlayerCharm
import PlayerTask
import PlayerFace
import PlayerMail
import ChPlayer
import GameObj
@@ -777,21 +750,6 @@
    curPlayer.Stand()
    
    
    return
#---------------------------------------------------------------------
##玩家播放表情
# @param curPlayer 玩家实例
# @return 返回值无意义
# @remarks 玩家播放表情
def DoPlayerShowPlayerFace(curPlayer, faceType):
    #清空玩家点击
    curPlayer.SetActionObj(None)
    #通知中断战斗对峙
    ExitPlayerConfronting(curPlayer)
    #通知停止移动
    curPlayer.StopMove()
    #通知客户端播放表情
    curPlayer.View_ShowPlayerFace(faceType)
    return
#---------------------------------------------------------------------
@@ -3647,10 +3605,6 @@
            
            # 升级需要执行的游戏功能处理
            GameFuncComm.DoFuncOpenLogic(curPlayer)
            #ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer) # 灵器属性会随等级成长
            #if aftLV%10 == 0:
            #    # 控制下刷新次数
            #    PlayerPet.CalcPetItemAddPlayerAttr(curPlayer)   # 宠物有随等级变化的技能
            
            PlayerOnline.CalcRoleBase(curPlayer)
            PlayerOnline.GetOnlinePlayer(curPlayer).RefreshRoleAttr()
@@ -4268,104 +4222,22 @@
#        return False
    
    return True
#------------------------------------------------------------------------------------
##初始化玩家背包.
# @param curPlayer 玩家实例
# @return 返回值无意义
# @remarks 初始化玩家背包
def Init_ItemPack(curPlayer):
    packType = IPY_GameWorld.rptItem
    #初始化玩家背包
    if packType not in ChConfig.Def_Type_CanBuyPack_PlayerDict.keys():
        return
    #获取玩家背包
    curPack = curPlayer.GetItemManager().GetPack(packType)
    #默认14格子 + 开启的
    keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict.get(packType)[ChConfig.Def_PlayerPackDict_Index_Key]
    count = ItemCommon.GetPackInitCount(packType) + curPlayer.NomalDictGetProperty(keyName)
    curPack.SetCount(count)
    #通知客户端背包格子数目
#    curPlayer.Sync_ItemCount(curPack.GetCount())
    curPack.Sync_PackCanUseCount()
    return
#------------------------------------------------------------------------------------
##初始化玩家仓库.
# @param curPlayer 玩家实例
# @return 返回值无意义
# @remarks 初始化玩家仓库
def Init_Warehouse(curPlayer):
    packType = IPY_GameWorld.rptWarehouse
    #初始化玩家背包
    if packType not in ChConfig.Def_Type_CanBuyPack_PlayerDict.keys():
        return
    #获取玩家背包
def Init_PackCount(curPlayer, packType, defaultMax=False, isSync=True):
    ## 初始化刷新玩家某个背包格子数
    curPack = curPlayer.GetItemManager().GetPack(packType)
    #默认42格子 + 开启的
    keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict.get(packType)[ChConfig.Def_PlayerPackDict_Index_Key]
    count = ItemCommon.GetPackInitCount(packType) + curPlayer.NomalDictGetProperty(keyName)
    curPack.SetCount(count)
    #通知客户端
    curPack.Sync_PackCanUseCount()
    maxCount = curPack.GetMaxCount()
    if defaultMax:
        curPack.SetCount(maxCount)
    else:
        count = ItemCommon.GetPackInitCount(packType) + ItemCommon.GetPackOpenItemCnt(curPlayer, packType)
        curPack.SetCount(min(count, maxCount))
    if isSync:
        curPack.Sync_PackCanUseCount()
    return
def Init_HeroPack(curPlayer):
    packType = ShareDefine.rptHero
    #获取玩家背包
    curPack = curPlayer.GetItemManager().GetPack(packType)
    initCount = ItemCommon.GetPackInitCount(packType)
    if packType in ChConfig.Def_Type_CanBuyPack_PlayerDict.keys():
        keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict.get(packType)[ChConfig.Def_PlayerPackDict_Index_Key]
        initCount += curPlayer.NomalDictGetProperty(keyName)
    curPack.SetCount(initCount)
    #通知客户端背包格子数目
#    curPlayer.Sync_ItemCount(curPack.GetCount())
    curPack.Sync_PackCanUseCount()
    return
##初始化寻宝背包
# @param curPlayer 玩家实例
# @return None
def Init_TreasurePack(curPlayer):
    curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptTreasure)
    curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptTreasure))
    #通知客户端
    curPack.Sync_PackCanUseCount()
    return
##初始化玩家收纳柜
# @param curPlayer 玩家实例
# @param packType 背包类型
# @return 返回值无意义
def Init_CabinetCountByType(curPlayer, packType):
    keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict.get(packType)[ChConfig.Def_PlayerPackDict_Index_Key]
    if keyName == None:
        GameWorld.ErrLog("Init_Pack Error type=%s" % packType)
        return
    #初始化时装武器背包
    curPack = curPlayer.GetItemManager().GetPack(packType)
    #默认14格子 + 开启的
    count = ChConfig.Def_PackCnt_WeaponCoat + curPlayer.NomalDictGetProperty(keyName)
    curPack.SetCount(count)
    #通知客户端
    curPack.Sync_PackCanUseCount()
    return
#---------------------------------------------------------------------
def IsInOperationAction(curPlayer, actName, actIDKey, crossActName="", crossActIDKey=""):
    ## 玩家是否有正在进行中运营活动,不含参与结束阶段
    
@@ -4871,68 +4743,6 @@
# #@warning: ExAttr6~ExAttr10, 新增2个布尔默认参数, 是否通知客户端, 是否通知GameServer, 默认值为False
#===============================================================================
#---------------------------------------------------------------------------
##获取可免费开启的格子数
# @param curPlayer 玩家对象
# @param packType 背包类型
# @param openCnt 实际要开启的格子数
# @return 获取可免费开启的格子数
def GetCanAutoOpenPackCount(curPlayer, packType, openCnt, tick):
    if packType not in [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse]:
        return 0
    cfgObj = PlayerExpandPackCfgMgr.GetExpandPackCfg(curPlayer, packType)
    #找不到这种背包的配置信息对象
    if not cfgObj:
        return 0
    #已购买或自动开启的格子数
    keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict[packType][ChConfig.Def_PlayerPackDict_Index_Key]
    curCount = curPlayer.NomalDictGetProperty(keyName)
#    nextCountIndex = curCount + 1
#    infoObj = cfgObj.GetAttrInfoByInex(nextCountIndex)
#    if None == infoObj:
#        return 0
#    #更新下玩家的在线时间
#    UpdateOnLineTime(curPlayer, tick)
#    onlineTime = curPlayer.GetOnlineTime()
#    #需要的时间
#    needOnlineTime = infoObj["OnlineTime"]
#    #最后一次自动开启背包的在线时间tick
#    lastAutoOpenPackTick = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_LastAutoOpenPackTick)
#    if onlineTime - lastAutoOpenPackTick > needOnlineTime:
#        return 1
#    return 0
    #最大可增加的背包数
    maxCanAddCount = cfgObj.GetCanAddCount()
    forCount = min(openCnt, maxCanAddCount - curCount)
    #可以再增加的格子数
    count = 0
    #遍历可增加的背包格子数
    UpdateOnLineTime(curPlayer, tick)
    onlineTime = curPlayer.GetOnlineTime()
    lastAutoOpenPackTick = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_LastAutoOpenPackTick % packType)
    lastInfoObj = cfgObj.GetTotalAddAttrInfoByCount(curCount)
    notOnlineTime = 0
    if lastInfoObj:
        notOnlineTime = lastInfoObj["OnlineTime"]
#    GameWorld.Log("get online time = %s"%onlineTime)
    for i in range(forCount):
        nextCount = curCount + i + 1
        infoObj = cfgObj.GetTotalAddAttrInfoByCount(nextCount)
        if None == infoObj:
            break
        # (小于0的不具有免费开启功能)
        if infoObj["OnlineTime"] < 0:
            continue
        needOnlineTime = infoObj["OnlineTime"] - notOnlineTime
#        GameWorld.Log("get need online time = %s"%needOnlineTime)
        #要求的在线时间,大于当前的在线时间,没办法加背包格子
        if needOnlineTime > onlineTime - lastAutoOpenPackTick:
            break
        count += 1
    return count
## 获取玩家当前等级升级所需总经验
#  @param playerLv 玩家等级