diff --git a/logic/controller/login.go b/logic/controller/login.go index 88e950c00..67ffd6d7a 100644 --- a/logic/controller/login.go +++ b/logic/controller/login.go @@ -16,6 +16,7 @@ import ( "time" "github.com/gogf/gf/v2/os/glog" + "github.com/jinzhu/copier" ) func IsToday(t time.Time) bool { @@ -78,14 +79,14 @@ func (h *Controller) Login(data *user.MAIN_LOGIN_IN, c *player.Conn) (result *us result.PlayerInfo = *t.Info - tt := maps.NewOutInfo() - //copier.Copy(t.Info, tt) - t1 := player.NewTomeeHeader(2001, t.Info.UserID) - defer func() { + tt := maps.NewOutInfo() + copier.CopyWithOption(tt, t.Info, copier.Option{DeepCopy: true}) + //copier.Copy(t.Info, tt) + t1 := player.NewTomeeHeader(2001, t.Info.UserID) space.GetSpace(t.Info.MapID).User.Set(t.Info.UserID, t) space.GetSpace(t.Info.MapID).User.IterCb(func(playerID uint32, player common.PlayerI) { - player.SendPack(t1.Pack(&tt)) + player.SendPack(t1.Pack(tt)) }) diff --git a/logic/controller/map.go b/logic/controller/map.go index 668b65999..ac1669f33 100644 --- a/logic/controller/map.go +++ b/logic/controller/map.go @@ -51,7 +51,7 @@ func (h *Controller) MapList(data *maps.ListMapPlayerInboundInfo, c *player.Play result.Player = make([]maps.OutInfo, 0) space.GetSpace(c.Info.MapID).User.IterCb(func(playerID uint32, player common.PlayerI) { result1 := maps.NewOutInfo() - copier.Copy(result1, player.GetInfo()) + copier.CopyWithOption(result1, player.GetInfo(), copier.Option{DeepCopy: true}) result.Player = append(result.Player, *result1) }) diff --git a/logic/controller/walk.go b/logic/controller/walk.go index 9fd9f7c71..0266bef4a 100644 --- a/logic/controller/walk.go +++ b/logic/controller/walk.go @@ -4,17 +4,16 @@ import ( "blazing/common/socket/errorcode" "blazing/logic/service/maps" "blazing/logic/service/player" - "context" - "github.com/gogf/gf/v2/os/glog" "github.com/jinzhu/copier" ) func (h Controller) Walk(data *maps.WalkInInfo, c *player.Player) (result *maps.WalkOutInfo, err errorcode.ErrorCode) { result = &maps.WalkOutInfo{} - err1 := copier.Copy(result, data) + copier.Copy(result, data) result.UserID = data.Head.UserID - glog.Debug(context.Background(), err1) + c.Info.Pos = data.Point + //glog.Debug(context.Background(), err1) data.Broadcast(c.Info.MapID, *result) //走路的广播 return nil, -1 diff --git a/logic/service/maps/mapin.go b/logic/service/maps/mapin.go index f975b5282..b73d22214 100644 --- a/logic/service/maps/mapin.go +++ b/logic/service/maps/mapin.go @@ -62,13 +62,13 @@ type OutInfo struct { // 上线的地图id Pos model.Pos `fieldDesc:"上线的地图id" json:"pos"` - // 暂时不明给0 + // 动作, 大于10000时为蹲下 Action uint32 `struc:"uint32" fieldDesc:"暂时不明给0" json:"action"` - // 暂时不明给2 + // 动作, 默认情况下为2, 蹲下为3 Direction uint32 `struc:"uint32" default:"2" fieldDesc:"暂时不明给2" json:"direction"` - // 暂时不明给0 + // 变形套装ID ChangeShape uint32 `struc:"uint32" fieldDesc:"暂时不明给0" json:"change_shape"` // 暂时不明给0 diff --git a/logic/service/player/player.go b/logic/service/player/player.go index c32196bba..bff114432 100644 --- a/logic/service/player/player.go +++ b/logic/service/player/player.go @@ -369,7 +369,7 @@ func (lw *Player) WaitForLoginWithCtx(ctx context.Context) error { func (lw *Player) CompleteLogin() { lw.mu.Lock() defer lw.mu.Unlock() - if lw.Info.MapID > 10000 { //如果位于基地,就重置到传送仓 + if lw.Info.MapID > 10000 || lw.Info.MapID == 0 { //如果位于基地,就重置到传送仓 lw.Info.MapID = 1 }