diff --git a/logic/controller/map.go b/logic/controller/map.go index bef36b23..356d354e 100644 --- a/logic/controller/map.go +++ b/logic/controller/map.go @@ -3,6 +3,7 @@ package controller import ( "blazing/common/socket/errorcode" "sync/atomic" + "time" "blazing/logic/service/fight" "blazing/logic/service/maphot" @@ -52,7 +53,7 @@ func (h *Controller) MapLeave(data *space.LeaveMapInboundInfo, c *player.Player) } func (h *Controller) MapList(data *space.ListMapPlayerInboundInfo, c *player.Player) (result *info.ListMapPlayerOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的 atomic.StoreUint32(&c.Canmon, 2) - + c.MapNPC.Reset(5 * time.Second) result = &info.ListMapPlayerOutboundInfo{ Player: c.GetSpace().GetInfo(c), } diff --git a/logic/service/player/Monster.go b/logic/service/player/Monster.go index e6912565..c9caa69c 100644 --- a/logic/service/player/Monster.go +++ b/logic/service/player/Monster.go @@ -25,7 +25,6 @@ func (p *Player) Next(time.Time) time.Time { if atomic.LoadUint32(&p.Canmon) != 1 { return time.Now().Add(5 * time.Second) } - return time.Now().Add(10 * time.Second) @@ -93,6 +92,7 @@ func (p *Player) genMonster() { } if atomic.CompareAndSwapUint32(&p.Canmon, 2, 1) { + p.MapNPC.Reset(10 * time.Second) p.OgreInfo = OgreInfo{} //切地图清空 for i := 0; i < 3; i++ { diff --git a/logic/service/player/new.go b/logic/service/player/new.go index 4d8f9b8a..1258888c 100644 --- a/logic/service/player/new.go +++ b/logic/service/player/new.go @@ -5,6 +5,7 @@ import ( "blazing/logic/service/common" "blazing/modules/base/service" "blazing/modules/blazing/model" + "time" ) // NewPlayer 使用 Options 模式创建 Player 实例 @@ -18,7 +19,7 @@ func NewPlayer(opts ...PlayerOption) *Player { p.User = service.NewBaseSysUserService() p.monsters = generateThreeUniqueNumbers() p.Done = NewDone(p) //发布订阅事件 - p.MapNPC = cool.Cron.CustomFunc(p, func() { + p.MapNPC = cool.Cron.ScheduleFunc(10*time.Second, func() { // 获取当前地图的怪物配置