From 84f9abc7067dde4e6b504a1ba2e9f0600a6de46b Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 12 三月 2019 20:58:56 +0800
Subject: [PATCH] 4042 【后端】【2.0】邮件包含附件时不能删除邮件 -  服务端添加防范

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py
index 704baf5..5278138 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py
@@ -913,6 +913,11 @@
     #在个人补偿中
     curPersonalCompensation = GameWorld.GetCompensationMgr().FindPersonalCompensation(curPlayerID, GUID)
     if curPersonalCompensation.PlayerID == curPlayerID:
+        if not CheckCanDelCompensation(curPersonalCompensation, GUID):
+            #有附件不可删除
+            NotifyCompensationResult(curPlayer, GUID, 0)
+            return
+        
         ClearPersonalCompensation(curPlayerID, GUID)
         NotifyCompensationResult(curPlayer, GUID, 1)
         #GameWorld.DebugLog("个人补偿中OnDelCompensation:%s"%GUID)
@@ -928,12 +933,28 @@
     #全服邮件
     curEntireRequire = GameWorld.GetCompensationMgr().FindEntireCompensation(GUID)
     if curEntireRequire.GUID == GUID:
+        if not CheckCanDelCompensation(curEntireRequire, GUID):
+            #有附件不可删除
+            NotifyCompensationResult(curPlayer, GUID, 0)
+            return
+        
         SetPrizeState(curPlayerID, GUID, Disable_State, GameWorld.GetCompensationMgr().FindPlayerRecState(curPlayerID, GUID)/10)
         NotifyCompensationResult(curPlayer, GUID, 1)
         #GameWorld.DebugLog("全服邮件OnDelCompensation:%s"%GUID)
         return
 
     NotifyCompensationResult(curPlayer, GUID, 0)
+       
+# 有附件的情况玩家不可主动删除邮件,避免误操作;系统可删除不用调用此接口
+def CheckCanDelCompensation(mailObj, GUID):
+    if mailObj.Gold or mailObj.GoldPaper or mailObj.Silver:
+        # 有附加货币不可删除
+        return False
+    
+    if GameWorld.GetCompensationMgr().FindItemCount(GUID):
+        # 有附件物品不可删除
+        return False
+    return True
         
 # 邮件删除情况   
 def NotifyCompensationResult(curPlayer, GUID, result):    

--
Gitblit v1.8.0