hxp
2019-05-09 751709e3494aad919e4313c26066be24e2d4bf8a
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
@@ -15,6 +15,7 @@
import ShareDefine
import ChConfig
import IPY_GameWorld
import IpyGameDataPY
# 关于血量的函数这里只包装最简单的超DWORD处理
@@ -47,9 +48,11 @@
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        gameObj.SetHP(value, isNotify)
    else:
        if gameObj.GetType() == ChConfig.ntMonsterTime and not isByTime and value not in [GetMaxHP(gameObj), 0]:
            #GameWorld.DebugLog("不能设置按时间掉血的怪物血量! id=%s,npciD=%s,value=%s,isByTime=%s" % (gameObj.GetID(), gameObj.GetNPCID(), value, isByTime))
            return
        if gameObj.GetGameObjType() == IPY_GameWorld.gotNPC:
            npcID = gameObj.GetNPCID()
            if IpyGameDataPY.GetIpyGameDataNotLog("NPCTimeLostHP", npcID) and not isByTime and value not in [GetMaxHP(gameObj), 0]:
                #GameWorld.DebugLog("不能设置按时间掉血的怪物血量! id=%s,npciD=%s,value=%s,isByTime=%s" % (gameObj.GetID(), gameObj.GetNPCID(), value, isByTime))
                return
        gameObj.SetHPEx(value/ShareDefine.Def_PerPointValue)
        gameObj.SetHP(value%ShareDefine.Def_PerPointValue)
        
@@ -83,14 +86,21 @@
#  @param pyState ״̬
#  @return 是否该状态
#  @remarks 该状态为buff对应的自定义状态效果
#  目前当目标身上多个buff都有同一效果时(如定身),在一个buff消失时会解除该状态
#  故该状态标记仅为一个非精确的标记,应用中请注意!!!(当且仅当多个buff有同一个效果时会提前结束该状态)
#===============================================================================
# 此问题在4012 消失时处理
# #  目前当目标身上多个buff都有同一效果时(如定身),在一个buff消失时会解除该状态
# #  故该状态标记仅为一个非精确的标记,应用中请注意!!!(当且仅当多个buff有同一个效果时会提前结束该状态)
#===============================================================================
def GetPyPlayerState(gameObj, pyState):
    curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState)
    
    state = curState & pow(2, pyState) 
    return state
def ClearPyPlayerState(gameObj):
    gameObj.SetDict(ChConfig.Def_PlayerKey_CurState, 0)
    return
def GetPetDamPer(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrPetDamPer)
def SetPetDamPer(gameObj, value):