hch
2019-06-11 c60cba7154e4f968ea23060de3c7c49b60d86e36
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -1034,6 +1034,10 @@
    #切地图要清除的buff
    __CheckClearBuffOnMapChange(curPlayer, tick)
            
    #上线和切地图加有限无敌Buff
    if curPlayer.GetLV() > 50:
        SkillCommon.AddBuffBySkillType_NoRefurbish(curPlayer, ChConfig.Def_SkillID_LimitSuperBuff, tick)
    #刷新玩家的视野
    if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or PlayerControl.GetCustomMapID(curPlayer)):
        GameWorld.DebugLog("===登录本服地图时,处于跨服或自定义场景状态,不刷新视野!", curPlayer.GetPlayerID())
@@ -1381,10 +1385,6 @@
    #检查GM帐号是否有权限登陆
    #if not __CheckGMCanLoadMapOK(curPlayer):
    #    return
    #上线和切地图加有限无敌Buff, 移到切换地图成功,太早发包客户端不显示
    if curPlayer.GetLV() > 50:
        SkillCommon.AddBuffBySkillType_NoRefurbish(curPlayer, ChConfig.Def_SkillID_LimitSuperBuff, tick)
    
    
    #检测账号是否锁定
@@ -1739,13 +1739,37 @@
        return
    isFree = curPlayer.GetLV() < IpyGameDataPY.GetFuncCfg('LVUPAddPoint', 4)
    if not isFree:
        needItemID = IpyGameDataPY.GetFuncCfg('LVUPAddPoint', 5)
        #优先使用剩余时间最短的时效物品
        needItemIDList = IpyGameDataPY.GetFuncEvalCfg('LVUPAddPoint', 5)
        itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
        hasEnough, itemList = ItemCommon.GetItem_FromPack_ByID(needItemID, itemPack, 1)
        if not hasEnough:
            GameWorld.DebugLog("重置加点 item(%s) isn't enough" % (needItemID))
        delIndex = -1
        expireTime = 0
        for itemID in needItemIDList:
            hasEnough, itemIndexList = ItemCommon.GetItem_FromPack_ByID(itemID, itemPack, 10)
            if not itemIndexList:
                #GameWorld.DebugLog("重置加点 item(%s) isn't enough" % (needItemID))
                continue
            for itemIndex in itemIndexList:
                curItem = itemPack.GetAt(itemIndex)
                if not ItemCommon.CheckItemCanUse(curItem):
                    continue
                isExpireItem, remainingTime = ItemCommon.GetItemRemainingTime(curItem)
                if isExpireItem:
                    if remainingTime <= 0:
                        #过期
                        continue
                    if not expireTime or remainingTime < expireTime:
                        expireTime = remainingTime
                        delIndex = itemIndex
                else:
                    delIndex = itemIndex
                    break
            if delIndex != -1:
                break
        if delIndex is -1:
            return
        ItemCommon.ReduceItem(curPlayer, itemPack, itemList, 1, False, ChConfig.ItemDel_ResetAttrPoint)
        ItemCommon.ReduceItem(curPlayer, itemPack, [delIndex], 1, False, ChConfig.ItemDel_ResetAttrPoint)
    
    Item_ResetAttrPoint.DoResetAttrPoint(curPlayer, 0, 0, 0)
    
@@ -5821,18 +5845,23 @@
    NetPackCommon.SendFakePack(curPlayer, sendPack)
    return
#// B4 0E 设置玩家自身血量 #tagCMSetRoleHP
#// B4 0E 玩家掉血 #tagCMRoleLostHP
#
#struct    tagCMSetRoleHP
#struct    tagCMRoleLostHP
#{
#    tagHead        Head;
#    DWORD        HP;
#    DWORD        LostHP;
#};
def OnSetRoleHP(index, clientData, tick):
def OnRoleLostHP(index, clientData, tick):
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    if not curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
        GameWorld.DebugLog("玩家当前不是在自定义场景中,不允许设置自身血量!")
        return
    setHP = max(1, min(clientData.HP, curPlayer.GetMaxHP()))
    curPlayer.SetHP(setHP)
    lostHP = clientData.LostHP
    curHP = curPlayer.GetHP()
    updHP = curHP - lostHP
    if updHP <= 0:
        #玩家已经死亡
        playerControl = PlayerControl.PlayerControl(curPlayer)
        playerControl.SetDead()
    else:
        curPlayer.SetHP(updHP)
    return