商队测试 + 铁匠铺掉落

This commit is contained in:
meixiongfeng 2023-09-11 14:43:16 +08:00
parent 5b41afb95c
commit c08678a30a
5 changed files with 134 additions and 15 deletions

View File

@ -74,12 +74,14 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.EnchantCha
this.module.CheckRank(session.GetUserId(), req.BossType, req.Report, userinfo, req.Score) this.module.CheckRank(session.GetUserId(), req.BossType, req.Report, userinfo, req.Score)
} }
//this.module.CheckRank(session.GetUserId(), req.BossType, enchant, req.Report, req.Score) //this.module.CheckRank(session.GetUserId(), req.BossType, enchant, req.Report, req.Score)
user := this.module.ModuleUser.GetUser(session.GetUserId())
enchant.Boss[req.BossType] = req.Score // 获得的积分 enchant.Boss[req.BossType] = req.Score // 获得的积分
// 发放通关随机奖励 // 发放通关随机奖励
for _, v := range cfgEnchant { for _, v := range cfgEnchant {
if score >= v.ScoreLow && score <= v.ScoreUp { if score >= v.ScoreLow && score <= v.ScoreUp {
for _, v1 := range v.RewardDrop { for _, v1 := range v.RewardDrop {
reward := this.module.configure.GetDropReward(v1) // 获取掉落奖励 reward := this.module.ModuleTools.GetGroupDataByLottery(v1, user.Vip, user.Lv)
//reward := this.module.configure.GetDropReward(v1) // 获取掉落奖励
if errdata = this.module.DispenseRes(session, reward, true); errdata != nil { if errdata = this.module.DispenseRes(session, reward, true); errdata != nil {
return return
} }

View File

@ -1,7 +1,6 @@
package equipment package equipment
import ( import (
"crypto/rand"
"fmt" "fmt"
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
@ -10,7 +9,6 @@ import (
cfg "go_dreamfactory/sys/configure/structs" cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/sys/db" "go_dreamfactory/sys/db"
"math" "math"
"math/big"
"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"
@ -258,7 +256,6 @@ func (this *modelEquipmentComp) newEquipment(uid string, conf *cfg.GameEquipData
equipatt *cfg.GameEquipAttributeData equipatt *cfg.GameEquipAttributeData
weight []int32 weight []int32
index int32 index int32
total int64
maxindex int maxindex int
satterNum int32 satterNum int32
) )
@ -309,16 +306,17 @@ func (this *modelEquipmentComp) newEquipment(uid string, conf *cfg.GameEquipData
weight[i] += dyweight[i] weight[i] += dyweight[i]
} }
} }
for _, v := range weight { satterNum = conf.Addattrnum[comm.GetRandW(weight)]
total += int64(v) // for _, v := range weight {
} // total += int64(v)
result, _ := rand.Int(rand.Reader, big.NewInt(total)) // }
for i, v := range weight { // result, _ := rand.Int(rand.Reader, big.NewInt(total))
if int32(result.Int64()) <= v { // for i, v := range weight {
satterNum = conf.Addattrnum[i] // if int32(result.Int64()) <= v {
break // satterNum = conf.Addattrnum[i]
} // break
} // }
// }
if satterNum > int32(len(sattr)) { if satterNum > int32(len(sattr)) {
satterNum = int32(len(sattr)) satterNum = int32(len(sattr))
} }

View File

@ -0,0 +1,116 @@
package robot
import (
"errors"
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"google.golang.org/protobuf/proto"
)
//商队模块 机器人
type ModuleRobot_Caravan struct {
goods map[pb.ShopType][]*pb.ShopItem
}
func (this *ModuleRobot_Caravan) Init() (err error) {
this.goods = make(map[pb.ShopType][]*pb.ShopItem)
return
}
//接收到消息
func (this *ModuleRobot_Caravan) Receive(robot IRobot, stype string, message proto.Message) (err error) {
switch stype {
case "getlist":
resp := message.(*pb.ShopGetListResp)
this.goods[resp.SType] = resp.Goods
break
}
return
}
func (this *ModuleRobot_Caravan) OncePipeline(robot IRobot) (err error) {
var (
errdata *pb.ErrorData
)
if _, errdata = robot.SendMessage("shop", "getlist", &pb.ShopGetListReq{
SType: pb.ShopType_DiamondShop,
}); errdata != nil {
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
return
}
return
}
//机器人执行流
func (this *ModuleRobot_Caravan) DoPipeline(robot IRobot) (err error) {
var (
errdata *pb.ErrorData
usermodule *ModuleRobot_User
)
usermodule = robot.GetModule(comm.ModuleUser).(*ModuleRobot_User)
for _, v := range this.goods[pb.ShopType_GoldShop] {
if v.LeftBuyNum > 0 && usermodule.user.Gold >= int64(v.Consume[0].N) {
if _, errdata = robot.SendMessage("shop", "buy", &pb.ShopBuyReq{
ShopType: pb.ShopType_GoldShop,
Gid: v.Gid,
BuyNum: 1,
}); errdata != nil {
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
return
}
break
}
}
for _, v := range this.goods[pb.ShopType_DiamondShop] {
if v.LeftBuyNum > 0 && usermodule.user.Diamond >= int64(v.Consume[0].N) {
if _, errdata = robot.SendMessage("shop", "buy", &pb.ShopBuyReq{
ShopType: pb.ShopType_DiamondShop,
Gid: v.Gid,
BuyNum: 1,
}); errdata != nil {
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
return
}
break
}
}
return
}
//做任务
func (this *ModuleRobot_Caravan) DoTask(robot IRobot, taskconf *cfg.GameWorldTaskData, condconf *cfg.GameBuriedCondiData) (err error) {
var (
errdata *pb.ErrorData
)
switch comm.TaskType(condconf.Type) {
case comm.Rtype104:
var (
usermodule *ModuleRobot_User
)
usermodule = robot.GetModule(comm.ModuleUser).(*ModuleRobot_User)
if _, errdata = robot.SendMessage("shop", "getlist", &pb.ShopGetListReq{
SType: pb.ShopType_DiamondShop,
}); errdata != nil {
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
return
}
for _, v := range this.goods[pb.ShopType_DiamondShop] {
if v.LeftBuyNum > 0 && usermodule.user.Diamond >= int64(v.Consume[0].N) {
if _, errdata = robot.SendMessage("shop", "buy", &pb.ShopBuyReq{
ShopType: pb.ShopType_DiamondShop,
Gid: v.Gid,
BuyNum: 1,
}); errdata != nil {
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
return
}
break
}
}
}
return
}

View File

@ -70,6 +70,7 @@ func (this *Robot) Init(addr string, client IClient) (err error) {
this.modules[comm.ModuleViking] = new(ModuleRobot_Viking) this.modules[comm.ModuleViking] = new(ModuleRobot_Viking)
this.modules[comm.ModuleChat] = new(ModuleRobot_Chat) this.modules[comm.ModuleChat] = new(ModuleRobot_Chat)
this.modules[comm.ModuleShop] = new(ModuleRobot_Shop) this.modules[comm.ModuleShop] = new(ModuleRobot_Shop)
this.modules[comm.ModuleShop] = new(ModuleRobot_Caravan)
this.modules[comm.ModuleHoroscope] = new(ModuleRobot_Horoscope) this.modules[comm.ModuleHoroscope] = new(ModuleRobot_Horoscope)
for _, v := range this.modules { for _, v := range this.modules {
v.Init() v.Init()

View File

@ -243,9 +243,11 @@ func (this *apiComp) ForgeEquip(session comm.IUserSession, req *pb.SmithyForgeEq
} else { // 普通打造 } else { // 普通打造
// 获取掉落id // 获取掉落id
newdrop := this.module.modelStove.CheckUnlockSuid(req.ReelId, stove.Data[req.ReelId].Lv, reelcfg.BasicDrop) newdrop := this.module.modelStove.CheckUnlockSuid(req.ReelId, stove.Data[req.ReelId].Lv, reelcfg.BasicDrop)
user := this.module.ModuleUser.GetUser(session.GetUserId())
// 检查是否命中双倍打造 // 检查是否命中双倍打造
for i := 0; i < int(req.Count); i++ { for i := 0; i < int(req.Count); i++ {
res := this.module.configure.GetDropReward(newdrop) res := this.module.ModuleTools.GetGroupDataByLottery(newdrop, user.Vip, user.Lv)
//res := this.module.configure.GetDropReward(newdrop)
if ok := this.module.modelStove.CheckForgetwoEquip(req.ReelId, stove.Data[req.ReelId].Lv, addProbability); ok { if ok := this.module.modelStove.CheckForgetwoEquip(req.ReelId, stove.Data[req.ReelId].Lv, addProbability); ok {
resReward = append(resReward, res...) resReward = append(resReward, res...)
} }