#!/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
|
|
|
|