买一赠一礼包
This commit is contained in:
parent
defff755a3
commit
348cf17068
@ -81,3 +81,19 @@ func GetActivityList() []*gamedata.ActivityData {
|
||||
}
|
||||
return List
|
||||
}
|
||||
|
||||
func GetAcitivityRewardItems(ActId int) []*item.Item {
|
||||
data, err := gamedata.GetData(CFG_ACTIVITY_GIFT)
|
||||
if err != nil {
|
||||
log.Debug("GetAcitivityGiftItems err:%v", err)
|
||||
}
|
||||
for _, v := range data {
|
||||
ChargeId := gamedata.GetIntValue(v, "ChargeId")
|
||||
AId := gamedata.GetIntValue(v, "AId")
|
||||
if ChargeId == 0 && AId == ActId {
|
||||
Items := gamedata.GetItemList(v, "Items")
|
||||
return Items
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -750,6 +750,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
|
||||
RegisterMsgProcessFunc("ReqChampshipPreRank", ReqChampshipPreRank) // 请求锦标赛昨日排行榜
|
||||
|
||||
// #region 活动
|
||||
RegisterMsgProcessFunc("ReqActivityReward", ReqActivityReward) // 领取活动奖励
|
||||
// 挖矿
|
||||
RegisterMsgProcessFunc("ReqMining", ReqMining) // 请求挖矿数据
|
||||
RegisterMsgProcessFunc("ReqMiningReward", ReqMiningReward) // 领取挖矿奖励
|
||||
|
||||
@ -870,7 +870,8 @@ func (p *Player) initAcitivity() {
|
||||
if v.Level > Level {
|
||||
continue
|
||||
}
|
||||
if !ActivityMod.CheckActivity(v) {
|
||||
Status := ActivityMod.GetActivityStatus(v)
|
||||
if Status == 0 {
|
||||
continue
|
||||
}
|
||||
p.activity[v.Id] = &ActivityInfo{
|
||||
@ -878,7 +879,7 @@ func (p *Player) initAcitivity() {
|
||||
EndT: v.EndTime,
|
||||
Id: v.Id,
|
||||
Type: v.Type,
|
||||
Status: ACT_STATUS_START,
|
||||
Status: Status,
|
||||
Title: v.Title,
|
||||
}
|
||||
}
|
||||
|
||||
@ -3840,3 +3840,40 @@ func ReqLimitEventLuckyCat(player *Player, buf []byte) error {
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
func ReqActivityReward(player *Player, buf []byte) error {
|
||||
req := &msg.ReqActivityReward{}
|
||||
proto.Unmarshal(buf, req)
|
||||
ActivityInfo := GetActivityInfo(player, int(req.Id))
|
||||
if ActivityInfo == nil {
|
||||
|
||||
player.SendErrClienRes(&msg.ResActivityReward{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: "activity not exist",
|
||||
})
|
||||
return fmt.Errorf("activity not exist")
|
||||
}
|
||||
ActivityMod := player.PlayMod.getActivityMod()
|
||||
Items, err := ActivityMod.GetReward(int(req.Id))
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResActivityReward{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
return err
|
||||
}
|
||||
err = player.HandleItem(Items, msg.ITEM_POP_LABEL_ActivityReward.String())
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResActivityReward{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.PlayMod.save()
|
||||
player.BackDataActivity()
|
||||
player.PushClientRes(&msg.ResActivityReward{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -2,6 +2,10 @@ package activity
|
||||
|
||||
import (
|
||||
"encoding/gob"
|
||||
"fmt"
|
||||
"server/GoUtil"
|
||||
activityCfg "server/conf/activity"
|
||||
"server/game/mod/item"
|
||||
"server/gamedata"
|
||||
)
|
||||
|
||||
@ -16,6 +20,7 @@ const (
|
||||
ACT_TYPE_GUESS_COLOR = 2 // 猜颜色
|
||||
ACT_TYPE_RACE = 3 // 赛跑
|
||||
ACT_TYPE_DISCOUNT_GIFT = 4 // 折扣礼包
|
||||
ACT_TYPE_ADD_GIFT = 5 // 加送礼包
|
||||
)
|
||||
|
||||
const (
|
||||
@ -29,8 +34,10 @@ type Activity struct {
|
||||
}
|
||||
|
||||
type Gift struct {
|
||||
Buy bool
|
||||
Time int64
|
||||
Buy bool
|
||||
Reward bool
|
||||
Time int64
|
||||
RewardTime int64
|
||||
}
|
||||
|
||||
func init() {
|
||||
@ -58,15 +65,40 @@ func (a *Activity) getGIftVar(key int) *Gift {
|
||||
return Var.(*Gift)
|
||||
}
|
||||
|
||||
func (a *Activity) CheckActivity(data *gamedata.ActivityData) bool {
|
||||
func (a *Activity) GetActivityStatus(data *gamedata.ActivityData) int {
|
||||
switch data.AType {
|
||||
case ACT_ATYPE_NORMAL:
|
||||
return true
|
||||
return ACT_STATUS_START
|
||||
case ACT_ATYPE_LIMIT_GIFT:
|
||||
Var := a.getGIftVar(data.Id)
|
||||
if Var.Buy {
|
||||
return false
|
||||
switch data.Type {
|
||||
case ACT_TYPE_ADD_GIFT:
|
||||
Var := a.getGIftVar(data.Id)
|
||||
if Var.Buy {
|
||||
return ACT_STATUS_END
|
||||
}
|
||||
if Var.Buy && Var.Reward {
|
||||
return ACT_STATUS_NOT_START
|
||||
}
|
||||
default:
|
||||
Var := a.getGIftVar(data.Id)
|
||||
if Var.Buy {
|
||||
return ACT_STATUS_NOT_START
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return true
|
||||
return ACT_STATUS_START
|
||||
}
|
||||
|
||||
func (a *Activity) GetReward(ActId int) ([]*item.Item, error) {
|
||||
Var := a.getGIftVar(ActId)
|
||||
if !Var.Buy {
|
||||
return nil, nil
|
||||
}
|
||||
if Var.Reward {
|
||||
return nil, fmt.Errorf("reward already get")
|
||||
}
|
||||
Var.Reward = true
|
||||
Var.RewardTime = GoUtil.Now()
|
||||
return activityCfg.GetAcitivityRewardItems(ActId), nil
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user