Files
bl/logic/service/player/server.go
昔念 f847386b7c feat(fight): 优化技能命中逻辑与效果触发流程
重构了技能攻击处理逻辑,调整了命中判断和效果应用的顺序。
新增 `Calculate_Pre` 接口方法用于实现无视类效果。
修复技能是否命中的判断逻辑,确保效果命中状态正确传递。
清理上回合缓存的效果数据,保证每回合初始状态干净。
统一使用 `IsFirst` 方法判断先后手,提升代码一致性。
完善玩家离线时的数据保存顺序,避免重复操作。
更新依赖模块版本信息。
2025-10-05 00:29:22 +08:00

47 lines
1.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package player
import "blazing/common/socket/errorcode"
func GetPlayer(c *Conn, userid uint32) *Player { //TODO 这里待优化,可能存在内存泄漏问题
c.Mu.Lock()
defer c.Mu.Unlock()
//检查player初始化是否为conn初始后取map防止二次连接后存在两个player
clientdata := c.MainConn.Context().(*ClientData)
if clientdata.Player != nil {
return clientdata.Player
}
clientdata.Player = NewPlayer(
WithConn(c), //注入conn
)
// gff := socket.NewClientData()
// gff.Player = clientdata.Player
// c.MainConn.SetContext(gff)
Mainplayer.Store(userid, clientdata.Player)
return clientdata.Player
// return nil
}
func KickPlayer(userid uint32) { //踢出玩家
//TODO 返回错误码
//var player *entity.Player
if player1, ok := Mainplayer.Load(userid); ok {
//取成功,否则创建
player1.Save() //先保存数据再返回
head := NewTomeeHeader(1001, userid)
head.Result = uint32(errorcode.ErrorCodes.ErrAccountLoggedInElsewhere)
//实际上这里有个问题,会造成重复保存问题
player1.SendPack(head.Pack(nil))
player1.MainConn.MainConn.Close()
// clientdata.Player = player
}
//return player
// return nil
}