1
This commit is contained in:
parent
063bad8a18
commit
19233e02d8
@ -828,6 +828,9 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
|
||||
RegisterMsgProcessFunc("ReqCatnipReward", ReqCatnipReward) // 猫草大作战领取奖励
|
||||
RegisterMsgProcessFunc("ReqCatnipGrandReward", ReqCatnipGrandReward) // 猫草大作战领取大奖
|
||||
RegisterMsgProcessFunc("ReqCatnipEmoji", ReqCatnipEmoji)
|
||||
// 猫猫回礼
|
||||
RegisterMsgProcessFunc("CatReturnGiftCfg", CatReturnGiftCfg) // 请求猫猫回礼数据
|
||||
RegisterMsgProcessFunc("ReqCatReturnGiftReward", ReqCatReturnGiftReward) // 领取猫猫回礼奖励
|
||||
// 活动通行证
|
||||
RegisterMsgProcessFunc("ReqActPass", ReqActPass) // 请求活动通行证数据
|
||||
RegisterMsgProcessFunc("ReqActPassReward", ReqActPassReward) // 领取活动通行证奖励
|
||||
|
||||
@ -136,8 +136,8 @@ func (p *Player) SendActivityMail(ItemId, ItemNum, ActivityId int, RewardItems [
|
||||
|
||||
// 活动模块 零点更新
|
||||
func (p *Player) ActivityZeroUpdate() {
|
||||
p.CatReturnGiftZeroUpdate()
|
||||
p.ActivityLogin()
|
||||
|
||||
type zeroHandler struct {
|
||||
actType int
|
||||
updateFn func(int)
|
||||
@ -156,6 +156,36 @@ func (p *Player) ActivityZeroUpdate() {
|
||||
}
|
||||
}
|
||||
|
||||
// 猫猫回礼0点更新
|
||||
func (p *Player) CatReturnGiftZeroUpdate() {
|
||||
activityInfo := p.GetActivityInfo(activity.ACT_TYPE_CAT_RETURN_GIFT)
|
||||
var aid int
|
||||
var id int
|
||||
if activityInfo != nil {
|
||||
id = activityInfo.Id
|
||||
aid = activityInfo.AId
|
||||
}
|
||||
oldId, oldScore, oldReward := p.GetCatReturnGiftMod().ZeroUpdate(id, aid)
|
||||
if oldId != 0 {
|
||||
log.Debug("CatReturnGiftZeroUpdate oldId : %d, oldScore : %d, oldReward : %d", oldId, oldScore, oldReward)
|
||||
cfg := G_GameLogicPtr.ActivityMgr.GetCatReturnGiftCfg(oldId)
|
||||
items := make([]*item.Item, 0)
|
||||
if cfg != nil {
|
||||
for _, v := range cfg.RewardList {
|
||||
if oldScore >= int(v.Score) && oldReward < int(v.Id) {
|
||||
items = append(items, item.MsgToItem(v.Reward)...)
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(items) > 0 {
|
||||
err := p.HandleItem(items, "")
|
||||
if err != nil {
|
||||
log.Debug("CatReturnGiftZeroUpdate HandleItem err : %s", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 获取活动信息
|
||||
func (p *Player) GetActivityInfo(actType int) *ActivityInfo {
|
||||
for _, v := range p.activity {
|
||||
@ -509,3 +539,24 @@ func (p *Player) GetDailyTaskActivityId() int {
|
||||
}
|
||||
return activityId
|
||||
}
|
||||
|
||||
// 猫猫回礼返回
|
||||
func (p *Player) CatReturnGiftBackData() {
|
||||
activityInfo := p.GetActivityInfo(activity.ACT_TYPE_CAT_RETURN_GIFT)
|
||||
if activityInfo == nil {
|
||||
return
|
||||
}
|
||||
cfg := G_GameLogicPtr.ActivityMgr.GetCatReturnGiftCfg(activityInfo.Id)
|
||||
if cfg == nil {
|
||||
return
|
||||
}
|
||||
CatReturnGiftMod := p.GetCatReturnGiftMod()
|
||||
res := &msg.ResCatReturnGift{
|
||||
StartTime: activityInfo.StartT,
|
||||
EndTime: activityInfo.EndT,
|
||||
Cfg: cfg,
|
||||
Score: int32(CatReturnGiftMod.GetScore()),
|
||||
Reward: int32(CatReturnGiftMod.GetReward()),
|
||||
}
|
||||
p.PushClientRes(res)
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package game
|
||||
import (
|
||||
"fmt"
|
||||
"server/db"
|
||||
"server/game/mod/activity"
|
||||
"server/game/mod/msg"
|
||||
Msg "server/game/mod/msg"
|
||||
GoUtil "server/game_util"
|
||||
@ -162,3 +163,17 @@ func unmarshalActivityCfg(atype int, buf []byte) (interface{}, error) {
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (r *ActivityMgr) GetCatReturnGiftCfg(id int) *protoMsg.CatReturnGiftCfg {
|
||||
data := r.getData()
|
||||
data.mu.Lock()
|
||||
defer data.mu.Unlock()
|
||||
for _, v := range data.List {
|
||||
if v.Type == activity.ACT_TYPE_CAT_RETURN_GIFT && v.Id == id {
|
||||
if cfg, ok := v.cfg.(*protoMsg.CatReturnGiftCfg); ok {
|
||||
return cfg
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -87,6 +87,7 @@ type ActivityInfo struct {
|
||||
StartT int64
|
||||
EndT int64
|
||||
Id int
|
||||
AId int
|
||||
Type int
|
||||
Title string
|
||||
Name string
|
||||
|
||||
@ -15,16 +15,16 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
ACT_TYPE_MINING = 1 // 挖矿
|
||||
ACT_TYPE_GUESS_COLOR = 2 // 猜颜色
|
||||
ACT_TYPE_RACE = 3 // 赛跑
|
||||
ACT_TYPE_DISCOUNT_GIFT = 4 // 折扣礼包
|
||||
ACT_TYPE_ADD_GIFT = 5 // 买一赠一礼包
|
||||
ACT_TYPE_SUPER_GIFT = 6 // 超值加购礼包
|
||||
ACT_TYPE_CATNIP = 7 // 猫草大作战
|
||||
ACT_TYPE_PASS = 8 // 通行证
|
||||
ACT_TYPE_CHAMPION = 9 // 冠军赛
|
||||
ACT_TYPE_MEOW_GIFT = 10 // 喵喵回礼
|
||||
ACT_TYPE_MINING = 1 // 挖矿
|
||||
ACT_TYPE_GUESS_COLOR = 2 // 猜颜色
|
||||
ACT_TYPE_RACE = 3 // 赛跑
|
||||
ACT_TYPE_DISCOUNT_GIFT = 4 // 折扣礼包
|
||||
ACT_TYPE_ADD_GIFT = 5 // 买一赠一礼包
|
||||
ACT_TYPE_SUPER_GIFT = 6 // 超值加购礼包
|
||||
ACT_TYPE_CATNIP = 7 // 猫草大作战
|
||||
ACT_TYPE_PASS = 8 // 通行证
|
||||
ACT_TYPE_CHAMPION = 9 // 冠军赛
|
||||
ACT_TYPE_CAT_RETURN_GIFT = 10 // 喵喵回礼
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
49
src/server/game/mod/cat_return_gift/cat_return_gift.go
Normal file
49
src/server/game/mod/cat_return_gift/cat_return_gift.go
Normal file
@ -0,0 +1,49 @@
|
||||
package catreturngift
|
||||
|
||||
type CatReturnGiftMod struct {
|
||||
Id int
|
||||
AId int
|
||||
Score int
|
||||
Reward int
|
||||
}
|
||||
|
||||
func (c *CatReturnGiftMod) InitData() {}
|
||||
|
||||
func (c *CatReturnGiftMod) ZeroUpdate(id, aid int) (int, int, int) {
|
||||
score := c.Score
|
||||
reward := c.Reward
|
||||
oldId := c.Login(id, aid)
|
||||
c.Score = 0
|
||||
c.Reward = 0
|
||||
return oldId, score, reward
|
||||
}
|
||||
|
||||
func (c *CatReturnGiftMod) Login(id, aid int) int {
|
||||
oldId := c.Id
|
||||
if aid == 0 {
|
||||
c.AId = 0
|
||||
return oldId
|
||||
}
|
||||
if c.AId == aid {
|
||||
return 0
|
||||
}
|
||||
c.AId = aid
|
||||
c.Id = id
|
||||
return oldId
|
||||
}
|
||||
|
||||
func (c *CatReturnGiftMod) GetReward() int {
|
||||
return c.Reward
|
||||
}
|
||||
|
||||
func (c *CatReturnGiftMod) GetScore() int {
|
||||
return c.Score
|
||||
}
|
||||
|
||||
func (c *CatReturnGiftMod) AddScore(score int) {
|
||||
c.Score += score
|
||||
}
|
||||
|
||||
func (c *CatReturnGiftMod) SetReward(reward int) {
|
||||
c.Reward = reward
|
||||
}
|
||||
@ -183,6 +183,20 @@ func ItemListToMsg(items []*Item) *msg.ItemList {
|
||||
}
|
||||
}
|
||||
|
||||
func MsgToItem(items []*msg.ItemInfo) []*Item {
|
||||
if items == nil {
|
||||
return nil
|
||||
}
|
||||
itemList := make([]*Item, 0, len(items))
|
||||
for _, v := range items {
|
||||
itemList = append(itemList, &Item{
|
||||
Id: int(v.Id),
|
||||
Num: int(v.Num),
|
||||
})
|
||||
}
|
||||
return itemList
|
||||
}
|
||||
|
||||
// 道具叠加
|
||||
func Merge(item1, item2 []*Item) []*Item {
|
||||
if item1 == nil {
|
||||
|
||||
@ -4,6 +4,7 @@ import (
|
||||
"server/game/mod/activity"
|
||||
"server/game/mod/base"
|
||||
"server/game/mod/card"
|
||||
catreturngift "server/game/mod/cat_return_gift"
|
||||
"server/game/mod/champship"
|
||||
"server/game/mod/charge"
|
||||
"server/game/mod/chess"
|
||||
@ -115,3 +116,7 @@ func (p *Player) GetCollectMod() *collect.Collect {
|
||||
func (p *Player) GetInviteMod() *invite.InviteMod {
|
||||
return p.PlayMod.getInviteMod()
|
||||
}
|
||||
|
||||
func (p *Player) GetCatReturnGiftMod() *catreturngift.CatReturnGiftMod {
|
||||
return &p.PlayMod.mod_list.CatReturnGift
|
||||
}
|
||||
|
||||
@ -1259,6 +1259,7 @@ func (p *Player) InitActivity() {
|
||||
StartT: v.Startime,
|
||||
EndT: v.Endtime,
|
||||
Id: v.Id,
|
||||
AId: v.AId,
|
||||
Type: v.Type,
|
||||
Status: Status,
|
||||
Title: v.Title,
|
||||
|
||||
@ -10,6 +10,7 @@ import (
|
||||
"server/game/mod/avatar"
|
||||
"server/game/mod/base"
|
||||
"server/game/mod/card"
|
||||
catreturngift "server/game/mod/cat_return_gift"
|
||||
"server/game/mod/catnip"
|
||||
"server/game/mod/champship"
|
||||
"server/game/mod/charge"
|
||||
@ -123,6 +124,7 @@ type PlayerModList struct {
|
||||
GuideTask guideTask.GuideTaskMod // 引导任务
|
||||
Pass pass.PassMod // 通行证
|
||||
Fur fur.FurMod // 毛皮
|
||||
CatReturnGift catreturngift.CatReturnGiftMod // 猫咪回归礼包
|
||||
}
|
||||
|
||||
func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool {
|
||||
@ -225,6 +227,7 @@ func (p *PlayerModData) InitMod(player *Player) (bool, error) {
|
||||
p.ModList.GuideTask.InitData()
|
||||
p.ModList.Pass.InitData()
|
||||
p.ModList.Fur.InitData()
|
||||
p.ModList.CatReturnGift.InitData()
|
||||
return is_update, nil
|
||||
}
|
||||
|
||||
|
||||
@ -5572,3 +5572,107 @@ func ReqCatnipEmoji(player *Player, buf []byte) error {
|
||||
player.CatnipBackData()
|
||||
return nil
|
||||
}
|
||||
|
||||
// 猫咪回礼
|
||||
func CatReturnGiftCfg(player *Player, buf []byte) error {
|
||||
player.CatReturnGiftBackData()
|
||||
return nil
|
||||
}
|
||||
|
||||
// 猫猫回礼领取奖励
|
||||
func ReqCatReturnGiftReward(player *Player, buf []byte) error {
|
||||
req := &msg.ReqCatReturnGiftReward{}
|
||||
err := proto.Unmarshal(buf, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
activityInfo := player.GetActivityInfo(activity.ACT_TYPE_CAT_RETURN_GIFT)
|
||||
if activityInfo == nil {
|
||||
player.SendErrClienRes(&msg.ResCatReturnGiftReward{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: "activity not exist",
|
||||
})
|
||||
return fmt.Errorf("activity not exist")
|
||||
}
|
||||
cfg := G_GameLogicPtr.ActivityMgr.GetCatReturnGiftCfg(activityInfo.Id)
|
||||
if cfg == nil {
|
||||
player.SendErrClienRes(&msg.ResCatReturnGiftReward{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: "config not exist",
|
||||
})
|
||||
return fmt.Errorf("config not exist")
|
||||
}
|
||||
CatReturnGiftMod := player.GetCatReturnGiftMod()
|
||||
reward := CatReturnGiftMod.GetReward()
|
||||
score := CatReturnGiftMod.GetScore()
|
||||
items := make([]*item.Item, 0)
|
||||
var maxRewardId int
|
||||
for _, v := range cfg.RewardList {
|
||||
if score >= int(v.Score) && reward < int(v.Id) {
|
||||
items = append(items, item.MsgToItem(v.Reward)...)
|
||||
maxRewardId = max(maxRewardId, int(v.Id))
|
||||
}
|
||||
}
|
||||
if len(items) == 0 {
|
||||
player.SendErrClienRes(&msg.ResCatReturnGiftReward{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: "no reward",
|
||||
})
|
||||
return fmt.Errorf("no reward")
|
||||
}
|
||||
err = player.HandleItem(items, msg.ITEM_POP_LABEL_CatReturnGiftReward.String())
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResCatReturnGiftReward{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
return err
|
||||
}
|
||||
CatReturnGiftMod.SetReward(maxRewardId)
|
||||
player.TeLog("cat_return_gift_reward", map[string]interface{}{
|
||||
"Score": score,
|
||||
"RewardId": maxRewardId,
|
||||
"Items": items,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.CatReturnGiftBackData()
|
||||
return nil
|
||||
}
|
||||
|
||||
func ReqCatReturnGiftRewardGfit(player *Player, buf []byte) error {
|
||||
req := &msg.ReqCatReturnGiftRewardGfit{}
|
||||
err := proto.Unmarshal(buf, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
items, eventType, orderNum, rewardList, err := LimitedTimeEventMod.SelectProgressReward(int(req.Id), BaseMod.GetLevel(), BaseMod.GetEnergy())
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResSelectLimitEvent{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
return err
|
||||
}
|
||||
err = player.HandleItem(items, msg.ITEM_POP_LABEL_SelectLimitEvent.String())
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResSelectLimitEvent{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("time_limited_slot", map[string]interface{}{
|
||||
"slot_order_number": orderNum,
|
||||
"slot_reward_list": rewardList,
|
||||
"slot_reward": limitedTimeEventCfg.GetEventName(eventType),
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(LimitedTimeEventMod.BackData())
|
||||
player.PushClientRes(LimitedTimeEventMod.ProgressBackData())
|
||||
player.PushClientRes(&msg.ResSelectLimitEvent{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user