hxp
4 天以前 ec68dabc97521a7706344e7d038e9f08462f4fe8
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTaofa.py
@@ -26,7 +26,6 @@
import PlayerFamily
import GameWorld
import DBDataMgr
import ObjPool
import time
@@ -478,6 +477,78 @@
    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:
@@ -510,7 +581,7 @@
    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)
@@ -525,9 +596,8 @@
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
@@ -535,12 +605,12 @@
        
    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)