累计签到进阶奖励实现

This commit is contained in:
by 2024-06-24 09:29:56 +08:00
parent 992ccb280e
commit 6985bc0437
8 changed files with 1502 additions and 862 deletions

View File

@ -272,6 +272,7 @@ const (
GainWayBuyItem = 86 // 商城购买道具 GainWayBuyItem = 86 // 商城购买道具
GainWayBuyWeekCard = 87 // 商城购买周卡 GainWayBuyWeekCard = 87 // 商城购买周卡
GainWayVipBuyCoin = 88 // vip商城购买金币 GainWayVipBuyCoin = 88 // vip商城购买金币
GainWaySign7 = 89 // 连续签到7天进阶消耗
) )
// 后台选择 金币变化类型 的充值 类型id号起始 // 后台选择 金币变化类型 的充值 类型id号起始

View File

@ -463,11 +463,12 @@ type PlayerData struct {
// 七日签到数据 // 七日签到数据
type NewSignData struct { type NewSignData struct {
SignIndex int32 //签到次数 SignIndex int32 //签到次数
SignTickets int64 //签到时间 时间戳 SignTickets int64 //签到时间 时间戳
AddupIndex []int32 //领取累计奖励 AddupIndex []int32 //领取累计奖励
TurnplateIdx []int32 //领取转盘下标 TurnplateIdx []int32 //领取转盘下标
VideoTicket int64 // 领取视频奖励时间戳 VideoTicket int64 // 领取视频奖励时间戳
Addup2Data map[int32]map[int32]int64 // 进阶奖励key1 - day key2-次数 value-结束领取时间戳(-1代表已领取)
} }

File diff suppressed because it is too large Load Diff

View File

@ -496,11 +496,19 @@ message AddUpWelfareDate {
int32 AddUpDay = 1; // int32 AddUpDay = 1; //
repeated WelfareDate AddUpDate = 2; // repeated WelfareDate AddUpDate = 2; //
} }
message AddUpDate2TypeData {
int32 Day = 1;
int32 Id = 2;
int32 Num = 3;
}
message Welfare7SignDate { message Welfare7SignDate {
int32 Day = 1; // int32 Day = 1; //
repeated WelfareDate Date = 2; // repeated WelfareDate Date = 2; //
repeated AddUpWelfareDate AddUpDate = 3; // repeated AddUpWelfareDate AddUpDate = 3; //
repeated AddUpWelfareDate AddUpDate2 = 4; //
repeated AddUpDate2TypeData AddUpDate2Type = 5; //
} }

File diff suppressed because it is too large Load Diff

View File

@ -40,6 +40,8 @@ enum SPacketID {
PACKET_SC_WELF_CONTINPAYINFO = 2597;// PACKET_SC_WELF_CONTINPAYINFO = 2597;//
PACKET_CS_WELF_CONTINPAY = 2598;//() PACKET_CS_WELF_CONTINPAY = 2598;//()
PACKET_SC_WELF_CONTINPAY = 2599;// PACKET_SC_WELF_CONTINPAY = 2599;//
PACKET_CS_SignDay_Addup2Award = 2600;//
PACKET_SC_SignDay_Addup2Award = 2601;//
// 2900~2999 // 2900~2999
PACKET_CSWelfRelief = 2900;// PACKET_CSWelfRelief = 2900;//
@ -76,6 +78,11 @@ message WelfareDate {
int32 Item_Id = 4; // id int32 Item_Id = 4; // id
} }
message AddUp2TypeDate{
int32 Day = 1;
int32 Id = 2; // 1 2
int32 Num = 3; //
}
// //
//PACKET_CS_WELF_GETTURNPLATE //PACKET_CS_WELF_GETTURNPLATE
@ -95,6 +102,8 @@ message SCGetTurnplate{
message AddUpWelfareDate { message AddUpWelfareDate {
int32 AddUpDay = 1; // int32 AddUpDay = 1; //
repeated WelfareDate AddUpDate = 2; // repeated WelfareDate AddUpDate = 2; //
repeated WelfareDate AddUp2Date =3; //
repeated AddUp2TypeDate AddUp2Type = 4; //
} }
// //
@ -124,6 +133,12 @@ message Welfare7SignDate {
int32 Day = 1; // int32 Day = 1; //
repeated WelfareDate Date = 2; // repeated WelfareDate Date = 2; //
repeated AddUpWelfareDate AddUpDate = 3; // repeated AddUpWelfareDate AddUpDate = 3; //
}
message Addup2Data{
int32 Day = 1; //
int32 Num = 2; //
int64 EndTime = 3;// -1
} }
//PACKET_SC_WELF_WELFAREINFO //PACKET_SC_WELF_WELFAREINFO
@ -135,6 +150,19 @@ message SCWelfaredInfo{
repeated int32 AddUpSignDay = 5; // repeated int32 AddUpSignDay = 5; //
repeated int32 TurnplateIdx = 6; // 0 repeated int32 TurnplateIdx = 6; // 0
int32 Switch = 7; // 1. 2. int32 Switch = 7; // 1. 2.
repeated Addup2Data Addup2 = 8; //
}
//7
//PACKET_CS_SignDay_Addup2Award
message CSSignDayAddup2Award{
int32 Day = 1;
}
//PACKET_SC_SignDay_Addup2Award
message SCSignDayAddup2Award{
int32 Day = 1; //
int32 Num = 2; //
int64 EndTime = 3;// -1
} }
message BlindBoxData { message BlindBoxData {

View File

@ -487,6 +487,30 @@ func (this *CSPigBankTakeCoinHandler) Process(s *netlib.Session, packetid int, d
return nil return nil
} }
// GetAddUp2Award
type CSSignDayAddup2AwardPacketFactory struct {
}
type CSSignDayAddup2AwardHandler struct {
}
func (this *CSSignDayAddup2AwardPacketFactory) CreatePacket() interface{} {
pack := &welfare.CSPigbankTakeCoin{}
return pack
}
func (this *CSSignDayAddup2AwardHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
logger.Logger.Trace("CSSignDayAddup2Award Process recv ", data)
if msg, ok := data.(*welfare.CSSignDayAddup2Award); ok {
p := PlayerMgrSington.GetPlayer(sid)
if p == nil {
logger.Logger.Warnf("CSPigBankTakeCoinHandler p == nil")
return nil
}
WelfareMgrSington.GetAddUp2Award(p, msg.Day)
}
return nil
}
func init() { func init() {
// 领取救济金 // 领取救济金
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_GETRELIEFFUND), &CSGetReliefFundHandler{}) common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_GETRELIEFFUND), &CSGetReliefFundHandler{})
@ -531,4 +555,7 @@ func init() {
//领取存钱罐金币 //领取存钱罐金币
common.RegisterHandler(int(welfare.SPacketID_PACKET_CSPigbankTakeCoin), &CSPigBankTakeCoinHandler{}) common.RegisterHandler(int(welfare.SPacketID_PACKET_CSPigbankTakeCoin), &CSPigBankTakeCoinHandler{})
netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CSPigbankTakeCoin), &CSPigBankTakeCoinPacketFactory{}) netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CSPigbankTakeCoin), &CSPigBankTakeCoinPacketFactory{})
//领取七日签到进阶奖励
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_SignDay_Addup2Award), &CSSignDayAddup2AwardHandler{})
netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CS_SignDay_Addup2Award), &CSSignDayAddup2AwardPacketFactory{})
} }

View File

@ -665,6 +665,7 @@ func (this *WelfareMgr) WelfaredInfo(p *Player) {
data := &welfare.Welfare7SignDate{ data := &welfare.Welfare7SignDate{
Day: v.Day, Day: v.Day,
} }
ad := &welfare.AddUpWelfareDate{}
for _, d := range v.Date { for _, d := range v.Date {
data.Date = append(data.Date, &welfare.WelfareDate{ data.Date = append(data.Date, &welfare.WelfareDate{
Grade: d.Grade, Grade: d.Grade,
@ -674,9 +675,7 @@ func (this *WelfareMgr) WelfaredInfo(p *Player) {
}) })
} }
for _, d := range v.AddUpDate { // 累计奖励 for _, d := range v.AddUpDate { // 累计奖励
ad := &welfare.AddUpWelfareDate{ ad.AddUpDay = d.AddUpDay
AddUpDay: d.AddUpDay,
}
for _, d1 := range d.AddUpDate { for _, d1 := range d.AddUpDate {
ad.AddUpDate = append(ad.AddUpDate, &welfare.WelfareDate{ ad.AddUpDate = append(ad.AddUpDate, &welfare.WelfareDate{
Grade: d1.Grade, Grade: d1.Grade,
@ -685,8 +684,28 @@ func (this *WelfareMgr) WelfaredInfo(p *Player) {
Item_Id: d1.Item_Id, Item_Id: d1.Item_Id,
}) })
} }
data.AddUpDate = append(data.AddUpDate, ad)
} }
//进阶数据
for _, d2 := range v.AddUpDate2 {
for _, value := range d2.AddUpDate {
ad.AddUp2Date = append(ad.AddUp2Date, &welfare.WelfareDate{
Grade: value.Grade,
Type: value.Type,
Name: value.Name,
Item_Id: value.Item_Id,
})
}
}
//进阶奖励领取条件
for _, value := range v.AddUpDate2Type {
ad.AddUp2Type = append(ad.AddUp2Type, &welfare.AddUp2TypeDate{
Day: value.Day,
Id: value.Id,
Num: value.Num,
})
}
data.AddUpDate = append(data.AddUpDate, ad)
pack.Slist = append(pack.Slist, data) pack.Slist = append(pack.Slist, data)
} }
pack.TurnplateIdx = append(pack.TurnplateIdx, p.WelfData.Sign7.TurnplateIdx...) pack.TurnplateIdx = append(pack.TurnplateIdx, p.WelfData.Sign7.TurnplateIdx...)
@ -699,11 +718,105 @@ func (this *WelfareMgr) WelfaredInfo(p *Player) {
pack.SignDay = signIndex pack.SignDay = signIndex
pack.AddUpSignDay = append(pack.AddUpSignDay, p.WelfData.Sign7.AddupIndex...) pack.AddUpSignDay = append(pack.AddUpSignDay, p.WelfData.Sign7.AddupIndex...)
} }
//七日签到进阶奖励数据
// 进阶奖励key1 - day key2-次数 value-结束领取时间戳(-1代表已领取)
for day, value := range p.WelfData.Sign7.Addup2Data {
addUp2 := &welfare.Addup2Data{}
addUp2.Day = day
for num, endTime := range value {
addUp2.Num = num
addUp2.EndTime = endTime
}
pack.Addup2 = append(pack.Addup2, addUp2)
}
} }
logger.Logger.Tracef("WelfaredInfo snid: %v pack: %v", p.SnId, pack) logger.Logger.Tracef("WelfaredInfo snid: %v pack: %v", p.SnId, pack)
p.SendToClient(int(welfare.SPacketID_PACKET_SC_WELF_WELFAREINFO), pack) p.SendToClient(int(welfare.SPacketID_PACKET_SC_WELF_WELFAREINFO), pack)
} }
// 更新进阶奖励时间
func (this *WelfareMgr) UpdateAddUp2Date(p *Player, day int32, endTime int64) {
if p.WelfData.Sign7.Addup2Data == nil {
p.WelfData.Sign7.Addup2Data = make(map[int32]map[int32]int64)
}
//p.WelfData.Sign7.Addup2Data[day][1] = time.Now().Unix() + 3600
p.WelfData.Sign7.Addup2Data[day][1] = endTime
//通知客户端
pack := &welfare.SCSignDayAddup2Award{}
pack.Day = day
pack.Num = 1
pack.EndTime = p.WelfData.Sign7.Addup2Data[day][1]
logger.Logger.Trace("通知客户端更新进阶奖励时间!!!!!!!!")
p.SendToClient(int(welfare.SPacketID_PACKET_SC_SignDay_Addup2Award), pack)
}
// 领取进阶奖励
func (this *WelfareMgr) GetAddUp2Award(p *Player, day int32) {
// 判断是否已经领取
Num := int32(0)
EndTime := int64(-1)
for num, endTime := range p.WelfData.Sign7.Addup2Data[day] {
if endTime == -1 {
return
}
if endTime < time.Now().Unix() {
return
}
Num = num
EndTime = endTime
}
//获取配置
info := this.GetConfig(p.Platform)
if info == nil {
return
}
sign7 := info.Welfare7SignDateList
if sign7 == nil {
return
}
list := sign7.List
if list == nil {
return
}
addUpDate2 := list[day-1].AddUpDate2
addUpDate2Type := list[day-1].AddUpDate2Type
if addUpDate2Type == nil {
return
}
typeId := addUpDate2Type[0].Id
addUpDate2Num := addUpDate2Type[0].Num
if typeId == 1 {
Num += 1
} else {
//扣除钻石
if p.Diamond < int64(addUpDate2Num) {
return
}
p.AddDiamond(int64(-addUpDate2Num), 0, common.GainWaySign7, "system", "累计签到进阶奖励钻石消耗")
logger.Logger.Trace("累计签到进阶奖励扣除钻石uid = ", p.SnId)
EndTime = -1
}
p.WelfData.Sign7.Addup2Data[day] = make(map[int32]int64)
p.WelfData.Sign7.Addup2Data[day][Num+1] = EndTime
if typeId == 1 && Num >= addUpDate2Num {
EndTime = -1
}
if EndTime == -1 {
//发奖
var items []*Item
item := &Item{
ItemId: addUpDate2[0].AddUpDate[0].Item_Id,
ItemNum: int64(addUpDate2[0].AddUpDate[0].Grade),
}
items = append(items, item)
BagMgrSingleton.AddItems(p, items, 0, common.GainWaySign7, "system", "累计签到进阶奖励钻石消耗", 0, 0, false)
}
//通知客户端
this.UpdateAddUp2Date(p, day, EndTime)
}
// WelfareSwitch 通知活动开关状态 // WelfareSwitch 通知活动开关状态
func (this *WelfareMgr) WelfareSwitch(p *Player, platform string, op int) { func (this *WelfareMgr) WelfareSwitch(p *Player, platform string, op int) {
pack := &player_proto.SCEasyWelfaredInfo{} pack := &player_proto.SCEasyWelfaredInfo{}