From 209a1fb4415b46739be6bef5432cf6caddb91931 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 13 九月 2024 18:23:33 +0800 Subject: [PATCH] 10261 【越南】【砍树】【英文】仙盟徽章、头像、头像框(存储激活状态及到期时间方式修改;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py | 192 ++++++++++++++++++++---------------------------- 1 files changed, 80 insertions(+), 112 deletions(-) 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) -- Gitblit v1.8.0