From e65a33757a3ca9fad94f05f8309654585902d097 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 30 十月 2025 19:50:48 +0800
Subject: [PATCH] 326 【武将】阵容推荐-服务端

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py |   33 ++++++++++++++++++++-------------
 1 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py
index c0eddf8..e9a083a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py
@@ -51,9 +51,10 @@
         if not mailObj:
             continue
         createTime = GameWorld.ChangeTimeStrToNum(mailObj.GetCreateTime())
-        limitTime = createTime + (mailObj.GetLimitDays() + 7) * 3600 * 24
-        if curTime < limitTime:
-            #GameWorld.DebugLog("全服邮件未超时,不删除! %s,createTime=%s,limitTime=%s" % (guid, mailObj.GetCreateTime(), GameWorld.ChangeTimeNumToStr(limitTime)))
+        passDays = GameWorld.GetDiff_Day(curTime, createTime) + 1 # 过期判断按0点算天数
+        limitDays = mailObj.GetLimitDays()
+        if passDays <= limitDays:
+            #GameWorld.DebugLog("全服邮件未超时,不删除! %s,createTime=%s,passDays=%s <= limitDays=%s" % (guid, mailObj.GetCreateTime(), passDays, limitDays))
             continue
         
         DelServerMail(guid, "Timeout")
@@ -85,16 +86,17 @@
         notifyGUIDState = {}
         for guid, mailObj in mailDict.items():
             createTime = GameWorld.ChangeTimeStrToNum(mailObj.GetCreateTime())
-            limitTime = createTime + (mailObj.GetLimitDays() + 0) * 3600 * 24
-            if curTime < limitTime:
-                #GameWorld.DebugLog("个人邮件未超时,不删除! %s,createTime=%s,limitTime=%s" % (guid, mailObj.GetCreateTime(), GameWorld.ChangeTimeNumToStr(limitTime)), playerID)
+            passDays = GameWorld.GetDiff_Day(curTime, createTime) + 1 # 过期判断按0点算天数
+            limitDays = mailObj.GetLimitDays()
+            if passDays <= limitDays:
+                #GameWorld.DebugLog("个人邮件未超时,不删除! %s,createTime=%s,passDays=%s <= limitDays=%s" % (guid, mailObj.GetCreateTime(), passDays, limitDays), playerID)
                 continue
             
-            mailState = mailObj.GetMailState()
-            mailItemCount = mailMgr.GetMailItemCount(guid)
-            if mailItemCount and mailState != ShareDefine.MailState_Got:
-                #GameWorld.DebugLog("个人邮件有物品未领取不删除! %s" % guid, playerID)
-                continue
+            #mailState = mailObj.GetMailState()
+            #mailItemCount = mailMgr.GetMailItemCount(guid)
+            #if mailItemCount and mailState != ShareDefine.MailState_Got:
+            #    #GameWorld.DebugLog("个人邮件有物品未领取不删除! %s" % guid, playerID)
+            #    continue
             
             mailMgr.DelPersonalMail(playerID, guid)
             DataRecordPack.DR_MailDel(playerID, guid, "Timeout")
@@ -326,9 +328,14 @@
             itemCount = mailItem.GetCount()
             isBind = mailItem.GetIsBind()
             userData = mailItem.GetUserData()
-            #setAttrDict = {} if not userData else eval(userData) 之后扩展有指定属性的,可参考砍树版本
+            setAttrDict = None
+            if userData:
+                try:
+                    setAttrDict = eval(userData)
+                except:
+                    setAttrDict = None
             if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem], 
-                                                event=[ChConfig.ItemGive_Mail, False, {"MailGUID":guid}]):
+                                                event=[ChConfig.ItemGive_Mail, False, {"MailGUID":guid}], setAttrDict=setAttrDict):
                 continue
             
         DataRecordPack.DR_MailGiveSuccess(playerID, guid)

--
Gitblit v1.8.0