diff --git a/modules/gourmet/model_gourmet.go b/modules/gourmet/model_gourmet.go index 1e6bb1fa0..89b799364 100644 --- a/modules/gourmet/model_gourmet.go +++ b/modules/gourmet/model_gourmet.go @@ -69,8 +69,10 @@ func (this *modelGourmet) GetDropReward(count, dropId int32, Items []*pb.UserAss for _, value := range data { szW = append(szW, value.P) } - index := comm.GetRandW(szW) - res = append(res, data[index].Prize...) + if len(szW) > 0 { + index := comm.GetRandW(szW) + res = append(res, data[index].Prize...) + } } for _, v := range res { bFind := false diff --git a/modules/smithy/api_deskskilllv.go b/modules/smithy/api_deskskilllv.go index 509c116eb..9bb808296 100644 --- a/modules/smithy/api_deskskilllv.go +++ b/modules/smithy/api_deskskilllv.go @@ -56,7 +56,7 @@ func (this *apiComp) DeskSkillLv(session comm.IUserSession, req *pb.SmithyDeskSk if n.Int64() < int64(curSkillCfg.Probability) { // 可以升级 // 技能升级成功 _smithy.Skill[req.DeskType] += 1 - this.module.modelSmithy.CalculationDeskSkillLv(session.GetUserId(), _smithy, req.DeskType, _smithy.Skill[req.DeskType]) + this.module.modelSmithy.CalculationDeskSkillLv(session.GetUserId(), _smithy) } } else { diff --git a/modules/smithy/api_stoveskilllv.go b/modules/smithy/api_stoveskilllv.go new file mode 100644 index 000000000..18af0dd8a --- /dev/null +++ b/modules/smithy/api_stoveskilllv.go @@ -0,0 +1,56 @@ +package smithy + +import ( + "crypto/rand" + "go_dreamfactory/comm" + "go_dreamfactory/pb" + "math/big" + + "google.golang.org/protobuf/proto" +) + +//参数校验 +func (this *apiComp) StoveSkillLvCkeck(session comm.IUserSession, req *pb.SmithyStoveSkillLvReq) (code pb.ErrorCode) { + + return +} + +func (this *apiComp) StoveSkillLv(session comm.IUserSession, req *pb.SmithyStoveSkillLvReq) (code pb.ErrorCode, dat proto.Message) { + + code = this.StoveSkillLvCkeck(session, req) + if code != pb.ErrorCode_Success { + return // 参数校验失败直接返回 + } + _smithy, err := this.module.modelSmithy.getSmithyList(session.GetUserId()) + if err != nil { + code = pb.ErrorCode_DBError + return + } + curLvData := this.configure.GetSmithyStoveConfigData(_smithy.StoveLv) + if curLvData == nil { + code = pb.ErrorCode_GourmetSkillMaxLv + return + } + nextLvData := this.configure.GetSmithyStoveConfigData(_smithy.StoveLv + 1) + if nextLvData == nil { + code = pb.ErrorCode_GourmetSkillMaxLv + return + } + // 升级 + code = this.module.ConsumeRes(session, curLvData.Starupneed, true) // 消耗检测 + if code != pb.ErrorCode_Success { + return + } + + // 概率升级 + n, _ := rand.Int(rand.Reader, big.NewInt(100)) + + if n.Int64() < int64(curLvData.Probability) { // 可以升级 + // 技能升级成功 + _smithy.StoveLv += 1 + this.module.modelSmithy.CalculationStoveSkillLv(session.GetUserId(), _smithy, _smithy.StoveLv) + } + + session.SendMsg(string(this.module.GetType()), SmithyDeskSkillLvResp, &pb.SmithyDeskSkillLvResp{Data: _smithy}) + return +} diff --git a/modules/smithy/model_gourmet.go b/modules/smithy/model_gourmet.go index 9580c6d0d..c68258881 100644 --- a/modules/smithy/model_gourmet.go +++ b/modules/smithy/model_gourmet.go @@ -161,29 +161,19 @@ func (this *modelSmithy) CalculationSmithy(uid string, Smithy *pb.DBSmithy) { this.module.ModifySmithyData(uid, mapData) } -// 技能等级提高了 重新计算订单时间(只对订单中数据有影响) -func (this *modelSmithy) CalculationSmithybySkiiLv(uid string, Smithy *pb.DBSmithy, skillType int32, skilllv int32) { +// 技能升级 重计算时间消耗 +func (this *modelSmithy) CalculationDeskSkillLv(uid string, Smithy *pb.DBSmithy) { mapData := make(map[string]interface{}, 0) - for _, v := range Smithy.Orders { - if v.DeskType > 0 && v.DeskType == skillType { - _skillCfg := this.module.configure.GetSmithyStoveConfigData(skilllv) - if _skillCfg != nil { - v.NeedTime = _skillCfg.Time * v.Count - mapData["orders"] = Smithy.Orders - } - break - } - } + mapData["skill"] = Smithy.Skill this.module.ModifySmithyData(uid, mapData) } -// 技能升级 重计算时间消耗 -func (this *modelSmithy) CalculationDeskSkillLv(uid string, Smithy *pb.DBSmithy, skillType int32, skilllv int32) { +func (this *modelSmithy) CalculationStoveSkillLv(uid string, Smithy *pb.DBSmithy, stoveSkillLv int32) { mapData := make(map[string]interface{}, 0) for _, v := range Smithy.Orders { if v.Count > 0 { - _skillCfg := this.module.configure.GetSmithyStoveConfigData(skilllv) + _skillCfg := this.module.configure.GetSmithyStoveConfigData(stoveSkillLv) if _skillCfg != nil { v.NeedTime += _skillCfg.Time * v.Count if v.NeedTime < 0 { // 担心配置错误 为负数情况 所以这里做下判断