From 7c12351394b2f17bcc5b25ca58455f143119ca93 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 10 十一月 2025 11:34:03 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(主线战斗额外功能逻辑提到B425标记外处理并同步;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTaofa.py | 72 ++++++++++++++++++++++++++++++++++++
1 files changed, 72 insertions(+), 0 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTaofa.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTaofa.py
index b79fb12..fb43f53 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTaofa.py
+++ b/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:
--
Gitblit v1.8.0