上传接口
This commit is contained in:
parent
6983411410
commit
dee39299e2
@ -62,7 +62,9 @@ type (
|
|||||||
RecoverTicket(session IUserSession) (errdata *pb.ErrorData)
|
RecoverTicket(session IUserSession) (errdata *pb.ErrorData)
|
||||||
//出售道具
|
//出售道具
|
||||||
SellItem(session IUserSession, items map[string]int32, bPush bool) (errdata *pb.ErrorData, atno []*pb.UserAtno)
|
SellItem(session IUserSession, items map[string]int32, bPush bool) (errdata *pb.ErrorData, atno []*pb.UserAtno)
|
||||||
|
//使用物品
|
||||||
|
UseItem(session IUserSession, gid string, amount int32) (errdata *pb.ErrorData)
|
||||||
|
//清理物品
|
||||||
CleanItemById(session IUserSession, t string) (errdata *pb.ErrorData)
|
CleanItemById(session IUserSession, t string) (errdata *pb.ErrorData)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -514,7 +516,7 @@ type (
|
|||||||
CheckCondition(uid string, condiIds ...int32) (condis []*pb.ConIProgress, err error)
|
CheckCondition(uid string, condiIds ...int32) (condis []*pb.ConIProgress, err error)
|
||||||
//激活条件
|
//激活条件
|
||||||
ActiveCondition(uid string, condiIds ...int32) (err error)
|
ActiveCondition(uid string, condiIds ...int32) (err error)
|
||||||
//校验的同时激活条件 废弃
|
//完成任务并校验接口
|
||||||
// CheckAndActiveCondition(uid string, condiIds ...int32) (condIds []int32, err error)
|
FinishConditionAndCheck(uid string, finishcondiIds []int32, condiIds ...int32) (condis []*pb.ConIProgress, err error)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -184,6 +184,133 @@ func (this *Buried) CheckCondition(uid string, condiIds ...int32) (condis []*pb.
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//设置任务完成状态并校验
|
||||||
|
func (this *Buried) FinishConditionAndCheck(uid string, finishcondiIds []int32, condiIds ...int32) (condis []*pb.ConIProgress, err error) {
|
||||||
|
var (
|
||||||
|
bdatas *pb.DBBuried
|
||||||
|
bitem *pb.DBBuriedConItem
|
||||||
|
conf *cfg.GameBuriedCondiData
|
||||||
|
ok bool
|
||||||
|
chanage bool
|
||||||
|
bdata *pb.DBBuriedItem
|
||||||
|
)
|
||||||
|
if bdatas, err = this.modelBuried.getUserBurieds(uid); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
condis = make([]*pb.ConIProgress, 0)
|
||||||
|
|
||||||
|
for _, v := range finishcondiIds {
|
||||||
|
if conf, err = this.configure.getburiedcondidata(v); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if bdata, ok = bdatas.Items[conf.Type]; ok {
|
||||||
|
ok = false
|
||||||
|
for _, v1 := range bdata.Condi {
|
||||||
|
if v1.Conid == v {
|
||||||
|
ok = true
|
||||||
|
if v1.Finish != pb.BuriedItemFinishState_buried_finish {
|
||||||
|
if conf.Ctype == ctype_once { //完成后自动锁定
|
||||||
|
v1.State = pb.BuriedItemState_Freeze
|
||||||
|
} else if conf.Ctype == ctype_repeat {
|
||||||
|
v1.State = pb.BuriedItemState_Sleep
|
||||||
|
} else if conf.Ctype == ctype_daily {
|
||||||
|
v1.State = pb.BuriedItemState_Sleep
|
||||||
|
} else if conf.Ctype == ctype_weekly {
|
||||||
|
v1.State = pb.BuriedItemState_Sleep
|
||||||
|
}
|
||||||
|
v1.Value = conf.Value
|
||||||
|
v1.Finish = pb.BuriedItemFinishState_buried_finish
|
||||||
|
chanage = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !ok { //未找到 初始化一个
|
||||||
|
bitem = &pb.DBBuriedConItem{
|
||||||
|
Conid: v,
|
||||||
|
State: pb.BuriedItemState_Activated,
|
||||||
|
Value: conf.Value,
|
||||||
|
Statistics: make([]string, 0),
|
||||||
|
Timestamp: time.Now().Unix(),
|
||||||
|
Finish: pb.BuriedItemFinishState_buried_finish,
|
||||||
|
}
|
||||||
|
if conf.Ctype == ctype_once { //完成后自动锁定
|
||||||
|
bitem.State = pb.BuriedItemState_Freeze
|
||||||
|
} else if conf.Ctype == ctype_repeat {
|
||||||
|
bitem.State = pb.BuriedItemState_Sleep
|
||||||
|
} else if conf.Ctype == ctype_daily {
|
||||||
|
bitem.State = pb.BuriedItemState_Sleep
|
||||||
|
} else if conf.Ctype == ctype_weekly {
|
||||||
|
bitem.State = pb.BuriedItemState_Sleep
|
||||||
|
}
|
||||||
|
bdata.Condi = append(bdata.Condi, bitem)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, v := range condiIds {
|
||||||
|
if conf, err = this.configure.getburiedcondidata(v); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if bdata, ok := bdatas.Items[conf.Type]; ok {
|
||||||
|
ok = false
|
||||||
|
for _, v1 := range bdata.Condi {
|
||||||
|
if v1.Conid == v {
|
||||||
|
ok = true
|
||||||
|
//状态等于休眠
|
||||||
|
if v1.State == pb.BuriedItemState_Sleep {
|
||||||
|
if conf.Ctype == ctype_daily { //日常
|
||||||
|
if !utils.IsToday(v1.Timestamp) { //不是同一天 可以重置数据
|
||||||
|
v1.State = pb.BuriedItemState_Activated
|
||||||
|
v1.Value = 0
|
||||||
|
v1.Finish = pb.BuriedItemFinishState_buried_unfinish
|
||||||
|
}
|
||||||
|
} else if conf.Ctype == ctype_weekly { //周常
|
||||||
|
if !utils.IsSameWeek(v1.Timestamp) { //不是同一周
|
||||||
|
v1.State = pb.BuriedItemState_Activated
|
||||||
|
v1.Value = 0
|
||||||
|
v1.Finish = pb.BuriedItemFinishState_buried_unfinish
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
condis = append(condis, &pb.ConIProgress{
|
||||||
|
Btype: conf.Type,
|
||||||
|
Conid: v1.Conid,
|
||||||
|
Value: v1.Value,
|
||||||
|
Target: conf.Value,
|
||||||
|
State: v1.Finish,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !ok { //未找到 初始化一个
|
||||||
|
condis = append(condis, &pb.ConIProgress{
|
||||||
|
Btype: conf.Type,
|
||||||
|
Conid: v,
|
||||||
|
Value: 0,
|
||||||
|
Target: conf.Value,
|
||||||
|
State: pb.BuriedItemFinishState_buried_unfinish,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else { //未找到 初始化一个
|
||||||
|
condis = append(condis, &pb.ConIProgress{
|
||||||
|
Btype: conf.Type,
|
||||||
|
Conid: v,
|
||||||
|
Value: 0,
|
||||||
|
Target: conf.Value,
|
||||||
|
State: pb.BuriedItemFinishState_buried_unfinish,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if chanage {
|
||||||
|
if err = this.modelBuried.updateUserBurieds(uid, bdatas); err != nil {
|
||||||
|
this.Error("更新用户埋点数据错误!", log.Field{Key: "err", Value: err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
//触发埋点
|
//触发埋点
|
||||||
func (this *Buried) TriggerBuried(uid string, burieds ...*pb.BuriedParam) {
|
func (this *Buried) TriggerBuried(uid string, burieds ...*pb.BuriedParam) {
|
||||||
|
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
package items
|
package items
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"go_dreamfactory/comm"
|
"go_dreamfactory/comm"
|
||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
cfg "go_dreamfactory/sys/configure/structs"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//参数校验
|
//参数校验
|
||||||
@ -20,198 +18,13 @@ func (this *apiComp) UseitemCheck(session comm.IUserSession, req *pb.ItemsUseIte
|
|||||||
|
|
||||||
//使用道具
|
//使用道具
|
||||||
func (this *apiComp) Useitem(session comm.IUserSession, req *pb.ItemsUseItemReq) (errdata *pb.ErrorData) {
|
func (this *apiComp) Useitem(session comm.IUserSession, req *pb.ItemsUseItemReq) (errdata *pb.ErrorData) {
|
||||||
var (
|
|
||||||
err error
|
|
||||||
item *pb.DB_UserItemData
|
|
||||||
itemcf *cfg.GameItemData
|
|
||||||
prop []*cfg.GameDropData
|
|
||||||
)
|
|
||||||
if errdata = this.UseitemCheck(session, req); errdata != nil {
|
if errdata = this.UseitemCheck(session, req); errdata != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if item, err = this.module.modelItems.QueryUserPackByGridId(session.GetUserId(), req.GridId); err != nil {
|
if errdata = this.module.modelItems.useitem(session, req.GridId, int32(req.Amount), req.Select); errdata != nil {
|
||||||
errdata = &pb.ErrorData{
|
|
||||||
Code: pb.ErrorCode_ReqParameterError,
|
|
||||||
Title: pb.ErrorCode_ReqParameterError.ToString(),
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if itemcf, err = this.module.configure.GetItemConfigure(item.ItemId); err != nil {
|
|
||||||
errdata = &pb.ErrorData{
|
|
||||||
Code: pb.ErrorCode_ConfigurationException,
|
|
||||||
Title: pb.ErrorCode_ConfigurationException.ToString(),
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
switch itemcf.Usetype {
|
|
||||||
case itemuse_exchange: //分解(体力,兑换
|
|
||||||
sale := make([]*cfg.Gameatn, 0, len(prop))
|
|
||||||
for _, v := range itemcf.DecomposeDeplete {
|
|
||||||
sale = append(sale, &cfg.Gameatn{
|
|
||||||
A: v.A,
|
|
||||||
T: v.T,
|
|
||||||
N: v.N * int32(req.Amount),
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
if errdata = this.module.AddItemforGrid(session, req.GridId, -1*int32(req.Amount), true); errdata != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if errdata = this.module.DispenseRes(session, sale, true); errdata != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case itemuse_optionalbox: //自选宝箱
|
|
||||||
if prop = this.module.configure.GetDropData(itemcf.BoxId); prop == nil {
|
|
||||||
errdata = &pb.ErrorData{
|
|
||||||
Code: pb.ErrorCode_ConfigNoFound,
|
|
||||||
Title: pb.ErrorCode_ConfigNoFound.ToString(),
|
|
||||||
Message: fmt.Sprintf("掉落组未找到:%d", itemcf.BoxId),
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if errdata = this.module.AddItemforGrid(session, req.GridId, -1*int32(req.Amount), true); errdata != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var sale []*cfg.Gameatn
|
|
||||||
for _, v := range prop {
|
|
||||||
if v.Id == req.Select {
|
|
||||||
for _, v1 := range v.Prize {
|
|
||||||
sale = append(sale, &cfg.Gameatn{
|
|
||||||
A: v1.A,
|
|
||||||
T: v1.T,
|
|
||||||
N: v1.N * int32(req.Amount),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if sale == nil {
|
|
||||||
this.module.Errorf("no found target sale:%v", req.Select)
|
|
||||||
errdata = &pb.ErrorData{
|
|
||||||
Code: pb.ErrorCode_ReqParameterError,
|
|
||||||
Title: pb.ErrorCode_ReqParameterError.ToString(),
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if errdata = this.module.DispenseRes(session, sale, true); errdata != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
case itemuse_randombox: //宝箱
|
|
||||||
if prop = this.module.configure.GetDropData(itemcf.BoxId); prop == nil {
|
|
||||||
errdata = &pb.ErrorData{
|
|
||||||
Code: pb.ErrorCode_ConfigNoFound,
|
|
||||||
Title: pb.ErrorCode_ConfigNoFound.ToString(),
|
|
||||||
Message: fmt.Sprintf("掉落组未找到:%d", itemcf.BoxId),
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
sale := make([]*cfg.Gameatn, 0)
|
|
||||||
for i := uint32(0); i < req.Amount; i++ {
|
|
||||||
sale = append(sale, RandomProps(prop).Prize...)
|
|
||||||
}
|
|
||||||
if errdata = this.module.AddItemforGrid(session, req.GridId, -1*int32(req.Amount), true); errdata != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if errdata = this.module.DispenseRes(session, sale, true); errdata != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
case itemuse_synthesis: //合成/分解
|
|
||||||
if req.Select == 0 { // 合成
|
|
||||||
if itemcf.SynthetizeGet == nil || len(itemcf.SynthetizeGet) == 0 {
|
|
||||||
errdata = &pb.ErrorData{
|
|
||||||
Code: pb.ErrorCode_ConfigNoFound,
|
|
||||||
Title: pb.ErrorCode_ConfigNoFound.ToString(),
|
|
||||||
Message: fmt.Sprintf("道具合成未配置! 道具id:%s ", itemcf.Id),
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if itemcf.SynthetizeNum*int32(req.Amount) > int32(item.Amount) { //碎片数量不够
|
|
||||||
errdata = &pb.ErrorData{
|
|
||||||
Code: pb.ErrorCode_ItemsNoEnough,
|
|
||||||
Title: pb.ErrorCode_ItemsNoEnough.ToString(),
|
|
||||||
Message: fmt.Sprintf("道具Id:%s", itemcf.Id),
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
sale := make([]*cfg.Gameatn, 0, len(itemcf.SynthetizeDeplete))
|
|
||||||
for _, v := range itemcf.SynthetizeDeplete {
|
|
||||||
sale = append(sale, &cfg.Gameatn{
|
|
||||||
A: v.A,
|
|
||||||
T: v.T,
|
|
||||||
N: v.N * int32(req.Amount),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if errdata = this.module.ConsumeRes(session, sale, true); errdata != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if errdata = this.module.AddItemforGrid(session, req.GridId, -1*itemcf.SynthetizeNum*int32(req.Amount), true); errdata != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
sale = make([]*cfg.Gameatn, 0, len(prop))
|
|
||||||
for _, v1 := range itemcf.SynthetizeGet {
|
|
||||||
sale = append(sale, &cfg.Gameatn{
|
|
||||||
A: v1.A,
|
|
||||||
T: v1.T,
|
|
||||||
N: v1.N * int32(req.Amount),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if errdata = this.module.DispenseRes(session, sale, true); errdata != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if itemcf.DecomposeGet == nil || len(itemcf.DecomposeGet) == 0 {
|
|
||||||
errdata = &pb.ErrorData{
|
|
||||||
Code: pb.ErrorCode_ConfigNoFound,
|
|
||||||
Title: pb.ErrorCode_ConfigNoFound.ToString(),
|
|
||||||
Message: fmt.Sprintf("道具分解未配置! 道具id:%s ", itemcf.Id),
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if itemcf.SynthetizeNum*int32(req.Amount) > int32(item.Amount) { //碎片数量不够
|
|
||||||
errdata = &pb.ErrorData{
|
|
||||||
Code: pb.ErrorCode_ItemsNoEnough,
|
|
||||||
Title: pb.ErrorCode_ItemsNoEnough.ToString(),
|
|
||||||
Message: fmt.Sprintf("道具Id:%s", itemcf.Id),
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
sale := make([]*cfg.Gameatn, 0, len(itemcf.DecomposeDeplete))
|
|
||||||
for _, v := range itemcf.DecomposeDeplete {
|
|
||||||
sale = append(sale, &cfg.Gameatn{
|
|
||||||
A: v.A,
|
|
||||||
T: v.T,
|
|
||||||
N: v.N * int32(req.Amount),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if errdata = this.module.ConsumeRes(session, sale, true); errdata != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if errdata = this.module.AddItemforGrid(session, req.GridId, -1*int32(req.Amount), true); errdata != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
sale = make([]*cfg.Gameatn, len(itemcf.Sale))
|
|
||||||
for i, v := range itemcf.DecomposeGet {
|
|
||||||
temp := *v
|
|
||||||
sale[i] = &temp
|
|
||||||
sale[i].N = v.N * int32(req.Amount)
|
|
||||||
}
|
|
||||||
if errdata = this.module.DispenseRes(session, sale, true); errdata != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
errdata = &pb.ErrorData{
|
|
||||||
Code: pb.ErrorCode_ItemsUseNotSupported,
|
|
||||||
Title: pb.ErrorCode_ItemsUseNotSupported.ToString(),
|
|
||||||
Message: fmt.Sprintf("道具使用类型:%d", itemcf.Usetype),
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
session.SendMsg(string(this.module.GetType()), "useitem", &pb.ItemsUseItemResp{GridId: req.GridId, Amount: req.Amount, Issucc: true})
|
session.SendMsg(string(this.module.GetType()), "useitem", &pb.ItemsUseItemResp{GridId: req.GridId, Amount: req.Amount, Issucc: true})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -22,10 +22,9 @@ const (
|
|||||||
const (
|
const (
|
||||||
itemuse_nouse int32 = 1 //不可使用
|
itemuse_nouse int32 = 1 //不可使用
|
||||||
itemuse_jump int32 = 2 //跳转
|
itemuse_jump int32 = 2 //跳转
|
||||||
itemuse_exchange int32 = 3 //分解(体力,兑换)
|
itemuse_exchange int32 = 3 //合成/分解(体力,兑换)
|
||||||
itemuse_optionalbox int32 = 4 //自选宝箱
|
itemuse_optionalbox int32 = 4 //自选宝箱
|
||||||
itemuse_randombox int32 = 5 //随机宝箱
|
itemuse_randombox int32 = 5 //随机宝箱
|
||||||
itemuse_synthesis int32 = 6 //合成(英雄,觉醒)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -598,3 +598,180 @@ func (this *ModelItemsComp) recoverTicket(session comm.IUserSession) (errdata *p
|
|||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///使用道具
|
||||||
|
func (this *ModelItemsComp) useitem(session comm.IUserSession, gid string, amount int32, slt int32) (errdata *pb.ErrorData) {
|
||||||
|
var (
|
||||||
|
item *pb.DB_UserItemData
|
||||||
|
itemcf *cfg.GameItemData
|
||||||
|
prop []*cfg.GameDropData
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
if item, err = this.module.modelItems.QueryUserPackByGridId(session.GetUserId(), gid); err != nil {
|
||||||
|
errdata = &pb.ErrorData{
|
||||||
|
Code: pb.ErrorCode_ReqParameterError,
|
||||||
|
Title: pb.ErrorCode_ReqParameterError.ToString(),
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if itemcf, err = this.module.configure.GetItemConfigure(item.ItemId); err != nil {
|
||||||
|
errdata = &pb.ErrorData{
|
||||||
|
Code: pb.ErrorCode_ConfigurationException,
|
||||||
|
Title: pb.ErrorCode_ConfigurationException.ToString(),
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
switch itemcf.Usetype {
|
||||||
|
case itemuse_exchange: //合成/分解
|
||||||
|
if slt == 0 { // 合成
|
||||||
|
if itemcf.SynthetizeGet == nil || len(itemcf.SynthetizeGet) == 0 {
|
||||||
|
errdata = &pb.ErrorData{
|
||||||
|
Code: pb.ErrorCode_ConfigNoFound,
|
||||||
|
Title: pb.ErrorCode_ConfigNoFound.ToString(),
|
||||||
|
Message: fmt.Sprintf("道具合成未配置! 道具id:%s ", itemcf.Id),
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if itemcf.SynthetizeNum*int32(amount) > int32(item.Amount) { //碎片数量不够
|
||||||
|
errdata = &pb.ErrorData{
|
||||||
|
Code: pb.ErrorCode_ItemsNoEnough,
|
||||||
|
Title: pb.ErrorCode_ItemsNoEnough.ToString(),
|
||||||
|
Message: fmt.Sprintf("道具Id:%s", itemcf.Id),
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sale := make([]*cfg.Gameatn, 0, len(itemcf.SynthetizeDeplete))
|
||||||
|
for _, v := range itemcf.SynthetizeDeplete {
|
||||||
|
sale = append(sale, &cfg.Gameatn{
|
||||||
|
A: v.A,
|
||||||
|
T: v.T,
|
||||||
|
N: v.N * int32(amount),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if errdata = this.module.ConsumeRes(session, sale, true); errdata != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if errdata = this.module.AddItemforGrid(session, gid, -1*itemcf.SynthetizeNum*int32(amount), true); errdata != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sale = make([]*cfg.Gameatn, 0, len(itemcf.SynthetizeGet))
|
||||||
|
for _, v1 := range itemcf.SynthetizeGet {
|
||||||
|
sale = append(sale, &cfg.Gameatn{
|
||||||
|
A: v1.A,
|
||||||
|
T: v1.T,
|
||||||
|
N: v1.N * int32(amount),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if errdata = this.module.DispenseRes(session, sale, true); errdata != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if itemcf.DecomposeGet == nil || len(itemcf.DecomposeGet) == 0 {
|
||||||
|
errdata = &pb.ErrorData{
|
||||||
|
Code: pb.ErrorCode_ConfigNoFound,
|
||||||
|
Title: pb.ErrorCode_ConfigNoFound.ToString(),
|
||||||
|
Message: fmt.Sprintf("道具分解未配置! 道具id:%s ", itemcf.Id),
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if itemcf.SynthetizeNum*int32(amount) > int32(item.Amount) { //碎片数量不够
|
||||||
|
errdata = &pb.ErrorData{
|
||||||
|
Code: pb.ErrorCode_ItemsNoEnough,
|
||||||
|
Title: pb.ErrorCode_ItemsNoEnough.ToString(),
|
||||||
|
Message: fmt.Sprintf("道具Id:%s", itemcf.Id),
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sale := make([]*cfg.Gameatn, 0, len(itemcf.DecomposeDeplete))
|
||||||
|
for _, v := range itemcf.DecomposeDeplete {
|
||||||
|
sale = append(sale, &cfg.Gameatn{
|
||||||
|
A: v.A,
|
||||||
|
T: v.T,
|
||||||
|
N: v.N * int32(amount),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if errdata = this.module.ConsumeRes(session, sale, true); errdata != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if errdata = this.module.AddItemforGrid(session, gid, -1*int32(amount), true); errdata != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
sale = make([]*cfg.Gameatn, len(itemcf.Sale))
|
||||||
|
for i, v := range itemcf.DecomposeGet {
|
||||||
|
temp := *v
|
||||||
|
sale[i] = &temp
|
||||||
|
sale[i].N = v.N * int32(amount)
|
||||||
|
}
|
||||||
|
if errdata = this.module.DispenseRes(session, sale, true); errdata != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case itemuse_optionalbox: //自选宝箱
|
||||||
|
if prop = this.module.configure.GetDropData(itemcf.BoxId); prop == nil {
|
||||||
|
errdata = &pb.ErrorData{
|
||||||
|
Code: pb.ErrorCode_ConfigNoFound,
|
||||||
|
Title: pb.ErrorCode_ConfigNoFound.ToString(),
|
||||||
|
Message: fmt.Sprintf("掉落组未找到:%d", itemcf.BoxId),
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if errdata = this.module.AddItemforGrid(session, gid, -1*int32(amount), true); errdata != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var sale []*cfg.Gameatn
|
||||||
|
for _, v := range prop {
|
||||||
|
if v.Id == slt {
|
||||||
|
for _, v1 := range v.Prize {
|
||||||
|
sale = append(sale, &cfg.Gameatn{
|
||||||
|
A: v1.A,
|
||||||
|
T: v1.T,
|
||||||
|
N: v1.N * int32(amount),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if sale == nil {
|
||||||
|
this.module.Errorf("no found target sale:%v", slt)
|
||||||
|
errdata = &pb.ErrorData{
|
||||||
|
Code: pb.ErrorCode_ReqParameterError,
|
||||||
|
Title: pb.ErrorCode_ReqParameterError.ToString(),
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if errdata = this.module.DispenseRes(session, sale, true); errdata != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case itemuse_randombox: //宝箱
|
||||||
|
if prop = this.module.configure.GetDropData(itemcf.BoxId); prop == nil {
|
||||||
|
errdata = &pb.ErrorData{
|
||||||
|
Code: pb.ErrorCode_ConfigNoFound,
|
||||||
|
Title: pb.ErrorCode_ConfigNoFound.ToString(),
|
||||||
|
Message: fmt.Sprintf("掉落组未找到:%d", itemcf.BoxId),
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sale := make([]*cfg.Gameatn, 0)
|
||||||
|
for i := int32(0); i < amount; i++ {
|
||||||
|
sale = append(sale, RandomProps(prop).Prize...)
|
||||||
|
}
|
||||||
|
if errdata = this.module.AddItemforGrid(session, gid, -1*int32(amount), true); errdata != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if errdata = this.module.DispenseRes(session, sale, true); errdata != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
errdata = &pb.ErrorData{
|
||||||
|
Code: pb.ErrorCode_ItemsUseNotSupported,
|
||||||
|
Title: pb.ErrorCode_ItemsUseNotSupported.ToString(),
|
||||||
|
Message: fmt.Sprintf("道具使用类型:%d", itemcf.Usetype),
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
@ -213,6 +213,12 @@ func (this *Items) AddItems(session comm.IUserSession, items map[string]int32, b
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//使用物品
|
||||||
|
func (this *Items) UseItem(session comm.IUserSession, gid string, amount int32, slt int32) (errdata *pb.ErrorData) {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
//清理背包
|
//清理背包
|
||||||
func (this *Items) CleanItems(session comm.IUserSession) (errdata *pb.ErrorData) {
|
func (this *Items) CleanItems(session comm.IUserSession) (errdata *pb.ErrorData) {
|
||||||
var (
|
var (
|
||||||
|
Loading…
Reference in New Issue
Block a user