4042 【后端】【2.0】邮件包含附件时不能删除邮件 -  服务端添加防范
1个文件已修改
21 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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,6 +933,11 @@
    #全服邮件
    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)
@@ -935,6 +945,17 @@
    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):    
    sendMCPack = ChPyNetSendPack.tagGCDelCompensationResult()