614 lines
18 KiB
Go
614 lines
18 KiB
Go
package main
|
||
|
||
import (
|
||
"math/rand"
|
||
"mongo.games.com/game/common"
|
||
"mongo.games.com/game/model"
|
||
"mongo.games.com/game/protocol/activity"
|
||
"mongo.games.com/game/srvdata"
|
||
"mongo.games.com/goserver/core/logger"
|
||
"mongo.games.com/goserver/core/netlib"
|
||
"strconv"
|
||
"strings"
|
||
"time"
|
||
)
|
||
|
||
// 请求年兽信息
|
||
func CSNianData(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
||
if _, ok := data.(*activity.CSNianData); ok {
|
||
p := PlayerMgrSington.GetOnlinePlayer(sid)
|
||
sData := srvdata.PBDB_NewYearActivityMgr.Datas.GetArr()
|
||
BossMaxHp := int64(0)
|
||
for _, value := range sData {
|
||
if value.Id == 5 {
|
||
BossMaxHp, _ = strconv.ParseInt(value.PropValue, 10, 64)
|
||
break
|
||
}
|
||
}
|
||
logger.Logger.Trace("请求年兽信息!snid = ", p.SnId)
|
||
if p == nil {
|
||
logger.Logger.Warn("CSNianData p == nil")
|
||
return nil
|
||
}
|
||
pool := PlatformMgrSingleton.GetConfig(p.Platform).ActivityNianConfig
|
||
if pool == nil || pool.List == nil || pool.Switch == model.WelfareClose {
|
||
return nil
|
||
}
|
||
startTime := pool.List[0].ActivityStart
|
||
endTime := pool.List[0].ActivityEnd
|
||
start, _ := time.Parse(time.DateTime, startTime)
|
||
// 转换为时间戳(以秒为单位)
|
||
timestamp := start.Unix()
|
||
end, _ := time.Parse(time.DateTime, endTime)
|
||
endTimestamp := end.Unix()
|
||
|
||
if p.WelfData.NianData != nil && (p.WelfData.NianData.ActivityStartTime != timestamp || p.WelfData.NianData.ActivityEndTime != endTimestamp) {
|
||
logger.Logger.Infof("CSNianData 年兽活动时间变更 清除之前数据 snid= %d", p.SnId)
|
||
WelfareMgrSington.ClearActivityNianData(p)
|
||
}
|
||
|
||
if p.WelfData.NianData == nil {
|
||
p.WelfData.NianData = &model.NianData{
|
||
ActivityStartTime: timestamp,
|
||
ActivityEndTime: endTimestamp,
|
||
}
|
||
|
||
}
|
||
|
||
if p.WelfData.NianData.BossHp == 0 {
|
||
p.WelfData.NianData.BossHp = BossMaxHp
|
||
}
|
||
//排行榜配置
|
||
rankData := PlatformMgrSingleton.GetConfig(p.Platform).NianRankReward
|
||
if rankData == nil {
|
||
return nil
|
||
}
|
||
pack := &activity.SCNianData{}
|
||
for _, info := range rankData.RankData {
|
||
rankInfo := &activity.NianRankData{}
|
||
rankInfo.TypeId = info.TypeId
|
||
for _, awardInfo := range info.RankInfo {
|
||
rank := &activity.NianRankInfo{}
|
||
rank.RankId = awardInfo.RankId
|
||
for _, itemInfo := range awardInfo.Award {
|
||
rankAwardData := &activity.RankAwardData{
|
||
ItemId: itemInfo.ItemId,
|
||
ItemNum: itemInfo.ItemNum,
|
||
}
|
||
rank.Award = append(rank.Award, rankAwardData)
|
||
}
|
||
rankInfo.Data = append(rankInfo.Data, rank)
|
||
}
|
||
pack.RankData = append(pack.RankData, rankInfo)
|
||
}
|
||
|
||
pack.BossHp = p.WelfData.NianData.BossHp
|
||
pack.BossMaxHp = BossMaxHp
|
||
pack.ActivityStartTime = timestamp
|
||
pack.ActivityEndTime = endTimestamp
|
||
pack.AwardTime = p.WelfData.NianData.SignAwardTime
|
||
pack.BuffCount = p.WelfData.NianData.BuffCount
|
||
pack.BuffStatus = p.WelfData.NianData.BuffStatus
|
||
pack.SignAwardTime = p.WelfData.NianData.SignAwardTime
|
||
logger.Logger.Trace("请求年兽活动信息 ", pack)
|
||
p.SendToClient(int(activity.NianPacketID_PACKET_SCNianData), pack)
|
||
}
|
||
return nil
|
||
}
|
||
|
||
// 攻击年兽
|
||
func CSNianAttack(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
||
if msg, ok := data.(*activity.CSNianAttack); ok {
|
||
typeId := msg.TypeId
|
||
p := PlayerMgrSington.GetOnlinePlayer(sid)
|
||
sData := srvdata.PBDB_NewYearActivityMgr.Datas.GetArr()
|
||
BossMaxHp := int64(0)
|
||
for _, value := range sData {
|
||
if value.Id == 5 {
|
||
BossMaxHp, _ = strconv.ParseInt(value.PropValue, 10, 64)
|
||
break
|
||
}
|
||
}
|
||
if p.WelfData.NianData == nil {
|
||
p.WelfData.NianData = &model.NianData{}
|
||
}
|
||
if p.WelfData.NianData.BossHp <= 0 {
|
||
p.WelfData.NianData.BossHp = BossMaxHp
|
||
}
|
||
logger.Logger.Trace("客户端请求攻击年兽!snid = ", p.SnId)
|
||
if p == nil {
|
||
logger.Logger.Warn("CSNianAttack p == nil")
|
||
return nil
|
||
}
|
||
pool := PlatformMgrSingleton.GetConfig(p.Platform).ActivityNianConfig
|
||
if pool == nil || pool.List == nil {
|
||
return nil
|
||
}
|
||
if pool.Switch == model.WelfareClose {
|
||
logger.Logger.Trace("CSNianAttack 活动关闭!")
|
||
return nil
|
||
}
|
||
//判断活动时间
|
||
startTime := pool.List[0].ActivityStart
|
||
endTime := pool.List[0].ActivityEnd
|
||
t, _ := time.Parse(time.DateTime, startTime)
|
||
// 转换为时间戳(以秒为单位)
|
||
timestamp := t.Unix()
|
||
end, _ := time.Parse(time.DateTime, endTime)
|
||
endTimestamp := end.Unix()
|
||
nowTime := time.Now().Unix()
|
||
if nowTime < timestamp || nowTime > endTimestamp {
|
||
return nil
|
||
}
|
||
|
||
pack := &activity.SCNianAttackData{}
|
||
itemId := 0
|
||
itemNum := 1
|
||
count := 1
|
||
if typeId == 1 {
|
||
itemId = common.ItemIDLittleGuaranteed
|
||
} else if typeId == 2 {
|
||
itemId = common.ItemIDLittleGuaranteed
|
||
itemNum = 10
|
||
count = 10
|
||
} else if typeId == 3 {
|
||
itemId = common.ItemIDBigGuaranteed
|
||
} else {
|
||
return nil
|
||
}
|
||
var items []*model.Item
|
||
items = append(items, &model.Item{
|
||
ItemId: int32(itemId),
|
||
ItemNum: int64(itemNum),
|
||
})
|
||
_, _, result := BagMgrSingleton.AddItems(&model.AddItemParam{
|
||
Platform: p.Platform,
|
||
SnId: p.SnId,
|
||
Change: items,
|
||
GainWay: common.GainWayNianCost,
|
||
Operator: "system",
|
||
Remark: "年兽活动消耗",
|
||
})
|
||
if !result {
|
||
return nil
|
||
}
|
||
//本次攻击总血量
|
||
AttackHp := int64(0)
|
||
LuckyRankNeed := int64(0)
|
||
RankNeed := int64(0)
|
||
for _, value := range sData {
|
||
if value.Id == 7 {
|
||
LuckyRankNeed, _ = strconv.ParseInt(value.PropValue, 10, 64)
|
||
break
|
||
}
|
||
}
|
||
for _, value := range sData {
|
||
if value.Id == 8 {
|
||
RankNeed, _ = strconv.ParseInt(value.PropValue, 10, 64)
|
||
break
|
||
}
|
||
}
|
||
//伤害范围
|
||
var intSlice []int
|
||
if typeId == 1 || typeId == 2 {
|
||
for _, value := range sData {
|
||
if value.Id == 9 {
|
||
str := value.PropValue
|
||
strSlice := strings.Split(str, ",")
|
||
// 转换每个字符串为 int
|
||
for _, s := range strSlice {
|
||
num, err := strconv.Atoi(s)
|
||
if err != nil {
|
||
return nil
|
||
}
|
||
intSlice = append(intSlice, num)
|
||
}
|
||
break
|
||
}
|
||
}
|
||
}
|
||
//保底奖励次数
|
||
floorCount := 0
|
||
for _, value := range sData {
|
||
if typeId == 1 || typeId == 2 {
|
||
if value.Id == 13 {
|
||
floorCount, _ = strconv.Atoi(value.PropValue)
|
||
break
|
||
}
|
||
} else {
|
||
if value.Id == 15 {
|
||
floorCount, _ = strconv.Atoi(value.PropValue)
|
||
break
|
||
}
|
||
}
|
||
}
|
||
if typeId == 3 {
|
||
for _, value := range sData {
|
||
if value.Id == 10 {
|
||
str := value.PropValue
|
||
strSlice := strings.Split(str, ",")
|
||
// 转换每个字符串为 int
|
||
for _, s := range strSlice {
|
||
num, err := strconv.Atoi(s)
|
||
if err != nil {
|
||
return nil
|
||
}
|
||
intSlice = append(intSlice, num)
|
||
}
|
||
break
|
||
}
|
||
}
|
||
}
|
||
awardInfo := &activity.RankAwardData{}
|
||
|
||
for i := 0; i < count; i++ {
|
||
//随机伤害值
|
||
randomValue := int64(rand.Intn(intSlice[1]-intSlice[0]+1) + intSlice[0])
|
||
logger.Logger.Tracef("随机到的伤害值是:%d", randomValue)
|
||
//计算BUFF
|
||
if p.WelfData.NianData.BuffCount > 0 {
|
||
randomValue = randomValue + randomValue/2
|
||
p.WelfData.NianData.BuffCount -= 1
|
||
}
|
||
if p.WelfData.NianData.AttackMaxHp < randomValue {
|
||
p.WelfData.NianData.AttackMaxHp = randomValue
|
||
if randomValue >= LuckyRankNeed {
|
||
//更新幸运榜
|
||
|
||
}
|
||
}
|
||
AttackHp += randomValue
|
||
if typeId == 3 {
|
||
p.WelfData.NianData.BigHurt += 1
|
||
//判断是否掉落保底奖励
|
||
if p.WelfData.NianData.BigHurt%int32(floorCount) == 0 {
|
||
floorReward := &activity.RankAwardData{}
|
||
for _, value := range sData {
|
||
if value.Id == 16 {
|
||
strSlice := strings.Split(value.PropValue, ",")
|
||
FloorItemId, _ := strconv.Atoi(strSlice[0])
|
||
FloorItemNum, _ := strconv.Atoi(strSlice[1])
|
||
items = append(items, &model.Item{
|
||
ItemId: int32(FloorItemId),
|
||
ItemNum: int64(FloorItemNum),
|
||
})
|
||
floorReward.ItemId = int32(FloorItemId)
|
||
floorReward.ItemNum = int64(FloorItemNum)
|
||
pack.FloorReward = append(pack.FloorReward, floorReward)
|
||
break
|
||
}
|
||
}
|
||
}
|
||
//额外掉落
|
||
extraItemId := 0
|
||
extraItemNum := 0
|
||
var intSlice1 []int
|
||
for _, value := range sData {
|
||
if value.Id == 11 {
|
||
extraItemId, _ = strconv.Atoi(value.PropValue)
|
||
break
|
||
}
|
||
}
|
||
for _, value := range sData {
|
||
if value.Id == 12 {
|
||
str := value.PropValue
|
||
strSlice := strings.Split(str, ",")
|
||
// 转换每个字符串为 int
|
||
for _, s := range strSlice {
|
||
num, err := strconv.Atoi(s)
|
||
if err != nil {
|
||
return nil
|
||
}
|
||
intSlice1 = append(intSlice1, num)
|
||
}
|
||
break
|
||
}
|
||
}
|
||
//随机个数
|
||
extraItemNum = rand.Intn(intSlice1[1]-intSlice1[0]+1) + intSlice1[0]
|
||
items = append(items, &model.Item{
|
||
ItemId: int32(extraItemId),
|
||
ItemNum: int64(extraItemNum),
|
||
})
|
||
extraDrop := &activity.RankAwardData{}
|
||
extraDrop.ItemId = int32(extraItemId)
|
||
extraDrop.ItemNum = int64(extraItemNum)
|
||
pack.ExtraDrop = append(pack.ExtraDrop, extraDrop)
|
||
} else {
|
||
p.WelfData.NianData.LittleHurt += 1
|
||
//判断是否掉落保底奖励
|
||
if p.WelfData.NianData.LittleHurt%int32(floorCount) == 0 {
|
||
floorReward := &activity.RankAwardData{}
|
||
for _, value := range sData {
|
||
if value.Id == 14 {
|
||
strSlice := strings.Split(value.PropValue, ",")
|
||
FloorItemId, _ := strconv.Atoi(strSlice[0])
|
||
FloorItemNum, _ := strconv.Atoi(strSlice[1])
|
||
items = append(items, &model.Item{
|
||
ItemId: int32(FloorItemId),
|
||
ItemNum: int64(FloorItemNum),
|
||
})
|
||
floorReward.ItemId = int32(FloorItemId)
|
||
floorReward.ItemNum = int64(FloorItemNum)
|
||
pack.FloorReward = append(pack.FloorReward, floorReward)
|
||
break
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
p.WelfData.NianData.BossHp -= AttackHp
|
||
p.WelfData.NianData.AttackSumHp += AttackHp
|
||
if p.WelfData.NianData.AttackSumHp >= RankNeed {
|
||
//更新总榜
|
||
|
||
}
|
||
//更新伤害总榜
|
||
|
||
isDie := false //是否死亡
|
||
//判断Boss是否死亡
|
||
var bossDieAward []*model.Item
|
||
if p.WelfData.NianData.BossHp <= 0 {
|
||
isDie = true
|
||
p.WelfData.NianData.BossHp = BossMaxHp
|
||
p.WelfData.NianData.BossDieCount += 1
|
||
//获取死亡奖励
|
||
for _, value := range sData {
|
||
if value.Id == 6 {
|
||
str := value.PropValue
|
||
strSlice := strings.Split(str, ";")
|
||
for _, s := range strSlice {
|
||
strSlice1 := strings.Split(s, ",")
|
||
bossDieItemId, err := strconv.Atoi(strSlice1[0])
|
||
if err != nil {
|
||
return nil
|
||
}
|
||
bossDieItemNum, err := strconv.ParseInt(strSlice1[1], 10, 64)
|
||
if err != nil {
|
||
return nil
|
||
}
|
||
bossDieAward = append(bossDieAward, &model.Item{
|
||
ItemId: int32(bossDieItemId),
|
||
ItemNum: bossDieItemNum,
|
||
})
|
||
items = append(items, &model.Item{
|
||
ItemId: int32(bossDieItemId),
|
||
ItemNum: bossDieItemNum,
|
||
})
|
||
}
|
||
break
|
||
}
|
||
}
|
||
//年兽死亡额外掉落
|
||
BigHurtCount := 0
|
||
for _, value := range sData {
|
||
if value.Id == 19 {
|
||
BigHurtCount, _ = strconv.Atoi(value.PropValue)
|
||
break
|
||
}
|
||
}
|
||
logger.Logger.Trace("年兽死亡额外掉落 当前已使用BigHurt :", p.WelfData.NianData.BigHurt, "BigHurtCount = ", BigHurtCount)
|
||
if p.WelfData.NianData.BigHurt >= int32(BigHurtCount) {
|
||
//后台配置额外掉落
|
||
for _, info := range pool.List[0].BossDieOtherReward {
|
||
//value.BossDieOtherReward
|
||
if p.WelfData.NianData.OtherAwardNum[info.Id] >= info.DropUp {
|
||
logger.Logger.Trace("BOSS死亡 额外掉落达到上限 id = ", info.Id, "数量:", p.WelfData.NianData.OtherAwardNum[info.Id])
|
||
continue
|
||
}
|
||
//随机
|
||
if rand.Intn(100) < int(info.DropRate) {
|
||
otherItemId := info.ItemId
|
||
otherItemNum := info.ItemNum
|
||
if int32(otherItemNum)+p.WelfData.NianData.OtherAwardNum[info.Id] > info.DropUp {
|
||
otherItemNum = int64(info.DropUp - p.WelfData.NianData.OtherAwardNum[info.Id])
|
||
}
|
||
p.WelfData.NianData.OtherAwardNum[info.Id] += int32(otherItemNum)
|
||
items = append(items, &model.Item{
|
||
ItemId: otherItemId,
|
||
ItemNum: otherItemNum,
|
||
})
|
||
bossDieAward = append(bossDieAward, &model.Item{
|
||
ItemId: otherItemId,
|
||
ItemNum: otherItemNum,
|
||
})
|
||
}
|
||
}
|
||
}
|
||
TaskSubjectSingleton.Touch(common.TaskTypeNianBossKill, &TaskData{SnId: p.SnId, Num: 1}) // BOSS死亡
|
||
}
|
||
|
||
items = append(items, &model.Item{
|
||
ItemId: common.ItemIDCoin,
|
||
ItemNum: AttackHp,
|
||
})
|
||
BagMgrSingleton.AddItems(&model.AddItemParam{
|
||
Platform: p.Platform,
|
||
SnId: p.SnId,
|
||
Change: items,
|
||
GainWay: common.GainWayNianGain,
|
||
Operator: "system",
|
||
Remark: "年兽活动-攻击年兽获得",
|
||
})
|
||
awardInfo.ItemId = common.ItemIDCoin
|
||
awardInfo.ItemNum = AttackHp
|
||
pack.Award = append(pack.Award, awardInfo)
|
||
pack.AttackHp = AttackHp
|
||
pack.TypeId = typeId
|
||
pack.BossHp = p.WelfData.NianData.BossHp
|
||
pack.IsDie = isDie
|
||
for _, item := range bossDieAward {
|
||
dieInfo := &activity.RankAwardData{}
|
||
dieInfo.ItemId = item.ItemId
|
||
dieInfo.ItemNum = item.ItemNum
|
||
pack.DieAward = append(pack.DieAward, dieInfo)
|
||
}
|
||
pack.BuffCount = p.WelfData.NianData.BuffCount
|
||
p.SendToClient(int(activity.NianPacketID_PACKET_SCNianAttackData), pack)
|
||
TaskSubjectSingleton.Touch(common.TaskTypeNianBossDamage, &TaskData{SnId: p.SnId, Num: AttackHp}) // 对年兽造成伤害
|
||
}
|
||
return nil
|
||
}
|
||
|
||
// 请求领取BUFF
|
||
func CSNianBuff(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
||
if _, ok := data.(*activity.CSNianBuff); ok {
|
||
p := PlayerMgrSington.GetOnlinePlayer(sid)
|
||
//yearActivity := &server.DB_NewYearActivity{}
|
||
logger.Logger.Trace("客户端请求请求领取BUFF snid = ", p.SnId)
|
||
if p == nil {
|
||
return nil
|
||
}
|
||
if p.WelfData.NianData == nil {
|
||
p.WelfData.NianData = &model.NianData{}
|
||
}
|
||
if p.WelfData.NianData.BuffStatus {
|
||
return nil
|
||
}
|
||
pool := PlatformMgrSingleton.GetConfig(p.Platform).ActivityNianConfig
|
||
if pool == nil || pool.List == nil {
|
||
return nil
|
||
}
|
||
if pool.Switch == model.WelfareClose {
|
||
logger.Logger.Trace("CSNianSignAward 活动关闭!")
|
||
return nil
|
||
}
|
||
//判断领取时间
|
||
if time.Now().Hour() >= int(pool.List[0].BuffStartTime) && time.Now().Hour() <= int(pool.List[0].BuffEndTime) {
|
||
sData := srvdata.PBDB_NewYearActivityMgr.Datas.GetArr()
|
||
count := int64(0)
|
||
for _, value := range sData {
|
||
if value.Id == 20 {
|
||
count, _ = strconv.ParseInt(value.PropValue, 10, 64)
|
||
break
|
||
}
|
||
}
|
||
p.WelfData.NianData.BuffCount = count
|
||
p.WelfData.NianData.BuffStatus = true
|
||
pack := &activity.SCNianBuff{
|
||
BuffCount: p.WelfData.NianData.BuffCount,
|
||
}
|
||
p.SendToClient(int(activity.NianPacketID_PACKET_SCNianBuff), pack)
|
||
}
|
||
}
|
||
return nil
|
||
}
|
||
|
||
// 领取签到奖励
|
||
func CSNianSignAward(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
||
if _, ok := data.(*activity.CSNianBuff); ok {
|
||
p := PlayerMgrSington.GetOnlinePlayer(sid)
|
||
logger.Logger.Trace("客户端请求请求领取BUFF snid = ", p.SnId)
|
||
if p == nil {
|
||
return nil
|
||
}
|
||
pool := PlatformMgrSingleton.GetConfig(p.Platform).ActivityNianConfig
|
||
if pool == nil || pool.List == nil {
|
||
return nil
|
||
}
|
||
if pool.Switch == model.WelfareClose {
|
||
logger.Logger.Trace("CSNianSignAward 活动关闭!")
|
||
return nil
|
||
}
|
||
if p.WelfData.NianData == nil {
|
||
p.WelfData.NianData = &model.NianData{}
|
||
}
|
||
if p.WelfData.NianData.SignAwardTime > 0 {
|
||
return nil
|
||
}
|
||
p.WelfData.NianData.SignAwardTime = time.Now().Unix()
|
||
//奖励
|
||
pack := &activity.SCNianSignAward{}
|
||
pack.SignAwardTime = p.WelfData.NianData.SignAwardTime
|
||
var items []*model.Item
|
||
for _, info := range pool.List[0].SignReward {
|
||
items = append(items, &model.Item{
|
||
ItemId: info.ItemId,
|
||
ItemNum: info.ItemNum,
|
||
})
|
||
award := &activity.RankAwardData{}
|
||
award.ItemId = info.ItemId
|
||
award.ItemNum = info.ItemNum
|
||
pack.SignAward = append(pack.SignAward, award)
|
||
}
|
||
|
||
BagMgrSingleton.AddItems(&model.AddItemParam{
|
||
Platform: p.Platform,
|
||
SnId: p.SnId,
|
||
Change: items,
|
||
GainWay: common.GainWayNianGain,
|
||
Operator: "system",
|
||
Remark: "年兽活动-领取签到奖励获得",
|
||
})
|
||
p.SendToClient(int(activity.NianPacketID_PACKET_SCNianSignAward), pack)
|
||
TaskSubjectSingleton.Touch(common.TaskTypeNianSign, &TaskData{SnId: p.SnId, Num: 1})
|
||
}
|
||
return nil
|
||
}
|
||
|
||
func CSNianChange(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
||
if msg, ok := data.(*activity.CSNianChange); ok {
|
||
num := msg.Num
|
||
if num <= 0 || num > 99 {
|
||
return nil
|
||
}
|
||
p := PlayerMgrSington.GetOnlinePlayer(sid)
|
||
logger.Logger.Trace("客户端请求请求年兽兑换 snid = ", p.SnId)
|
||
if p == nil {
|
||
return nil
|
||
}
|
||
sData := srvdata.PBDB_NewYearActivityMgr.Datas.GetArr()
|
||
itemNum := 0
|
||
coin := 0
|
||
diamond := 0
|
||
for _, value := range sData {
|
||
if value.Id == 21 {
|
||
strSlice := strings.Split(value.PropValue, ",")
|
||
diamond, _ = strconv.Atoi(strSlice[0])
|
||
itemNum, _ = strconv.Atoi(strSlice[1])
|
||
coin, _ = strconv.Atoi(strSlice[2])
|
||
break
|
||
}
|
||
}
|
||
if p.Diamond < int64(diamond*int(num)) {
|
||
return nil
|
||
}
|
||
p.AddDiamond(int64(-diamond*int(num)), 0, common.GainWayNianCost, "sys", "年兽活动兑换道具")
|
||
var items []*model.Item
|
||
items = append(items, &model.Item{
|
||
ItemId: common.ItemIDCoin,
|
||
ItemNum: int64(coin * int(num)),
|
||
})
|
||
items = append(items, &model.Item{
|
||
ItemId: common.ItemIDLittleGuaranteed,
|
||
ItemNum: int64(itemNum * int(num)),
|
||
})
|
||
BagMgrSingleton.AddItems(&model.AddItemParam{
|
||
Platform: p.Platform,
|
||
SnId: p.SnId,
|
||
Change: items,
|
||
GainWay: common.GainWayNianGain,
|
||
Operator: "system",
|
||
Remark: "年兽活动-兑换",
|
||
})
|
||
pack := &activity.SCNianChange{}
|
||
pack.Num = num
|
||
for _, item := range items {
|
||
info := &activity.RankAwardData{
|
||
ItemId: item.ItemId,
|
||
ItemNum: item.ItemNum,
|
||
}
|
||
pack.Award = append(pack.Award, info)
|
||
}
|
||
p.SendToClient(int(activity.NianPacketID_PACKET_SCNianChange), pack)
|
||
}
|
||
return nil
|
||
}
|
||
func init() {
|
||
common.Register(int(activity.NianPacketID_PACKET_CSNianData), activity.CSNianData{}, CSNianData)
|
||
common.Register(int(activity.NianPacketID_PACKET_CSNianAttack), activity.CSNianAttack{}, CSNianAttack)
|
||
common.Register(int(activity.NianPacketID_PACKET_CSNianBuff), activity.CSNianBuff{}, CSNianBuff)
|
||
common.Register(int(activity.NianPacketID_PACKET_CSNianSignAward), activity.CSNianSignAward{}, CSNianSignAward)
|
||
common.Register(int(activity.NianPacketID_PACKET_CSNianChange), activity.CSNianChange{}, CSNianChange)
|
||
}
|