package action import ( "fmt" "github.com/golang/protobuf/proto" "go.mongodb.org/mongo-driver/bson" "pro2d/common" "pro2d/common/components" "pro2d/common/db/mongoproxy" "pro2d/common/logger" "pro2d/csvdata" "pro2d/models" "pro2d/pb" "strconv" ) /* EquipmentDelRpc 删除装备 2 删除失败 */ func EquipmentDelRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) { req := pb.EquipmentDelReq{} if err := proto.Unmarshal(msg.GetData(), &req); err != nil { logger.Error("loginRpc err: %v", err) return 1, nil } filter := bson.D{{"id", bson.D{{"$in", req.Id}}}} if err := mongoproxy.DelMany("equipment", filter); err != nil { logger.Error(err.Error()) return 2, nil } for _, id := range req.Id { delete(role.Equipments, id) } return 0, nil } /* HeroUpLevelRpc 英雄升级 2 item不存在 3 itemType错误 4 itemExp 不存在 5 英雄不存在 6 消耗物品失败 */ func HeroUpLevelRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) { req := pb.HeroUpLevelReq{} if err := proto.Unmarshal(msg.GetData(), &req); err != nil { logger.Error("loginRpc err: %v", err) return 1, nil } items := common.StringToMapNum(req.Items) var hero *models.HeroModel for id, count := range items { itemId, err := strconv.Atoi(id) if err != nil { continue } item := csvdata.Get().TbItemData.Get(int32(itemId)) if item == nil { return 2, nil } if item.Type != 2003 { return 3, nil } itemExp := csvdata.Get().TbExpItemData.Get(item.ID) if itemExp == nil { return 4, nil } h := role.Heros[req.HeroId] if h == nil { return 5, nil } if !role.CostItem(fmt.Sprintf("%d", item.ID), count) { return 6, nil } hero = h.(*models.HeroModel) level, exp := hero.UpLevel(itemExp.Exp) h.SetProperty("level", level) h.SetProperty("exp", exp) } return 0, hero.Hero }