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