package controller import ( "blazing/common/data/xmlres" "blazing/common/socket/errorcode" "blazing/logic/service/fight" "blazing/logic/service/item" "blazing/logic/service/player" "blazing/modules/blazing/model" "strings" "github.com/gogf/gf/v2/util/gconv" "github.com/gogf/gf/v2/util/grand" "github.com/jinzhu/copier" ) func (h Controller) UserItemList(data *item.ItemListInboundInfo, c *player.Player) (result *item.ItemListOutboundInfo, err errorcode.ErrorCode) { result = &item.ItemListOutboundInfo{} result.ItemList = make([]model.SingleItemInfo, 0) item := c.Service.Item.Get(data.Param1, data.Param2) for _, v := range item { var vv model.SingleItemInfo vv.ItemId = v.ItemId vv.ItemCnt = v.ItemCnt vv.LeftTime = 360000 result.ItemList = append(result.ItemList, vv) } return result, 0 } func (h Controller) ItemUsePet(data *item.C2S_USE_PET_ITEM_OUT_OF_FIGHT, c *player.Player) (result *item.S2C_USE_PET_ITEM_OUT_OF_FIGHT, err errorcode.ErrorCode) { _, onpet, ok := c.FindPet(data.CatchTime) if !ok { return nil, errorcode.ErrorCodes.Err10401 } // 绑定变量到switch,显式匹配true switch itemID := data.ItemID; true { //这是学习力遗忘 case itemID >= 300037 && itemID <= 300041: onpet.Ev[itemID-300037+1] = 0 // 体力遗忘 case itemID == 300042: onpet.Ev[0] = 0 // 全能遗忘 case itemID == 300650: onpet.Ev = [6]uint32{} //性格随机 case itemID == 300025: onpet.Nature = uint32(grand.Intn(25)) case itemID >= 240042 && itemID <= 240056: if xmlres.ItemsMAP[int(itemID)].Nature != nil { onpet.Nature = gconv.Uint32(*xmlres.ItemsMAP[int(itemID)].Nature) } if xmlres.ItemsMAP[int(itemID)].NatureSet != nil { rr := strings.Split(*xmlres.ItemsMAP[int(itemID)].NatureSet, " ") onpet.Nature = gconv.Uint32(rr[grand.Intn(len(rr))-1]) } default: // 无效ID处理 return nil, errorcode.ErrorCodes.ErrSystemError } if c.Service.Item.CheakItem(data.ItemID) == 0 { return nil, errorcode.ErrorCodes.ErrSystemError } c.Service.Item.SubItem(data.ItemID, 1) result = &item.S2C_USE_PET_ITEM_OUT_OF_FIGHT{} onpet.CalculatePetPane() copier.Copy(&result, onpet) return result, 0 } func (h Controller) RESET_NATURE(data *item.C2S_PET_RESET_NATURE, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { if c.Service.Item.CheakItem(data.ItemId) == 0 { return nil, errorcode.ErrorCodes.ErrSystemError } _, onpet, ok := c.FindPet(data.CatchTime) if !ok { return nil, errorcode.ErrorCodes.Err10401 } onpet.Nature = data.Nature onpet.CalculatePetPane() c.Service.Item.SubItem(data.ItemId, 1) return result, 0 }