hch
2019-03-15 d41a44a9fd316c021c4e85bde9cb0fab4c2e0be1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/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):
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        gameObj.SetHP(value, isNotify)
    else:
        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)