ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTaofa.py
@@ -478,6 +478,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: