买一赠一礼包

This commit is contained in:
hahwu 2025-03-24 14:53:40 +08:00
parent defff755a3
commit 348cf17068
6 changed files with 2689 additions and 2420 deletions

View File

@ -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
}

View File

@ -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) // 领取挖矿奖励

View File

@ -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,
} }
} }

View File

@ -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
}

View File

@ -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