ddc88bac
zhangqijia
fix: 记录战斗
|
1
|
// 游戏服角色相关操作
|
69d286a7
zhangqijia
fix: 插件用来做部分热更
|
2
|
package action
|
9644352a
zhangqijia
登录服改为http,游戏服改为长连...
|
3
4
|
import (
|
29a163be
zhangqijia
fix: CreateReq ui...
|
5
|
"fmt"
|
9644352a
zhangqijia
登录服改为http,游戏服改为长连...
|
6
|
"github.com/golang/protobuf/proto"
|
f74e34e3
zhangqijia
fix: 批量删除装备
|
7
|
"go.mongodb.org/mongo-driver/bson"
|
765431a4
zhangqijia
增加schema接口, 抽象 mo...
|
8
|
"pro2d/common"
|
0e5d52de
zhangqijia
reactor: 重构底层框架1.0
|
9
|
"pro2d/common/components"
|
51d48d11
zhangqijia
fix: 删除装备 删除物品请求
|
10
|
"pro2d/common/db/mongoproxy"
|
29a163be
zhangqijia
fix: CreateReq ui...
|
11
|
"pro2d/common/db/redisproxy"
|
765431a4
zhangqijia
增加schema接口, 抽象 mo...
|
12
|
"pro2d/common/logger"
|
ddc88bac
zhangqijia
fix: 记录战斗
|
13
|
"pro2d/csvdata"
|
0e5d52de
zhangqijia
reactor: 重构底层框架1.0
|
14
|
"pro2d/models"
|
7f269318
zhangqijia
add pb.go; 添加关闭连接...
|
15
|
"pro2d/pb"
|
9644352a
zhangqijia
登录服改为http,游戏服改为长连...
|
16
17
|
)
|
4a502dd5
zhangqijia
fix: game,account...
|
18
|
// HeartRpc 心跳请求
|
3e92be67
zhangqijia
fix: 优化协议,除了登录和创建...
|
19
|
func HeartRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) {
|
0cc58315
zhangqijia
添加定时器, 检查心跳
|
20
|
//msg.Conn.SetLastHeartCheckTime()
|
9644352a
zhangqijia
登录服改为http,游戏服改为长连...
|
21
22
23
|
return 0, nil
}
|
4a502dd5
zhangqijia
fix: game,account...
|
24
|
// getRandomName 随机名字
|
29a163be
zhangqijia
fix: CreateReq ui...
|
25
26
|
func getRandomName() string {
name := ""
|
eadc9aff
zhangqijia
feat: 增加上阵下阵协议,增加...
|
27
|
for {
|
29a163be
zhangqijia
fix: CreateReq ui...
|
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
name = common.RandomName(common.DefaultName)
if name == "" {
continue
}
relay, err := redisproxy.SETNX(fmt.Sprintf(common.NickNames, name), "1")
if err != nil {
continue
}
if relay.(int64) == 1 {
break
}
}
return name
}
|
4a502dd5
zhangqijia
fix: game,account...
|
44
45
46
47
48
|
/*
CreateRpc 创建角色请求
1: proto解析错误
2: 角色不存在
*/
|
3e92be67
zhangqijia
fix: 优化协议,除了登录和创建...
|
49
|
func CreateRpc(role1 *models.RoleModel, msg components.IMessage) (int32, interface{}) {
|
9644352a
zhangqijia
登录服改为http,游戏服改为长连...
|
50
|
req := pb.CreateReq{}
|
0e5d52de
zhangqijia
reactor: 重构底层框架1.0
|
51
|
if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
|
cad2b7f3
zhangqijia
reactor: 重构目录, 重构...
|
52
|
logger.Error("CreateRpc err: %v", err)
|
101d1cc1
zhangqijia
feat: 一个基于redis的自...
|
53
|
return 1, err
|
9644352a
zhangqijia
登录服改为http,游戏服改为长连...
|
54
|
}
|
29a163be
zhangqijia
fix: CreateReq ui...
|
55
|
role := models.RoleExistByUid(req.Token)
|
9644352a
zhangqijia
登录服改为http,游戏服改为长连...
|
56
|
if role != nil {
|
101d1cc1
zhangqijia
feat: 一个基于redis的自...
|
57
58
59
60
61
62
|
return 2, "role exists"
}
roleId, err := common.GetNextRoleId()
if err != nil {
return 3, err
|
9644352a
zhangqijia
登录服改为http,游戏服改为长连...
|
63
64
|
}
|
9644352a
zhangqijia
登录服改为http,游戏服改为长连...
|
65
|
role = models.NewRole(roleId)
|
c47aa250
zhangqijia
feat: 增加GM相关接口。详情...
|
66
|
role.Role.Uid = req.Token
|
8f6d9ea9
zhangqijia
fix: UpLevel
|
67
|
role.Role.Level = 1
|
29a163be
zhangqijia
fix: CreateReq ui...
|
68
|
role.Role.Nick = getRandomName()
|
69d286a7
zhangqijia
fix: 插件用来做部分热更
|
69
|
if err := role.Create(); err != nil {
|
cad2b7f3
zhangqijia
reactor: 重构目录, 重构...
|
70
|
logger.Error("CreateRpc role create err: %v", err)
|
a24dea4c
zhangqijia
fix: id自增做了写更新。阵容...
|
71
|
return 4, nil
|
9644352a
zhangqijia
登录服改为http,游戏服改为长连...
|
72
|
}
|
8d983031
zhangqijia
loginReq uid -> t...
|
73
|
role.InitRole()
|
9644352a
zhangqijia
登录服改为http,游戏服改为长连...
|
74
75
76
|
return 0, nil
}
|
4a502dd5
zhangqijia
fix: game,account...
|
77
|
// ChangeTeamRpc 阵容变换
|
3e92be67
zhangqijia
fix: 优化协议,除了登录和创建...
|
78
|
func ChangeTeamRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) {
|
a24dea4c
zhangqijia
fix: id自增做了写更新。阵容...
|
79
|
req := pb.ChangeTeamReq{}
|
eadc9aff
zhangqijia
feat: 增加上阵下阵协议,增加...
|
80
81
82
83
|
if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
logger.Error("loginRpc err: %v", err)
return 1, nil
}
|
eadc9aff
zhangqijia
feat: 增加上阵下阵协议,增加...
|
84
85
86
|
role.UpdateTeam(req.Team)
return 0, nil
|
69d286a7
zhangqijia
fix: 插件用来做部分热更
|
87
|
}
|
17fe96be
zhangqijia
feat: 增加装备相关数据和协议
|
88
|
|
4a502dd5
zhangqijia
fix: game,account...
|
89
90
91
92
|
/*
HeroEquipReferRpc 穿戴/脱 装备
2: 装备不存在
*/
|
3e92be67
zhangqijia
fix: 优化协议,除了登录和创建...
|
93
|
func HeroEquipReferRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) {
|
17fe96be
zhangqijia
feat: 增加装备相关数据和协议
|
94
95
96
97
98
|
req := pb.HeroEquipReferReq{}
if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
logger.Error("loginRpc err: %v", err)
return 1, nil
}
|
17fe96be
zhangqijia
feat: 增加装备相关数据和协议
|
99
100
101
|
e, ok := role.Equipments[req.EquipId]
if !ok {
|
3e92be67
zhangqijia
fix: 优化协议,除了登录和创建...
|
102
|
return 2, nil
|
17fe96be
zhangqijia
feat: 增加装备相关数据和协议
|
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
}
equip := e.(*models.EquipModel)
// 装备未被穿戴
if equip.Equip.HeroId == "" {
h, ok := role.Heros[req.HeroId]
if ok {
hero := h.(*models.HeroModel)
hero.UpdateEquipment(equip.Equip.Id, equip.Equip.Type)
}
equip.SetProperty("heroid", req.HeroId)
} else {
//装备已经被穿戴
if req.HeroId != equip.Equip.HeroId {
h, ok := role.Heros[equip.Equip.HeroId]
if ok {
hero := h.(*models.HeroModel)
hero.UpdateEquipment(equip.Equip.Id, "")
}
h, ok = role.Heros[req.HeroId]
if ok {
hero := h.(*models.HeroModel)
hero.UpdateEquipment(equip.Equip.Id, equip.Equip.Type)
}
equip.SetProperty("heroid", req.HeroId)
}
}
return 0, nil
}
|
51d48d11
zhangqijia
fix: 删除装备 删除物品请求
|
136
|
|
4a502dd5
zhangqijia
fix: game,account...
|
137
138
139
140
|
/*
RoleClearItemsRpc 删除物品
2 删除失败
*/
|
3e92be67
zhangqijia
fix: 优化协议,除了登录和创建...
|
141
|
func RoleClearItemsRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) {
|
51d48d11
zhangqijia
fix: 删除装备 删除物品请求
|
142
143
|
req := pb.RoleClearItemsReq{}
if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
|
8f6d9ea9
zhangqijia
fix: UpLevel
|
144
|
logger.Error("proto rpc err: %v", err)
|
51d48d11
zhangqijia
fix: 删除装备 删除物品请求
|
145
146
|
return 1, nil
}
|
51d48d11
zhangqijia
fix: 删除装备 删除物品请求
|
147
|
|
c99d59cc
zhangqijia
fix: 批量删除物品
|
148
149
150
151
152
153
154
155
156
157
158
159
160
|
bkup := make(common.IMapStringNum)
for _, item := range req.Items {
for k, v := range common.StringToMapNum(item) {
tmp, ok := bkup[k]
if !ok {
tmp = 0
}
bkup[k] = v + tmp
}
}
if !role.CostItems(bkup) {
logger.Error("cost err: %s", common.MapNumToString(bkup))
|
3e92be67
zhangqijia
fix: 优化协议,除了登录和创建...
|
161
|
return 2, nil
|
51d48d11
zhangqijia
fix: 删除装备 删除物品请求
|
162
163
164
165
|
}
return 0, nil
}
|
4a502dd5
zhangqijia
fix: game,account...
|
166
167
168
169
|
/*
EquipmentDelRpc 删除装备
2 删除失败
*/
|
3e92be67
zhangqijia
fix: 优化协议,除了登录和创建...
|
170
|
func EquipmentDelRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) {
|
51d48d11
zhangqijia
fix: 删除装备 删除物品请求
|
171
172
173
174
175
|
req := pb.EquipmentDelReq{}
if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
logger.Error("loginRpc err: %v", err)
return 1, nil
}
|
f74e34e3
zhangqijia
fix: 批量删除装备
|
176
177
178
179
180
|
filter := make(bson.D, 5)
for _, id := range req.Id {
filter = append(filter, bson.E{Key: "id", Value: id})
}
if err := mongoproxy.DelMany("equipment", filter); err != nil {
|
51d48d11
zhangqijia
fix: 删除装备 删除物品请求
|
181
|
logger.Error(err.Error())
|
3e92be67
zhangqijia
fix: 优化协议,除了登录和创建...
|
182
|
return 2, nil
|
51d48d11
zhangqijia
fix: 删除装备 删除物品请求
|
183
|
}
|
f74e34e3
zhangqijia
fix: 批量删除装备
|
184
185
186
187
|
for _, id := range req.Id {
delete(role.Equipments, id)
}
|
51d48d11
zhangqijia
fix: 删除装备 删除物品请求
|
188
189
190
|
return 0, nil
}
|
ddc88bac
zhangqijia
fix: 记录战斗
|
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
/*
RoleStartBattleRpc 开始战斗
*/
func RoleStartBattleRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) {
req := pb.RoleStartBattleReq{}
if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
logger.Error("loginRpc err: %v", err)
return 1, nil
}
//TODO 消耗体力
return 0, nil
}
/*
RoleEndBattleRpc 结束战斗
2 关卡不存在
RoleEndBattleRsp 返回值
*/
func RoleEndBattleRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) {
req := pb.RoleEndBattleReq{}
if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
logger.Error("loginRpc err: %v", err)
return 1, nil
}
|
ddc88bac
zhangqijia
fix: 记录战斗
|
219
|
chapterInfo := csvdata.Get().TbRogueChapter.Get(req.ChapterId)
|
ddc88bac
zhangqijia
fix: 记录战斗
|
220
|
chapterCount, first := role.Role.PassChapters[req.ChapterId]
|
ddc88bac
zhangqijia
fix: 记录战斗
|
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
|
carbonInfo, ok := chapterInfo.Carbons[req.CarbonId]
if !ok {
logger.Error("carbonInfo not exists")
return 2, nil
}
reward := make(common.IMapStringNum)
if !first {
role.Role.PassChapters[req.ChapterId] = 1
for k, v := range common.StringToMapNum(carbonInfo.FirstAward) {
reward[k] = v
}
} else {
role.Role.PassChapters[req.ChapterId] = chapterCount + 1
}
for k, v := range common.StringToMapNum(carbonInfo.NormalAward) {
rv, ok := reward[k]
if !ok {
reward[k] = v
} else {
reward[k] = rv + v
}
}
//award
reward = role.Award(reward)
//exp
|
686ff048
zhangqijia
fix: 结束战斗增加字段
|
249
|
var amount int32
|
ddc88bac
zhangqijia
fix: 记录战斗
|
250
|
if req.Pass {
|
686ff048
zhangqijia
fix: 结束战斗增加字段
|
251
|
amount = carbonInfo.CarbonExp
|
ddc88bac
zhangqijia
fix: 记录战斗
|
252
|
} else {
|
686ff048
zhangqijia
fix: 结束战斗增加字段
|
253
|
amount = carbonInfo.CarbonFailExp
|
ddc88bac
zhangqijia
fix: 记录战斗
|
254
|
}
|
686ff048
zhangqijia
fix: 结束战斗增加字段
|
255
|
level, exp := role.UpLevel(amount)
|
2ea16684
zhangqijia
fix: update
|
256
|
role.UpdateProperties(map[string]interface{}{"level": level, "exp": exp}, true)
|
ddc88bac
zhangqijia
fix: 记录战斗
|
257
|
|
8f6d9ea9
zhangqijia
fix: UpLevel
|
258
|
rsp := &pb.RoleEndBattleRsp{
|
686ff048
zhangqijia
fix: 结束战斗增加字段
|
259
260
261
262
263
|
RoleLevel: level,
RoleExp: exp,
RoleExpamount: amount,
Pass: req.Pass,
Reward: common.MapNumToString(reward),
|
ddc88bac
zhangqijia
fix: 记录战斗
|
264
265
266
|
}
return 0, rsp
}
|