fix(item): 添加购买物品时的金币检查并调整对话奖励逻辑

This commit is contained in:
1
2025-10-23 04:20:10 +00:00
parent 9739598df2
commit a71d7ee9ad
3 changed files with 27 additions and 24 deletions

View File

@@ -47,15 +47,18 @@ func (h Controller) PlayerExp(data *item.ExpTotalRemainInboundInfo, c *player.Pl
func (h Controller) BuyItem(data *item.BuyInboundInfo, c *player.Player) (result *item.BuyOutboundInfo, err errorcode.ErrorCode) {
tt, ok := xmlres.ItemsMAP[int(data.ItemId)]
if ok {
c.Info.Coins -= data.Count * uint32(tt.Price)
if (data.Count * uint32(tt.Price)) <= c.Info.Coins {
c.Info.Coins -= data.Count * uint32(tt.Price)
c.ItemAdd(model.SingleItemInfo{ItemId: data.ItemId, ItemCnt: data.Count})
return &item.BuyOutboundInfo{
ItemId: data.ItemId,
Level: 1,
Count: data.Count,
Coins: c.Info.Coins,
}, 0
}
c.ItemAdd(model.SingleItemInfo{ItemId: data.ItemId, ItemCnt: data.Count})
return &item.BuyOutboundInfo{
ItemId: data.ItemId,
Level: 1,
Count: data.Count,
Coins: c.Info.Coins,
}, 0
}
return &item.BuyOutboundInfo{
@@ -103,14 +106,6 @@ func (h Controller) TalkCate(data *item.TalkCateInboundInfo, c *player.Player) (
for _, te := range xmlres.TalkConfig.Energies {
if te.MapID == uint64(c.Info.MapID) && te.Type == uint64(data.ID) { //
c.Service.Talk(func(t map[uint32]uint32) bool {
_, ok := t[data.ID]
if ok {
t[data.ID] += 1
}
return true
})
_, ok := talkcacche[te.Name]
if !ok {
for _, v := range xmlres.ItemsMAP {
@@ -126,8 +121,17 @@ func (h Controller) TalkCate(data *item.TalkCateInboundInfo, c *player.Player) (
// 2. 生成 1-10 的随机数rand.Intn(10) → 0-9+1 后范围变为 1-10
randomNum := rand.Intn(10) + 1
result.OutList = append(result.OutList, item.CateInfo{ID: uint32(talkcacche[te.Name]), Count: uint32(randomNum)})
c.ItemAdd(model.SingleItemInfo{ItemId: uint32(talkcacche[te.Name]), ItemCnt: uint32(randomNum)})
c.Service.Talk(func(t map[uint32]uint32) bool {
_, ok := t[data.ID]
if ok {
t[data.ID] += 1
result.OutList = append(result.OutList, item.CateInfo{ID: uint32(talkcacche[te.Name]), Count: uint32(randomNum)})
c.ItemAdd(model.SingleItemInfo{ItemId: uint32(talkcacche[te.Name]), ItemCnt: uint32(randomNum)})
}
return true
})
break
}

View File

@@ -14,7 +14,6 @@ import (
"blazing/logic/service/maps"
"blazing/logic/service/player"
"blazing/logic/service/space"
"blazing/modules/blazing/model"
blservice "blazing/modules/blazing/service"
"context"
"time"
@@ -68,12 +67,7 @@ func (h *Controller) Login(data *user.MAIN_LOGIN_IN, c gnet.Conn) (result *user.
if ok {
if tttL.Type == 1 { //日常任务
t.Info.TaskList[i-1] = 0 //重置每日任务
t.Service.Task(uint32(i), func(t *model.TaskEX) bool {
t.Data = []uint32{}
return true
})
}
}

View File

@@ -20,7 +20,12 @@ func (h Controller) AcceptTask(data *task.AcceptTaskInboundInfo, c *player.Playe
if c.Info.TaskList[data.TaskId-1] == 0 {
c.Info.TaskList[data.TaskId-1] = 1
}
c.Service.Task(uint32(data.TaskId), func(t *model.TaskEX) bool {
t.Data = []uint32{}
return true
})
result = &task.AcceptTaskOutboundInfo{}
result.TaskId = data.TaskId
return result, 0