From 4f0b63ba644f87dbec17b4987355adf1fdfc508c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 13 九月 2024 18:22:20 +0800
Subject: [PATCH] 10261 【越南】【砍树】【英文】仙盟徽章、头像、头像框(存储激活状态及到期时间方式修改;)
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyEmblem.py | 93 ++++--------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Face.py | 30 ++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 34 ++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTFace.py | 15 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py | 192 +++++++++++----------------
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 34 ++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 10
7 files changed, 178 insertions(+), 230 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 6743105..6ab5fbb 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -50124,9 +50124,9 @@
_pack_ = 1
_fields_ = [
("FaceID", c_int), #头像ID
- ("LightTime", c_int), #点亮时间戳
- ("ExpireTime", c_int), #有效时间秒,0为配表固定时间,如果配表时间也为0即代表永久;到期时间=点亮时间+有效时间
- ("Star", c_ubyte), # 星级
+ ("State", c_ubyte), #是否已激活
+ ("EndTime", c_int), #到期时间戳,0为永久
+ ("Star", c_ubyte), #星级
]
def __init__(self):
@@ -50140,8 +50140,8 @@
def Clear(self):
self.FaceID = 0
- self.LightTime = 0
- self.ExpireTime = 0
+ self.State = 0
+ self.EndTime = 0
self.Star = 0
return
@@ -50154,14 +50154,14 @@
def OutputString(self):
DumpString = '''// B1 17 头像信息 //tagMCFaceInfo:
FaceID:%d,
- LightTime:%d,
- ExpireTime:%d,
+ State:%d,
+ EndTime:%d,
Star:%d
'''\
%(
self.FaceID,
- self.LightTime,
- self.ExpireTime,
+ self.State,
+ self.EndTime,
self.Star
)
return DumpString
@@ -50240,8 +50240,8 @@
_pack_ = 1
_fields_ = [
("FacePicID", c_int), #头像框ID
- ("LightTime", c_int), #点亮时间戳
- ("ExpireTime", c_int), #有效时间秒,0为配表固定时间,如果配表时间也为0即代表永久;到期时间=点亮时间+有效时间
+ ("State", c_ubyte), #是否已激活
+ ("EndTime", c_int), #到期时间戳,0为永久
("Star", c_ubyte), #星级
]
@@ -50256,8 +50256,8 @@
def Clear(self):
self.FacePicID = 0
- self.LightTime = 0
- self.ExpireTime = 0
+ self.State = 0
+ self.EndTime = 0
self.Star = 0
return
@@ -50270,14 +50270,14 @@
def OutputString(self):
DumpString = '''// B1 18 头像框信息 //tagMCFacePicInfo:
FacePicID:%d,
- LightTime:%d,
- ExpireTime:%d,
+ State:%d,
+ EndTime:%d,
Star:%d
'''\
%(
self.FacePicID,
- self.LightTime,
- self.ExpireTime,
+ self.State,
+ self.EndTime,
self.Star
)
return DumpString
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyEmblem.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyEmblem.py
index 50df712..87b8a0a 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyEmblem.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyEmblem.py
@@ -26,8 +26,8 @@
def GetActionEmblemID(emblemActionObj): return emblemActionObj.GetValue1()
def SetActionEmblemID(emblemActionObj, emblemID): return emblemActionObj.SetValue1(emblemID)
-def GetActionEmblemExpireTimes(emblemActionObj): return emblemActionObj.GetValue2()
-def SetActionEmblemExpireTimes(emblemActionObj, endTime): return emblemActionObj.SetValue2(endTime)
+def GetActionEmblemEndTime(emblemActionObj): return emblemActionObj.GetValue2()
+def SetActionEmblemEndTime(emblemActionObj, endTime): return emblemActionObj.SetValue2(endTime)
def GetDefaultFamilyEmblemIDList():
## 获取默认的仙盟徽章ID列表,即所有解锁等级为1的徽章ID
@@ -57,8 +57,8 @@
for index in range(familyAction.Count())[::-1]: # 可能触发删除,倒序遍历
emblemActionObj = familyAction.At(index)
emblemID = GetActionEmblemID(emblemActionObj)
- isExpired, endTime = IsEmblemExpired(emblemActionObj, curTime)
- if not isExpired:
+ endTime = GetActionEmblemEndTime(emblemActionObj)
+ if not endTime or endTime > curTime:
#GameWorld.Log("检查仙盟徽章未过期! familyID=%s,emblemID=%s,endTime=%s" % (familyID, emblemID, endTime))
continue
familyAction.DelAction(index)
@@ -71,40 +71,6 @@
PlayerFamily.SetFamilyEmblemID(family, updEmblemID)
family.Broadcast_FamilyChange()
return
-
-def IsEmblemExpired(emblemActionObj, curTime):
- ## 勋章是否过期
- # @return: 是否过期, endTime
-
- endTime = -1
- if not emblemActionObj:
- return True, endTime
-
- createTime = emblemActionObj.GetTime()
- expireTimes = GetEmblemExpireTimes(emblemActionObj)
- if expireTimes == 0:
- # 永久的
- return False, 0
-
- if expireTimes > 0:
- endTime = createTime + expireTimes
- if endTime >= curTime:
- # 未过期
- return False, endTime
-
- return True, endTime
-
-def GetEmblemExpireTimes(emblemActionObj):
- ## 获取勋章有效时长,秒
- # @return: 0-永久;-1-无效;>0-有效秒数
- expireTimes = GetActionEmblemExpireTimes(emblemActionObj) # 有效时长,秒
- if not expireTimes:
- emblemID = GetActionEmblemID(emblemActionObj)
- ipyData = IpyGameDataPY.GetIpyGameData("FamilyEmblem", emblemID)
- if not ipyData:
- return -1
- expireTimes = ipyData.GetExpireMinutes() * 60
- return expireTimes
def GetFamilyEmblemActionData(familyID, emblemID):
## 获取仙盟时效徽章Action数据
@@ -130,12 +96,7 @@
if unlockFamilyLV:
GameWorld.Log("仙盟解锁的徽章不需要添加! familyID=%s,emblemID=%s" % (familyID, emblemID))
return
- if setExpireTimes >= 0:
- expireTimes = setExpireTimes
- else:
- expireTimes = ipyData.GetExpireMinutes() * 60
- GameWorld.Log("添加仙盟徽章! familyID=%s,emblemID=%s,setExpireTimes=%s,expireTimes=%s"
- % (familyID, emblemID, setExpireTimes, expireTimes))
+ ipyExpireSeconds = ipyData.GetExpireMinutes() * 60
curTime = int(time.time())
emblemActionObj = GetFamilyEmblemActionData(familyID, emblemID)
@@ -146,22 +107,31 @@
emblemActionObj.SetTime(curTime)
emblemActionObj.SetFamilyId(familyID)
emblemActionObj.SetActionType(actionType)
+
+ if not emblemActionObj:
+ return
+ endTime = GetActionEmblemEndTime(emblemActionObj)
+ updEndTime = endTime
+
+ # 指定时长的,如GM指定
+ if setExpireTimes > 0:
+ updEndTime = curTime + setExpireTimes
+
+ # 永久
+ elif ipyExpireSeconds == 0 or setExpireTimes == 0:
+ updEndTime = 0
+
else:
- isExpired, endTime = IsEmblemExpired(emblemActionObj, curTime)
- if setExpireTimes >= 0:
- emblemActionObj.SetTime(curTime)
- GameWorld.Log("直接设置勋章剩余时长,重新设置获得时间! familyID=%s,emblemID=%s" % (familyID, emblemID))
- elif isExpired:
- emblemActionObj.SetTime(curTime)
- GameWorld.Log("获得勋章时已过期,重新设置获得时间! familyID=%s,emblemID=%s,endTime=%s" % (familyID, emblemID, endTime))
+ # 未过期
+ if endTime > curTime:
+ updEndTime = endTime + ipyExpireSeconds
else:
- # 未过期,非永久的直接累加时长
- if expireTimes > 0:
- expireTimes += GetActionEmblemExpireTimes(emblemActionObj)
- GameWorld.Log("获得勋章时未过期,累加有效时长! familyID=%s,emblemID=%s,expireTimes=%s" % (familyID, emblemID, expireTimes))
-
+ updEndTime = curTime + ipyExpireSeconds
+
+ GameWorld.Log("添加仙盟徽章! familyID=%s,emblemID=%s,setExpireTimes=%s,endTime=%s,updEndTime=%s"
+ % (familyID, emblemID, setExpireTimes, endTime, updEndTime))
SetActionEmblemID(emblemActionObj, emblemID)
- SetActionEmblemExpireTimes(emblemActionObj, expireTimes)
+ SetActionEmblemEndTime(emblemActionObj, updEndTime)
# 通知
PlayerFamilyAction.SendFamilyAction(emblemActionObj)
@@ -198,9 +168,12 @@
return
else:
emblemActionObj = GetFamilyEmblemActionData(familyID, emblemID)
- isExpired, endTime = IsEmblemExpired(emblemActionObj, int(time.time()))
- if isExpired:
- GameWorld.DebugLog("该徽章不存在或已过期! emblemID=%s,endTime=%s" % (emblemID, endTime), playerID)
+ if not emblemActionObj:
+ GameWorld.DebugLog("该徽章未激活! emblemID=%s" % (emblemID), playerID)
+ return
+ endTime = GetActionEmblemEndTime(emblemActionObj)
+ if endTime and endTime <= int(time.time()):
+ GameWorld.Log("该徽章已过期! familyID=%s,emblemID=%s,endTime=%s" % (familyID, emblemID, endTime))
return
GameWorld.DebugLog("更换仙盟徽章! familyID=%s,emblemID=%s" % (familyID, emblemID), playerID)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 177193b..6e0f535 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4032,12 +4032,12 @@
Def_PDict_WishingWellItemCnt = "WishingWellItemCnt_%s_%s" # 物品数量记录 参数(类型,物品数据)
#头像
-Def_PDict_FaceLightTime = "FaceLightTime_%s" # 头像点亮时间戳,参数(头像ID)
-Def_PDict_FaceExpireTimes = "FaceExpireTimes_%s" # 头像有效时长秒,参数(头像ID)
+Def_PDict_FaceState = "FaceState_%s" # 头像状态,参数(key编号)
+Def_PDict_FaceEndTime = "FaceEndTime_%s" # 头像到期时间戳,0为永久,参数(头像ID)
Def_PDict_FaceStar = "FaceStar_%s" # 头像星级,参数(头像ID)
-Def_PDict_FacePicLightTime = "FacePicLightTime_%s" # 头像框点亮时间戳,参数(头像ID)
-Def_PDict_FacePicExpireTimes = "FacePicExpireTimes_%s" # 头像框有效时长秒,参数(头像ID)
-Def_PDict_FacePicStar = "FacePicStar_%s" # 头像框星级,参数(头像ID)
+Def_PDict_FacePicState = "FacePicState_%s" # 头像框状态,参数(key编号)
+Def_PDict_FacePicEndTime = "FacePicEndTime_%s" # 头像框到期时间戳,0为永久,参数(头像框ID)
+Def_PDict_FacePicStar = "FacePicStar_%s" # 头像框星级,参数(头像框ID)
#聊天气泡
Def_PDict_ChatBubbleBoxState = "ChatBubbleBoxState_%s" # 聊天气泡状态, 参数(key编号)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 6743105..6ab5fbb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -50124,9 +50124,9 @@
_pack_ = 1
_fields_ = [
("FaceID", c_int), #头像ID
- ("LightTime", c_int), #点亮时间戳
- ("ExpireTime", c_int), #有效时间秒,0为配表固定时间,如果配表时间也为0即代表永久;到期时间=点亮时间+有效时间
- ("Star", c_ubyte), # 星级
+ ("State", c_ubyte), #是否已激活
+ ("EndTime", c_int), #到期时间戳,0为永久
+ ("Star", c_ubyte), #星级
]
def __init__(self):
@@ -50140,8 +50140,8 @@
def Clear(self):
self.FaceID = 0
- self.LightTime = 0
- self.ExpireTime = 0
+ self.State = 0
+ self.EndTime = 0
self.Star = 0
return
@@ -50154,14 +50154,14 @@
def OutputString(self):
DumpString = '''// B1 17 头像信息 //tagMCFaceInfo:
FaceID:%d,
- LightTime:%d,
- ExpireTime:%d,
+ State:%d,
+ EndTime:%d,
Star:%d
'''\
%(
self.FaceID,
- self.LightTime,
- self.ExpireTime,
+ self.State,
+ self.EndTime,
self.Star
)
return DumpString
@@ -50240,8 +50240,8 @@
_pack_ = 1
_fields_ = [
("FacePicID", c_int), #头像框ID
- ("LightTime", c_int), #点亮时间戳
- ("ExpireTime", c_int), #有效时间秒,0为配表固定时间,如果配表时间也为0即代表永久;到期时间=点亮时间+有效时间
+ ("State", c_ubyte), #是否已激活
+ ("EndTime", c_int), #到期时间戳,0为永久
("Star", c_ubyte), #星级
]
@@ -50256,8 +50256,8 @@
def Clear(self):
self.FacePicID = 0
- self.LightTime = 0
- self.ExpireTime = 0
+ self.State = 0
+ self.EndTime = 0
self.Star = 0
return
@@ -50270,14 +50270,14 @@
def OutputString(self):
DumpString = '''// B1 18 头像框信息 //tagMCFacePicInfo:
FacePicID:%d,
- LightTime:%d,
- ExpireTime:%d,
+ State:%d,
+ EndTime:%d,
Star:%d
'''\
%(
self.FacePicID,
- self.LightTime,
- self.ExpireTime,
+ self.State,
+ self.EndTime,
self.Star
)
return DumpString
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Face.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Face.py
index 2df79e7..b8a554b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Face.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Face.py
@@ -54,10 +54,10 @@
faceID = ipyData.GetFaceID()
if ipyData.GetUnlockDefault():
continue
- if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceLightTime % faceID):
+ if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID):
continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceLightTime % faceID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceExpireTimes % faceID, 0)
+ GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceEndTime % faceID, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceStar % faceID, 0)
syncFaceIDList.append(faceID)
else:
@@ -68,8 +68,8 @@
if ipyData.GetUnlockDefault():
GameWorld.DebugAnswer(curPlayer, "该头像默认激活:%s" % faceID)
return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceLightTime % faceID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceExpireTimes % faceID, 0)
+ GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceEndTime % faceID, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceStar % faceID, 0)
syncFaceIDList.append(faceID)
GameWorld.DebugAnswer(curPlayer, "删除头像:%s" % syncFaceIDList)
@@ -79,8 +79,9 @@
faceID = msgList[1] if len(msgList) > 1 else 0
expireTimes = msgList[2] if len(msgList) > 2 else None
if PlayerFace.AddFace(curPlayer, faceID, expireTimes):
- endTimeStr = PlayerFace.GetEndTimeStr(PlayerFace.GetFaceEndTime(curPlayer, faceID))
- GameWorld.DebugAnswer(curPlayer, "添加头像成功:%s,%s" % (faceID, endTimeStr))
+ endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceEndTime % faceID)
+ endTimeStr = "永久" if not endTime else GameWorld.ChangeTimeNumToStr(endTime)
+ GameWorld.DebugAnswer(curPlayer, "添加头像成功:%s,到期:%s" % (faceID, endTimeStr))
else:
GameWorld.DebugAnswer(curPlayer, "添加头像失败:%s" % (faceID))
@@ -105,10 +106,10 @@
facePicID = ipyData.GetFacePicID()
if ipyData.GetUnlockDefault():
continue
- if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicLightTime % facePicID):
+ if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID):
continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicLightTime % facePicID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicExpireTimes % facePicID, 0)
+ GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicEndTime % facePicID, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicStar % facePicID, 0)
syncFacePicIDList.append(facePicID)
else:
@@ -119,8 +120,8 @@
if ipyData.GetUnlockDefault():
GameWorld.DebugAnswer(curPlayer, "该头像框默认激活:%s" % facePicID)
return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicLightTime % facePicID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicExpireTimes % facePicID, 0)
+ GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicEndTime % facePicID, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicStar % facePicID, 0)
syncFacePicIDList.append(facePicID)
GameWorld.DebugAnswer(curPlayer, "删除头像框:%s" % syncFacePicIDList)
@@ -130,8 +131,9 @@
facePicID = msgList[1] if len(msgList) > 1 else 0
expireTimes = msgList[2] if len(msgList) > 2 else None
if PlayerFace.AddFacePic(curPlayer, facePicID, expireTimes):
- endTimeStr = PlayerFace.GetEndTimeStr(PlayerFace.GetFacePicEndTime(curPlayer, facePicID))
- GameWorld.DebugAnswer(curPlayer, "添加头像框成功:%s,%s" % (facePicID, endTimeStr))
+ endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicEndTime % facePicID)
+ endTimeStr = "永久" if not endTime else GameWorld.ChangeTimeNumToStr(endTime)
+ GameWorld.DebugAnswer(curPlayer, "添加头像框成功:%s,到期:%s" % (facePicID, endTimeStr))
else:
GameWorld.DebugAnswer(curPlayer, "添加头像框失败:%s" % (facePicID))
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py
index 3ed5639..7814b4e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py
@@ -44,13 +44,12 @@
if ipyData.GetUnlockDefault():
# 默认激活的不处理
continue
- lightTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceLightTime % faceID)
- expireTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceExpireTimes % faceID) # 有效时长,秒
- if not lightTime or not expireTimes:
- # 未激活或永久的不处理
+ if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID):
+ # 未激活的不处理
continue
- endTime = lightTime + expireTimes
- if endTime > curTime:
+ endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceEndTime % faceID)
+ if not endTime or endTime > curTime:
+ # 永久或未过期
continue
if DelFace(curPlayer, faceID, False, "FaceTimeout"):
delFaceList.append(faceID)
@@ -65,13 +64,12 @@
if ipyData.GetUnlockDefault():
# 默认激活的不处理
continue
- lightTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicLightTime % facePicID)
- expireTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicExpireTimes % facePicID) # 有效时长,秒
- if not lightTime or not expireTimes:
- # 未激活或永久的不处理
+ if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID):
+ # 未激活的不处理
continue
- endTime = lightTime + expireTimes
- if endTime > curTime:
+ endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicEndTime % facePicID)
+ if not endTime or endTime > curTime:
+ # 永久或未过期
continue
if DelFacePic(curPlayer, facePicID, False, "FacePicTimeout"):
delFacePicList.append(facePicID)
@@ -93,37 +91,33 @@
ipyExpireSeconds = ipyData.GetExpireMinutes() * 60
curTime = int(time.time())
- lightTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceLightTime % faceID)
- expireTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceExpireTimes % faceID) # 有效时长,秒
- GameWorld.Log("添加头像: faceID=%s,setExpireTimes=%s,lightTime=%s,expireTimes=%s,ipyExpireSeconds=%s,curTime=%s"
- % (faceID, setExpireTimes, lightTime, expireTimes, ipyExpireSeconds, curTime), playerID)
- updLightTime = lightTime
- updExpireTimes = expireTimes
+ state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID)
+ endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceEndTime % faceID)
+ GameWorld.Log("添加头像: faceID=%s,setExpireTimes=%s,state=%s,endTime=%s,ipyExpireSeconds=%s,curTime=%s"
+ % (faceID, setExpireTimes, state, endTime, ipyExpireSeconds, curTime), playerID)
+ updEndTime = endTime
# 指定时长的,如GM指定
- if setExpireTimes >= 0:
- updLightTime = curTime
- updExpireTimes = setExpireTimes
- GameWorld.Log(" 指定头像时长: faceID=%s,updLightTime=%s,updExpireTimes=%s" % (faceID, updLightTime, updExpireTimes), playerID)
+ if setExpireTimes > 0:
+ updEndTime = curTime + setExpireTimes
+ GameWorld.Log(" 指定头像时长: faceID=%s,updEndTime=%s" % (faceID, updEndTime), playerID)
# 永久
- elif ipyExpireSeconds == 0:
- updLightTime = curTime
- updExpireTimes = 0
- GameWorld.Log(" 添加永久头像: faceID=%s,updLightTime=%s,updExpireTimes=%s" % (faceID, updLightTime, updExpireTimes), playerID)
+ elif ipyExpireSeconds == 0 or setExpireTimes == 0:
+ updEndTime = 0
+ GameWorld.Log(" 添加永久头像: faceID=%s,updEndTime=%s" % (faceID, updEndTime), playerID)
else:
# 未过期
- if lightTime and expireTimes and (lightTime + expireTimes) > curTime:
- updExpireTimes = expireTimes + ipyExpireSeconds
- GameWorld.Log(" 累加头像时长: faceID=%s,updLightTime=%s,updExpireTimes=%s" % (faceID, updLightTime, updExpireTimes), playerID)
+ if endTime > curTime:
+ updEndTime = endTime + ipyExpireSeconds
+ GameWorld.Log(" 累加头像时长: faceID=%s,updEndTime=%s" % (faceID, updEndTime), playerID)
else:
- updLightTime = curTime
- updExpireTimes = ipyExpireSeconds
- GameWorld.Log(" 重新激活头像: faceID=%s,updLightTime=%s,updExpireTimes=%s" % (faceID, updLightTime, updExpireTimes), playerID)
+ updEndTime = curTime + ipyExpireSeconds
+ GameWorld.Log(" 重新激活头像: faceID=%s,updEndTime=%s" % (faceID, updEndTime), playerID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceLightTime % faceID, updLightTime)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceExpireTimes % faceID, updExpireTimes)
+ GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID, 1)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceEndTime % faceID, updEndTime)
RefreshFaceAttr(curPlayer)
SyncFaceInfo(curPlayer, [faceID])
return True
@@ -136,8 +130,8 @@
if ipyData.GetUnlockDefault():
return
GameWorld.Log("删除头像: faceID=%s,notifyMail=%s" % (faceID, notifyMail), playerID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceLightTime % faceID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceExpireTimes % faceID, 0)
+ GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceEndTime % faceID, 0)
# 星级不重置,重新激活后再次生效
if curPlayer.GetFace() == faceID:
@@ -189,37 +183,33 @@
ipyExpireSeconds = ipyData.GetExpireMinutes() * 60
curTime = int(time.time())
- lightTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicLightTime % facePicID)
- expireTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicExpireTimes % facePicID) # 有效时长,秒
- GameWorld.Log("添加头像框: facePicID=%s,setExpireTimes=%s,lightTime=%s,expireTimes=%s,ipyExpireSeconds=%s,curTime=%s"
- % (facePicID, setExpireTimes, lightTime, expireTimes, ipyExpireSeconds, curTime), playerID)
- updLightTime = lightTime
- updExpireTimes = expireTimes
+ state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID)
+ endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicEndTime % facePicID)
+ GameWorld.Log("添加头像框: facePicID=%s,setExpireTimes=%s,state=%s,endTime=%s,ipyExpireSeconds=%s,curTime=%s"
+ % (facePicID, setExpireTimes, state, endTime, ipyExpireSeconds, curTime), playerID)
+ updEndTime = endTime
# 指定时长的,如GM指定
- if setExpireTimes >= 0:
- updLightTime = curTime
- updExpireTimes = setExpireTimes
- GameWorld.Log(" 指定头像框时长: facePicID=%s,updLightTime=%s,updExpireTimes=%s" % (facePicID, updLightTime, updExpireTimes), playerID)
+ if setExpireTimes > 0:
+ updEndTime = curTime + setExpireTimes
+ GameWorld.Log(" 指定头像框时长: facePicID=%s,updEndTime=%s" % (facePicID, updEndTime), playerID)
# 永久
- elif ipyExpireSeconds == 0:
- updLightTime = curTime
- updExpireTimes = 0
- GameWorld.Log(" 添加永久头像框: facePicID=%s,updLightTime=%s,updExpireTimes=%s" % (facePicID, updLightTime, updExpireTimes), playerID)
+ elif ipyExpireSeconds == 0 or setExpireTimes == 0:
+ updEndTime = 0
+ GameWorld.Log(" 添加永久头像框: facePicID=%s,updEndTime=%s" % (facePicID, updEndTime), playerID)
else:
# 未过期
- if lightTime and expireTimes and (lightTime + expireTimes) > curTime:
- updExpireTimes = expireTimes + ipyExpireSeconds
- GameWorld.Log(" 累加头像框时长: facePicID=%s,updLightTime=%s,updExpireTimes=%s" % (facePicID, updLightTime, updExpireTimes), playerID)
+ if endTime > curTime:
+ updEndTime = endTime + ipyExpireSeconds
+ GameWorld.Log(" 累加头像框时长: facePicID=%s,updEndTime=%s" % (facePicID, updEndTime), playerID)
else:
- updLightTime = curTime
- updExpireTimes = ipyExpireSeconds
- GameWorld.Log(" 重新激活头像框: facePicID=%s,updLightTime=%s,updExpireTimes=%s" % (facePicID, updLightTime, updExpireTimes), playerID)
+ updEndTime = curTime + ipyExpireSeconds
+ GameWorld.Log(" 重新激活头像框: facePicID=%s,updEndTime=%s" % (facePicID, updEndTime), playerID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicLightTime % facePicID, updLightTime)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicExpireTimes % facePicID, updExpireTimes)
+ GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID, 1)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicEndTime % facePicID, updEndTime)
RefreshFacePicAttr(curPlayer)
SyncFacePicInfo(curPlayer, [facePicID])
return True
@@ -232,8 +222,8 @@
if ipyData.GetUnlockDefault():
return
GameWorld.Log("删除头像框: facePicID=%s,notifyMail=%s" % (facePicID, notifyMail), playerID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicLightTime % facePicID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicExpireTimes % facePicID, 0)
+ GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicEndTime % facePicID, 0)
# 星级不重置,重新激活后再次生效
if curPlayer.GetFacePic() == facePicID:
@@ -249,55 +239,33 @@
PlayerControl.SendMailByKey(notifyMail, [playerID], [], [facePicID])
return True
-def GetFaceEndTime(curPlayer, faceID, ipyData=None):
- ## 头像结束时间戳
- # @return: -1-未激活;0-永久;>0-具体结束时间戳
- lightTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceLightTime % faceID)
- expireTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceExpireTimes % faceID)
- if lightTime:
- if expireTimes:
- return lightTime + expireTimes
- return 0
- if not ipyData:
- ipyData = IpyGameDataPY.GetIpyGameData("PlayerFace", faceID)
- if ipyData and ipyData.GetUnlockDefault():
- return 0
- return -1
-
def IsFaceCanUse(curPlayer, faceID, ipyData=None):
## 头像是否可用
- # 这里不判断严谨的过期时间,即不对比当前时间,只要endTime>=0即可
- # 过期逻辑由过期函数定时处理删除即可,可能有1分钟延迟
- return GetFaceEndTime(curPlayer, faceID, ipyData) >= 0
-
-def GetFacePicEndTime(curPlayer, facePicID, ipyData=None):
- ## 头像框结束时间戳
- # @return: -1-未激活;0-永久;>0-具体结束时间戳
- lightTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicLightTime % facePicID)
- expireTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicExpireTimes % facePicID)
- if lightTime:
- if expireTimes:
- return lightTime + expireTimes
- return 0
+ state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID)
+ if state:
+ return True
+
if not ipyData:
- ipyData = IpyGameDataPY.GetIpyGameData("PlayerFacePic", facePicID)
- if ipyData and ipyData.GetUnlockDefault():
- return 0
- return -1
+ ipyData = IpyGameDataPY.GetIpyGameData("PlayerFace", faceID)
+ if ipyData:
+ if ipyData.GetUnlockDefault():
+ return True
+
+ return False
def IsFacePicCanUse(curPlayer, facePicID, ipyData=None):
## 头像框是否可用
- # 这里不判断严谨的过期时间,即不对比当前时间,只要endTime>=0即可
- # 过期逻辑由过期函数定时处理删除即可,可能有1分钟延迟
- return GetFacePicEndTime(curPlayer, facePicID, ipyData) >= 0
-
-def GetEndTimeStr(endTime):
- endTimeStr = "未激活"
- if endTime == 0:
- endTimeStr = "永久"
- elif endTime > 0:
- endTimeStr = GameWorld.ChangeTimeNumToStr(endTime)
- return endTimeStr
+ state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID)
+ if state:
+ return True
+
+ if not ipyData:
+ ipyData = IpyGameDataPY.GetIpyGameData("PlayerFacePic", facePicID)
+ if ipyData:
+ if ipyData.GetUnlockDefault():
+ return True
+
+ return False
def RefreshFaceAttr(curPlayer):
CalcFaceAttr(curPlayer)
@@ -513,16 +481,16 @@
faceList = []
for faceID in syncIDList:
- lightTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceLightTime % faceID)
- if not lightTime and faceIDList == None:
+ state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID)
+ if not state and faceIDList == None:
continue
face = ChPyNetSendPack.tagMCFace()
face.FaceID = faceID
- face.LightTime = lightTime
- face.ExpireTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceExpireTimes % faceID)
+ face.State = state
+ face.EndTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceEndTime % faceID)
face.Star = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceStar % faceID)
faceList.append(face)
-
+
if not faceList:
return
@@ -544,13 +512,13 @@
facePicList = []
for facePicID in syncIDList:
- lightTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicLightTime % facePicID)
- if not lightTime and facePicIDList == None:
+ state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID)
+ if not state and facePicIDList == None:
continue
facePic = ChPyNetSendPack.tagMCFacePic()
facePic.FacePicID = facePicID
- facePic.LightTime = lightTime
- facePic.ExpireTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicExpireTimes % facePicID)
+ facePic.State = state
+ facePic.EndTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicEndTime % facePicID)
facePic.Star = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicStar % facePicID)
facePicList.append(facePic)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTFace.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTFace.py
index e1f89df..607aeb8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTFace.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTFace.py
@@ -19,6 +19,7 @@
import DataRecordPack
import PlayerFace
import GMCommon
+import ChConfig
#---------------------------------------------------------------------
#全局变量
@@ -41,20 +42,22 @@
Result = GMCommon.Def_Success
orderId, isOnlineGMT, faceType, opID, expireTime, opType = packCMDList
- endTime = -1
+ state, endTime = 0, 0
isOK = False
if faceType == "face":
if opType == "add":
isOK = PlayerFace.AddFace(curPlayer, opID, expireTime)
elif opType == "del":
isOK = PlayerFace.DelFace(curPlayer, opID)
- endTime = PlayerFace.GetFaceEndTime(curPlayer, opID)
+ state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, opID)
+ endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceEndTime % opID)
elif faceType == "facePic":
if opType == "add":
isOK = PlayerFace.AddFacePic(curPlayer, opID, expireTime)
elif opType == "del":
isOK = PlayerFace.DelFacePic(curPlayer, opID)
- endTime = PlayerFace.GetFacePicEndTime(curPlayer, opID)
+ state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, opID)
+ endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicEndTime % opID)
if not isOK:
errorMsg = "%s %s fail! Please check that the ID(%s) is correct." % (opType, faceType, opID)
@@ -63,9 +66,11 @@
GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'GMToolResult', resultMsg, len(resultMsg))
return
- endTimeStr = PlayerFace.GetEndTimeStr(endTime)
+ endTimeStr = "未激活"
+ if state:
+ endTimeStr = "永久" if not endTime else GameWorld.ChangeTimeNumToStr(endTime)
resultDict = {"opID":opID, "expireTime":expireTime, "isOnlineGMT":isOnlineGMT, "opType":opType,
- "faceType":faceType, "endTime":endTime, "endTimeStr":endTimeStr}
+ "faceType":faceType, "state":state, "endTimeStr":endTimeStr}
GameWorld.Log("GMT_Face, isOnlineGMT=%s,resultDict=%s" % (isOnlineGMT, resultDict), curPlayer.GetPlayerID())
#流向 记录
DataRecordPack.DR_ToolGMOperate(query_ID, curPlayer.GetPlayerName(), curPlayer.GetAccID(), 'GMT_Face', resultDict)
--
Gitblit v1.8.0