From fccdda3c9d6ca34072ffc736d39634e5570e4c63 Mon Sep 17 00:00:00 2001 From: 1 <1@72wo.cn> Date: Tue, 14 Oct 2025 15:12:08 +0000 Subject: [PATCH] =?UTF-8?q?```=20fix(player):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=88=98=E6=96=97=E7=BB=93=E6=9D=9F=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E9=81=BF=E5=85=8D=E7=BA=BF=E7=A8=8B=E9=98=BB?= =?UTF-8?q?=E5=A1=9E=E5=B9=B6=E4=BF=AE=E5=A4=8D=E6=A0=BC=E5=BC=8F=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logic/service/player/cmd.go | 9 ++++++--- logic/service/player/player.go | 3 ++- logic/service/player/server.go | 1 + 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/logic/service/player/cmd.go b/logic/service/player/cmd.go index 0d86a08c..c21e5584 100644 --- a/logic/service/player/cmd.go +++ b/logic/service/player/cmd.go @@ -25,10 +25,13 @@ func (p *Player) SendNoteReadyToFightInfo(b info.NoteReadyToFightInfo) { p.SendPack(t1.Pack(&b)) //准备包由各自发,因为协议不一样 } func (p *Player) SendFightEndInfo(b info.FightOverInfo) { - t1 := NewTomeeHeader(2506, p.Info.UserID) + + t1 := NewTomeeHeader(2506, p.Info.UserID) + + p.SendPack(t1.Pack(&b)) + p.FightC = nil + - p.SendPack(t1.Pack(&b)) - p.FightC = nil } func (p *Player) CatchPetInfo(b info.CatchMonsterOutboundInfo) { diff --git a/logic/service/player/player.go b/logic/service/player/player.go index 40d7645f..e01d30fa 100644 --- a/logic/service/player/player.go +++ b/logic/service/player/player.go @@ -228,6 +228,7 @@ func (p *Player) ItemAdd(t []model.SingleItemInfo) { } func (p *Player) SendPack(b []byte) error { + p.MainConn.Context().(*ClientData).Mu.Lock() defer p.MainConn.Context().(*ClientData).Mu.Unlock() @@ -285,7 +286,7 @@ func (p *Player) Save() { } if p.FightC != nil { - p.FightC.Over(p, info.BattleOverReason.PlayerOffline) //玩家逃跑 + go p.FightC.Over(p, info.BattleOverReason.PlayerOffline) //玩家逃跑,但是不能锁线程 } p.Info.TimeToday = p.Info.TimeToday + uint32(time.Now().Unix()) - uint32(p.Onlinetime) //保存电池时间 diff --git a/logic/service/player/server.go b/logic/service/player/server.go index 1068cce9..9270877c 100644 --- a/logic/service/player/server.go +++ b/logic/service/player/server.go @@ -41,6 +41,7 @@ func KickPlayer(userid uint32) { //踢出玩家 //实际上这里有个问题,会造成重复保存问题 player1.SendPack(head.Pack(nil)) + player1.MainConn.Context().(*ClientData).Mu.Lock() player1.MainConn.Close() player1.MainConn.Context().(*ClientData).Mu.Unlock()