From 49d3a89c86edfd6e7f0b5c0e30ef71766703a46a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 02 十一月 2019 16:26:40 +0800
Subject: [PATCH] 8321 【主干】【后端】GM工具优化(禁言及封号相关数据优化,同步更新AccState 及 ExAttr17, GM工具支持离线/在线操作及查询)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 212471d..d5b0438 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -5834,6 +5834,35 @@
     curPlayer.SetGMForbidenTalk(value)
     curPlayer.SendGameServerRefreshState(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value)
     curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value, False)
+    
+    #同步设置离线DB玩家账号状态值
+    accState = curPlayer.GetAccState()
+    if value:
+        accState = accState | pow(2, ChConfig.Def_PysForbidTalk)
+    elif (accState & pow(2, ChConfig.Def_PysForbidTalk)) > 0:
+        accState = accState ^ pow(2, ChConfig.Def_PysForbidTalk)
+    SetPlayerAccState(curPlayer, accState)
+    return
+
+def SetPlayerAccState(curPlayer, accState):
+    curPlayer.SetAccState(accState)
+    curPlayer.SetExAttr17(accState) # 同步设置该值 0309 封包登录时需要用到
+    curPlayer.SendGameServerRefreshState(ShareDefine.CDBPlayerRefresh_ExAttr17, accState)
+    curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ExAttr17, accState, False)
+    GameWorld.DebugLog("SetPlayerAccState %s" % (accState))
+    return
+
+def DoGMForbidenTalkOnLogin(curPlayer):
+    ## 离线时被禁言,此时DB的账号状态值为禁言状态,但是GMOper暂时没有禁言操作命令,故上线时检查设置下离线禁言状态
+    ## 目前离线时被禁言的,暂时只处理AccState ExAttr17, GMOper命令暂不处理,所以为永久禁言
+    
+    if not curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalk):
+        return
+    GameWorld.Log("上线时角色为被禁言状态!", curPlayer.GetPlayerID())
+    value = 1
+    curPlayer.SetGMForbidenTalk(value)
+    curPlayer.SendGameServerRefreshState(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value)
+    curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value, False)
     return
 
 ## 队伍相关审核开关状态, joinReqCheck-入队申请是否需要审核; inviteCheck-组队邀请是否需要审核;

--
Gitblit v1.8.0