package controller import ( "blazing/common/data/xmlres" "blazing/common/socket/errorcode" "blazing/logic/service/item" "blazing/logic/service/player" "blazing/modules/blazing/model" "github.com/gogf/gf/v2/util/gconv" ) 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 && tt.Price != 0 && c.UseCoins(data.Count*uint32(tt.Price)) { r := c.ItemAdd(model.ItemInfo{ItemId: data.ItemId, ItemCnt: data.Count}) if len(r) != 0 { return &item.BuyOutboundInfo{ ItemId: data.ItemId, Level: 1, Count: data.Count, Coins: c.Info.Coins, }, 0 } //购买失败,返还豆子 c.Info.Coins += data.Count * uint32(tt.Price) } return &item.BuyOutboundInfo{ Coins: c.Info.Coins, }, 0 } func (h Controller) BuyMItem(data *item.BuyMultiInboundInfo, c *player.Player) (result *item.BuyMultiOutboundInfo, err errorcode.ErrorCode) { var rrr []model.ItemInfo for _, v := range data.ItemIds { _, ok := xmlres.ItemsMAP[int(v)] if ok { rrr = append(rrr, model.ItemInfo{ItemId: uint32(v), ItemCnt: 1}) } } r := c.ItemAdd(rrr...) if len(r) != 0 { return &item.BuyMultiOutboundInfo{ Coins: c.Info.Coins, }, 0 } return &item.BuyMultiOutboundInfo{ Coins: c.Info.Coins, }, 0 } func (h Controller) BuyGoldItem(data *item.C2S_GOLD_BUY_PRODUCT, c *player.Player) (result *item.S2C_GoldBuyProductInfo, err errorcode.ErrorCode) { r := xmlres.GoldProductMap[int(data.ProductID)] if !c.UseGold(uint32(data.Count) * uint32(gconv.Uint32(r.Price))) { return nil, errorcode.ErrorCodes.ErrSystemError } r1 := c.ItemAdd(model.ItemInfo{ItemId: uint32(gconv.Uint32(r.ItemID)), ItemCnt: uint32(data.Count)}) isbuycot := len(r1) usegold := uint32(uint32(len(r1))) * uint32(gconv.Uint32(r.Price)*100) c.User.SetGold(c.Info.UserID, c.User.GetGold(uint(c.Info.UserID))-usegold) result = &item.S2C_GoldBuyProductInfo{ Gold: c.User.GetGold(uint(c.Info.UserID)), PayGold: uint32(isbuycot) * uint32(gconv.Uint32(r.Price)), Reserved: 0, } return }