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/RemoteQuery/GY_Query_GMToolForbidLogin.py | 3 +
ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_UnForbidTalk.py | 1
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerControl.py | 8 ++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTUnForbidTalk.py | 6 ---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Offline_UnBind.py | 3 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTForbidTalk.py | 9 ----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 3 +
ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_ForbidTalk.py | 1
ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py | 4 ++
ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_UnForbidLogin.py | 1
ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_ForbidLogin.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 4 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CloseAccID.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGMOper.py | 13 +++++-
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 17 ++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 29 ++++++++++++++
16 files changed, 79 insertions(+), 26 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
index 0d71834..34b1463 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
@@ -618,6 +618,10 @@
PlayerControl.SetGMForbidenTalk(curPlayer, packValue)
return
+ if packType == ShareDefine.CDBPlayerRefresh_ExAttr17:
+ PlayerControl.SetPlayerAccState(curPlayer, packValue)
+ return
+
if packType == IPY_GameServer.CDBPlayerRefresh_State:
# 脱机在线
PlayerControl.SetIsTJG(curPlayer, packValue)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerControl.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerControl.py
index d43cfd5..2176370 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerControl.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerControl.py
@@ -28,6 +28,7 @@
#"""Version = 2017-06-22 15:00"""
#---------------------------------------------------------------------
import GameWorld
+import PlayerDBOper
import IPY_GameServer
import IpyGameDataPY
import CrossRealmMsg
@@ -253,6 +254,13 @@
def GetGMForbidenTalk(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_ForbiddenTalk)
def SetGMForbidenTalk(curPlayer, value): curPlayer.SetDict(ChConfig.Def_ForbiddenTalk, value)
+# 玩家账号状态值
+def SetPlayerAccState(curPlayer, accState):
+ #curPlayer.SetAccState(accState)
+ curPlayer.SetExAttr17(accState)
+ #需要立即更新DB
+ PlayerDBOper.UpdateDBOper(PlayerDBOper.Table_DBPlayer, {"PlayerID":curPlayer.GetPlayerID()}, {"AccState":accState, "ExAttr17":accState})
+ return
#------------------------------------------------------------------------------
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 2171143..4d97373 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -864,7 +864,22 @@
CDBPlayerRefresh_FinalHurtReducePer, # 最终伤害减少百分比
CDBPlayerRefresh_YinjiTime, # 每X秒减少印记时间,毫秒
CDBPlayerRefresh_YinjiCnt, # 当前印记数 214
-) = range(146, 215)
+CDBPlayerRefresh_SkillAddPer1, # 技能伤害增强1 215
+CDBPlayerRefresh_SkillAddPer2, # 技能伤害增强2
+CDBPlayerRefresh_SkillAddPer3, # 技能伤害增强3
+CDBPlayerRefresh_SkillAddPer4, # 技能伤害增强4
+CDBPlayerRefresh_SkillAddPer5, # 技能伤害增强5
+CDBPlayerRefresh_SkillAddPer6, # 技能伤害增强6 220
+CDBPlayerRefresh_SkillAddPer7, # 技能伤害增强7
+CDBPlayerRefresh_SkillReducePer1, # 受到技能伤害减少1
+CDBPlayerRefresh_SkillReducePer2, # 受到技能伤害减少2
+CDBPlayerRefresh_SkillReducePer3, # 受到技能伤害减少3
+CDBPlayerRefresh_SkillReducePer4, # 受到技能伤害减少4 225
+CDBPlayerRefresh_SkillReducePer5, # 受到技能伤害减少5
+CDBPlayerRefresh_SkillReducePer6, # 受到技能伤害减少6
+CDBPlayerRefresh_SkillReducePer7, # 受到技能伤害减少7
+CDBPlayerRefresh_ExAttr17, # ExAttr17
+) = range(146, 230)
TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子)
TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 8d0e19d..b86ab85 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -721,9 +721,7 @@
if tjgTime:
curPlayer.SendGameServerRefreshState(IPY_GameWorld.CDBPlayerRefresh_HappyPoint, tjgTime)
- # 如果被禁言的,上线同步前端
- if curPlayer.GetGMForbidenTalk():
- curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ForbidenTalk, curPlayer.GetGMForbidenTalk(), False)
+ PlayerControl.DoGMForbidenTalkOnLogin(curPlayer)
return
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-组队邀请是否需要审核;
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGMOper.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGMOper.py
index eec4eb2..13fc89f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGMOper.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGMOper.py
@@ -55,6 +55,13 @@
delList.append(curOperValue)
continue
+ if curOperValue == IPY_GameWorld.gmForbidTalk:
+ if not curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalk):
+ GameWorld.DebugLog("玩家账号状态已被解除禁言,删除该GMOper命令!")
+ DoClearOper(curPlayer, curOperValue)
+ delList.append(curOperValue)
+ continue
+
#执行GM命令
DoOper(curPlayer, curOperValue)
@@ -214,7 +221,7 @@
curFindPlayer_GMOper.Sync_SaveToDB()
- curTagPlayer.SetAccState(IPY_GameWorld.pysForbidden)
+ PlayerControl.SetPlayerAccState(curTagPlayer, IPY_GameWorld.pysForbidden)
curTagPlayer.Kick(IPY_GameWorld.disGMKick)
return
@@ -236,8 +243,8 @@
curFindPlayer_GMOper.Sync_SaveToDB()
- curTagPlayer.SetAccState(IPY_GameWorld.pysForbidden)
-
+ PlayerControl.SetPlayerAccState(curTagPlayer, IPY_GameWorld.pysForbidden)
+
curTagPlayer.Kick(IPY_GameWorld.disGMKick)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CloseAccID.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CloseAccID.py
index 8b35453..b27ccd7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CloseAccID.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CloseAccID.py
@@ -53,7 +53,7 @@
curFindPlayer_GMOper.Sync_SaveToDB()
- curFindPlayer.SetAccState(IPY_GameWorld.pysForbidden)
+ PlayerControl.SetPlayerAccState(curFindPlayer, IPY_GameWorld.pysForbidden)
curFindPlayer.Kick(IPY_GameWorld.disGMKick)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTForbidTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTForbidTalk.py
index dc32e88..60a2b86 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTForbidTalk.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTForbidTalk.py
@@ -36,15 +36,6 @@
# @remarks 函数详细说明.
def DoLogic(query_Type, query_ID, packCMDList, tick):
GameWorld.DebugLog("GY_Query_GMTForbidTalk packCMDList=%s" % str(packCMDList))
-# curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-#
-# if not curFindPlayer or curFindPlayer.IsEmpty():
-# return ''
-#
-# curFindPlayer.SetAccState(curFindPlayer.GetAccState()|pow(2, ChConfig.Def_PysForbidTalk))
-# curFindName = curFindPlayer.GetPlayerName()
-# #流向
-# DataRecordPack.DR_ToolGMOperate(query_ID, curFindName, curFindPlayer.GetAccID(), 'GMT_FobidTalk')
# 在线时可设定禁言时长;离线则在UserDBResponse执行状态禁言
# 故解禁时需两种情况都解除
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTUnForbidTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTUnForbidTalk.py
index d9cac89..ac2780e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTUnForbidTalk.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTUnForbidTalk.py
@@ -41,12 +41,6 @@
if not curFindPlayer or curFindPlayer.IsEmpty():
return ''
- #===========================================================================
- # accState = curFindPlayer.GetAccState()
- # if (accState & pow(2, ChConfig.Def_PysForbidTalk)) > 0:
- # curFindPlayer.SetAccState(accState ^ pow(2, ChConfig.Def_PysForbidTalk))
- #===========================================================================
-
curFindName = curFindPlayer.GetPlayerName()
#流向
DataRecordPack.DR_ToolGMOperate(query_ID, curFindName, curFindPlayer.GetAccID(), 'GMTUnForbidTalk')
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMToolForbidLogin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMToolForbidLogin.py
index ab1afa4..d3f432c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMToolForbidLogin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMToolForbidLogin.py
@@ -20,6 +20,7 @@
import ChConfig
import GameWorld
import DataRecordPack
+import PlayerControl
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
@@ -39,7 +40,7 @@
if not curFindPlayer or curFindPlayer.IsEmpty():
return ''
- curFindPlayer.SetAccState(curFindPlayer.GetAccState()|pow(2, ChConfig.Def_PysForbidByPy))
+ PlayerControl.SetPlayerAccState(curFindPlayer, curFindPlayer.GetAccState()|pow(2, ChConfig.Def_PysForbidByPy))
curFindName = curFindPlayer.GetPlayerName()
DataRecordPack.DR_ToolGMOperate(query_ID, curFindName, curFindPlayer.GetAccID(), 'GMT_FobidLogin')
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Offline_UnBind.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Offline_UnBind.py
index 5e22874..5c9647e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Offline_UnBind.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Offline_UnBind.py
@@ -16,6 +16,7 @@
#---------------------------------------------------------------------
import GameWorld
import IPY_GameWorld
+import PlayerControl
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
@@ -54,7 +55,7 @@
if curOper.GetOper() == IPY_GameWorld.pysForbidden:
curFindPlayer_GMOper.DeleteOper(IPY_GameWorld.pysForbidden)
curFindPlayer_GMOper.Sync_SaveToDB()
- curFindPlayer.SetAccState(IPY_GameWorld.pysNormal)
+ PlayerControl.SetPlayerAccState(curFindPlayer, IPY_GameWorld.pysNormal)
return '%s,%s'%(curFindPlayer.GetPlayerID(), curFindPlayer.GetName())
GameWorld.Log('###脱机工具解封异常 : 玩家 = %s查找解封信息失败'%(curFindPlayer.GetPlayerID()))
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index fd59db3..4d97373 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -878,7 +878,8 @@
CDBPlayerRefresh_SkillReducePer5, # 受到技能伤害减少5
CDBPlayerRefresh_SkillReducePer6, # 受到技能伤害减少6
CDBPlayerRefresh_SkillReducePer7, # 受到技能伤害减少7
-) = range(146, 229)
+CDBPlayerRefresh_ExAttr17, # ExAttr17
+) = range(146, 230)
TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子)
TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
diff --git a/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_ForbidLogin.py b/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_ForbidLogin.py
index 23e2922..abb68bd 100644
--- a/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_ForbidLogin.py
+++ b/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_ForbidLogin.py
@@ -96,6 +96,7 @@
# 设置玩家账号状态
dbPlayer.AccState = dbPlayer.AccState|pow(2, GMCommon.Def_PysForbidByPy)
+ dbPlayer.ExAttr17 = dbPlayer.AccState
dbPlayer.adoUpdateC(collection)
# 记录流向
diff --git a/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_ForbidTalk.py b/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_ForbidTalk.py
index 0b082f6..a22c99a 100644
--- a/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_ForbidTalk.py
+++ b/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_ForbidTalk.py
@@ -98,6 +98,7 @@
# 设置玩家账号状态
dbPlayer.AccState = dbPlayer.AccState|pow(2, GMCommon.Def_PysForbidTalk)
+ dbPlayer.ExAttr17 = dbPlayer.AccState
dbPlayer.adoUpdateC(collection)
# 记录流向
diff --git a/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_UnForbidLogin.py b/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_UnForbidLogin.py
index 52ecab5..3fe993d 100644
--- a/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_UnForbidLogin.py
+++ b/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_UnForbidLogin.py
@@ -82,6 +82,7 @@
# 设置玩家账号状态
dbPlayer.AccState = dbPlayer.AccState ^ pow(2, GMCommon.Def_PysForbidByPy)
+ dbPlayer.ExAttr17 = dbPlayer.AccState
dbPlayer.adoUpdateC(collection)
# 记录流向
diff --git a/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_UnForbidTalk.py b/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_UnForbidTalk.py
index ef8e88a..7315941 100644
--- a/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_UnForbidTalk.py
+++ b/ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_UnForbidTalk.py
@@ -100,6 +100,7 @@
# 设置玩家账号状态
dbPlayer.AccState = dbPlayer.AccState ^ pow(2, GMCommon.Def_PysForbidTalk)
+ dbPlayer.ExAttr17 = dbPlayer.AccState
dbPlayer.adoUpdateC(collection)
# 记录流向
--
Gitblit v1.8.0