From 2f0f06f2ab87c8264ff57cc3db9d3c82681d7898 Mon Sep 17 00:00:00 2001 From: UnKownOwO <80520429@qq.com> Date: Mon, 13 Feb 2023 20:17:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=90=E5=8A=9B=E5=9B=9E=E5=A4=8D=E6=97=B6?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=8A=80=E8=83=BD=E5=9B=9E=E5=A4=8D=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gs/game/player_stamina.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/gs/game/player_stamina.go b/gs/game/player_stamina.go index ffbd0b98..39567c7b 100644 --- a/gs/game/player_stamina.go +++ b/gs/game/player_stamina.go @@ -271,7 +271,7 @@ func (g *GameManager) SkillStartStamina(player *model.Player, casterId uint32, s avatarSkillDataConfig := gdconf.GetAvatarSkillDataById(int32(skillId)) // 配置表确保存在技能开始对应的耐力消耗 - if avatarSkillDataConfig != nil { + if avatarSkillDataConfig != nil && avatarSkillDataConfig.CostStamina != 0 { // 距离上次处理技能开始耐力消耗过去的时间 pastTime := time.Now().UnixMilli() - staminaInfo.LastSkillStartTime // 上次触发的技能相同则每400ms触发一次消耗 @@ -281,8 +281,6 @@ func (g *GameManager) SkillStartStamina(player *model.Player, casterId uint32, s g.UpdatePlayerStamina(player, avatarSkillDataConfig.CostStamina) staminaInfo.LastSkillStartTime = time.Now().UnixMilli() } - } else { - // logger.Debug("skill start cost error, cost: %v", costStamina) } // 记录最后释放的技能 @@ -364,6 +362,10 @@ func (g *GameManager) GetChangeStamina(curStamina int32, maxStamina int32, stami // UpdateVehicleStamina 更新载具耐力 func (g *GameManager) UpdateVehicleStamina(player *model.Player, vehicleEntity *Entity, staminaCost int32) { + // 耐力消耗为0代表不更改 仍然执行后面的话会导致回复出问题 + if staminaCost == 0 { + return + } staminaInfo := player.StaminaInfo // 添加的耐力大于0为恢复 if staminaCost > 0 { @@ -406,6 +408,10 @@ func (g *GameManager) UpdateVehicleStamina(player *model.Player, vehicleEntity * // UpdatePlayerStamina 更新玩家耐力 func (g *GameManager) UpdatePlayerStamina(player *model.Player, staminaCost int32) { + // 耐力消耗为0代表不更改 仍然执行后面的话会导致回复出问题 + if staminaCost == 0 { + return + } staminaInfo := player.StaminaInfo // 添加的耐力大于0为恢复 if staminaCost > 0 {