#!/usr/bin/python # -*- coding: GBK -*- # ##@package E:/GameSVN/U3DGame/ProjectSServer/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py # @todo: # # @author: Alee # @date 2017-10-24 ÏÂÎç07:49:45 # @version 1.0 # # @note: # #--------------------------------------------------------------------- import ShareDefine import ChConfig import IPY_GameWorld # ¹ØÓÚѪÁ¿µÄº¯ÊýÕâÀïÖ»°ü×°×î¼òµ¥µÄ³¬DWORD´¦Àí def GetMaxHP(gameObj): if not hasattr(gameObj, "GetMaxHPEx"): return gameObj.GetMaxHP() else: return gameObj.GetMaxHPEx()*ShareDefine.Def_PerPointValue + gameObj.GetMaxHP() def SetMaxHP(gameObj, value): if not hasattr(gameObj, "SetMaxHPEx"): gameObj.SetMaxHP(value) else: gameObj.SetMaxHPEx(value/ShareDefine.Def_PerPointValue) gameObj.SetMaxHP(value%ShareDefine.Def_PerPointValue) def GetHP(gameObj): if not hasattr(gameObj, "GetHPEx"): return gameObj.GetHP() else: return gameObj.GetHPEx()*ShareDefine.Def_PerPointValue + gameObj.GetHP() def SetHP(gameObj, value, isNotify=True, isByTime=False): 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 gameObj.SetHPEx(value/ShareDefine.Def_PerPointValue) gameObj.SetHP(value%ShareDefine.Def_PerPointValue) ## ÉèÖÃbuff״̬(½Å±¾×Ô¶¨Òåö¾Ù) # @param pyState ״̬ # @param isTrue ÊÇ·ñÉèÖøÃ״̬ # @return None def SetPyPlayerState(gameObj, pyState, isAdd): if pyState not in ChConfig.Def_PlayerStateList: return curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState) if isAdd: # Ôö¼Ó updState = curState | pow(2, pyState) else: # ɾ³ý if curState & pow(2, pyState) == 0: return else: updState = curState ^ pow(2, pyState) #GameWorld.DebugLog("SetPyPlayerState (%s - %s), curState=%s,updState=%s" # % (pyState, isAdd, curState, updState)) gameObj.SetDict(ChConfig.Def_PlayerKey_CurState, updState) return ## »ñÈ¡buff״̬(½Å±¾×Ô¶¨Òåö¾Ù) # @param pyState ״̬ # @return ÊÇ·ñ¸Ã״̬ # @remarks ¸Ã״̬Ϊbuff¶ÔÓ¦µÄ×Ô¶¨Òå״̬Ч¹û # Ŀǰµ±Ä¿±êÉíÉ϶à¸öbuff¶¼ÓÐͬһЧ¹ûʱ(È綨Éí)£¬ÔÚÒ»¸öbuffÏûʧʱ»á½â³ý¸Ã״̬ # ¹Ê¸Ã״̬±ê¼Ç½öΪһ¸ö·Ç¾«È·µÄ±ê¼Ç£¬Ó¦ÓÃÖÐÇë×¢Ò⣡£¡£¡(µ±ÇÒ½öµ±¶à¸öbuffÓÐͬһ¸öЧ¹ûʱ»áÌáǰ½áÊø¸Ã״̬) def GetPyPlayerState(gameObj, pyState): curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState) state = curState & pow(2, pyState) return state def GetPetDamPer(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrPetDamPer) def SetPetDamPer(gameObj, value): gameObj.SetDict(ChConfig.Def_PlayerKey_AttrPetDamPer, value) if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer: gameObj.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_PetDamPer, value, False)