fix: 修复日志格式化字符串错误和任务奖励逻辑
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
This commit is contained in:
@@ -72,26 +72,30 @@ func (h Controller) DASHIbeiR(req *C2s_MASTER_REWARDSR, c *player.Player) (resul
|
||||
}
|
||||
|
||||
result.ItemList = make([]data.ItemInfo, 0, len(taskInfo.ItemList))
|
||||
c.Service.Task.Exec(masterCupTaskID, func(te *model.Task) bool {
|
||||
progress := bitset32.From(te.Data)
|
||||
if progress.Test(uint(req.ElementType)) {
|
||||
err = errorcode.ErrorCode(errorcode.ErrorCodes.ErrAwardAlreadyClaimed)
|
||||
return false
|
||||
}
|
||||
taskData, taskErr := c.Service.Task.GetTask(masterCupTaskID)
|
||||
if taskErr != nil {
|
||||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
|
||||
}
|
||||
|
||||
consumeMasterCupItems(c, requiredItems)
|
||||
progress.Set(uint(req.ElementType))
|
||||
te.Data = progress.Bytes()
|
||||
progress := bitset32.From(taskData.Data)
|
||||
if progress.Test(uint(req.ElementType)) {
|
||||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrAwardAlreadyClaimed)
|
||||
}
|
||||
|
||||
if taskInfo.Pet != nil {
|
||||
c.Service.Pet.PetAdd(taskInfo.Pet, 0)
|
||||
result.CaptureTime = taskInfo.Pet.CatchTime
|
||||
result.PetTypeId = taskInfo.Pet.ID
|
||||
}
|
||||
consumeMasterCupItems(c, requiredItems)
|
||||
progress.Set(uint(req.ElementType))
|
||||
taskData.Data = progress.Bytes()
|
||||
if taskErr = c.Service.Task.SetTask(taskData); taskErr != nil {
|
||||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
|
||||
}
|
||||
|
||||
appendMasterCupRewardItems(c, result, taskInfo.ItemList)
|
||||
return true
|
||||
})
|
||||
if taskInfo.Pet != nil {
|
||||
c.Service.Pet.PetAdd(taskInfo.Pet, 0)
|
||||
result.CaptureTime = taskInfo.Pet.CatchTime
|
||||
result.PetTypeId = taskInfo.Pet.ID
|
||||
}
|
||||
|
||||
appendMasterCupRewardItems(c, result, taskInfo.ItemList)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -17,15 +17,13 @@ func (h Controller) IsCollect(
|
||||
ID: data.Type,
|
||||
}
|
||||
|
||||
c.Service.Task.Exec(uint32(1335), func(te *model.Task) bool {
|
||||
|
||||
r := bitset32.From(te.Data)
|
||||
// 分支未完成时,标记完成并发放奖励
|
||||
taskData, taskErr := c.Service.Task.GetTask(uint32(1335))
|
||||
if taskErr == nil {
|
||||
r := bitset32.From(taskData.Data)
|
||||
if r.Test(uint(data.Type)) {
|
||||
result.IsCom = 1
|
||||
}
|
||||
return false
|
||||
})
|
||||
}
|
||||
|
||||
_, ok := lo.Find([]uint32{1, 2, 3, 4, 301}, func(item uint32) bool {
|
||||
return data.Type == item
|
||||
@@ -59,14 +57,17 @@ func (h Controller) Collect(
|
||||
return data.Type == item
|
||||
})
|
||||
if res == model.Completed && ok { //这块是为了兼容旧版本
|
||||
c.Service.Task.Exec(uint32(1335), func(te *model.Task) bool {
|
||||
taskData, taskErr := c.Service.Task.GetTask(uint32(1335))
|
||||
if taskErr != nil {
|
||||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
|
||||
}
|
||||
|
||||
r := bitset32.From(te.Data)
|
||||
|
||||
r.Set(uint(data.Type))
|
||||
te.Data = r.Bytes()
|
||||
return true
|
||||
})
|
||||
r := bitset32.From(taskData.Data)
|
||||
r.Set(uint(data.Type))
|
||||
taskData.Data = r.Bytes()
|
||||
if taskErr = c.Service.Task.SetTask(taskData); taskErr != nil {
|
||||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
|
||||
}
|
||||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
|
||||
}
|
||||
|
||||
@@ -80,21 +81,22 @@ func (h Controller) Collect(
|
||||
if !lo.Contains(validIDs, data.ID) {
|
||||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
|
||||
}
|
||||
c.Service.Task.Exec(uint32(1335), func(te *model.Task) bool {
|
||||
taskData, taskErr := c.Service.Task.GetTask(uint32(1335))
|
||||
if taskErr != nil {
|
||||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
|
||||
}
|
||||
|
||||
r := bitset32.From(te.Data)
|
||||
// 分支未完成时,标记完成并发放奖励
|
||||
if !r.Test(uint(data.Type)) {
|
||||
r.Set(uint(data.Type))
|
||||
te.Data = r.Bytes()
|
||||
r := model.GenPetInfo(int(data.ID), -1, -1, 0, 1, nil, 0)
|
||||
c.Service.Pet.PetAdd(r, 0)
|
||||
result.CatchTime = r.CatchTime
|
||||
|
||||
return true
|
||||
r := bitset32.From(taskData.Data)
|
||||
if !r.Test(uint(data.Type)) {
|
||||
r.Set(uint(data.Type))
|
||||
taskData.Data = r.Bytes()
|
||||
if taskErr = c.Service.Task.SetTask(taskData); taskErr != nil {
|
||||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
|
||||
}
|
||||
return false
|
||||
})
|
||||
petInfo := model.GenPetInfo(int(data.ID), -1, -1, 0, 1, nil, 0)
|
||||
c.Service.Pet.PetAdd(petInfo, 0)
|
||||
result.CatchTime = petInfo.CatchTime
|
||||
}
|
||||
|
||||
if result.CatchTime == 0 {
|
||||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrAwardAlreadyClaimed)
|
||||
|
||||
@@ -52,7 +52,7 @@ func PprofWeb() {
|
||||
}
|
||||
|
||||
// 所有端口都失败时的兜底
|
||||
errMsg := fmt.Sprintf("[FATAL] 端口9909/9910均监听失败,pprof服务启动失败")
|
||||
errMsg := "[FATAL] 端口9909/9910均监听失败,pprof服务启动失败"
|
||||
fmt.Println(errMsg)
|
||||
// 可选:根据业务需求决定是否panic
|
||||
// panic(errMsg)
|
||||
@@ -148,7 +148,7 @@ func monitorMemAndQuit() {
|
||||
|
||||
// 4. 超70%阈值,执行优雅退出
|
||||
if usedRatio >= memThresholdRatio {
|
||||
log.Fatalf("内存占比达%.1f%%,超过90%阈值,程序开始退出", usedRatio*100)
|
||||
log.Fatalf("内存占比达%.1f%%,超过90%%阈值,程序开始退出", usedRatio*100)
|
||||
// ########## 可选:这里添加你的优雅清理逻辑 ##########
|
||||
// 如:关闭数据库连接、释放文件句柄、保存业务状态、推送退出告警等
|
||||
cleanup()
|
||||
|
||||
@@ -56,29 +56,24 @@ func (p *Player) TawerCompletedTask(taskID int, ot int) {
|
||||
}
|
||||
|
||||
// 处理指定分支(ot):仅奖励存在时才标记分支完成并发奖
|
||||
p.Service.Task.Exec(uint32(taskID), func(te *model.Task) bool {
|
||||
taskData, err := p.Service.Task.GetTask(uint32(taskID))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 核心检查:指定分支的奖励是否存在
|
||||
branchGift := p.getTaskGift(taskID, ot)
|
||||
if branchGift == nil {
|
||||
return false
|
||||
}
|
||||
// 核心检查:指定分支的奖励是否存在
|
||||
branchGift := p.getTaskGift(taskID, ot)
|
||||
if branchGift == nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 初始化分支数据
|
||||
if te.Data == nil {
|
||||
te.Data = []uint32{}
|
||||
}
|
||||
|
||||
r := bitset32.From(te.Data)
|
||||
// 分支未完成时,标记完成并发放奖励
|
||||
if !r.Test(uint(ot)) {
|
||||
r.Set(uint(ot))
|
||||
p.bossgive(taskID, ot)
|
||||
te.Data = r.Bytes()
|
||||
return true
|
||||
}
|
||||
return false
|
||||
})
|
||||
r := bitset32.From(taskData.Data)
|
||||
if !r.Test(uint(ot)) {
|
||||
r.Set(uint(ot))
|
||||
p.bossgive(taskID, ot)
|
||||
taskData.Data = r.Bytes()
|
||||
_ = p.Service.Task.SetTask(taskData)
|
||||
}
|
||||
}
|
||||
|
||||
// bossgive 发放任务奖励(逻辑保持不变,仅补充注释)
|
||||
|
||||
Reference in New Issue
Block a user