庆典活动循环处理

This commit is contained in:
meixiongfeng 2023-08-14 17:09:11 +08:00
parent 0c51cb9d37
commit b1ea3363b0
3 changed files with 38 additions and 159 deletions

View File

@ -256,8 +256,13 @@ func (this *Activity) HDCelebration(session comm.IUserSession, systemtype int32,
}
if data.Val == 0 {
var pos int32
_sub := int32((configure.Now().Unix()-activity.Stime)/(24*3600)) + 1
var maxday int32
_days := this.configure.GetHDCelebrationData()
for _, v := range _days { // 开启循环
maxday += v
}
_sub := int32((configure.Now().Unix() - activity.Stime) / (24 * 3600))
_sub = _sub%maxday + 1
for index, v := range _days {
for i := 0; i < int(v); i++ {
pos++
@ -391,10 +396,14 @@ func (this *Activity) GetHdData(session comm.IUserSession, oids []string) (resul
update["lasttime"] = list.Lasttime
update["gotarr"] = list.Gotarr
var maxday int32
_days := this.configure.GetHDCelebrationData()
for _, v := range _days { // 开启循环
maxday += v
}
var pos int32
_sub := int32((configure.Now().Unix()-activity.Stime)/(24*3600)) + 1
_sub := int32((configure.Now().Unix() - activity.Stime) / (24 * 3600))
_sub = _sub%maxday + 1
for index, v := range _days {
for i := 0; i < int(v); i++ {
pos++

View File

@ -145,160 +145,15 @@ func GetLotterConfById(id int32) (data *cfg.GameLotteryData) {
}
return
}
func GetGroupDataByLottery(lotteryId int32) (items []*cfg.Gameatn) {
if _, ok := _lotteryType1[lotteryId]; !ok {
if _, ok := _lotteryType2[lotteryId]; !ok {
fmt.Printf("not found config lotterId:%d", lotteryId)
return
}
}
// 优先校验大组ID 的类型
//if this.Btype[lotteryId] == 1 { // 该大组中的小组为权重掉落必定从N个小组中随机出1个小组
var (
szW []int32 // 权重数组
szID []int32 // 小组ID 数组
groupID int32
gourp map[int32]int32 // key 小组ID value 权重
)
gourp = make(map[int32]int32, 0)
// 随机小组id
for _, v := range _lotteryType1[lotteryId] {
if _data := GetLotterConfById(v); _data != nil {
if _, ok := gourp[_data.Groupid]; !ok {
gourp[_data.Groupid] = _data.Groupwt // 小组ID 权重赋值
szW = append(szW, _data.Groupwt)
szID = append(szID, _data.Groupid)
}
}
}
groupID = szID[comm.GetRandW(szW)] // 获得小组ID
//fmt.Printf("大组类型为1的,获得小组ID :%ddropID%d", groupID, lotteryId)
key := int64(lotteryId)<<31 + int64(groupID)
// 小组ID 类型判断
if Stype[key] == 1 { // 该小组的道具为权重掉落必定从N个道具中随机出1个道具
for i := 0; i < int(SNum[key]); i++ {
szW = make([]int32, 0)
szID = make([]int32, 0)
gourp = make(map[int32]int32, 0)
for _, v := range _groupType1[key] {
if _data := GetLotterConfById(v); _data != nil { // 权重赋值
if _, ok := gourp[_data.Groupid]; !ok {
szW = append(szW, _data.Itemwt)
szID = append(szID, _data.Id)
}
}
}
index := comm.GetRandW(szW)
_data := GetLotterConfById(szID[index])
//fmt.Printf("获得最终的道具 :%d", _data.Id)
count := comm.GetRandNum(_data.Min, _data.Max)
// 随机获得的数量
items = append(items, &cfg.Gameatn{
A: _data.Itemid.A,
T: _data.Itemid.T,
N: _data.Itemid.N * count,
})
}
} else if Stype[key] == 2 { // 该小组中的道具为概率掉落,每个道具都会随机一次是否会掉落(单位为千分比)
var wt int32
for _, v := range _groupType2[key] {
if _data := GetLotterConfById(v); _data != nil { // 权重赋值
if _data.Itemwt != 0 {
wt = _data.Itemwt
}
if wt >= comm.GetRandNum(0, 1000) { // 命中
count := comm.GetRandNum(_data.Min, _data.Max)
items = append(items, &cfg.Gameatn{
A: _data.Itemid.A,
T: _data.Itemid.T,
N: _data.Itemid.N * count, // 小组产出数量
})
}
}
}
}
//}
//if this.Btype[lotteryId] == 2 { // 该大组中的小组为概率掉落,每个小组都会随机一次是否会掉落(单位为千分比)
// 每个小组id 都随机取一次
var szGroupID []int32 // 获得的权重数组
gourp1 := make([]*cfg.GameLotteryData, 0) // key 小组ID value 权重
for _, v := range _lotteryType2[lotteryId] {
if _data := GetLotterConfById(v); _data != nil {
gourp1 = append(gourp1, _data)
}
}
// 过滤 group
var wt int32
// 类型为2 可能会同时获得多个组id
for _, v := range gourp1 {
k := v.Groupid
if v.Groupwt != 0 {
wt = v.Groupwt
}
//fmt.Printf("大组类型为2的,获得小组ID :%d,dropID:%d", k, v.Id)
if wt >= comm.GetRandNum(0, 1000) { // 命中
szGroupID = append(szGroupID, k)
key := int64(lotteryId)<<31 + int64(k)
if Stype[key] == 1 { // 随机一组数据
for i := 0; i < int(SNum[key]); i++ {
szW := make([]int32, 0)
szID := make([]int32, 0)
gourp := make(map[int32]int32, 0)
for _, v := range _groupType1[key] {
if _data := GetLotterConfById(v); _data != nil { // 权重赋值
if _, ok := gourp[_data.Groupid]; !ok {
szW = append(szW, _data.Itemwt)
szID = append(szID, _data.Id)
}
}
}
index := comm.GetRandW(szW)
_data := GetLotterConfById(szID[index])
//fmt.Printf("获得最终的道具 :%d", _data.Id)
count := comm.GetRandNum(_data.Min, _data.Max)
// 随机获得的数量
items = append(items, &cfg.Gameatn{
A: _data.Itemid.A,
T: _data.Itemid.T,
N: _data.Itemid.N * count,
})
}
} else if Stype[key] == 2 {
var wt int32
for _, v := range _groupType2[key] {
if _data := GetLotterConfById(v); _data != nil { // 权重赋值
if _data.Itemwt != 0 {
wt = _data.Itemwt
}
if wt >= comm.GetRandNum(1, 1000) { // 命中
count := comm.GetRandNum(_data.Min, _data.Max)
items = append(items, &cfg.Gameatn{
A: _data.Itemid.A,
T: _data.Itemid.T,
N: _data.Itemid.N * count, // 小组产出数量
})
}
}
}
}
}
}
//}
return
}
func LoadConfigure(name string, fn interface{}) (err error) {
return configure.RegisterConfigure(name, fn, nil)
}
func Test_Main(t *testing.T) {
LoadConfigure(game_lottery, cfg.NewGameLottery)
GetGroupDataByLottery(1001)
sz := make(map[string]*pb.DBHero)
fmt.Printf("%v", sz["1"])
hero := &pb.DBHero{}
value, err := strconv.Atoi("944005411")
fmt.Printf("%v,%v,%d", value, err, utils.WeekIntervalTime())
fmt.Printf("%v,%v,%d,%v,%v", value, err, utils.WeekIntervalTime(), sz, hero)
ids := utils.RandomNumbers(0, 10, 5)
for _, v := range ids {
fmt.Printf("%d", v)
@ -344,11 +199,7 @@ func Test_Main(t *testing.T) {
fmt.Println(getA, getA2, typeofA)
cron.AddFunc("0 0 5 /* * ?", TimerStar) //每月第一天5点执行一次
sz := make([]string, 0)
for i := 0; i < 10; i++ {
sz = append(sz, "1")
}
sz[len(sz)-1] = "xxxx"
//创建trace文件
f, err := os.Create("trace.out")
if err != nil {

View File

@ -56,6 +56,25 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.StonehengeGetLis
update["weeklyreward"] = stone.Weeklyreward
this.module.modelStonehenge.ChangeStonehengeData(session.GetUserId(), update)
}
if len(stone.Webuff) == 0 || len(stone.Enemybuff) == 0 {
if stage := this.module.modelStonehenge.GetStoneBoosData(stone.StageID); stage != nil {
for _, v := range stage.Mainebuff { // 我方环境buff
if buff, err := this.module.configure.GetStoneBuffDataById(v); err == nil {
stone.Webuff = append(stone.Webuff, buff.BuffId)
}
}
for _, v := range stage.Enemybuff { // 敌方环境buff
if buff, err := this.module.configure.GetStoneBuffDataById(v); err == nil {
stone.Enemybuff = append(stone.Enemybuff, buff.BuffId)
}
}
update := make(map[string]interface{}, 0)
update["webuff"] = stone.Webuff
update["enemybuff"] = stone.Enemybuff
this.module.modelStonehenge.ChangeStonehengeData(session.GetUserId(), update)
}
}
session.SendMsg(string(this.module.GetType()), "getlist", &pb.StonehengeGetListResp{
Data: stone,