From 921ba9c6e954f2f1377cb08d5a8476c9e6c2b30e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 15 三月 2019 17:44:27 +0800
Subject: [PATCH] 6332 【后端】【2.0】主要是拍品相关规则调整及背包优化(给非拍卖物品为拍品时优化)

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

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py
index 280bae4..75bf6eb 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py
@@ -76,13 +76,14 @@
     #curItemData.GUID = curItemDict['GUID']
     curItemData.ItemID = curItemDict['ItemID']
     curItemData.Count = curItemDict['Count']
-    curItemData.IsBind = curItemDict.get('IsBind',0)
+    #curItemData.IsBind = curItemDict.get('IsBind',0)
+    curItemData.IsBind = curItemDict.get('IsAuctionItem',0)
     curItemData.UserData = curItemDict.get('UserData', '')
     return curItemData
 
 #  此处货币playerIDList发放统一,如根据玩家不同而变,则应需修改
 ## 功能发放物品补偿/奖励邮件
-#  @param addItemList [(itemID, itemCnt, isBind), {或物品信息字典}, ...]
+#  @param addItemList [(itemID, itemCnt, 是否拍品), {或物品信息字典}, ...]
 #  @return GUID
 def SendPersonalItemMailEx(title, content, getDays, playerIDList, addItemList, gold = 0, goldPaper = 0, silver = 0, 
                            detail="", moneySource=ChConfig.Def_GiveMoney_Mail):
@@ -131,7 +132,7 @@
 
 #  此处货币playerIDList发放统一,如根据玩家不同而变,则应需修改
 ## 功能发放物品补偿/奖励邮件
-#  @param addItemList [(itemID, itemCnt, isBind), {或物品信息字典}, ...]
+#  @param addItemList [(itemID, itemCnt, 是否拍品), {或物品信息字典}, ...]
 #  @return GUID
 #  @remarks addItemList支持append字典
 def SendPersonalItemMail(title, content, limitTime, playerIDList, addItemList, gold = 0, goldPaper = 0, silver = 0, 
@@ -156,14 +157,14 @@
         
         
         if len(itemInfo) == 3:
-            itemID, itemCnt, isBind = itemInfo
+            itemID, itemCnt, isAuctionItem = itemInfo
         else:
             continue
             
         addItemDict = {}
         addItemDict['ItemID'] = itemID
         addItemDict['Count'] = itemCnt
-        addItemDict['IsBind'] = isBind
+        addItemDict['IsAuctionItem'] = isAuctionItem
         addItemDictList.append(addItemDict)
         
     perMailItemCnt = IpyGameDataPY.GetFuncCfg("MailMaxItemCnt")
@@ -672,7 +673,6 @@
         curPlayer.SetDict(Def_RequestState, 0)#解锁
         GameWorld.DebugLog("Compensation### OnMGRequestCompensation no found")
         return
-    Text, gold, goldPaper, silver, moneySource = curEntireRequire.Text, curEntireRequire.Gold, curEntireRequire.GoldPaper, curEntireRequire.Silver, curEntireRequire.Type
     #校验背包剩余空间是否足够
     #===========================================================================
     # curCUIDItemCount = GameWorld.GetCompensationMgr().FindItemCount(GUID)
@@ -682,7 +682,7 @@
     #    return
     #===========================================================================
     #发送到MapServer给予奖励
-    SendGMRequestCompensationResult(routeIndex, mapID, curPlayer, GUID, compensationType, Text, gold, goldPaper, silver, moneySource)
+    SendGMRequestCompensationResult(routeIndex, mapID, curPlayer, GUID, compensationType, curEntireRequire)
     GameWorld.DebugLog("Compensation### OnMGRequestCompensation out")
     
 ##请求领取物品
@@ -758,12 +758,15 @@
 ##发送封包 03 02 玩家领取补偿结果#tagGMRequestCompensationResult
 #  @param routeIndex, mapID, curPlayer, curItem
 #  @return None
-def SendGMRequestCompensationResult(routeIndex, mapID, curPlayer, GUID, compensationType, Text,
-                                    gold, goldPaper, silver, moneySource):
+def SendGMRequestCompensationResult(routeIndex, mapID, curPlayer, GUID, compensationType, curEntireRequire):
+    
+    Text, gold, goldPaper, silver, moneySource, createTime = curEntireRequire.Text, curEntireRequire.Gold, \
+        curEntireRequire.GoldPaper, curEntireRequire.Silver, curEntireRequire.Type, curEntireRequire.CreateTime
     sendPack = ChGameToMapPyPack.tagGMRequestCompensationResult() 
     sendPack.PlayerID = curPlayer.GetID()
     sendPack.CompensationType = compensationType
     sendPack.GUID = GUID
+    sendPack.CreateTime = createTime
     sendPack.Text = Text
     sendPack.TextLen = len(Text)
     sendPack.Gold = gold
@@ -910,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)
@@ -925,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