商队优化

This commit is contained in:
meixiongfeng 2023-05-19 18:37:31 +08:00
parent 2d49493354
commit 1e32c6c476
13 changed files with 536 additions and 272 deletions

View File

@ -664,8 +664,8 @@
"fitnessModelId": "25001", "fitnessModelId": "25001",
"business_ticket": 40, "business_ticket": 40,
"business_money": { "business_money": {
"a": "item", "a": "attr",
"t": "141001", "t": "merchantmoney",
"n": 1 "n": 1
}, },
"business_moneynum": 10000, "business_moneynum": 10000,

View File

@ -3,6 +3,7 @@
"skillid": 40101, "skillid": 40101,
"hid": "25001", "hid": "25001",
"skilltyp": 0, "skilltyp": 0,
"typeline": 1,
"before": [ "before": [
0 0
], ],
@ -39,6 +40,7 @@
"skillid": 40102, "skillid": 40102,
"hid": "25001", "hid": "25001",
"skilltyp": 0, "skilltyp": 0,
"typeline": 1,
"before": [ "before": [
40101 40101
], ],
@ -70,6 +72,7 @@
"skillid": 40103, "skillid": 40103,
"hid": "25001", "hid": "25001",
"skilltyp": 0, "skilltyp": 0,
"typeline": 1,
"before": [ "before": [
40102 40102
], ],
@ -101,6 +104,7 @@
"skillid": 10101, "skillid": 10101,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 1,
"before": [ "before": [
40103 40103
], ],
@ -132,6 +136,7 @@
"skillid": 10102, "skillid": 10102,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 1,
"before": [ "before": [
10101 10101
], ],
@ -163,6 +168,7 @@
"skillid": 10103, "skillid": 10103,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 1,
"before": [ "before": [
10102 10102
], ],
@ -194,6 +200,7 @@
"skillid": 10104, "skillid": 10104,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 1,
"before": [ "before": [
10103 10103
], ],
@ -225,6 +232,7 @@
"skillid": 10105, "skillid": 10105,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 1,
"before": [ "before": [
10104 10104
], ],
@ -261,6 +269,7 @@
"skillid": 10106, "skillid": 10106,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 2,
"before": [ "before": [
10105 10105
], ],
@ -292,6 +301,7 @@
"skillid": 20101, "skillid": 20101,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 2,
"before": [ "before": [
10106 10106
], ],
@ -323,6 +333,7 @@
"skillid": 20102, "skillid": 20102,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 2,
"before": [ "before": [
20101 20101
], ],
@ -354,6 +365,7 @@
"skillid": 20103, "skillid": 20103,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 2,
"before": [ "before": [
20102 20102
], ],
@ -385,6 +397,7 @@
"skillid": 20104, "skillid": 20104,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 2,
"before": [ "before": [
20103 20103
], ],
@ -416,6 +429,7 @@
"skillid": 20105, "skillid": 20105,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 2,
"before": [ "before": [
20104 20104
], ],
@ -447,6 +461,7 @@
"skillid": 20106, "skillid": 20106,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 2,
"before": [ "before": [
20105 20105
], ],
@ -483,6 +498,7 @@
"skillid": 30101, "skillid": 30101,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 2,
"before": [ "before": [
20106 20106
], ],
@ -514,6 +530,7 @@
"skillid": 30102, "skillid": 30102,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 3,
"before": [ "before": [
30101 30101
], ],
@ -545,6 +562,7 @@
"skillid": 30103, "skillid": 30103,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 3,
"before": [ "before": [
30102 30102
], ],
@ -576,6 +594,7 @@
"skillid": 30104, "skillid": 30104,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 3,
"before": [ "before": [
30103 30103
], ],
@ -607,6 +626,7 @@
"skillid": 30105, "skillid": 30105,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 3,
"before": [ "before": [
30104 30104
], ],
@ -638,6 +658,7 @@
"skillid": 30106, "skillid": 30106,
"hid": "25001", "hid": "25001",
"skilltyp": 1, "skilltyp": 1,
"typeline": 3,
"before": [ "before": [
30105 30105
], ],
@ -669,6 +690,7 @@
"skillid": 99101, "skillid": 99101,
"hid": "25001", "hid": "25001",
"skilltyp": 2, "skilltyp": 2,
"typeline": 3,
"before": [ "before": [
30106 30106
], ],
@ -700,6 +722,7 @@
"skillid": 99102, "skillid": 99102,
"hid": "25001", "hid": "25001",
"skilltyp": 2, "skilltyp": 2,
"typeline": 3,
"before": [ "before": [
99101 99101
], ],
@ -731,6 +754,7 @@
"skillid": 99103, "skillid": 99103,
"hid": "25001", "hid": "25001",
"skilltyp": 2, "skilltyp": 2,
"typeline": 3,
"before": [ "before": [
99102 99102
], ],

View File

@ -42,41 +42,23 @@ func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.CaravanBuyOrSe
if !req.IsBuy { // 卖给npc if !req.IsBuy { // 卖给npc
for k, v := range req.Items { for k, v := range req.Items {
// 校验背包数据够不够 // 校验背包数据够不够
items, ok := caravan.Items[k]
if !ok {
this.module.Errorf("背包道具数量不足%s,道具ID:%d,背包数量:%d", session.GetUserId(), k, v)
continue
}
bFound := false
for _, k1 := range cityInfo.Special {
if k == k1 {
if v <= caravan.Items[k].Count {
caravan.Items[k].Count -= v caravan.Items[k].Count -= v
bFound = true if caravan.Items[k].Count < 0 {
break code = pb.ErrorCode_TrollItemNoEnough // 道具数量不足
} else {
code = pb.ErrorCode_TrollSellMax // 卖出数量不足
return return
} }
items := caravan.Items[k]
}
}
if !bFound {
code = pb.ErrorCode_TrollSellMax // 卖出数量不足
return
}
// 找到城市想要收购的物品
var price int32 var price int32
price = items.Price price = items.Price
if cityConf := this.module.configure.GetCaravanCity(req.City); cityConf != nil { if cityConf := this.module.configure.GetCaravanCity(req.City); cityConf != nil {
for _, v := range cityConf.Exspecial { for _, v := range cityConf.Exspecial {
if v == k { if v == k {
price = cityConf.Exspecialnum * items.Price / 1000 price = cityConf.Exspecialnum * items.Price / 1000
}
break break
} }
} }
}
addScore += price * v // 卖出收益 addScore += price * v // 卖出收益
} }
if this.module.ArrayBag(caravan, upperLimit) { // 背包满了 if this.module.ArrayBag(caravan, upperLimit) { // 背包满了
@ -100,6 +82,7 @@ func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.CaravanBuyOrSe
this.module.Errorf("lv reward dispenseRes err:%v", lvReward) this.module.Errorf("lv reward dispenseRes err:%v", lvReward)
} }
} }
} else { // 买入 } else { // 买入
for k, v := range req.Items { for k, v := range req.Items {
if _, ok := caravan.Items[k]; !ok { if _, ok := caravan.Items[k]; !ok {
@ -108,14 +91,9 @@ func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.CaravanBuyOrSe
Price: 0, Price: 0,
} }
} }
bFound := false
// if upperLimit < caravan.Items[k].Count+v {
// code = pb.ErrorCode_TrollBuyMax // 达到购买上限直接退出
// return
// }
// 计算均价 // 计算均价
totla := caravan.Items[k].Count * caravan.Items[k].Price totla := caravan.Items[k].Count * caravan.Items[k].Price
var price int32 var price int32
price = caravan.Goods[k].Price price = caravan.Goods[k].Price
for _, v := range cityInfo.Special { for _, v := range cityInfo.Special {
@ -123,24 +101,28 @@ func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.CaravanBuyOrSe
if cityConf := this.module.configure.GetCaravanCity(req.City); cityConf != nil { if cityConf := this.module.configure.GetCaravanCity(req.City); cityConf != nil {
price = cityConf.Specialnum * price / 1000 price = cityConf.Specialnum * price / 1000
} }
bFound = true
break break
} }
} }
if !bFound {
code = pb.ErrorCode_TrollCityUnSellItem // 城市不卖这个物品
return
}
caravan.Items[k].Count += v caravan.Items[k].Count += v
totla += price * v totla += price * v
caravan.Items[k].Price = totla / caravan.Items[k].Count caravan.Items[k].Price = totla / caravan.Items[k].Count
// 同步更新该城市的 出售货物信息 // 同步更新该城市的 出售货物信息
cityInfo.Count[req.City] += v cityInfo.Count[k] += v
if itemConf := this.configure.GetCaravanGoods(k); itemConf != nil { // 更新商店库存 if itemConf := this.configure.GetCaravanGoods(k); itemConf != nil { // 更新商店库存
if cityInfo.Count[req.City] > itemConf.Goodsnum { if cityInfo.Count[k] > itemConf.Goodsnum {
code = pb.ErrorCode_TrollBuyMax // 商品数量不足 code = pb.ErrorCode_TrollBuyMax // 商品数量不足
return return
} }
update["city"] = caravan.City update["city"] = caravan.City
addScore -= price * v addScore -= price * v
} }
} }
if this.module.ArrayBag(caravan, upperLimit) { // 背包满了 if this.module.ArrayBag(caravan, upperLimit) { // 背包满了
code = pb.ErrorCode_TrollMaxItemCount code = pb.ErrorCode_TrollMaxItemCount

View File

@ -0,0 +1,23 @@
package caravan
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
//参数校验
func (this *apiComp) RankListCheck(session comm.IUserSession, req *pb.CaravanRankListReq) (code pb.ErrorCode) {
return
}
func (this *apiComp) RankList(session comm.IUserSession, req *pb.CaravanRankListReq) (code pb.ErrorCode, data *pb.ErrorData) {
resp := &pb.CaravanRankListResp{}
if code = this.RankListCheck(session, req); code != pb.ErrorCode_Success {
return // 参数校验失败直接返回
}
resp.List = this.module.modelCaravan.GetRankListData(comm.MaxRankList)
session.SendMsg(string(this.module.GetType()), "ranklist", resp)
return
}

View File

@ -1,15 +1,19 @@
package caravan package caravan
import ( import (
"context"
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/mgo" "go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure" "go_dreamfactory/sys/configure"
"go_dreamfactory/utils"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/x/bsonx" "go.mongodb.org/mongo-driver/x/bsonx"
) )
@ -41,7 +45,7 @@ func (this *modelCaravan) getCaravanList(uid string) (result *pb.DBCaravan, err
if err = this.Get(uid, result); err != nil && mgo.MongodbNil == err { if err = this.Get(uid, result); err != nil && mgo.MongodbNil == err {
// 创建一条数据 // 创建一条数据
result.Id = primitive.NewObjectID().Hex() result.Id = primitive.NewObjectID().Hex()
result.Resettime = configure.Now().Unix() // 设置起始刷新时间 result.Resettime = utils.GetZeroTime(configure.Now().Unix()) // 设置起始刷新时间
result.Citystime = configure.Now().Unix() result.Citystime = configure.Now().Unix()
result.Lv = 1 result.Lv = 1
result.Curcity = this.module.configure.GetCaravanInitCity() // 获取默认城市 result.Curcity = this.module.configure.GetCaravanInitCity() // 获取默认城市
@ -59,3 +63,26 @@ func (this *modelCaravan) getCaravanList(uid string) (result *pb.DBCaravan, err
func (this *modelCaravan) modifyCaravanDataByObjId(uid string, data map[string]interface{}) error { func (this *modelCaravan) modifyCaravanDataByObjId(uid string, data map[string]interface{}) error {
return this.Change(uid, data) return this.Change(uid, data)
} }
func (this *modelCaravan) GetRankListData(rankNum int32) (list []*pb.CaravanRankData) {
var ipos int32
if _data, err := this.DBModel.DB.Find(comm.TableUser, bson.M{}, options.Find().SetSort(bson.M{"merchantmoney": -1}).SetLimit(int64(rankNum))); err == nil {
for _data.Next(context.TODO()) {
temp := &pb.DBUser{}
if err = _data.Decode(temp); err == nil {
ipos++
list = append(list, &pb.CaravanRankData{
Uid: temp.Uid,
Name: temp.Name,
Lv: temp.Lv,
Rank: ipos,
Merchantmoney: temp.Merchantmoney,
})
}
}
} else {
this.module.Errorln(err)
return
}
return
}

View File

@ -115,7 +115,7 @@ func (this *Caravan) refreshCaravanCityInfo(uid string, caravan *pb.DBCaravan) {
changeTime int32 changeTime int32
) )
update = make(map[string]interface{}) update = make(map[string]interface{})
changeTime = this.configure.GetCityRefreshTime() changeTime = this.configure.GetCityRefreshTime() // 180
if int32(configure.Now().Unix()-caravan.Citystime) >= changeTime { if int32(configure.Now().Unix()-caravan.Citystime) >= changeTime {
bChange = true bChange = true
for k, v := range caravan.City { for k, v := range caravan.City {
@ -132,11 +132,11 @@ func (this *Caravan) refreshCaravanCityInfo(uid string, caravan *pb.DBCaravan) {
} }
} }
} }
subTime := configure.Now().Unix() - caravan.Citystime
icount := int32(subTime / int64(changeTime)) // 循环周期
caravan.Citystime += int64(changeTime * icount)
for k, v := range caravan.Goods { for k, v := range caravan.Goods {
if c := this.configure.GetCaravanGoods(k); c != nil { if c := this.configure.GetCaravanGoods(k); c != nil {
subTime := configure.Now().Unix() - int64(changeTime)
icount := int32(subTime / int64(changeTime)) // 循环周期
if icount > 50 { //超过一定的周期 则不计算 if icount > 50 { //超过一定的周期 则不计算
// 随机出新的变动周期 // 随机出新的变动周期
v.Period = comm.GetRandNum(c.Changeperiod[0], c.Changeperiod[1]) v.Period = comm.GetRandNum(c.Changeperiod[0], c.Changeperiod[1])
@ -187,6 +187,7 @@ func (this *Caravan) refreshCaravanCityInfo(uid string, caravan *pb.DBCaravan) {
if bChange { if bChange {
update["city"] = caravan.City update["city"] = caravan.City
update["citystime"] = caravan.Citystime
this.modelCaravan.modifyCaravanDataByObjId(uid, update) this.modelCaravan.modifyCaravanDataByObjId(uid, update)
} }
} }
@ -317,10 +318,10 @@ func (this *Caravan) CheckCaravavLvUp(data *pb.DBCaravan) (curLv int32) {
func (this *Caravan) TestFunc(session comm.IUserSession) { func (this *Caravan) TestFunc(session comm.IUserSession) {
this.modelCaravan.module.api.GetList(session, &pb.CaravanGetListReq{}) this.modelCaravan.module.api.GetList(session, &pb.CaravanGetListReq{})
this.modelCaravan.module.api.BuyOrSell(session, &pb.CaravanBuyOrSellReq{ this.modelCaravan.module.api.BuyOrSell(session, &pb.CaravanBuyOrSellReq{
City: 101, City: 105,
Items: map[int32]int32{ Items: map[int32]int32{
6: 100, 6: 80,
}, },
IsBuy: false, IsBuy: true,
}) })
} }

View File

@ -0,0 +1,52 @@
package timer
import (
"context"
"go_dreamfactory/comm"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase"
"go_dreamfactory/lego/sys/cron"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
)
// 此组件废弃
type CaravanRank struct {
cbase.ModuleBase
modules.MCompModel
service core.IService
module *Timer
}
//组件初始化接口
func (this *CaravanRank) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = comm.TableCaravan
this.MCompModel.Init(service, module, comp, options)
this.module = module.(*Timer)
this.service = service
return
}
func (this *CaravanRank) Start() (err error) {
err = this.MCompModel.Start()
cron.AddFunc("30 10 1 * * ?", this.TimerSeason)
return
}
func (this *CaravanRank) TimerSeason() {
if _data, err := this.DB.Find(comm.TableUser, bson.M{}, options.Find().SetSort(bson.M{"merchantmoney": -1}).SetLimit(comm.MaxRankList)); err == nil {
for _data.Next(context.TODO()) {
temp := &pb.DBUser{}
if err = _data.Decode(temp); err == nil {
this.DB.UpdateOne(comm.TableUser, bson.M{"_id": temp.Id}, bson.M{"merchantmoney": 10000})
}
}
}
}

View File

@ -1,83 +0,0 @@
package timer
import (
"context"
"go_dreamfactory/comm"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase"
"go_dreamfactory/lego/sys/log"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
)
// 此组件废弃
type PagodaRank struct {
cbase.ModuleBase
modules.MCompModel
service core.IService
module *Timer
}
//组件初始化接口
func (this *PagodaRank) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = comm.TablePagodaRecord
this.MCompModel.Init(service, module, comp, options)
this.module = module.(*Timer)
this.service = service
return
}
func (this *PagodaRank) Start() (err error) {
err = this.MCompModel.Start()
//cron.AddFunc("*/60 * * * * ?", this.TimerPagoda) //每60s执行一次
//cron.AddFunc("*/60 * * * * ?", this.TimerSeason) //每60s执行一次
return
}
// 处理排行榜排序
func (this *PagodaRank) TimerPagoda() {
data := make([]interface{}, 0) // options.Find().SetLimit(comm.MaxRankList)
if _data, err := this.DB.Find(comm.TablePagoda, bson.M{}, options.Find().SetSort(bson.M{"pagodaId": -1}).SetLimit(comm.MaxRankList)); err == nil {
for _data.Next(context.TODO()) {
temp := &pb.DBPagodaRecord{}
if err = _data.Decode(temp); err == nil {
data = append(data, temp)
}
}
}
if len(data) > 0 {
err := this.Redis.RPush(comm.TablePagodaRankList, data...)
if err == nil {
err = this.Redis.Ltrim(comm.TablePagodaRankList, -1*len(data), -1) //对一个列表进行修剪
if err != nil {
log.Errorf("delete failed")
}
}
}
}
// func (this *PagodaRank) TimerSeason() {
// data := make([]interface{}, 0) // options.Find().SetLimit(comm.MaxRankList)
// if _data, err := this.DB.Find(comm.TableSeasonPagoda, bson.M{}, options.Find().SetSort(bson.M{"pagodaId": -1}).SetLimit(comm.MaxRankList)); err == nil {
// for _data.Next(context.TODO()) {
// temp := &pb.DBPagodaRecord{}
// if err = _data.Decode(temp); err == nil {
// data = append(data, temp)
// }
// }
// }
// if len(data) > 0 {
// err := this.Redis.RPush(comm.TableSeasonRankList, data...)
// if err == nil {
// err = this.Redis.Ltrim(comm.TableSeasonRankList, -1*len(data), -1) //对一个列表进行修剪
// if err != nil {
// log.Errorf("delete failed")
// }
// }
// }
// }

View File

@ -46,6 +46,10 @@ func (this *ModelUser) Init(service core.IService, module core.IModule, comp cor
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{ this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
Keys: bsonx.Doc{{Key: "logintime", Value: bsonx.Int32(1)}}, Keys: bsonx.Doc{{Key: "logintime", Value: bsonx.Int32(1)}},
}) })
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
Keys: bsonx.Doc{{Key: "merchantmoney", Value: bsonx.Int32(1)}},
})
return return
} }

View File

@ -352,6 +352,85 @@ func (x *DBCaravan) GetCitystime() int64 {
return 0 return 0
} }
type CaravanRankData struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"`
Lv int32 `protobuf:"varint,3,opt,name=lv,proto3" json:"lv"`
Rank int32 `protobuf:"varint,4,opt,name=rank,proto3" json:"rank"` //排名
Merchantmoney int32 `protobuf:"varint,5,opt,name=merchantmoney,proto3" json:"merchantmoney"` // 虚拟币
}
func (x *CaravanRankData) Reset() {
*x = CaravanRankData{}
if protoimpl.UnsafeEnabled {
mi := &file_caravan_caravan_db_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CaravanRankData) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CaravanRankData) ProtoMessage() {}
func (x *CaravanRankData) ProtoReflect() protoreflect.Message {
mi := &file_caravan_caravan_db_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CaravanRankData.ProtoReflect.Descriptor instead.
func (*CaravanRankData) Descriptor() ([]byte, []int) {
return file_caravan_caravan_db_proto_rawDescGZIP(), []int{4}
}
func (x *CaravanRankData) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
func (x *CaravanRankData) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *CaravanRankData) GetLv() int32 {
if x != nil {
return x.Lv
}
return 0
}
func (x *CaravanRankData) GetRank() int32 {
if x != nil {
return x.Rank
}
return 0
}
func (x *CaravanRankData) GetMerchantmoney() int32 {
if x != nil {
return x.Merchantmoney
}
return 0
}
var File_caravan_caravan_db_proto protoreflect.FileDescriptor var File_caravan_caravan_db_proto protoreflect.FileDescriptor
var file_caravan_caravan_db_proto_rawDesc = []byte{ var file_caravan_caravan_db_proto_rawDesc = []byte{
@ -414,8 +493,16 @@ var file_caravan_caravan_db_proto_rawDesc = []byte{
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x09, 0x2e, 0x43, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x09, 0x2e, 0x43, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x81, 0x01, 0x0a, 0x0f, 0x43, 0x61, 0x72, 0x61, 0x76, 0x61,
0x72, 0x6f, 0x74, 0x6f, 0x33, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12,
0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72,
0x61, 0x6e, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x6d,
0x6f, 0x6e, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x65, 0x72, 0x63,
0x68, 0x61, 0x6e, 0x74, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70,
0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -430,22 +517,23 @@ func file_caravan_caravan_db_proto_rawDescGZIP() []byte {
return file_caravan_caravan_db_proto_rawDescData return file_caravan_caravan_db_proto_rawDescData
} }
var file_caravan_caravan_db_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_caravan_caravan_db_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_caravan_caravan_db_proto_goTypes = []interface{}{ var file_caravan_caravan_db_proto_goTypes = []interface{}{
(*Goods)(nil), // 0: Goods (*Goods)(nil), // 0: Goods
(*CityInfo)(nil), // 1: CityInfo (*CityInfo)(nil), // 1: CityInfo
(*BagInfo)(nil), // 2: BagInfo (*BagInfo)(nil), // 2: BagInfo
(*DBCaravan)(nil), // 3: DBCaravan (*DBCaravan)(nil), // 3: DBCaravan
nil, // 4: CityInfo.CountEntry (*CaravanRankData)(nil), // 4: CaravanRankData
nil, // 5: DBCaravan.ItemsEntry nil, // 5: CityInfo.CountEntry
nil, // 6: DBCaravan.GoodsEntry nil, // 6: DBCaravan.ItemsEntry
nil, // 7: DBCaravan.CityEntry nil, // 7: DBCaravan.GoodsEntry
nil, // 8: DBCaravan.CityEntry
} }
var file_caravan_caravan_db_proto_depIdxs = []int32{ var file_caravan_caravan_db_proto_depIdxs = []int32{
4, // 0: CityInfo.count:type_name -> CityInfo.CountEntry 5, // 0: CityInfo.count:type_name -> CityInfo.CountEntry
5, // 1: DBCaravan.items:type_name -> DBCaravan.ItemsEntry 6, // 1: DBCaravan.items:type_name -> DBCaravan.ItemsEntry
6, // 2: DBCaravan.goods:type_name -> DBCaravan.GoodsEntry 7, // 2: DBCaravan.goods:type_name -> DBCaravan.GoodsEntry
7, // 3: DBCaravan.city:type_name -> DBCaravan.CityEntry 8, // 3: DBCaravan.city:type_name -> DBCaravan.CityEntry
2, // 4: DBCaravan.ItemsEntry.value:type_name -> BagInfo 2, // 4: DBCaravan.ItemsEntry.value:type_name -> BagInfo
0, // 5: DBCaravan.GoodsEntry.value:type_name -> Goods 0, // 5: DBCaravan.GoodsEntry.value:type_name -> Goods
1, // 6: DBCaravan.CityEntry.value:type_name -> CityInfo 1, // 6: DBCaravan.CityEntry.value:type_name -> CityInfo
@ -510,6 +598,18 @@ func file_caravan_caravan_db_proto_init() {
return nil return nil
} }
} }
file_caravan_caravan_db_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CaravanRankData); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
} }
type x struct{} type x struct{}
out := protoimpl.TypeBuilder{ out := protoimpl.TypeBuilder{
@ -517,7 +617,7 @@ func file_caravan_caravan_db_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_caravan_caravan_db_proto_rawDesc, RawDescriptor: file_caravan_caravan_db_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 8, NumMessages: 9,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View File

@ -503,6 +503,91 @@ func (x *CaravanTaskCompletePush) GetReward() []*UserAssets {
return nil return nil
} }
type CaravanRankListReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *CaravanRankListReq) Reset() {
*x = CaravanRankListReq{}
if protoimpl.UnsafeEnabled {
mi := &file_caravan_caravan_msg_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CaravanRankListReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CaravanRankListReq) ProtoMessage() {}
func (x *CaravanRankListReq) ProtoReflect() protoreflect.Message {
mi := &file_caravan_caravan_msg_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CaravanRankListReq.ProtoReflect.Descriptor instead.
func (*CaravanRankListReq) Descriptor() ([]byte, []int) {
return file_caravan_caravan_msg_proto_rawDescGZIP(), []int{9}
}
type CaravanRankListResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
List []*CaravanRankData `protobuf:"bytes,1,rep,name=list,proto3" json:"list"`
}
func (x *CaravanRankListResp) Reset() {
*x = CaravanRankListResp{}
if protoimpl.UnsafeEnabled {
mi := &file_caravan_caravan_msg_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CaravanRankListResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CaravanRankListResp) ProtoMessage() {}
func (x *CaravanRankListResp) ProtoReflect() protoreflect.Message {
mi := &file_caravan_caravan_msg_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CaravanRankListResp.ProtoReflect.Descriptor instead.
func (*CaravanRankListResp) Descriptor() ([]byte, []int) {
return file_caravan_caravan_msg_proto_rawDescGZIP(), []int{10}
}
func (x *CaravanRankListResp) GetList() []*CaravanRankData {
if x != nil {
return x.List
}
return nil
}
var File_caravan_caravan_msg_proto protoreflect.FileDescriptor var File_caravan_caravan_msg_proto protoreflect.FileDescriptor
var file_caravan_caravan_msg_proto_rawDesc = []byte{ var file_caravan_caravan_msg_proto_rawDesc = []byte{
@ -555,8 +640,14 @@ var file_caravan_caravan_msg_proto_rawDesc = []byte{
0x0a, 0x08, 0x62, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x0a, 0x08, 0x62, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
0x52, 0x08, 0x62, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x72, 0x65, 0x52, 0x08, 0x62, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x72, 0x65,
0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x55, 0x73, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x55, 0x73, 0x65,
0x72, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x42, 0x72, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22,
0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x14, 0x0a, 0x12, 0x43, 0x61, 0x72, 0x61, 0x76, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69,
0x73, 0x74, 0x52, 0x65, 0x71, 0x22, 0x3b, 0x0a, 0x13, 0x43, 0x61, 0x72, 0x61, 0x76, 0x61, 0x6e,
0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x04,
0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x43, 0x61, 0x72,
0x61, 0x76, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6c, 0x69,
0x73, 0x74, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
} }
var ( var (
@ -571,7 +662,7 @@ func file_caravan_caravan_msg_proto_rawDescGZIP() []byte {
return file_caravan_caravan_msg_proto_rawDescData return file_caravan_caravan_msg_proto_rawDescData
} }
var file_caravan_caravan_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_caravan_caravan_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
var file_caravan_caravan_msg_proto_goTypes = []interface{}{ var file_caravan_caravan_msg_proto_goTypes = []interface{}{
(*CaravanGetListReq)(nil), // 0: CaravanGetListReq (*CaravanGetListReq)(nil), // 0: CaravanGetListReq
(*CaravanGetListResp)(nil), // 1: CaravanGetListResp (*CaravanGetListResp)(nil), // 1: CaravanGetListResp
@ -582,23 +673,27 @@ var file_caravan_caravan_msg_proto_goTypes = []interface{}{
(*CaravanGetStoryReq)(nil), // 6: CaravanGetStoryReq (*CaravanGetStoryReq)(nil), // 6: CaravanGetStoryReq
(*CaravanGetStoryResp)(nil), // 7: CaravanGetStoryResp (*CaravanGetStoryResp)(nil), // 7: CaravanGetStoryResp
(*CaravanTaskCompletePush)(nil), // 8: CaravanTaskCompletePush (*CaravanTaskCompletePush)(nil), // 8: CaravanTaskCompletePush
nil, // 9: CaravanBuyOrSellReq.ItemsEntry (*CaravanRankListReq)(nil), // 9: CaravanRankListReq
(*DBCaravan)(nil), // 10: DBCaravan (*CaravanRankListResp)(nil), // 10: CaravanRankListResp
(*UserAssets)(nil), // 11: UserAssets nil, // 11: CaravanBuyOrSellReq.ItemsEntry
(*DBCaravan)(nil), // 12: DBCaravan
(*UserAssets)(nil), // 13: UserAssets
(*CaravanRankData)(nil), // 14: CaravanRankData
} }
var file_caravan_caravan_msg_proto_depIdxs = []int32{ var file_caravan_caravan_msg_proto_depIdxs = []int32{
10, // 0: CaravanGetListResp.data:type_name -> DBCaravan 12, // 0: CaravanGetListResp.data:type_name -> DBCaravan
9, // 1: CaravanBuyOrSellReq.items:type_name -> CaravanBuyOrSellReq.ItemsEntry 11, // 1: CaravanBuyOrSellReq.items:type_name -> CaravanBuyOrSellReq.ItemsEntry
10, // 2: CaravanBuyOrSellResp.data:type_name -> DBCaravan 12, // 2: CaravanBuyOrSellResp.data:type_name -> DBCaravan
10, // 3: CaravanGotoCityResp.data:type_name -> DBCaravan 12, // 3: CaravanGotoCityResp.data:type_name -> DBCaravan
10, // 4: CaravanGetStoryResp.data:type_name -> DBCaravan 12, // 4: CaravanGetStoryResp.data:type_name -> DBCaravan
10, // 5: CaravanTaskCompletePush.data:type_name -> DBCaravan 12, // 5: CaravanTaskCompletePush.data:type_name -> DBCaravan
11, // 6: CaravanTaskCompletePush.reward:type_name -> UserAssets 13, // 6: CaravanTaskCompletePush.reward:type_name -> UserAssets
7, // [7:7] is the sub-list for method output_type 14, // 7: CaravanRankListResp.list:type_name -> CaravanRankData
7, // [7:7] is the sub-list for method input_type 8, // [8:8] is the sub-list for method output_type
7, // [7:7] is the sub-list for extension type_name 8, // [8:8] is the sub-list for method input_type
7, // [7:7] is the sub-list for extension extendee 8, // [8:8] is the sub-list for extension type_name
0, // [0:7] is the sub-list for field type_name 8, // [8:8] is the sub-list for extension extendee
0, // [0:8] is the sub-list for field type_name
} }
func init() { file_caravan_caravan_msg_proto_init() } func init() { file_caravan_caravan_msg_proto_init() }
@ -717,6 +812,30 @@ func file_caravan_caravan_msg_proto_init() {
return nil return nil
} }
} }
file_caravan_caravan_msg_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CaravanRankListReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_caravan_caravan_msg_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CaravanRankListResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
} }
type x struct{} type x struct{}
out := protoimpl.TypeBuilder{ out := protoimpl.TypeBuilder{
@ -724,7 +843,7 @@ func file_caravan_caravan_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_caravan_caravan_msg_proto_rawDesc, RawDescriptor: file_caravan_caravan_msg_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 10, NumMessages: 12,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View File

@ -308,6 +308,9 @@ const (
ErrorCode_TrollRepeatedReward ErrorCode = 3305 //奖励重复领取 ErrorCode_TrollRepeatedReward ErrorCode = 3305 //奖励重复领取
ErrorCode_TrollCity ErrorCode = 3306 // 已经在该城市了 ErrorCode_TrollCity ErrorCode = 3306 // 已经在该城市了
ErrorCode_TrollTask ErrorCode = 3307 // 任务没完成 ErrorCode_TrollTask ErrorCode = 3307 // 任务没完成
ErrorCode_TrollItemNoEnough ErrorCode = 3308 // 道具数量不足
ErrorCode_TrollCityUnSellItem ErrorCode = 3309 // 当前城市不卖改道具
ErrorCode_TrollCityUnRecovery ErrorCode = 3310 // 当前城市不回收道具
// horoscope // horoscope
ErrorCode_HoroscopeNotTurnedOn ErrorCode = 3401 //未开启 ErrorCode_HoroscopeNotTurnedOn ErrorCode = 3401 //未开启
ErrorCode_HoroscopeRestCDNoEnd ErrorCode = 3402 //重置cd未结束 ErrorCode_HoroscopeRestCDNoEnd ErrorCode = 3402 //重置cd未结束
@ -654,6 +657,9 @@ var (
3305: "TrollRepeatedReward", 3305: "TrollRepeatedReward",
3306: "TrollCity", 3306: "TrollCity",
3307: "TrollTask", 3307: "TrollTask",
3308: "TrollItemNoEnough",
3309: "TrollCityUnSellItem",
3310: "TrollCityUnRecovery",
3401: "HoroscopeNotTurnedOn", 3401: "HoroscopeNotTurnedOn",
3402: "HoroscopeRestCDNoEnd", 3402: "HoroscopeRestCDNoEnd",
3501: "PrivilegeNotFound", 3501: "PrivilegeNotFound",
@ -984,6 +990,9 @@ var (
"TrollRepeatedReward": 3305, "TrollRepeatedReward": 3305,
"TrollCity": 3306, "TrollCity": 3306,
"TrollTask": 3307, "TrollTask": 3307,
"TrollItemNoEnough": 3308,
"TrollCityUnSellItem": 3309,
"TrollCityUnRecovery": 3310,
"HoroscopeNotTurnedOn": 3401, "HoroscopeNotTurnedOn": 3401,
"HoroscopeRestCDNoEnd": 3402, "HoroscopeRestCDNoEnd": 3402,
"PrivilegeNotFound": 3501, "PrivilegeNotFound": 3501,
@ -1085,7 +1094,7 @@ var File_errorcode_proto protoreflect.FileDescriptor
var file_errorcode_proto_rawDesc = []byte{ var file_errorcode_proto_rawDesc = []byte{
0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2a, 0x90, 0x3c, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x6f, 0x2a, 0xdc, 0x3c, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10,
0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76,
@ -1459,115 +1468,119 @@ var file_errorcode_proto_rawDesc = []byte{
0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe9, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe9,
0x19, 0x12, 0x0e, 0x0a, 0x09, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x43, 0x69, 0x74, 0x79, 0x10, 0xea, 0x19, 0x12, 0x0e, 0x0a, 0x09, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x43, 0x69, 0x74, 0x79, 0x10, 0xea,
0x19, 0x12, 0x0e, 0x0a, 0x09, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x10, 0xeb, 0x19, 0x12, 0x0e, 0x0a, 0x09, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x10, 0xeb,
0x19, 0x12, 0x19, 0x0a, 0x14, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4e, 0x6f, 0x19, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x6f,
0x74, 0x54, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x4f, 0x6e, 0x10, 0xc9, 0x1a, 0x12, 0x19, 0x0a, 0x14, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xec, 0x19, 0x12, 0x18, 0x0a, 0x13, 0x54, 0x72, 0x6f,
0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x43, 0x44, 0x4e, 0x6c, 0x6c, 0x43, 0x69, 0x74, 0x79, 0x55, 0x6e, 0x53, 0x65, 0x6c, 0x6c, 0x49, 0x74, 0x65, 0x6d,
0x6f, 0x45, 0x6e, 0x64, 0x10, 0xca, 0x1a, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x72, 0x69, 0x76, 0x69, 0x10, 0xed, 0x19, 0x12, 0x18, 0x0a, 0x13, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x43, 0x69, 0x74, 0x79,
0x6c, 0x65, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xad, 0x1b, 0x12, 0x55, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x10, 0xee, 0x19, 0x12, 0x19, 0x0a,
0x17, 0x0a, 0x12, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x52, 0x65, 0x6e, 0x65, 0x14, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4e, 0x6f, 0x74, 0x54, 0x75, 0x72,
0x77, 0x54, 0x69, 0x6d, 0x65, 0x10, 0xae, 0x1b, 0x12, 0x0f, 0x0a, 0x0a, 0x56, 0x69, 0x70, 0x4c, 0x6e, 0x65, 0x64, 0x4f, 0x6e, 0x10, 0xc9, 0x1a, 0x12, 0x19, 0x0a, 0x14, 0x48, 0x6f, 0x72, 0x6f,
0x76, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xaf, 0x1b, 0x12, 0x11, 0x0a, 0x0c, 0x56, 0x69, 0x70, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x43, 0x44, 0x4e, 0x6f, 0x45, 0x6e, 0x64,
0x47, 0x69, 0x66, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xb0, 0x1b, 0x12, 0x11, 0x0a, 0x0c, 0x10, 0xca, 0x1a, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65,
0x56, 0x69, 0x70, 0x42, 0x75, 0x79, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x10, 0xb1, 0x1b, 0x12, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xad, 0x1b, 0x12, 0x17, 0x0a, 0x12, 0x50,
0x14, 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x54, 0x69, 0x6d,
0x76, 0x65, 0x10, 0x91, 0x1c, 0x12, 0x17, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x61, 0x73, 0x65, 0x10, 0xae, 0x1b, 0x12, 0x0f, 0x0a, 0x0a, 0x56, 0x69, 0x70, 0x4c, 0x76, 0x45, 0x72, 0x72,
0x6b, 0x41, 0x64, 0x76, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x92, 0x1c, 0x12, 0x17, 0x6f, 0x72, 0x10, 0xaf, 0x1b, 0x12, 0x11, 0x0a, 0x0c, 0x56, 0x69, 0x70, 0x47, 0x69, 0x66, 0x74,
0x0a, 0x12, 0x50, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4e, 0x75, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xb0, 0x1b, 0x12, 0x11, 0x0a, 0x0c, 0x56, 0x69, 0x70, 0x42,
0x6f, 0x75, 0x67, 0x68, 0x10, 0xf5, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x52, 0x65, 0x75, 0x79, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x10, 0xb1, 0x1b, 0x12, 0x14, 0x0a, 0x0f, 0x47,
0x6e, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x10, 0xf6, 0x1c, 0x12, 0x16, 0x0a, 0x72, 0x6f, 0x77, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x91,
0x11, 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x1c, 0x12, 0x17, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x64, 0x76,
0x65, 0x64, 0x10, 0xf7, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x92, 0x1c, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61,
0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0xd9, 0x1d, 0x12, 0x19, 0x0a, 0x14, 0x57, 0x79, 0x42, 0x75, 0x79, 0x4e, 0x75, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68,
0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x76, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x10, 0xf5, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x54,
0x75, 0x67, 0x68, 0x10, 0xda, 0x1d, 0x12, 0x16, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x10, 0xf6, 0x1c, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x61, 0x79,
0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x10, 0xdb, 0x1d, 0x12, 0x18, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x10, 0xf7,
0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x43, 0x6f, 0x6d, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69,
0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0xdc, 0x1d, 0x12, 0x15, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6c, 0x6e, 0x69, 0x73, 0x68, 0x10, 0xd9, 0x1d, 0x12, 0x19, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6c, 0x64,
0x64, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x68, 0x65, 0x64, 0x10, 0xdd, 0x1d, 0x12, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x76, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10,
0x1c, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x61, 0x73, 0x74, 0xda, 0x1d, 0x12, 0x16, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e,
0x55, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xde, 0x1d, 0x12, 0x1b, 0x0a, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x10, 0xdb, 0x1d, 0x12, 0x18, 0x0a, 0x13, 0x57, 0x6f,
0x16, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74,
0x64, 0x4e, 0x6f, 0x73, 0x61, 0x6d, 0x65, 0x10, 0xdf, 0x1d, 0x12, 0x1f, 0x0a, 0x1a, 0x57, 0x6f, 0x65, 0x10, 0xdc, 0x1d, 0x12, 0x15, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73,
0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x55, 0x6e, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x68, 0x65, 0x64, 0x10, 0xdd, 0x1d, 0x12, 0x1c, 0x0a, 0x17, 0x57,
0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xe0, 0x1d, 0x12, 0x1d, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x6e, 0x46, 0x69,
0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x52, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xde, 0x1d, 0x12, 0x1b, 0x0a, 0x16, 0x57, 0x6f, 0x72,
0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xe1, 0x1d, 0x12, 0x17, 0x0a, 0x12, 0x57, 0x6f, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x4e, 0x6f, 0x73,
0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x61, 0x6d, 0x65, 0x10, 0xdf, 0x1d, 0x12, 0x1f, 0x0a, 0x1a, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74,
0x10, 0xe2, 0x1d, 0x12, 0x1a, 0x0a, 0x15, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x55, 0x6e, 0x46, 0x69, 0x6e, 0x69,
0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x10, 0xe3, 0x1d, 0x12, 0x73, 0x68, 0x65, 0x64, 0x10, 0xe0, 0x1d, 0x12, 0x1d, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6c, 0x64,
0x1e, 0x0a, 0x19, 0x41, 0x63, 0x61, 0x64, 0x65, 0x6d, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x65, 0x69,
0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x10, 0xbd, 0x1e, 0x12, 0x76, 0x65, 0x64, 0x10, 0xe1, 0x1d, 0x12, 0x17, 0x0a, 0x12, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74,
0x15, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x44, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x10, 0xe2, 0x1d, 0x12,
0x61, 0x74, 0x61, 0x10, 0xa1, 0x1f, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x61, 0x1a, 0x0a, 0x15, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x42, 0x61, 0x74, 0x74,
0x74, 0x74, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x72, 0x72, 0x10, 0xa2, 0x1f, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x10, 0xe3, 0x1d, 0x12, 0x1e, 0x0a, 0x19, 0x41,
0x12, 0x11, 0x0a, 0x0c, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x52, 0x65, 0x65, 0x6c, 0x63, 0x61, 0x64, 0x65, 0x6d, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x43, 0x6f, 0x6d, 0x70,
0x10, 0x85, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x54, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x10, 0xbd, 0x1e, 0x12, 0x15, 0x0a, 0x10, 0x41,
0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x10, 0x86, 0x20, 0x12, 0x15, 0x0a, 0x75, 0x74, 0x6f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10,
0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x4c, 0xa1, 0x1f, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65,
0x76, 0x10, 0x87, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x43, 0x75, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x72, 0x72, 0x10, 0xa2, 0x1f, 0x12, 0x11, 0x0a, 0x0c,
0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x88, 0x20, 0x12, 0x20, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x52, 0x65, 0x65, 0x6c, 0x10, 0x85, 0x20, 0x12,
0x0a, 0x1b, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x18, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x54, 0x65, 0x6d, 0x70, 0x65,
0x45, 0x71, 0x75, 0x69, 0x70, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x89, 0x20, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x10, 0x86, 0x20, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x6d, 0x69,
0x12, 0x19, 0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4d, 0x61, 0x78, 0x54, 0x65, 0x6d, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0x87, 0x20,
0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x10, 0x8a, 0x20, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x6d, 0x69, 0x74, 0x68, 0x79, 0x4c, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x76, 0x61, 0x10, 0x8b, 0x20, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x88, 0x20, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x6d,
0x12, 0x15, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x4d, 0x69, 0x74, 0x68, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x71, 0x75, 0x69,
0x61, 0x78, 0x4c, 0x76, 0x10, 0x8c, 0x20, 0x12, 0x16, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x70, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x89, 0x20, 0x12, 0x19, 0x0a, 0x14,
0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x4c, 0x61, 0x63, 0x6b, 0x4c, 0x76, 0x10, 0x8d, 0x20, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4d, 0x61, 0x78, 0x54, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61,
0x19, 0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x74, 0x75, 0x72, 0x65, 0x10, 0x8a, 0x20, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6d, 0x69, 0x74, 0x68,
0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0x8e, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x79, 0x4c, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x76, 0x61, 0x10, 0x8b, 0x20, 0x12, 0x15, 0x0a, 0x10,
0x69, 0x74, 0x68, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x4d, 0x61, 0x78, 0x4c, 0x76,
0x10, 0x8f, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x46, 0x10, 0x8c, 0x20, 0x12, 0x16, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c,
0x6f, 0x75, 0x6e, 0x64, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x10, 0x90, 0x20, 0x12, 0x1a, 0x0a, 0x15, 0x61, 0x73, 0x4c, 0x61, 0x63, 0x6b, 0x4c, 0x76, 0x10, 0x8d, 0x20, 0x12, 0x19, 0x0a, 0x14, 0x53,
0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73,
0x41, 0x74, 0x6c, 0x61, 0x73, 0x10, 0x91, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x65, 0x64, 0x10, 0x8e, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x68, 0x79, 0x4c, 0x76, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x8f, 0x20, 0x12,
0x92, 0x20, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4c, 0x76, 0x54, 0x6f, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64,
0x6f, 0x6c, 0x73, 0x50, 0x72, 0x65, 0x10, 0x93, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x10, 0x90, 0x20, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x6d, 0x69, 0x74,
0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0x68, 0x79, 0x4e, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x6c, 0x61,
0x94, 0x20, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x73, 0x10, 0x91, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4c, 0x76,
0x72, 0x6f, 0x4e, 0x6f, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x10, 0xe9, 0x20, 0x12, 0x13, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x92, 0x20, 0x12, 0x15,
0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x46, 0x72, 0x65, 0x65, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4c, 0x76, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x50,
0x10, 0xea, 0x20, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x54, 0x72, 0x65, 0x10, 0x93, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41,
0x69, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xeb, 0x20, 0x74, 0x6c, 0x61, 0x73, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0x94, 0x20, 0x12, 0x1a,
0x12, 0x19, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f,
0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x10, 0xec, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x44, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x10, 0xe9, 0x20, 0x12, 0x13, 0x0a, 0x0e, 0x44, 0x69,
0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x69, 0x72, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x46, 0x72, 0x65, 0x65, 0x10, 0xea, 0x20, 0x12,
0x65, 0x64, 0x10, 0xed, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x1b, 0x0a, 0x16, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x65,
0x68, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x4d, 0x61, 0x78, 0x10, 0xee, 0x20, 0x12, 0x17, 0x74, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xeb, 0x20, 0x12, 0x19, 0x0a, 0x14,
0x0a, 0x12, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x73, 0x73, 0x69,
0x73, 0x68, 0x65, 0x64, 0x10, 0xef, 0x20, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x70, 0x61, 0x67, 0x6e, 0x65, 0x64, 0x10, 0xec, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x70, 0x61,
0x74, 0x63, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x74, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x10, 0xed,
0xf0, 0x20, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x51, 0x69, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x66,
0x65, 0x63, 0x75, 0x6f, 0x69, 0x6e, 0x67, 0x10, 0xcd, 0x21, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x72, 0x72, 0x65, 0x73, 0x68, 0x4d, 0x61, 0x78, 0x10, 0xee, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x44, 0x69,
0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x10, 0xce, 0x21, 0x12, 0x1a, 0x0a, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64,
0x15, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x10, 0xef, 0x20, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x48,
0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x10, 0xcf, 0x21, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x72, 0x61, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xf0, 0x20, 0x12, 0x16,
0x63, 0x74, 0x69, 0x63, 0x65, 0x50, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x0a, 0x11, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f,
0x10, 0xd0, 0x21, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x59, 0x69, 0x6e, 0x67, 0x10, 0xcd, 0x21, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69,
0x6f, 0x75, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x69, 0x6e, 0x67, 0x10, 0xd1, 0x21, 0x12, 0x1c, 0x63, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x10, 0xce, 0x21, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x72, 0x61,
0x0a, 0x17, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x63, 0x74, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4f,
0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x69, 0x6e, 0x67, 0x10, 0xd2, 0x21, 0x12, 0x16, 0x0a, 0x11, 0x75, 0x74, 0x10, 0xcf, 0x21, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63,
0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x65, 0x50, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0xd0, 0x21, 0x12,
0x6c, 0x10, 0xb1, 0x22, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x49, 0x19, 0x0a, 0x14, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x59, 0x6f, 0x75, 0x51, 0x69,
0x6e, 0x76, 0x69, 0x74, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x75, 0x65, 0x10, 0xb2, 0x22, 0x12, 0x65, 0x63, 0x75, 0x6f, 0x69, 0x6e, 0x67, 0x10, 0xd1, 0x21, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x72,
0x1f, 0x0a, 0x1a, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x51, 0x69, 0x65, 0x63,
0x4e, 0x6f, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0xb3, 0x22, 0x75, 0x6f, 0x69, 0x6e, 0x67, 0x10, 0xd2, 0x21, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x6b,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x6f, 0x75, 0x72, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0xb1, 0x22,
0x74, 0x54, 0x65, 0x61, 0x6d, 0x65, 0x64, 0x10, 0xb4, 0x22, 0x12, 0x19, 0x0a, 0x14, 0x52, 0x65, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74,
0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x46, 0x75, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x75, 0x65, 0x10, 0xb2, 0x22, 0x12, 0x1f, 0x0a, 0x1a, 0x50,
0x6c, 0x6c, 0x10, 0x95, 0x23, 0x12, 0x1a, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x6f, 0x50, 0x65,
0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x50, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x4c, 0x76, 0x10, 0x96, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0xb3, 0x22, 0x12, 0x18, 0x0a, 0x13,
0x23, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x63, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x65, 0x61,
0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xf9, 0x23, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x6c, 0x64, 0x74, 0x6d, 0x65, 0x64, 0x10, 0xb4, 0x22, 0x12, 0x19, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61,
0x69, 0x6d, 0x65, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xfa, 0x23, 0x12, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x95,
0x16, 0x0a, 0x11, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x23, 0x12, 0x1a, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e,
0x4f, 0x76, 0x65, 0x72, 0x10, 0xfb, 0x23, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6f, 0x50, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x4c, 0x76, 0x10, 0x96, 0x23, 0x12, 0x15, 0x0a,
0x6d, 0x65, 0x73, 0x50, 0x72, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x10, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xfc, 0x23, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x6c, 0x64, 0x74, 0x64, 0x10, 0xf9, 0x23, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x69, 0x6d, 0x65, 0x73, 0x4e, 0x6f, 0x41, 0x6c, 0x6c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xfa, 0x23, 0x12, 0x16, 0x0a, 0x11, 0x4f,
0x64, 0x10, 0xfd, 0x23, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x76, 0x65, 0x72,
0x6f, 0x74, 0x6f, 0x33, 0x10, 0xfb, 0x23, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x50,
0x72, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65,
0x64, 0x10, 0xfc, 0x23, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x4e, 0x6f, 0x41, 0x6c, 0x6c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xfd, 0x23,
0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

View File

@ -14,6 +14,7 @@ type GameHeroTalentData struct {
Skillid int32 Skillid int32
Hid string Hid string
Skilltyp int32 Skilltyp int32
Typeline int32
Before []int32 Before []int32
Skillname string Skillname string
Skilltxt string Skilltxt string
@ -38,6 +39,7 @@ func (_v *GameHeroTalentData)Deserialize(_buf map[string]interface{}) (err error
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skillid"].(float64); !_ok_ { err = errors.New("skillid error"); return }; _v.Skillid = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skillid"].(float64); !_ok_ { err = errors.New("skillid error"); return }; _v.Skillid = int32(_tempNum_) }
{ var _ok_ bool; if _v.Hid, _ok_ = _buf["hid"].(string); !_ok_ { err = errors.New("hid error"); return } } { var _ok_ bool; if _v.Hid, _ok_ = _buf["hid"].(string); !_ok_ { err = errors.New("hid error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skilltyp"].(float64); !_ok_ { err = errors.New("skilltyp error"); return }; _v.Skilltyp = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skilltyp"].(float64); !_ok_ { err = errors.New("skilltyp error"); return }; _v.Skilltyp = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["typeline"].(float64); !_ok_ { err = errors.New("typeline error"); return }; _v.Typeline = int32(_tempNum_) }
{ {
var _arr_ []interface{} var _arr_ []interface{}
var _ok_ bool var _ok_ bool