hxp
2018-08-10 bf6eb250654cbb2b11284ef7642f7ca1f1826b20
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
#!/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, isTrue):
    if pyState not in ChConfig.Def_PlayerStateList:
        return
    
    curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState)
    if isTrue:
        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, isTrue, 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