go_dreamfactory/modules/items/core.go
2023-08-18 18:41:50 +08:00

64 lines
1.6 KiB
Go

package items
import (
"crypto/rand"
"errors"
"go_dreamfactory/lego/core"
cfg "go_dreamfactory/sys/configure/structs"
"math/big"
)
const ( //Redis
Redis_PackCache string = "pack:%s" //背包缓存数据存放key
DB_PackTable core.SqlTable = "pack" //背包数据库定义表
)
const (
// GridCapMaxNum = 99 //单个格子的最大容量
GridMaxNUm = 1000 //背包格子数量上限
Pack_Expiration = -1 //背包缓存数据过期时间
)
const (
itemuse_nouse int32 = 1 //不可使用
itemuse_jump int32 = 2 //跳转
itemuse_exchange int32 = 3 //合成/分解(体力,兑换)
itemuse_optionalbox int32 = 4 //自选宝箱
itemuse_randombox int32 = 5 //随机宝箱
itemuse_staminapotion int32 = 6 //体力药剂使用
itemuse_heroexchange int32 = 7 //英雄碎片合成
)
var (
NoFoundItemConfig = errors.New("no found itemconfig!") //道具配置未找到
ItemNotEnoughError = errors.New("item not enough!") //物品不足
NoFoundGirdError = errors.New("no found gvrid!") //未找到格子
PackGridNumUpper = errors.New("grid amount upper!") //背包格子达到上限
GirdAmountUpper = errors.New("grid amount upper!") //格子容量达到上限
)
// 随机权重宝箱
func RandomProps(group []*cfg.GameDropData) (prop *cfg.GameDropData) {
if group == nil || len(group) == 0 {
return
}
var (
totle int64
curr int64
temp int64
)
for _, v := range group {
totle += int64(v.P)
}
n, _ := rand.Int(rand.Reader, big.NewInt(totle))
curr = n.Int64()
for _, v := range group {
temp += int64(v.P)
if curr <= temp {
prop = v
return
}
}
return
}