8321 【主干】【后端】GM工具优化(禁言及封号相关数据优化,同步更新AccState 及 ExAttr17, GM工具支持离线/在线操作及查询)
| | |
| | | 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)
|
| | |
| | | #"""Version = 2017-06-22 15:00"""
|
| | | #---------------------------------------------------------------------
|
| | | import GameWorld
|
| | | import PlayerDBOper
|
| | | import IPY_GameServer
|
| | | import IpyGameDataPY
|
| | | import CrossRealmMsg
|
| | |
| | | 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
|
| | |
|
| | | #------------------------------------------------------------------------------
|
| | |
|
| | |
| | | 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 # 战盟贡献度(活跃度转换得来)
|
| | |
| | | if tjgTime:
|
| | | curPlayer.SendGameServerRefreshState(IPY_GameWorld.CDBPlayerRefresh_HappyPoint, tjgTime)
|
| | |
|
| | | # 如果被禁言的,上线同步前端
|
| | | if curPlayer.GetGMForbidenTalk():
|
| | | curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ForbidenTalk, curPlayer.GetGMForbidenTalk(), False)
|
| | | PlayerControl.DoGMForbidenTalkOnLogin(curPlayer)
|
| | |
|
| | | return
|
| | |
|
| | |
| | | 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-组队邀请是否需要审核;
|
| | |
| | | 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)
|
| | |
|
| | |
| | |
|
| | | curFindPlayer_GMOper.Sync_SaveToDB()
|
| | |
|
| | | curTagPlayer.SetAccState(IPY_GameWorld.pysForbidden)
|
| | | PlayerControl.SetPlayerAccState(curTagPlayer, IPY_GameWorld.pysForbidden)
|
| | |
|
| | | curTagPlayer.Kick(IPY_GameWorld.disGMKick)
|
| | | return
|
| | |
| | |
|
| | | curFindPlayer_GMOper.Sync_SaveToDB()
|
| | |
|
| | | curTagPlayer.SetAccState(IPY_GameWorld.pysForbidden)
|
| | | PlayerControl.SetPlayerAccState(curTagPlayer, IPY_GameWorld.pysForbidden)
|
| | |
|
| | | curTagPlayer.Kick(IPY_GameWorld.disGMKick)
|
| | | return
|
| | |
| | |
|
| | | curFindPlayer_GMOper.Sync_SaveToDB()
|
| | |
|
| | | curFindPlayer.SetAccState(IPY_GameWorld.pysForbidden)
|
| | | PlayerControl.SetPlayerAccState(curFindPlayer, IPY_GameWorld.pysForbidden)
|
| | |
|
| | | curFindPlayer.Kick(IPY_GameWorld.disGMKick)
|
| | |
|
| | |
| | | # @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执行状态禁言
|
| | | # 故解禁时需两种情况都解除
|
| | |
| | | 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')
|
| | |
| | | import ChConfig
|
| | | import GameWorld
|
| | | import DataRecordPack
|
| | | import PlayerControl
|
| | | #---------------------------------------------------------------------
|
| | | #全局变量
|
| | | #---------------------------------------------------------------------
|
| | |
| | | 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')
|
| | |
| | | #---------------------------------------------------------------------
|
| | | import GameWorld
|
| | | import IPY_GameWorld
|
| | | import PlayerControl
|
| | | #---------------------------------------------------------------------
|
| | | #全局变量
|
| | | #---------------------------------------------------------------------
|
| | |
| | | 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()))
|
| | |
| | | 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 # 战盟贡献度(活跃度转换得来)
|
| | |
| | |
|
| | | # 设置玩家账号状态
|
| | | dbPlayer.AccState = dbPlayer.AccState|pow(2, GMCommon.Def_PysForbidByPy)
|
| | | dbPlayer.ExAttr17 = dbPlayer.AccState
|
| | | dbPlayer.adoUpdateC(collection)
|
| | |
|
| | | # 记录流向
|
| | |
| | |
|
| | | # 设置玩家账号状态
|
| | | dbPlayer.AccState = dbPlayer.AccState|pow(2, GMCommon.Def_PysForbidTalk)
|
| | | dbPlayer.ExAttr17 = dbPlayer.AccState
|
| | | dbPlayer.adoUpdateC(collection)
|
| | |
|
| | | # 记录流向
|
| | |
| | |
|
| | | # 设置玩家账号状态
|
| | | dbPlayer.AccState = dbPlayer.AccState ^ pow(2, GMCommon.Def_PysForbidByPy)
|
| | | dbPlayer.ExAttr17 = dbPlayer.AccState
|
| | | dbPlayer.adoUpdateC(collection)
|
| | |
|
| | | # 记录流向
|
| | |
| | |
|
| | | # 设置玩家账号状态
|
| | | dbPlayer.AccState = dbPlayer.AccState ^ pow(2, GMCommon.Def_PysForbidTalk)
|
| | | dbPlayer.ExAttr17 = dbPlayer.AccState
|
| | | dbPlayer.adoUpdateC(collection)
|
| | |
|
| | | # 记录流向
|