庆典活动循环处理
This commit is contained in:
parent
0c51cb9d37
commit
b1ea3363b0
@ -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++
|
||||
|
@ -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 :%d,dropID:%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 {
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user