买一赠一礼包
This commit is contained in:
parent
defff755a3
commit
348cf17068
@ -81,3 +81,19 @@ func GetActivityList() []*gamedata.ActivityData {
|
|||||||
}
|
}
|
||||||
return List
|
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) // 请求锦标赛昨日排行榜
|
RegisterMsgProcessFunc("ReqChampshipPreRank", ReqChampshipPreRank) // 请求锦标赛昨日排行榜
|
||||||
|
|
||||||
// #region 活动
|
// #region 活动
|
||||||
|
RegisterMsgProcessFunc("ReqActivityReward", ReqActivityReward) // 领取活动奖励
|
||||||
// 挖矿
|
// 挖矿
|
||||||
RegisterMsgProcessFunc("ReqMining", ReqMining) // 请求挖矿数据
|
RegisterMsgProcessFunc("ReqMining", ReqMining) // 请求挖矿数据
|
||||||
RegisterMsgProcessFunc("ReqMiningReward", ReqMiningReward) // 领取挖矿奖励
|
RegisterMsgProcessFunc("ReqMiningReward", ReqMiningReward) // 领取挖矿奖励
|
||||||
|
|||||||
@ -870,7 +870,8 @@ func (p *Player) initAcitivity() {
|
|||||||
if v.Level > Level {
|
if v.Level > Level {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if !ActivityMod.CheckActivity(v) {
|
Status := ActivityMod.GetActivityStatus(v)
|
||||||
|
if Status == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
p.activity[v.Id] = &ActivityInfo{
|
p.activity[v.Id] = &ActivityInfo{
|
||||||
@ -878,7 +879,7 @@ func (p *Player) initAcitivity() {
|
|||||||
EndT: v.EndTime,
|
EndT: v.EndTime,
|
||||||
Id: v.Id,
|
Id: v.Id,
|
||||||
Type: v.Type,
|
Type: v.Type,
|
||||||
Status: ACT_STATUS_START,
|
Status: Status,
|
||||||
Title: v.Title,
|
Title: v.Title,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3840,3 +3840,40 @@ func ReqLimitEventLuckyCat(player *Player, buf []byte) error {
|
|||||||
})
|
})
|
||||||
return nil
|
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 (
|
import (
|
||||||
"encoding/gob"
|
"encoding/gob"
|
||||||
|
"fmt"
|
||||||
|
"server/GoUtil"
|
||||||
|
activityCfg "server/conf/activity"
|
||||||
|
"server/game/mod/item"
|
||||||
"server/gamedata"
|
"server/gamedata"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -16,6 +20,7 @@ const (
|
|||||||
ACT_TYPE_GUESS_COLOR = 2 // 猜颜色
|
ACT_TYPE_GUESS_COLOR = 2 // 猜颜色
|
||||||
ACT_TYPE_RACE = 3 // 赛跑
|
ACT_TYPE_RACE = 3 // 赛跑
|
||||||
ACT_TYPE_DISCOUNT_GIFT = 4 // 折扣礼包
|
ACT_TYPE_DISCOUNT_GIFT = 4 // 折扣礼包
|
||||||
|
ACT_TYPE_ADD_GIFT = 5 // 加送礼包
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -29,8 +34,10 @@ type Activity struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Gift struct {
|
type Gift struct {
|
||||||
Buy bool
|
Buy bool
|
||||||
Time int64
|
Reward bool
|
||||||
|
Time int64
|
||||||
|
RewardTime int64
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -58,15 +65,40 @@ func (a *Activity) getGIftVar(key int) *Gift {
|
|||||||
return Var.(*Gift)
|
return Var.(*Gift)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Activity) CheckActivity(data *gamedata.ActivityData) bool {
|
func (a *Activity) GetActivityStatus(data *gamedata.ActivityData) int {
|
||||||
switch data.AType {
|
switch data.AType {
|
||||||
case ACT_ATYPE_NORMAL:
|
case ACT_ATYPE_NORMAL:
|
||||||
return true
|
return ACT_STATUS_START
|
||||||
case ACT_ATYPE_LIMIT_GIFT:
|
case ACT_ATYPE_LIMIT_GIFT:
|
||||||
Var := a.getGIftVar(data.Id)
|
switch data.Type {
|
||||||
if Var.Buy {
|
case ACT_TYPE_ADD_GIFT:
|
||||||
return false
|
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