买一赠一礼包

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
}
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) // 请求锦标赛昨日排行榜
// #region 活动
RegisterMsgProcessFunc("ReqActivityReward", ReqActivityReward) // 领取活动奖励
// 挖矿
RegisterMsgProcessFunc("ReqMining", ReqMining) // 请求挖矿数据
RegisterMsgProcessFunc("ReqMiningReward", ReqMiningReward) // 领取挖矿奖励

View File

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

View File

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

View File

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