From 77f3d153c69320c8fd8f3b1b0d776fadc3d561d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Sun, 14 Dec 2025 23:28:28 +0800 Subject: [PATCH] =?UTF-8?q?```=20fix(monster):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E9=97=AA=E5=85=89=E5=AE=A0=E7=89=A9=E7=94=9F=E6=88=90=E6=A6=82?= =?UTF-8?q?=E7=8E=87=E5=B9=B6=E4=BF=AE=E5=A4=8D=E6=97=B6=E9=97=B4=E7=A7=8D?= =?UTF-8?q?=E5=AD=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将闪光宠物的生成条件从 `grand.Meet(1, 100)` 修改为 `grand.Meet(30, 100)`, 同时为 `RandSHiny` 方法增加时间偏移参数以提升随机性。 此外,修正了登录任务判断逻辑中的索引范围错误,字段命名优化以及部分冗余代码清理。 ``` --- logic/service/player/Monster.go | 9 +++++++-- logic/service/player/player.go | 4 ++-- logic/service/player/save.go | 2 +- logic/service/space/info/info.go | 4 ++-- modules/blazing/controller/admin/monster_get.go | 2 +- modules/blazing/service/task.go | 13 +++++++------ 6 files changed, 20 insertions(+), 14 deletions(-) diff --git a/logic/service/player/Monster.go b/logic/service/player/Monster.go index 014feb5e3..a0130fa18 100644 --- a/logic/service/player/Monster.go +++ b/logic/service/player/Monster.go @@ -51,8 +51,8 @@ func (p *Player) genMonster() { ttt.Lv = gconv.Uint32(RandomStringFromSlice(lv)) - if xmlres.PetMAP[int(ttt.Id)].CatchRate != 0 && grand.Meet(1, 100) { - ttt.RandSHiny() + if xmlres.PetMAP[int(ttt.Id)].CatchRate != 0 && grand.Meet(30, 100) { + ttt.RandSHiny(int64(i)) } if len(id) == 1 { //说明这里只固定刷一个,概率变尼尔尼奥 @@ -92,10 +92,15 @@ func (p *Player) genMonster() { for i := 0; i < 3; i++ { p.OgreInfo.Data[p.monsters[i]] = t1.Data[p.monsters[i]] + } } p.OgreInfo.Data[oldnum] = OgrePetInfo{} p.OgreInfo.Data[newNum] = t1.Data[newNum] + // for i, e := range p.OgreInfo.Data { + // println(i, e.Id, len(e.ShinyInfo)) + + // } } diff --git a/logic/service/player/player.go b/logic/service/player/player.go index 8512a326e..68b267141 100644 --- a/logic/service/player/player.go +++ b/logic/service/player/player.go @@ -47,7 +47,7 @@ type OgrePetInfo struct { Ext uint32 `struc:"skip"` //是否变尼尔尼奥 } -func (o *OgrePetInfo) RandSHiny() { +func (o *OgrePetInfo) RandSHiny(t int64) { o.ShinyInfo = make([]model.GlowFilter, 1) // 假设 t 是包含 ShinyInfo 字段的结构体,ShinyInfo 是 GlowFilter 类型的切片 o.ShinyInfo[0] = model.GlowFilter{ @@ -72,7 +72,7 @@ func (o *OgrePetInfo) RandSHiny() { } - o.ShinyInfo[0].ColorMatrixFilter = RandomMatrixNoSingleColorBrightDefault(time.Now().Unix(), [5]uint8{0, 0, 0, 1, 0}, 0.6) + o.ShinyInfo[0].ColorMatrixFilter = RandomMatrixNoSingleColorBrightDefault(time.Now().Unix()+t, [5]uint8{0, 0, 0, 1, 0}, 0.6) //g.Dump(ttt.ShinyInfo) // ttt.Shiny = 0 //待确认是否刷新异色 } diff --git a/logic/service/player/save.go b/logic/service/player/save.go index 884cd3d3c..146a51b3e 100644 --- a/logic/service/player/save.go +++ b/logic/service/player/save.go @@ -93,7 +93,7 @@ func (lw *Player) CompleteLogin() { // 定义检查函数:判断84-87索引中是否有任意一个元素不等于3 func (lw *Player) IsNewPlayer() bool { // 遍历84到87的索引 - for i := 84; i <= 87; i++ { + for i := 85; i <= 88; i++ { if lw.Info.GetTask(i) != model.Completed { return true // 只要有一个不等于3,就返回true } diff --git a/logic/service/space/info/info.go b/logic/service/space/info/info.go index 80dd73f21..571920564 100644 --- a/logic/service/space/info/info.go +++ b/logic/service/space/info/info.go @@ -66,7 +66,7 @@ type OutInfo struct { VipStage uint32 `struc:"uint32" fieldDesc:"暂时不明建议先给固定值1" json:"vip_stage"` // 人物状态 =0 步行 !=0 飞行 - ActionType uint32 `struc:"uint32" fieldDesc:"人物状态 =0 步行 !=0 飞行" json:"action_type"` + Flag uint32 `struc:"uint32" fieldDesc:"人物状态 =0 步行 !=0 飞行" json:"action_type"` // 上线的地图id Pos model.Pos `fieldDesc:"上线的地图id" json:"pos"` @@ -94,7 +94,7 @@ type OutInfo struct { // 宠物皮肤暂时无法测试,给 0 PetSkin uint32 `struc:"uint32" fieldDesc:"宠物皮肤暂时无法测试, 给0" json:"pet_skin"` // 填充字符 - Reserved [3]uint32 `struc:"uint32" fieldDesc:"填充字符" json:"reserved"` + Reserved [3]uint32 // 暂时不明给0 FightFlag uint32 `struc:"uint32" fieldDesc:"暂时不明给0" json:"fight_flag"` diff --git a/modules/blazing/controller/admin/monster_get.go b/modules/blazing/controller/admin/monster_get.go index a828217ae..4885115fa 100644 --- a/modules/blazing/controller/admin/monster_get.go +++ b/modules/blazing/controller/admin/monster_get.go @@ -41,7 +41,7 @@ func (c *PetBagController) GetSession(ctx context.Context, req *PetGetReq) (res //r = g.RequestFromCtx(ctx) ) t := model.GenPetInfo( - req.PetTypeId, req.IndividualValue, req.NatureId, req.AbilityTypeEnum, req.IsShiny, req.Level) + req.PetTypeId, req.IndividualValue, req.NatureId, req.AbilityTypeEnum, req.Level, nil) service.NewUserService(uint32(admin.UserId)).Pet.PetAdd(t) return diff --git a/modules/blazing/service/task.go b/modules/blazing/service/task.go index a5c0ea477..dad9586e1 100644 --- a/modules/blazing/service/task.go +++ b/modules/blazing/service/task.go @@ -59,14 +59,15 @@ func IsToday(t1 *gtime.Time) bool { if t1 == nil { return false } + t := t1.Time - // 统一转换为 UTC 时区 - tUTC := t1.Time.UTC() - // 截断 UTC 时间到当天 00:00:00 - nowUTC := time.Now().UTC().Truncate(24 * time.Hour) - tTrunc := tUTC.Truncate(24 * time.Hour) + // 获取当前时间 + now := time.Now() - return nowUTC.Equal(tTrunc) + // 比较年、月、日是否相同 + return t.Year() == now.Year() && + t.Month() == now.Month() && + t.Day() == now.Day() } type TaskService struct {