技能升级权重配置修改
This commit is contained in:
parent
c665e6e0ae
commit
690ec7a5d4
@ -1,11 +1,9 @@
|
|||||||
package hero
|
package hero
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/rand"
|
|
||||||
"go_dreamfactory/comm"
|
"go_dreamfactory/comm"
|
||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
"go_dreamfactory/utils"
|
"go_dreamfactory/utils"
|
||||||
"math/big"
|
|
||||||
|
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
@ -23,10 +21,7 @@ func (this *apiComp) StrengthenUpSkillCheck(session comm.IUserSession, req *pb.H
|
|||||||
/// 英雄技能升级
|
/// 英雄技能升级
|
||||||
func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroStrengthenUpSkillReq) (code pb.ErrorCode, data proto.Message) {
|
func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroStrengthenUpSkillReq) (code pb.ErrorCode, data proto.Message) {
|
||||||
var (
|
var (
|
||||||
probability map[int32]int32 // 即将升级技能的权重
|
upSkillPos int32 // 升级的技能位置
|
||||||
upSkillPos int32 // 升级的技能位置
|
|
||||||
totalprobability int32 // 所有技能总权重
|
|
||||||
|
|
||||||
_hero *pb.DBHero // 操作的英雄
|
_hero *pb.DBHero // 操作的英雄
|
||||||
ChangeList []*pb.DBHero // 推送 改变的英雄
|
ChangeList []*pb.DBHero // 推送 改变的英雄
|
||||||
mapCostHero map[string]int32 // 消耗的技能卡
|
mapCostHero map[string]int32 // 消耗的技能卡
|
||||||
@ -96,50 +91,35 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroSt
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
tmpUpSkillID := make(map[int32]bool, 0)
|
|
||||||
for i := 0; i < int(lvUpCount); i++ { // 升级技能
|
for i := 0; i < int(lvUpCount); i++ { // 升级技能
|
||||||
probability = make(map[int32]int32, 0)
|
|
||||||
for index, skill := range _hero.NormalSkill {
|
sz := make([]int32, 0)
|
||||||
|
for _, skill := range _hero.NormalSkill {
|
||||||
skillMaxLv := this.module.configure.GetHeroSkillMaxLvConfig(uint32(skill.SkillID))
|
skillMaxLv := this.module.configure.GetHeroSkillMaxLvConfig(uint32(skill.SkillID))
|
||||||
if skill.SkillLv < skillMaxLv { // 找到没有满级的技能id
|
if skill.SkillLv < skillMaxLv { // 找到没有满级的技能id
|
||||||
tmpUpSkillID[int32(index)] = true
|
|
||||||
skillData := this.module.configure.GetHeroSkillUpConfig(skill.SkillID)
|
skillData := this.module.configure.GetHeroSkillUpConfig(skill.SkillID)
|
||||||
if skillData == nil {
|
if skillData == nil {
|
||||||
code = pb.ErrorCode_ConfigNoFound
|
code = pb.ErrorCode_ConfigNoFound
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
sz = append(sz, skillData.Probability[skill.SkillLv])
|
||||||
probability[skill.SkillID] = skillData.Probability[skill.SkillLv] // 获取权重
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(tmpUpSkillID) == 0 {
|
if len(sz) == 0 {
|
||||||
code = pb.ErrorCode_HeroMaxSkillLv
|
code = pb.ErrorCode_HeroMaxSkillLv
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
upSkillPos = comm.GetRandW(sz)
|
||||||
totalprobability = 0
|
if upSkillPos > 0 {
|
||||||
// 根据权重升级对应的技能
|
for index, skill := range _hero.NormalSkill {
|
||||||
for _, v := range probability {
|
if int32(index) == upSkillPos { // 找到指定位置技能并升级
|
||||||
totalprobability += v
|
skill.SkillLv += 1
|
||||||
}
|
break
|
||||||
if totalprobability == 0 {
|
}
|
||||||
code = pb.ErrorCode_HeroMaxLv // 升满了
|
|
||||||
return
|
|
||||||
}
|
|
||||||
n, _ := rand.Int(rand.Reader, big.NewInt(int64(totalprobability)))
|
|
||||||
tmp := 0
|
|
||||||
for k, v := range probability {
|
|
||||||
tmp += int(v)
|
|
||||||
if int32(n.Int64()) < v { // 找到了
|
|
||||||
upSkillPos = k
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for index, skill := range _hero.NormalSkill {
|
|
||||||
if int32(index) == upSkillPos { // 找到指定位置技能并升级
|
|
||||||
skill.SkillLv += 1
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
this.module.Errorf("技能升级失败:uid:%s,oid:%s", session.GetUserId(), _hero.Id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user