diff --git a/README.md b/README.md index 7f99b2bca..8faee1428 100644 --- a/README.md +++ b/README.md @@ -8,12 +8,13 @@ ## seer-project 项目结构: -go tool pprof -http :8081 "http://125.208.20.223:54612/debug/debug/pprof/profile" + go tool pprof -http :8081 "http://127.0.0.1:9909/debug/pprof/profile" go tool pprof -http :8081 "http://202.189.15.67:62672/debug/pprof/profile" go tool pprof -http :8081 "http://8.162.8.203:9909/debug/pprof//profile" go tool pprof -http :8081 "http://8.162.23.87:9910/debug/pprof//profile" +go tool pprof -http :8081 "http://61.147.247.7:36855/debug/pprof/profile" 详情查看 [文档](./docs) diff --git a/common/socket/ServerEvent.go b/common/socket/ServerEvent.go index 93c70af96..7b557b751 100644 --- a/common/socket/ServerEvent.go +++ b/common/socket/ServerEvent.go @@ -281,10 +281,10 @@ func (s *Server) onevent(c gnet.Conn, v []byte) { } else { header.Data = nil // 避免空切片分配 } - t.OnEvent(header) - // s.workerPool.Submit(func() { - // t.LF.Producer().Write(header) - // }) + //t.OnEvent(header) + s.workerPool.Submit(func() { + t.LF.Producer().Write(header) + }) } } diff --git a/logic/service/fight/input.go b/logic/service/fight/input.go index 37f03125f..7b412c084 100644 --- a/logic/service/fight/input.go +++ b/logic/service/fight/input.go @@ -160,6 +160,9 @@ func (f *FightC) initplayer(c common.PlayerI) (*input.Input, errorcode.ErrorCode case info.BattleMode.PET_MELEE: in.AllPet = make([]*info.BattlePetEntity, 0) var meetpet []config.PetBaseConfig + if len(f.Melee) < 6 { + return nil, errorcode.ErrorCodes.ErrSystemError + } if c.GetInfo().UserID == f.ownerID { meetpet = f.Melee[:3] } else { diff --git a/logic/service/player/ai.go b/logic/service/player/ai.go index efaa7d440..dfabf48cf 100644 --- a/logic/service/player/ai.go +++ b/logic/service/player/ai.go @@ -2,44 +2,15 @@ package player import ( "blazing/common/socket/errorcode" - "blazing/logic/service/fight/info" - "blazing/modules/player/model" ) type AI_player struct { baseplayer - petinfo []model.PetInfo //精灵信息 + CanCapture int Prop [6]int8 } -func (p *AI_player) Getfightinfo() info.Fightinfo { - return info.Fightinfo{} -} -func (f *AI_player) SendPack(b []byte) error { - return nil - -} - -func (f *AI_player) MessWin(b bool) { - -} - -func (f *AI_player) SendPackCmd(_ uint32, _ any) { - - //fmt.Println("战斗结束") - -} - -func (p *AI_player) GetPetInfo() []model.PetInfo { - - return p.petinfo -} - -func (lw *AI_player) SendLoadPercent(info.LoadPercentOutboundInfo) { - -} - func (p *AI_player) CanFight() errorcode.ErrorCode { return 0 } diff --git a/logic/service/player/base.go b/logic/service/player/base.go index a9f41c77b..fdd187ff7 100644 --- a/logic/service/player/base.go +++ b/logic/service/player/base.go @@ -1,6 +1,7 @@ package player import ( + "blazing/common/socket/errorcode" "blazing/common/utils" "blazing/logic/service/common" "blazing/logic/service/fight/info" @@ -63,15 +64,33 @@ func (f *baseplayer) FindPet(catchTime uint32) (int, *model.PetInfo, bool) { }) } -// PetDel 删除指定宠物 -// catchTime: 宠物的捕捉时间戳 -func (f *Player) PetDel(catchTime uint32) { - index, olpet, ok := f.FindPet(catchTime) - if ok { - - //先将背包更新 - f.Service.Pet.UPdate(*olpet) - f.Service.Pet.Pet_del(catchTime) - f.Info.PetList = append(f.Info.PetList[:index], f.Info.PetList[index+1:]...) - } +func (p *baseplayer) Getfightinfo() info.Fightinfo { + return info.Fightinfo{} +} +func (f *baseplayer) SendPack(b []byte) error { + return nil + +} + +func (f *baseplayer) MessWin(b bool) { + +} + +func (f *baseplayer) SendPackCmd(_ uint32, _ any) { + + //fmt.Println("战斗结束") + +} + +func (p *baseplayer) GetPetInfo() []model.PetInfo { + + return p.Info.PetList +} + +func (lw *baseplayer) SendLoadPercent(info.LoadPercentOutboundInfo) { + +} + +func (p *baseplayer) CanFight() errorcode.ErrorCode { + return 0 } diff --git a/logic/service/player/pack.go b/logic/service/player/pack.go index 395583595..22f3f319f 100644 --- a/logic/service/player/pack.go +++ b/logic/service/player/pack.go @@ -7,6 +7,7 @@ import ( "encoding/binary" "encoding/hex" "sync" + "time" "context" @@ -14,6 +15,7 @@ import ( "fmt" "reflect" + "github.com/bruceshao/lockfree" "github.com/gobwas/ws" "github.com/gobwas/ws/wsutil" "github.com/gogf/gf/v2/os/glog" @@ -210,7 +212,7 @@ type ClientData struct { ERROR_CONNUT int Wsmsg *WsCodec Conn gnet.Conn - //LF *lockfree.Lockfree[common.TomeeHeader] + LF *lockfree.Lockfree[common.TomeeHeader] //SaveL sync.Once //保存锁 //SaveDone chan struct{} @@ -225,15 +227,15 @@ func NewClientData(c gnet.Conn) *ClientData { Conn: c, Wsmsg: &WsCodec{}, } - // cd.LF = lockfree.NewLockfree( - // 8, - // cd, - // lockfree.NewSleepBlockStrategy(time.Millisecond), - // ) + cd.LF = lockfree.NewLockfree( + 8, + cd, + lockfree.NewSleepBlockStrategy(time.Millisecond), + ) // // 启动Lockfree - // if err := cd.LF.Start(); err != nil { - // panic(err) - // } + if err := cd.LF.Start(); err != nil { + panic(err) + } // // // 启动Lockfree // // if err := cd.LF.Start(); err != nil { // // panic(err) diff --git a/logic/service/player/pet.go b/logic/service/player/pet.go index e9139ffc5..ab384bd39 100644 --- a/logic/service/player/pet.go +++ b/logic/service/player/pet.go @@ -75,3 +75,16 @@ func (p *Player) AddPetExp(petInfo *model.PetInfo, addExp int64) { p.SendPack(header.Pack(updateOutbound)) //准备包由各自发,因为协议不一样 } + +// PetDel 删除指定宠物 +// catchTime: 宠物的捕捉时间戳 +func (f *Player) PetDel(catchTime uint32) { + index, olpet, ok := f.FindPet(catchTime) + if ok { + + //先将背包更新 + f.Service.Pet.UPdate(*olpet) + f.Service.Pet.Pet_del(catchTime) + f.Info.PetList = append(f.Info.PetList[:index], f.Info.PetList[index+1:]...) + } +} diff --git a/logic/service/player/rpc.go b/logic/service/player/rpc.go new file mode 100644 index 000000000..89364ac16 --- /dev/null +++ b/logic/service/player/rpc.go @@ -0,0 +1,8 @@ +package player + +// rpc,跨服匹配的玩家,只做数据的传输 +type RPC_player struct { + baseplayer + // + serviceid uint32 //玩家所在的ID +}