| | |
| | | import PlayerFamily
|
| | | import GameWorld
|
| | | import DBDataMgr
|
| | | import ObjPool
|
| | |
|
| | | import time
|
| | |
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBuZhenState, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaAnger, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaLeaveGetCnt, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxTotalGetCnt, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxLastTime, 0)
|
| | | 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
|
| | |
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBuZhenState, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaAnger, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaLeaveGetCnt, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxTotalGetCnt, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxLastTime, 0)
|
| | | 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)
|
| | |
| | | SyncTaofaInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def OnFamilyMemberLeave(family, leavePlayerID, leavePlayer=None):
|
| | | def OnFamilyMemberLeave(family, leavePlayerID):
|
| | | ## 公会成员删除,针对公会的处理
|
| | | familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(family.GetID(), ActionType)
|
| | | actionData = familyAction.GetActionDataByValue1(leavePlayerID, False)
|
| | | if not actionData:
|
| | | return
|
| | | memInfo = PlayerViewCache.GetPlayerBaseViewInfo(leavePlayerID, leavePlayer)
|
| | | memInfo = PlayerViewCache.GetPlayerBaseViewInfo(leavePlayerID)
|
| | | actionData.GetUserDict().update({"info":memInfo})
|
| | | PlayerFamily.SendFamilyAction([actionData])
|
| | | return
|
| | |
| | | ## 玩家退出了公会,针对玩家个人的处理
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaAnger, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt, 0)
|
| | | totalGetCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxTotalGetCnt)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaLeaveGetCnt, totalGetCnt)
|
| | | GameWorld.DebugLog("退出公会记录讨伐已累计领取宝箱数: totalGetCnt=%s" % totalGetCnt)
|
| | | SyncTaofaInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def OnPlayerEnterFamily(curPlayer):
|
| | | def OnCrossPlayerEnterFamily(crossPlayer):
|
| | | ## 玩家进入新公会
|
| | | familyID = curPlayer.GetFamilyID()
|
| | | PlayerFamily.SendFamilyActionInfo(curPlayer, familyID, ActionType)
|
| | | familyID = crossPlayer.GetFamilyID()
|
| | | PlayerFamily.SendFamilyActionInfo(crossPlayer, 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=[]):
|
| | | ## 刷新玩家可领取的宝箱数
|
| | |
| | | def __doUpdPlayerAwardBoxCnt(curPlayer, member, memContribDict, awardBoxMax, unSyncIDList):
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | joinTime = member.GetJoinTime()
|
| | | boxLastTime = max(curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxLastTime), joinTime) # 与加入时间取最大
|
| | | leaveGetCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaLeaveGetCnt) # 上次离开公会时累计领取数
|
| | | boxTotalGetCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxTotalGetCnt) # 已领取宝箱数
|
| | | curFamilyGetCnt = boxTotalGetCnt - leaveGetCnt # 来到本公会后累计领取数
|
| | | boxUnGetCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt) # 未领取宝箱数
|
| | | canAddBoxMax = awardBoxMax - boxTotalGetCnt - boxUnGetCnt # 还可领取的箱子数
|
| | | if canAddBoxMax <= 0:
|
| | | GameWorld.DebugLog(" 成员可领取宝箱已达上限不刷新: playerID=%s,boxLastTime=%s,boxTotalGetCnt(%s)+boxUnGetCnt(%s) >= %s" |
| | | % (playerID, boxLastTime, boxTotalGetCnt, boxUnGetCnt, awardBoxMax))
|
| | | GameWorld.DebugLog(" 成员可领取宝箱已达上限不刷新: playerID=%s,boxTotalGetCnt(%s)+boxUnGetCnt(%s) >= %s" |
| | | % (playerID, boxTotalGetCnt, boxUnGetCnt, awardBoxMax))
|
| | | return
|
| | |
|
| | | updBoxLastTime = boxLastTime
|
| | | addUnGetBox = 0
|
| | | curFamilyCanGet = 0 # 在本公会累计可领取箱子数
|
| | | for contribList in memContribDict.values():
|
| | | if addUnGetBox >= canAddBoxMax:
|
| | | break
|
| | | for atkTime, contribBoxCnt in contribList:
|
| | | if boxLastTime >= atkTime:
|
| | | if joinTime >= atkTime:
|
| | | #GameWorld.DebugLog(" 加入公会之前的箱子不能领取: joinTime=%s > atkTime(%s),contribBoxCnt=%s" % (joinTime, atkTime, contribBoxCnt))
|
| | | continue
|
| | | updBoxLastTime = max(updBoxLastTime, atkTime)
|
| | | addUnGetBox += contribBoxCnt
|
| | | if addUnGetBox >= canAddBoxMax:
|
| | | break
|
| | | curFamilyCanGet += contribBoxCnt
|
| | |
|
| | | addUnGetBox = min(curFamilyCanGet - curFamilyGetCnt - boxUnGetCnt, canAddBoxMax)
|
| | | if addUnGetBox <= 0:
|
| | | GameWorld.DebugLog(" 成员当前没有可领取的宝箱不刷新: playerID=%s,boxLastTime=%s,boxTotalGetCnt=%s,boxUnGetCnt=%s,awardBoxMax=%s,canAddBoxMax=%s" |
| | | % (playerID, boxLastTime, boxTotalGetCnt, boxUnGetCnt, awardBoxMax, canAddBoxMax))
|
| | | GameWorld.DebugLog(" 成员当前没有可领取的宝箱不刷新: playerID=%s,curFamilyCanGet=%s,curFamilyGetCnt=%s(%s-%s),boxUnGetCnt=%s,awardBoxMax=%s,canAddBoxMax=%s" |
| | | % (playerID, curFamilyCanGet, curFamilyGetCnt, boxTotalGetCnt, leaveGetCnt, boxUnGetCnt, awardBoxMax, canAddBoxMax))
|
| | | return
|
| | | updBoxUnGetCnt = boxUnGetCnt + addUnGetBox
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt, updBoxUnGetCnt)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxLastTime, updBoxLastTime)
|
| | | GameWorld.DebugLog(" 成员可领取的宝箱数: playerID=%s,addUnGetBox=%s,updBoxUnGetCnt=%s,updBoxLastTime=%s,boxLastTime=%s,boxTotalGetCnt=%s,boxUnGetCnt=%s,awardBoxMax=%s,canAddBoxMax=%s" |
| | | % (playerID, addUnGetBox, updBoxUnGetCnt, updBoxLastTime, boxLastTime, boxTotalGetCnt, boxUnGetCnt, awardBoxMax, canAddBoxMax))
|
| | | GameWorld.DebugLog(" 成员可领取的宝箱数: playerID=%s,addUnGetBox=%s,updBoxUnGetCnt=%s,curFamilyCanGet=%s,curFamilyGetCnt=%s(%s-%s),boxUnGetCnt=%s,awardBoxMax=%s,canAddBoxMax=%s" |
| | | % (playerID, addUnGetBox, updBoxUnGetCnt, curFamilyCanGet, curFamilyGetCnt, boxTotalGetCnt, leaveGetCnt, boxUnGetCnt, awardBoxMax, canAddBoxMax))
|
| | | if not unSyncIDList or playerID not in unSyncIDList:
|
| | | SyncTaofaInfo(curPlayer)
|
| | | return
|
| | |
| | | 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 # 本次总伤害
|
| | |
| | | SyncTaofaInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def GMAddMemTaofaAtk(curPlayer, curFamily, playerID, hurtValue, isAnger):
|
| | | ## GM添加假的讨伐数据
|
| | | |
| | | familyID = curFamily.GetID()
|
| | | familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, ActionType)
|
| | | actionData = familyAction.GetActionDataByValue1(playerID, True)
|
| | | |
| | | faAtkCnt = GetFAAtkCount(actionData)
|
| | | faContribBoxCnt = GetFAContribBoxCnt(actionData)
|
| | | faHurtTotal = GetFAHurtTotal(actionData) + GetFAHurtTotalEx(actionData) * ChConfig.Def_PerPointValue
|
| | | |
| | | atkType = AtkType_Normal
|
| | | calcHurtCnt = 1 # 计算伤害次数
|
| | | if isAnger:
|
| | | atkType = AtkType_Anger # 怒气攻击
|
| | | calcHurtCnt = IpyGameDataPY.GetFuncCfg("FamilyTaofaAtk", 5)
|
| | | |
| | | hurtTotal = 0 # 本次总伤害
|
| | | for _ in range(calcHurtCnt):
|
| | | hurtTotal += hurtValue
|
| | | |
| | | atkTime = int(time.time())
|
| | | faAtkCnt += calcHurtCnt
|
| | | |
| | | # 计算贡献盒子数
|
| | | boxAwardHurtList = IpyGameDataPY.GetFuncEvalCfg("FamilyTaofaBox", 1)
|
| | | contribBoxMax = min(IpyGameDataPY.GetFuncCfg("FamilyTaofaBox", 2), 1000) # 可贡献的最大箱子数
|
| | | finalAwardHurt = boxAwardHurtList[-1] # 最后一档最大伤害值
|
| | | loopNeedHurt = (finalAwardHurt - boxAwardHurtList[-2]) if len(boxAwardHurtList) > 1 else finalAwardHurt # 最后一档所需伤害值
|
| | | |
| | | # 原总贡献盒子数
|
| | | boxContribCnt = 0
|
| | | for needHurt in boxAwardHurtList:
|
| | | if faHurtTotal < needHurt:
|
| | | break
|
| | | boxContribCnt += 1
|
| | | if faHurtTotal > finalAwardHurt:
|
| | | loopHurtTotal = faHurtTotal - finalAwardHurt
|
| | | loopContribBoxCnt = loopHurtTotal / loopNeedHurt
|
| | | boxContribCnt = min(boxContribCnt + loopContribBoxCnt, contribBoxMax)
|
| | | |
| | | # 新总宝箱盒子数
|
| | | faHurtTotal += hurtTotal
|
| | | updContribBoxCnt = 0
|
| | | for needHurt in boxAwardHurtList:
|
| | | if faHurtTotal < needHurt:
|
| | | break
|
| | | updContribBoxCnt += 1
|
| | | if faHurtTotal > finalAwardHurt:
|
| | | loopHurtTotal = faHurtTotal - finalAwardHurt
|
| | | loopContribBoxCnt = loopHurtTotal / loopNeedHurt
|
| | | updContribBoxCnt = min(updContribBoxCnt + loopContribBoxCnt, contribBoxMax)
|
| | | |
| | | addContribCnt = 0
|
| | | if updContribBoxCnt > boxContribCnt:
|
| | | addContribCnt = updContribBoxCnt - boxContribCnt
|
| | | faContribBoxCnt += addContribCnt
|
| | | |
| | | GameWorld.DebugAnswer(curPlayer, "讨伐ID:%s,伤:%s,箱:%s/%s,怒:%s" % (playerID, hurtValue, addContribCnt, updContribBoxCnt, int(isAnger)))
|
| | | |
| | | # 更新Action记录
|
| | | SetFAAtkTime(actionData, atkTime)
|
| | | SetFAAtkCount(actionData, faAtkCnt)
|
| | | SetFAHurtTotal(actionData, faHurtTotal % ChConfig.Def_PerPointValue)
|
| | | SetFAHurtTotalEx(actionData, faHurtTotal / ChConfig.Def_PerPointValue)
|
| | | SetFAContribBoxCnt(actionData, faContribBoxCnt)
|
| | | atkList = actionData.GetUserDict().get("atkList", [])
|
| | | atkList.append([atkTime, addContribCnt, hurtTotal, atkType])
|
| | | actionData.GetUserDict().update({"atkList":atkList})
|
| | | |
| | | return actionData
|
| | |
|
| | | def GetTaofaBoxAward(curPlayer):
|
| | | boxUnGetCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt)
|
| | | if not boxUnGetCnt:
|
| | |
| | | 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)
|