From b965081066ea579c45c73f08cd9cd61bc157ac9f Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 09 五月 2019 11:15:45 +0800
Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(防范跨服妖王关闭线路时导致的报错)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py | 22 ++++++++++++++++++----
1 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
index c779b70..fcc507e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
@@ -15,6 +15,7 @@
import ShareDefine
import ChConfig
import IPY_GameWorld
+import IpyGameDataPY
# 关于血量的函数这里只包装最简单的超DWORD处理
@@ -43,10 +44,15 @@
return gameObj.GetHPEx()*ShareDefine.Def_PerPointValue + gameObj.GetHP()
-def SetHP(gameObj, value, isNotify=True):
+def SetHP(gameObj, value, isNotify=True, isByTime=False):
if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
gameObj.SetHP(value, isNotify)
else:
+ 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)
@@ -55,14 +61,16 @@
# @param pyState 状态
# @param isTrue 是否设置该状态
# @return None
-def SetPyPlayerState(gameObj, pyState, isTrue):
+def SetPyPlayerState(gameObj, pyState, isAdd):
if pyState not in ChConfig.Def_PlayerStateList:
return
curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState)
- if isTrue:
+ if isAdd:
+ # 增加
updState = curState | pow(2, pyState)
else:
+ # 删除
if curState & pow(2, pyState) == 0:
return
else:
@@ -70,7 +78,7 @@
#GameWorld.DebugLog("SetPyPlayerState (%s - %s), curState=%s,updState=%s"
- # % (pyState, isTrue, curState, updState))
+ # % (pyState, isAdd, curState, updState))
gameObj.SetDict(ChConfig.Def_PlayerKey_CurState, updState)
return
@@ -86,3 +94,9 @@
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)
--
Gitblit v1.8.0