Blame view

cmd/gameserver/action/HeroAction.go 1.85 KB
18cbcf53   zhangqijia   feat: 英雄升级
1
2
3
4
5
6
  package action
  
  import (
  	"fmt"
  	"github.com/golang/protobuf/proto"
  	"go.mongodb.org/mongo-driver/bson"
c8e2cc53   zhangqijia   fix: 英雄升级,经验书批量操作
7
  	"pro2d/common"
18cbcf53   zhangqijia   feat: 英雄升级
8
9
10
11
12
13
  	"pro2d/common/components"
  	"pro2d/common/db/mongoproxy"
  	"pro2d/common/logger"
  	"pro2d/csvdata"
  	"pro2d/models"
  	"pro2d/pb"
c8e2cc53   zhangqijia   fix: 英雄升级,经验书批量操作
14
  	"strconv"
18cbcf53   zhangqijia   feat: 英雄升级
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
  )
  
  /*
  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
  	}
c8e2cc53   zhangqijia   fix: 英雄升级,经验书批量操作
54
55
56
57
58
59
60
  	items := common.StringToMapNum(req.Items)
  	var hero *models.HeroModel
  	for id, count := range items {
  		itemId, err := strconv.Atoi(id)
  		if err != nil {
  			continue
  		}
18cbcf53   zhangqijia   feat: 英雄升级
61
  
c8e2cc53   zhangqijia   fix: 英雄升级,经验书批量操作
62
63
64
65
66
67
68
  		item := csvdata.Get().TbItemData.Get(int32(itemId))
  		if item == nil {
  			return 2, nil
  		}
  		if item.Type != 2003 {
  			return 3, nil
  		}
18cbcf53   zhangqijia   feat: 英雄升级
69
  
c8e2cc53   zhangqijia   fix: 英雄升级,经验书批量操作
70
71
72
73
  		itemExp := csvdata.Get().TbExpItemData.Get(item.ID)
  		if itemExp == nil {
  			return 4, nil
  		}
18cbcf53   zhangqijia   feat: 英雄升级
74
  
c8e2cc53   zhangqijia   fix: 英雄升级,经验书批量操作
75
76
77
78
79
80
81
82
  		h := role.Heros[req.HeroId]
  		if h == nil {
  			return 5, nil
  		}
  
  		if !role.CostItem(fmt.Sprintf("%d", item.ID), count) {
  			return 6, nil
  		}
18cbcf53   zhangqijia   feat: 英雄升级
83
  
c8e2cc53   zhangqijia   fix: 英雄升级,经验书批量操作
84
  		hero = h.(*models.HeroModel)
b0e5082c   zhangqijia   fix: 英雄升级函数优化
85
  		level, exp := hero.UpLevel(itemExp.Exp * count)
c8e2cc53   zhangqijia   fix: 英雄升级,经验书批量操作
86
87
  		h.SetProperty("level", level)
  		h.SetProperty("exp", exp)
18cbcf53   zhangqijia   feat: 英雄升级
88
89
  	}
  
c8e2cc53   zhangqijia   fix: 英雄升级,经验书批量操作
90
  	return 0, hero.Hero
18cbcf53   zhangqijia   feat: 英雄升级
91
  }