diff --git a/.gitignore b/.gitignore index d06990b76..5c77766ee 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,5 @@ frontend/ *.exe logic/logic_linux_amd64 login/login_linux_amd64 +logic/logic +.gitignore diff --git a/common/rpc/rpc.go b/common/rpc/rpc.go index 7dd48b833..6686c7e01 100644 --- a/common/rpc/rpc.go +++ b/common/rpc/rpc.go @@ -86,7 +86,7 @@ func StartClient(id, port uint16, callback any) *struct { } { var rpcaddr, _ = service.NewBaseSysParamService().DataByKey(context.Background(), "server_ip") - + rpcaddr = "127.0.0.1" closer1, err := jsonrpc.NewMergeClient(context.Background(), "ws://"+rpcaddr+":"+rpcport, "", []interface{}{ &RPCClient, diff --git a/common/utils/go-jsonrpc/handler.go b/common/utils/go-jsonrpc/handler.go index 14f82b447..71dc30b3f 100644 --- a/common/utils/go-jsonrpc/handler.go +++ b/common/utils/go-jsonrpc/handler.go @@ -109,7 +109,10 @@ func (s *handler) register(namespace string, r interface{}) { for i := 0; i < val.NumMethod(); i++ { method := val.Type().Method(i) //fmt.Println("method: %s", method.Name) - if method.Name != "KickPerson" && method.Name != "QuitSelf" { + if method.Name != "KickPerson" && + method.Name != "QuitSelf" && + method.Name != "Kick" && + method.Name != "RegisterLogic" { continue } diff --git a/logic/controller/pet.go b/logic/controller/pet.go index d924ddf01..e4f6b5ab8 100644 --- a/logic/controller/pet.go +++ b/logic/controller/pet.go @@ -171,7 +171,7 @@ func (h Controller) SetPetExp(data *pet.PetSetExpInboundInfo, c *player.Player) }) if ok { - c.AddPetExp(onpet, data.Exp) + c.AddPetExp(onpet, data.Exp, false) } return &pet.PetSetExpOutboundInfo{ diff --git a/logic/service/fight/fightc.go b/logic/service/fight/fightc.go index 2f6a2bf67..6f8d90e00 100644 --- a/logic/service/fight/fightc.go +++ b/logic/service/fight/fightc.go @@ -81,12 +81,7 @@ func (f *FightC) GetRand() *rand.Rand { // 获取随机数 func (f *FightC) IsFirst(play common.PlayerI) bool { - if f.First.Player == play { - - return true - - } - return false + return f.First.Player == play } // 加载进度 @@ -643,9 +638,7 @@ func (f *FightC) enterturn(fattack, sattack *action.SelectSkillAction) { WinnerId: WinnerId, }) }) - defer func() { - f.closefight = true - }() + f.closefight = true } } diff --git a/logic/service/player/pet.go b/logic/service/player/pet.go index c2d571f3b..53e609c17 100644 --- a/logic/service/player/pet.go +++ b/logic/service/player/pet.go @@ -33,8 +33,8 @@ func calculateExperience(level uint32, baseValue uint32) uint32 { // 主函数实现 // 添加经验 -// 超NO 加成 -func (p *Player) AddPetExp(petinfo *model.PetInfo, addExp uint32) { +// 禁止发包 +func (p *Player) AddPetExp(petinfo *model.PetInfo, addExp uint32, bro bool) { originalLevel := petinfo.Level for { @@ -85,6 +85,9 @@ func (p *Player) AddPetExp(petinfo *model.PetInfo, addExp uint32) { if originalLevel != petinfo.Level { petinfo.CalculatePetPane() } + if bro { + return + } t1 := NewTomeeHeader(2508, p.Info.UserID) rrr := &info.PetUpdateOutboundInfo{} @@ -208,7 +211,7 @@ func (player *Player) GenPetInfo(id int, dv, natureId, abilityTypeEnum, shinyid, p.SkillListLen = uint32(len(tttt)) p.CalculatePetPane() p.Hp = p.MaxHp - player.AddPetExp(p, 0) + player.AddPetExp(p, 0, true) return p } diff --git a/logic/service/player/player.go b/logic/service/player/player.go index bff114432..838c1c92c 100644 --- a/logic/service/player/player.go +++ b/logic/service/player/player.go @@ -58,19 +58,26 @@ func NewClientData() *ClientData { } var Mainplayer = &utils.SyncMap[uint32, *Player]{} //玩家数据 +func (c *Conn) Close() { + c.Mu.Lock() + defer c.Mu.Unlock() + c.MainConn.Close() +} func (c *Conn) SendPack(bytes []byte) error { - if t, ok := c.GetConn().Context().(*ClientData); ok { + c.Mu.Lock() + defer c.Mu.Unlock() + if t, ok := c.MainConn.Context().(*ClientData); ok { if t.Wsmsg.Upgraded { // This is the echo server err := wsutil.WriteServerMessage(c.MainConn, ws.OpBinary, bytes) if err != nil { - logging.Infof("conn[%v] [err=%v]", c.GetConn().RemoteAddr().String(), err.Error()) + logging.Infof("conn[%v] [err=%v]", c.MainConn.RemoteAddr().String(), err.Error()) return err } } else { - _, err := c.GetConn().Write(bytes) + _, err := c.MainConn.Write(bytes) if err != nil { glog.Debug(context.Background(), err) diff --git a/logic/service/player/server.go b/logic/service/player/server.go index 4c3502e51..b385c0ffb 100644 --- a/logic/service/player/server.go +++ b/logic/service/player/server.go @@ -5,8 +5,9 @@ import "blazing/common/socket/errorcode" func GetPlayer(c *Conn, userid uint32) *Player { //TODO 这里待优化,可能存在内存泄漏问题 //检查player初始化,是否为conn初始后取map,防止二次连接后存在两个player - - clientdata := c.GetConn().Context().(*ClientData) + c.Mu.Lock() + defer c.Mu.Unlock() + clientdata := c.MainConn.Context().(*ClientData) if clientdata.Player == nil { clientdata.Player = NewPlayer( @@ -37,7 +38,7 @@ func KickPlayer(userid uint32) { //踢出玩家 //实际上这里有个问题,会造成重复保存问题 player1.SendPack(head.Pack(nil)) - player1.MainConn.GetConn().Close() + player1.MainConn.Close() // clientdata.Player = player } diff --git a/logic/service/player/wscodec.go b/logic/service/player/wscodec.go index 44d01123e..9d52e4afb 100644 --- a/logic/service/player/wscodec.go +++ b/logic/service/player/wscodec.go @@ -17,13 +17,6 @@ type Conn struct { Mu sync.Mutex } -func (c *Conn) GetConn() gnet.Conn { - c.Mu.Lock() - defer c.Mu.Unlock() - return c.MainConn - -} - func NewConn(c gnet.Conn) *Conn { return &Conn{MainConn: c} } diff --git a/logic/logic1 b/login/login similarity index 79% rename from logic/logic1 rename to login/login index a380bb0b5..8ff862cd1 100644 Binary files a/logic/logic1 and b/login/login differ