5512 子 【开发】【1.4】跨服竞技场 / 【后端】【1.4】跨服竞技场开发 -- 玩家数据 buff即时通知
| | |
| | | gmQueryNewGuyCardState = _IPY_ServerDefine.gmQueryNewGuyCardState
|
| | | gmUpdateNewGuyCardState = _IPY_ServerDefine.gmUpdateNewGuyCardState
|
| | | gmReChargePush = _IPY_ServerDefine.gmReChargePush
|
| | | gmMergePlayerData = _IPY_ServerDefine.gmMergePlayerData
|
| | | mgMapInit = _IPY_ServerDefine.mgMapInit
|
| | | mgMapInitOK = _IPY_ServerDefine.mgMapInitOK
|
| | | mgPlayerIsBattle = _IPY_ServerDefine.mgPlayerIsBattle
|
| | |
| | | gstFinishRecharge = _IPY_ServerDefine.gstFinishRecharge
|
| | | gstSendDBMergeClientMsg = _IPY_ServerDefine.gstSendDBMergeClientMsg
|
| | | gstSendDBMergeClientListMsg = _IPY_ServerDefine.gstSendDBMergeClientListMsg
|
| | | gstMergePlayerData = _IPY_ServerDefine.gstMergePlayerData
|
| | | gstMax = _IPY_ServerDefine.gstMax
|
| | | btgServerSupport = _IPY_ServerDefine.btgServerSupport
|
| | | btgLineID = _IPY_ServerDefine.btgLineID
|
| | |
| | | ClassName = DB_PushRecharge
|
| | | FuncName = PushRecharge
|
| | |
|
| | | [CrossPlayerData]
|
| | | ScriptName = Player\CrossPlayerData.py
|
| | | Writer = alee
|
| | | Releaser = alee
|
| | | RegType = 1
|
| | | ClassName = DM_MergePlayerData
|
| | | FuncName = OnMergePlayerData
|
| | |
|
| | | ;;;;;;;;;;;;;;;;;;;;;;类初始化
|
| | | [InitNPC]
|
| | | ScriptName = NPC\ChNPC.py
|
| | |
| | | def GetOrderAmount(self): return _IPY_GameObj.IPY_Player_GetOrderAmount(self)
|
| | | def SendDBFinishRecharge(self, *args): return _IPY_GameObj.IPY_Player_SendDBFinishRecharge(self, *args)
|
| | | def SendDBQueryRecharge(self): return _IPY_GameObj.IPY_Player_SendDBQueryRecharge(self)
|
| | | def GetMergePlayerData(self): return _IPY_GameObj.IPY_Player_GetMergePlayerData(self)
|
| | | def SendMergeRegisterPlayer(self, selectMapID = 0, selectDataMapID = 0, selectCopyMapID = 0,
|
| | | selectPosX = 0, selectPosY = 0): return _IPY_GameObj.IPY_Player_SendMergeRegisterPlayer(self, selectMapID, selectDataMapID, selectCopyMapID, selectPosX,
|
| | | selectPosY)
|
| | | def SendMergeRegisterPlayerAfterChange(self, *args): return _IPY_GameObj.IPY_Player_SendMergeRegisterPlayerAfterChange(self, *args)
|
| | | def SendMergePlayerData(self, *args): return _IPY_GameObj.IPY_Player_SendMergePlayerData(self, *args)
|
| | | def SendMergeQueryNewAccount(self): return _IPY_GameObj.IPY_Player_SendMergeQueryNewAccount(self)
|
| | | def SetPlayerName(self, *args): return _IPY_GameObj.IPY_Player_SetPlayerName(self, *args)
|
| | | def UpdatePlayerNameResult(self, *args): return _IPY_GameObj.IPY_Player_UpdatePlayerNameResult(self, *args)
|
| | |
| | | gmQueryNewGuyCardState = _IPY_ServerDefine.gmQueryNewGuyCardState
|
| | | gmUpdateNewGuyCardState = _IPY_ServerDefine.gmUpdateNewGuyCardState
|
| | | gmReChargePush = _IPY_ServerDefine.gmReChargePush
|
| | | gmMergePlayerData = _IPY_ServerDefine.gmMergePlayerData
|
| | | mgMapInit = _IPY_ServerDefine.mgMapInit
|
| | | mgMapInitOK = _IPY_ServerDefine.mgMapInitOK
|
| | | mgPlayerIsBattle = _IPY_ServerDefine.mgPlayerIsBattle
|
| | |
| | | gstFinishRecharge = _IPY_ServerDefine.gstFinishRecharge
|
| | | gstSendDBMergeClientMsg = _IPY_ServerDefine.gstSendDBMergeClientMsg
|
| | | gstSendDBMergeClientListMsg = _IPY_ServerDefine.gstSendDBMergeClientListMsg
|
| | | gstMergePlayerData = _IPY_ServerDefine.gstMergePlayerData
|
| | | gstMax = _IPY_ServerDefine.gstMax
|
| | | btgServerSupport = _IPY_ServerDefine.btgServerSupport
|
| | | btgLineID = _IPY_ServerDefine.btgLineID
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #
|
| | | ##@package
|
| | | #
|
| | | # @todo: |
| | | #
|
| | | # @author: Alee
|
| | | # @date 2019-1-14 下午11:30:12
|
| | | # @version 1.0
|
| | | #
|
| | | # @note: |
| | | #
|
| | | #---------------------------------------------------------------------
|
| | | import GameWorld
|
| | | import CommFunc
|
| | | import PlayerControl
|
| | | import IPY_GameWorld
|
| | | import BuffSkill
|
| | | import SkillCommon
|
| | | import base64
|
| | | import ChConfig
|
| | |
|
| | | # 发送格式: 类型+(数量)+数据
|
| | | # 向跨服发送的数据类型
|
| | | (
|
| | | MergeData_Player, # 对比处理
|
| | | MergeData_Item, # 对比处理 只算属性的背包 装备 宠物 |
| | | MergeData_Skill, # 只处理ID
|
| | | MergeData_Buff, # 即时发送
|
| | | ) = range(0, 4)
|
| | |
|
| | | # 发送主服玩家数据给跨服
|
| | |
|
| | | def SendMergeData_Buff(curPlayer, buffID, plusValueList):
|
| | | if buffID in [ChConfig.Def_SkillID_LimitSuperBuff,
|
| | | ChConfig.Def_SkillID_TJGSuperBuff]:
|
| | | # 不需要处理的buff
|
| | | return
|
| | | if curPlayer.GetGameObjType() != IPY_GameWorld.gotPlayer:
|
| | | return
|
| | | |
| | | if GameWorld.IsCrossServer():
|
| | | # 非主服
|
| | | return
|
| | | |
| | | if not PlayerControl.GetCrossMapID(curPlayer):
|
| | | # 非跨服中
|
| | | return
|
| | |
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, MergeData_Buff)
|
| | | data = CommFunc.WriteDWORD(data, buffID)
|
| | | data = CommFunc.WriteBYTE(data, len(plusValueList))
|
| | | for value in plusValueList:
|
| | | data = CommFunc.WriteDWORD(data, value)
|
| | |
|
| | | |
| | | #直接用字节流会报错
|
| | | data = base64.b64encode(data)
|
| | | curPlayer.SendMergePlayerData(data)
|
| | | return
|
| | |
|
| | |
|
| | | # 接收子服玩家数据
|
| | | def OnMergePlayerData(index, tick):
|
| | | if not GameWorld.IsCrossServer():
|
| | | # 非跨服
|
| | | return
|
| | | |
| | | # 跨服服务器处理
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | pdata = base64.b64decode(curPlayer.GetMergePlayerData())
|
| | | |
| | | pos = 0
|
| | | dataType, pos = CommFunc.ReadBYTE(pdata, pos)
|
| | | if dataType == MergeData_Buff:
|
| | | buffID, pos = CommFunc.ReadDWORD(pdata, pos)
|
| | | curSkill = GameWorld.GetGameData().GetSkillBySkillID(buffID)
|
| | | if not curSkill:
|
| | | return
|
| | | |
| | | plusValueList = []
|
| | | cnt, pos = CommFunc.ReadBYTE(pdata, pos)
|
| | | for i in range(cnt):
|
| | | value, pos = CommFunc.ReadDWORD(pdata, pos)
|
| | | plusValueList.append(value)
|
| | | |
| | | buffType = SkillCommon.GetBuffType(curSkill)
|
| | | BuffSkill.AddBuffNoRefreshState(curPlayer, buffType, curSkill, tick, plusValueList)
|
| | |
|
| | | |
| | | return
|
| | |
|
| | |
|
| | |
|
| | |
| | | import PlayerTJG
|
| | | import OperControlManager
|
| | | import GameObj
|
| | | import CrossPlayerData
|
| | | #---------------------------------------------------------------------
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | |
| | | #用于BUFF满的时候处理刷新逻辑
|
| | | isDelRefresh = False
|
| | |
|
| | | # 向跨服发送数据
|
| | | CrossPlayerData.SendMergeData_Buff(curObj, curSkillID, plusValueList)
|
| | | |
| | | # buff层级
|
| | | layerMaxCnt = 0
|
| | | layerCalc = 0
|