| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package proto
- import (
- "bet24.com/log"
- item "bet24.com/servers/micros/item_inventory/proto"
- "math/rand"
- )
- type Signin struct {
- Id int
- Award []RandomPrize
- DoubleVipLevel int // vip?加倍,0表示没有
- SignTime int // 签到时间,0表示未签
- }
- type SigninInfo struct {
- SigninTable []Signin
- Signable bool
- }
- type RandomPrize struct {
- item.ItemPack
- Odds int `json:",omitempty"` // 概率
- }
- func (s *Signin) GetPrize() *item.ItemPack {
- if len(s.Award) == 0 {
- return nil
- }
- if len(s.Award) == 1 {
- return &s.Award[0].ItemPack
- }
- total := 0
- for _, v := range s.Award {
- total += v.Odds
- }
- if total == 0 {
- return nil
- }
- r := rand.Intn(total)
- inc := 0
- for i := 0; i < len(s.Award); i++ {
- inc += s.Award[i].Odds
- if r < inc {
- return &s.Award[i].ItemPack
- }
- }
- log.Release("Signin.GetPrize return nil total[%d]r[%d]inc[%d]", total, r, inc)
- return nil
- }
|