| | |
| | | import PlayerFamily
|
| | | import GameWorld
|
| | | import DBDataMgr
|
| | | import ObjPool
|
| | |
|
| | | import time
|
| | |
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxContribCnt, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurt, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtEx, 0)
|
| | | #玩家自己过天非时间过天的,需要刷新一下
|
| | | familyID = curPlayer.GetFamilyID()
|
| | | curFamily = DBDataMgr.GetFamilyMgr().FindFamily(familyID)
|
| | | RefreshPlayerAwardBoxCnt(curFamily, curPlayer, unSyncIDList=[curPlayer.GetPlayerID()])
|
| | | SyncTaofaInfo(curPlayer)
|
| | | return
|
| | |
|
| | |
| | | PlayerFamily.SendFamilyActionInfo(curPlayer, familyID, ActionType)
|
| | | return
|
| | |
|
| | | def RefreshFamilyBuZhenInfo(family):
|
| | | ## 刷新公会公共布阵信息
|
| | | familyID = family.GetID()
|
| | | curTime = int(time.time())
|
| | | bzDuration = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 4) * 60 # 有效时长秒
|
| | | maxLayer = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 3)
|
| | | |
| | | gLayer = 0
|
| | | gEndTime = 0
|
| | | gActionData = None
|
| | | familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, ActionType)
|
| | | for index in range(0, familyAction.Count()):
|
| | | actionData = familyAction.At(index)
|
| | | dataID = GetFAPlayerID(actionData)
|
| | | if dataID == ActionGlobalID:
|
| | | gActionData = actionData
|
| | | continue
|
| | | bzTime = GetFABuzhenTime(actionData)
|
| | | if not bzTime:
|
| | | continue
|
| | | endTime = bzTime + bzDuration
|
| | | if endTime <= curTime:
|
| | | continue
|
| | | |
| | | if not maxLayer or gLayer < maxLayer:
|
| | | gLayer += 1
|
| | | |
| | | if gEndTime < endTime:
|
| | | gEndTime = endTime
|
| | | |
| | | GameWorld.DebugLog("刷新公会公共布阵信息: familyID=%s,gLayer=%s,gEndTime=%s" % (familyID, gLayer, GameWorld.ChangeTimeNumToStr(gEndTime)))
|
| | | if not gActionData:
|
| | | gActionData = familyAction.AddAction()
|
| | | SetFAPlayerID(gActionData, ActionGlobalID)
|
| | | |
| | | SetFABuzhenEndTime(gActionData, gEndTime)
|
| | | SetFABuzhenLayer(gActionData, gLayer)
|
| | | PlayerFamily.SendFamilyAction(gActionData)
|
| | | return
|
| | | #def RefreshFamilyBuZhenInfo(family):
|
| | | # ## 刷新公会公共布阵信息
|
| | | # familyID = family.GetID()
|
| | | # curTime = int(time.time())
|
| | | # bzDuration = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 4) * 60 # 有效时长秒
|
| | | # maxLayer = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 3)
|
| | | # |
| | | # gLayer = 0
|
| | | # gEndTime = 0
|
| | | # gActionData = None
|
| | | # familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, ActionType)
|
| | | # for index in range(0, familyAction.Count()):
|
| | | # actionData = familyAction.At(index)
|
| | | # dataID = GetFAPlayerID(actionData)
|
| | | # if dataID == ActionGlobalID:
|
| | | # gActionData = actionData
|
| | | # continue
|
| | | # bzTime = GetFABuzhenTime(actionData)
|
| | | # if not bzTime:
|
| | | # continue
|
| | | # endTime = bzTime + bzDuration
|
| | | # if endTime <= curTime:
|
| | | # continue
|
| | | # |
| | | # if not maxLayer or gLayer < maxLayer:
|
| | | # gLayer += 1
|
| | | # |
| | | # if gEndTime < endTime:
|
| | | # gEndTime = endTime
|
| | | # |
| | | # GameWorld.DebugLog("刷新公会公共布阵信息: familyID=%s,gLayer=%s,gEndTime=%s" % (familyID, gLayer, GameWorld.ChangeTimeNumToStr(gEndTime)))
|
| | | # if not gActionData:
|
| | | # gActionData = familyAction.AddAction()
|
| | | # SetFAPlayerID(gActionData, ActionGlobalID)
|
| | | # |
| | | # SetFABuzhenEndTime(gActionData, gEndTime)
|
| | | # SetFABuzhenLayer(gActionData, gLayer)
|
| | | # PlayerFamily.SendFamilyAction(gActionData)
|
| | | # return
|
| | |
|
| | | def RefreshPlayerAwardBoxCnt(family, curPlayer=None, unSyncIDList=[]):
|
| | | ## 刷新玩家可领取的宝箱数
|
| | |
| | | return
|
| | | gLayer, gActionData = GetFamilyBuzhenLayer(familyID)
|
| | | bzDuration = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 4) * 60 # 有效时长秒
|
| | | maxLayer = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 3)
|
| | | gEndTime = int(time.time()) + bzDuration # 直接覆盖更新
|
| | | if not maxLayer or gLayer < maxLayer:
|
| | | gLayer += 1
|
| | | |
| | | gLayer += 1 # 布阵不限制次数,直接加
|
| | | #if not maxLayer or gLayer < maxLayer:
|
| | | # gLayer += 1
|
| | | |
| | | GameWorld.DebugLog("公会讨伐布阵: gLayer=%s,gEndTime=%s" % (gLayer, GameWorld.ChangeTimeNumToStr(gEndTime)), playerID)
|
| | | # 公共信息
|
| | | SetFABuzhenEndTime(gActionData, gEndTime)
|
| | |
| | | if not curFamily:
|
| | | return
|
| | |
|
| | | atkCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaCnt)
|
| | | itemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaItemAddCnt)
|
| | | freeCnt = IpyGameDataPY.GetFuncCfg("FamilyTaofaAtk", 1)
|
| | | canAtkCnt = freeCnt + itemAddCnt - atkCnt
|
| | | if canAtkCnt <= 0:
|
| | | GameWorld.DebugLog("公会讨伐没有斩杀次数: atkCnt=%s >= freeCnt(%s) + itemAddCnt(%s)" % (atkCnt, freeCnt, itemAddCnt), playerID)
|
| | | return
|
| | | commAddAnger, superAddAnger, maxAnger = IpyGameDataPY.GetFuncEvalCfg("FamilyTaofaAtk", 4)
|
| | | anger = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaAnger)
|
| | | atkType = AtkType_Anger if anger >= maxAnger else AtkType_Normal
|
| | |
|
| | | if atkType == AtkType_Normal:
|
| | | atkCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaCnt)
|
| | | itemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaItemAddCnt)
|
| | | freeCnt = IpyGameDataPY.GetFuncCfg("FamilyTaofaAtk", 1)
|
| | | canAtkCnt = freeCnt + itemAddCnt - atkCnt
|
| | | if canAtkCnt <= 0:
|
| | | GameWorld.DebugLog("公会讨伐没有斩杀次数: atkCnt=%s >= freeCnt(%s) + itemAddCnt(%s)" % (atkCnt, freeCnt, itemAddCnt), playerID)
|
| | | return
|
| | | |
| | | atkTime = int(time.time())
|
| | |
|
| | | # 计算属性
|
| | | gLayer, _ = GetFamilyBuzhenLayer(familyID)
|
| | | maxLayer = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 3)
|
| | | gLayer = min(gLayer, maxLayer) # 限制生效的最大布阵层数
|
| | | fightPower = PlayerControl.GetFightPower(curPlayer)
|
| | | superRate = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 1)
|
| | | superRatio = IpyGameDataPY.GetFuncCfg("FamilyTaofaAtk", 3) # 暴击伤害倍值
|
| | |
| | | if gLayer > 0:
|
| | | superRate += gLayer * addSuperRatePerLayer
|
| | | damRatio += gLayer * addDamPerLayer / 10000.0
|
| | | |
| | | commAddAnger, superAddAnger, maxAnger = IpyGameDataPY.GetFuncEvalCfg("FamilyTaofaAtk", 4)
|
| | | anger = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaAnger)
|
| | |
|
| | | GameWorld.DebugLog("---公会讨伐斩杀: fightPower=%s,gLayer=%s,superRate=%s,superRatio=%s,damRatio=%s,anger=%s/%s" |
| | | % (fightPower, gLayer, superRate, superRatio, damRatio, anger, maxAnger), playerID)
|
| | | GameWorld.DebugLog("---公会讨伐斩杀: fightPower=%s,gLayer=%s,superRate=%s,superRatio=%s,damRatio=%s,anger=%s/%s,atkType=%s" |
| | | % (fightPower, gLayer, superRate, superRatio, damRatio, anger, maxAnger, atkType), playerID)
|
| | |
|
| | | familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, ActionType)
|
| | | actionData = familyAction.GetActionDataByValue1(playerID, True)
|
| | |
| | | boxHurtTotalHis = boxHurtHis + boxHurtHisEx * ChConfig.Def_PerPointValue
|
| | | GameWorld.DebugLog("boxContribCnt=%s,boxHurtTotal=%s,boxHurtTotalHis=%s" % (boxContribCnt, boxHurtTotal, boxHurtTotalHis), playerID)
|
| | |
|
| | | atkType = AtkType_Normal
|
| | | calcHurtCnt = 1 # 计算伤害次数
|
| | | if anger >= maxAnger:
|
| | | if atkType == AtkType_Anger: # 怒气攻击
|
| | | anger -= maxAnger
|
| | | atkType = AtkType_Anger # 怒气攻击
|
| | | calcHurtCnt = IpyGameDataPY.GetFuncCfg("FamilyTaofaAtk", 5)
|
| | |
|
| | | hurtTotal = 0 # 本次总伤害
|
| | |
| | | return
|
| | |
|
| | | def SyncTaofaInfo(curPlayer):
|
| | | clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCFamilyTaofaInfo)
|
| | | clientPack = ChPyNetSendPack.tagSCFamilyTaofaInfo()
|
| | | clientPack.BuZhenState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBuZhenState)
|
| | | clientPack.AtkCount = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaCnt)
|
| | | clientPack.ItemAddCount = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaItemAddCnt)
|
| | |
| | |
|
| | | def SyncTaofaAtkRet(curPlayer, atkType, hurtList, awardItemList):
|
| | | atkHurtList = []
|
| | | objPool = ObjPool.GetPoolMgr()
|
| | | for totalHurt, isSuper in hurtList:
|
| | | atkHurt = objPool.acquire(ChPyNetSendPack.tagSCFamilyTaofaAtkHurt)
|
| | | atkHurt = ChPyNetSendPack.tagSCFamilyTaofaAtkHurt()
|
| | | atkHurt.IsSuper = isSuper
|
| | | atkHurt.HurtValue = totalHurt % ChConfig.Def_PerPointValue
|
| | | atkHurt.HurtValueEx = totalHurt / ChConfig.Def_PerPointValue
|
| | |
| | |
|
| | | itemList = []
|
| | | for itemID, itemCount in awardItemList:
|
| | | item = objPool.acquire(ChPyNetSendPack.tagSCFamilyTaofaAtkItem)
|
| | | item = ChPyNetSendPack.tagSCFamilyTaofaAtkItem()
|
| | | item.ItemID = itemID
|
| | | item.Count = itemCount
|
| | | itemList.append(item)
|
| | |
|
| | | clientPack = objPool.acquire(ChPyNetSendPack.tagSCFamilyTaofaAtkRet)
|
| | | clientPack = ChPyNetSendPack.tagSCFamilyTaofaAtkRet()
|
| | | clientPack.AtkType = atkType
|
| | | clientPack.HurtList = atkHurtList
|
| | | clientPack.HurtCount = len(clientPack.HurtList)
|