From c26f44a3d2d8debf560f46fb09e23761516ab7b4 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 28 十月 2025 16:36:28 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(王元姬、张宝技能;增加释放方式5-弹射攻击,9-弹射治疗,1002-持续治疗;增加效果6015-增加弹射次数;效果7004-随机弹射次数;效果5005-按类型清除buff;增加技能类型15-清除净化buff类;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py | 53 +++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 39 insertions(+), 14 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
index 4e4123c..786b64f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -459,6 +459,7 @@
## 回合战斗管理器
def __init__(self):
+ self.lastRequestTick = 0
self.turnFightDict = {} # {guid:TurnFight, ...}
return
@@ -546,8 +547,8 @@
## 获取玩家阵容
olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
lineup = olPlayer.GetLineup(lineupID)
- if not lineup.lineupHeroDict:
- # 为空时默认取主阵容
+ if lineup.IsEmpty():
+ GameWorld.DebugLog("玩家没有目标阵容默认取主阵容! lineupID=%s" % lineupID)
lineup = olPlayer.GetLineup(ShareDefine.Lineup_Main)
return lineup
@@ -558,12 +559,12 @@
playerID = curPlayer.GetPlayerID()
lineup = GetPlayerLineup(curPlayer, lineupID)
- if not lineup.lineupHeroDict:
+ if lineup.IsEmpty():
return {}
heroDict = {}
curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptHero)
- for posNum in lineup.lineupHeroDict.keys():
+ for posNum in lineup.GetPosNumList():
hero = lineup.GetLineupHero(posNum)
heroID = hero.heroID
itemIndex = hero.itemIndex
@@ -864,6 +865,30 @@
return
+def CheckFightCD(curPlayer, tick, selfKey):
+ ## 是否战斗请求CD中
+
+ # 所有玩家公共CD,待扩展
+ tfMgr = GetTurnFightMgr()
+ pubCD = IpyGameDataPY.GetFuncCfg("TurnFightCD", 1)
+ if pubCD:
+ if tfMgr.lastRequestTick and tick - tfMgr.lastRequestTick <= pubCD:
+ GameWorld.DebugLog("回合制战斗请求服务器公共CD中!")
+ PlayerControl.NotifyCode(curPlayer, "BattleCoolDown")
+ return True
+
+ # 个人CD
+ selfCD = IpyGameDataPY.GetFuncCfg("TurnFightCD", 2)
+ lastTick = curPlayer.GetDictByKey(selfKey)
+ if selfCD and lastTick and tick - lastTick <= selfCD:
+ GameWorld.DebugLog("回合制战斗请求CD中: %s" % selfKey)
+ PlayerControl.NotifyCode(curPlayer, "BattleCoolDown")
+ return True
+
+ tfMgr.lastRequestTick = tick
+ curPlayer.SetDict(selfKey, tick)
+ return False
+
#// B4 10 回合制战斗 #tagCMTurnFight
#
#struct tagCMTurnFight
@@ -886,8 +911,13 @@
tagID = clientData.TagID
valueList = clientData.ValueList
- GameWorld.DebugLog("回合制战斗请求: mapID=%s,funcLineID=%s,tagType=%s,tagID=%s,valueList=%s"
+ GameWorld.DebugLog("----- 回合制战斗请求: mapID=%s,funcLineID=%s,tagType=%s,tagID=%s,valueList=%s"
% (mapID, funcLineID, tagType, tagID, valueList), curPlayer.GetPlayerID())
+
+ reqRet = FBLogic.OnTurnFightRequest(curPlayer, mapID, funcLineID, tagType, tagID, valueList)
+ if not reqRet:
+ return
+ funcLineID = reqRet[1] if len(reqRet) > 1 else funcLineID
fbIpyData = FBCommon.GetFBIpyData(mapID)
fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, funcLineID, False)
@@ -898,13 +928,12 @@
if FBCommon.CheckCanEnterFBComm(curPlayer, mapID, funcLineID, fbIpyData, fbLineIpyData) != ShareDefine.EntFBAskRet_OK:
return
- reqRet = FBLogic.OnTurnFightRequest(curPlayer, mapID, funcLineID, tagType, tagID, valueList)
- if not reqRet:
- return
-
# 攻防方所使用的阵容ID
atkLineupID, defLineupID = FBLogic.GetFBPlayerLineupID(curPlayer, mapID, funcLineID)
if atkLineupID not in ShareDefine.LineupList or defLineupID not in ShareDefine.LineupList:
+ return
+
+ if CheckFightCD(curPlayer, tick, "TurnFightReqTick"):
return
# 玩家
@@ -1153,12 +1182,8 @@
# 限制请求CD
if tick:
- key = "MainFightReqTick"
- lastTick = curPlayer.GetDictByKey(key)
- if lastTick and tick - lastTick <= 1000:
- GameWorld.DebugLog("主线战斗请求CD中")
+ if CheckFightCD(curPlayer, tick, "MainFightReqTick"):
return
- curPlayer.SetDict(key, tick)
mainFightMgr = GetMainFightMgr(curPlayer)
turnFight = mainFightMgr.turnFight
--
Gitblit v1.8.0