8321 【主干】【后端】GM工具优化(禁言及封号相关数据优化,同步更新AccState 及 ExAttr17, GM工具支持离线/在线操作及查询)
16个文件已修改
103 ■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerControl.py 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGMOper.py 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CloseAccID.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTForbidTalk.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTUnForbidTalk.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMToolForbidLogin.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Offline_UnBind.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_ForbidLogin.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_ForbidTalk.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_UnForbidLogin.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_UnForbidTalk.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)
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
#------------------------------------------------------------------------------ 
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 # 战盟贡献度(活跃度转换得来)
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
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-组队邀请是否需要审核;
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,7 +243,7 @@
    
    curFindPlayer_GMOper.Sync_SaveToDB()
    
    curTagPlayer.SetAccState(IPY_GameWorld.pysForbidden)
    PlayerControl.SetPlayerAccState(curTagPlayer, IPY_GameWorld.pysForbidden)
    curTagPlayer.Kick(IPY_GameWorld.disGMKick)
    return
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)
    
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执行状态禁言
    # 故解禁时需两种情况都解除
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')
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')
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()))       
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 # 战盟贡献度(活跃度转换得来)
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)
    
    # 记录流向
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)
            
    # 记录流向
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)
    # 记录流向
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)
            
    # 记录流向