diff --git a/common/cool/global.go b/common/cool/global.go index 748050cc..aa4f8581 100644 --- a/common/cool/global.go +++ b/common/cool/global.go @@ -3,7 +3,6 @@ package cool import ( "blazing/common/utils" "context" - "log" "reflect" "github.com/gogf/gf/v2/os/glog" @@ -36,18 +35,18 @@ func init() { idgen.SetIdGenerator(options) newId := idgen.NextId() glog.Debug(context.Background(), "初始化雪花算法", newId) - Filter, err := sensitive.NewFilter( + Filter, _ = sensitive.NewFilter( sensitive.StoreOption{Type: sensitive.StoreMemory}, // 基于内存 sensitive.FilterOption{Type: sensitive.FilterDfa}, // 基于DFA算法 ) - if err != nil { - log.Fatalf("敏感词服务启动失败, err:%v", err) - return - } + // if err != nil { + // log.Fatalf("敏感词服务启动失败, err:%v", err) + // return + // } // 加载敏感词库 - err = Filter.LoadDictEmbed( + Filter.LoadDictEmbed( sensitive.DictCovid19, sensitive.DictOther, sensitive.DictReactionary, @@ -58,23 +57,23 @@ func init() { sensitive.DictCorruption, sensitive.DictTemporaryTencent, ) - if err != nil { - log.Fatalf("加载词库发生了错误, err:%v", err) - return - } + // if err != nil { + // log.Fatalf("加载词库发生了错误, err:%v", err) + // return + // } - // 动态添加自定义敏感词 - err = Filter.Store.AddWord("李世民", "秦始皇") - if err != nil { - log.Fatalf("添加敏感词发生了错误, err:%v", err) - return - } + // // 动态添加自定义敏感词 + // err = Filter.Store.AddWord("李世民", "秦始皇") + // if err != nil { + // log.Fatalf("添加敏感词发生了错误, err:%v", err) + // return + // } - // 动态自定义敏感词白名单 - err = Filter.Store.DelWord("武汉海鲜市场", "武汉") - if err != nil { - log.Fatalf("删除敏感词发生了错误, err:%v", err) - return - } + // // 动态自定义敏感词白名单 + // err = Filter.Store.DelWord("武汉海鲜市场", "武汉") + // if err != nil { + // log.Fatalf("删除敏感词发生了错误, err:%v", err) + // return + // } } diff --git a/common/utils/go-sensitive-word-1.3.3/go.mod b/common/utils/go-sensitive-word-1.3.3/go.mod index 088f1c9c..c358a7d4 100644 --- a/common/utils/go-sensitive-word-1.3.3/go.mod +++ b/common/utils/go-sensitive-word-1.3.3/go.mod @@ -3,7 +3,7 @@ module github.com/zmexing/go-sensitive-word go 1.20 require ( - github.com/imroc/req/v3 v3.43.3 + github.com/imroc/req/v3 v3.42.3 github.com/orcaman/concurrent-map/v2 v2.0.1 ) @@ -17,7 +17,8 @@ require ( github.com/klauspost/compress v1.17.7 // indirect github.com/onsi/ginkgo/v2 v2.16.0 // indirect github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/quic-go v0.41.0 // indirect + github.com/quic-go/qtls-go1-20 v0.4.1 // indirect + github.com/quic-go/quic-go v0.40.1 // indirect github.com/refraction-networking/utls v1.6.3 // indirect go.uber.org/mock v0.4.0 // indirect golang.org/x/crypto v0.21.0 // indirect diff --git a/common/utils/go-sensitive-word-1.3.3/go.sum b/common/utils/go-sensitive-word-1.3.3/go.sum index f63fb409..00bb648b 100644 --- a/common/utils/go-sensitive-word-1.3.3/go.sum +++ b/common/utils/go-sensitive-word-1.3.3/go.sum @@ -20,6 +20,8 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/imroc/req/v3 v3.42.3 h1:ryPG2AiwouutAopwPxKpWKyxgvO8fB3hts4JXlh3PaE= +github.com/imroc/req/v3 v3.42.3/go.mod h1:Axz9Y/a2b++w5/Jht3IhQsdBzrG1ftJd1OJhu21bB2Q= github.com/imroc/req/v3 v3.43.3 h1:WdZhpUev9THtuwEZsW2LOYacl12fm7IkB7OgACv40+k= github.com/imroc/req/v3 v3.43.3/go.mod h1:SQIz5iYop16MJxbo8ib+4LnostGCok8NQf8ToyQc2xA= github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= @@ -34,6 +36,10 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/quic-go/qtls-go1-20 v0.4.1 h1:D33340mCNDAIKBqXuAvexTNMUByrYmFYVfKfDN5nfFs= +github.com/quic-go/qtls-go1-20 v0.4.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= +github.com/quic-go/quic-go v0.40.1 h1:X3AGzUNFs0jVuO3esAGnTfvdgvL4fq655WaOi1snv1Q= +github.com/quic-go/quic-go v0.40.1/go.mod h1:PeN7kuVJ4xZbxSv/4OX6S1USOX8MJvydwpTx31vx60c= github.com/quic-go/quic-go v0.41.0 h1:aD8MmHfgqTURWNJy48IYFg2OnxwHT3JL7ahGs73lb4k= github.com/quic-go/quic-go v0.41.0/go.mod h1:qCkNjqczPEvgsOnxZ0eCD14lv+B2LHlFAB++CNOh9hA= github.com/refraction-networking/utls v1.6.3 h1:MFOfRN35sSx6K5AZNIoESsBuBxS2LCgRilRIdHb6fDc= diff --git a/logic/controller/CreatePlayer.go b/logic/controller/CreatePlayer.go index 6d7d963a..bb98117e 100644 --- a/logic/controller/CreatePlayer.go +++ b/logic/controller/CreatePlayer.go @@ -5,6 +5,7 @@ import ( "blazing/cool" "blazing/logic/service" "blazing/logic/service/login" + "blazing/logic/service/space" blservice "blazing/modules/blazing/service" ) @@ -14,3 +15,20 @@ func (h *Controller) CreatePlayer(data *login.CreatePlayerInboundInfo, c *servic blservice.NewUserService(data.Head.UserID).Reg(cool.Filter.Replace(data.Nickname, '*'), data.Color) return result, 0 } + +func (h *Controller) ChangePlayerName(data *login.ChangePlayerNameInboundInfo, c *service.Player) (result *login.ChangePlayerNameOutboundInfo, err errorcode.ErrorCode) { + newnice := cool.Filter.Replace(data.Nickname, '*') + + tt := login.ChangePlayerNameOutboundInfo{ + Nickname: newnice, + UserID: c.ID(), + } + c.Info.Nick = newnice + + defer space.GetSpace(c.MapID()).Range(func(playerID uint32, player service.PlayerI) bool { + + player.SendPack(data.Head.Pack(&tt)) + return true + }) + return result, -1 +} diff --git a/logic/service/SocketHandler_Tomee.go b/logic/service/SocketHandler_Tomee.go index d4912b52..6f659682 100644 --- a/logic/service/SocketHandler_Tomee.go +++ b/logic/service/SocketHandler_Tomee.go @@ -81,11 +81,10 @@ func (h *TomeeHeader) Pack(data any) []byte { //组包 //tv = t.Elem() // 获取指针指向的类型 tv = tv.Elem() // 获取指针指向的值 } - //.Println(t.Kind()) - //t1 := tv.Interface() - //fmt.Println(t1) - switch tv.Kind() { + switch tv.Kind() { + case reflect.String: + datar = []byte(tv.String()) case reflect.Slice: datar = data.([]byte) //p.Conn.Write(p.pack(cmd, data.([]byte))) //写入数据 diff --git a/logic/service/fightc.go b/logic/service/fightc.go index 382d1081..d4d3866c 100644 --- a/logic/service/fightc.go +++ b/logic/service/fightc.go @@ -243,8 +243,8 @@ func (f *FightC) battleLoop() { f.Round++ //回合数自增 - if f.Round > 250 { //回合数超过250,战斗平局结束 - + if f.Round > 250 || f.actionChan == nil { //回合数超过250,战斗平局结束 + break } actions := make(map[uint32]info.BattleActionI) // 每个玩家一条记录 timeout := time.After(60 * time.Second) @@ -331,8 +331,8 @@ func (f *FightC) battleLoop() { case *info.SelectSkillAction: //选择技能 //回合前操作,比如挂载buff - f.enterturn(BattleActionI[0], BattleActionI[1]) + f.enterturn(BattleActionI[0], BattleActionI[1]) //回合后操作 } @@ -469,6 +469,7 @@ func (f *FightC) winner(winner *BPET) func() { }) }) close(f.actionChan) + //f.actionChan = nil } } func (f *FightC) enterturn(fattack, sattack info.BattleActionI) { @@ -491,7 +492,12 @@ func (f *FightC) enterturn(fattack, sattack info.BattleActionI) { if f.First.CurrentPet.Info.Hp == 0 { f.First.CanChange = true //被打死就可以切精灵了 if f.Second.IsWin(f.First.CurrentPet.Info.CatchTime) { //然后检查是否战斗结束 - defer f.winner(f.Second) //广播逃跑原因 + defer f.Broadcast(func(ff *Input) { + ff.Player.SendFightEndInfo(info.FightOverInfo{ + WinnerId: f.Second.Player.ID(), + }) + }) + defer close(f.actionChan) } } @@ -500,7 +506,12 @@ func (f *FightC) enterturn(fattack, sattack info.BattleActionI) { f.Second.AttackValue = info.NewAttackValue(f.Second.Player.ID()) //已经被打死了,直接将后手方输出归0 f.Second.CanChange = true //被打死就可以切精灵了 if f.First.IsWin(f.Second.CurrentPet.Info.CatchTime) { //然后检查是否战斗结束 - defer f.winner(f.First) //广播逃跑原因 + defer f.Broadcast(func(ff *Input) { + ff.Player.SendFightEndInfo(info.FightOverInfo{ + WinnerId: f.First.Player.ID(), + }) + }) + defer close(f.actionChan) } } @@ -515,6 +526,7 @@ func (f *FightC) enterturn(fattack, sattack info.BattleActionI) { ret.FAttack.LostHp = uint32(f.First.Damage) //先手方造成血量 ret.SAttack.RemainHp = int32(f.Second.CurrentPet.Info.Hp) ret.SAttack.LostHp = uint32(f.Second.Damage) //后手方造成血量 + //ret.SAttack.Status.Poisoned_1 = 1 ff.Player.SendAttackValue(ret) }) diff --git a/logic/service/login/create_player.go b/logic/service/login/create_player.go index 46d0b24a..0d127812 100644 --- a/logic/service/login/create_player.go +++ b/logic/service/login/create_player.go @@ -15,3 +15,16 @@ type CreatePlayerOutInfo struct { //不用回包,因为前端已经处理了 } + +type ChangePlayerNameInboundInfo struct { + Head service.TomeeHeader `cmd:"2061" struc:"[0]pad"` //玩家登录 + + // 玩家昵称,@ArraySerialize注解 + Nickname string `struc:"[16]byte"` // 固定长度16字节 +} + +// ChangePlayerNameOutboundInfo 对应Java的ChangePlayerNameOutboundInfo类 +type ChangePlayerNameOutboundInfo struct { + UserID uint32 `fieldDescription:"米米号" uint:"true"` + Nickname string `struc:"[16]byte"` // 固定长度16字节 +}