累计签到进阶奖励实现

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 // 商城购买道具
GainWayBuyWeekCard = 87 // 商城购买周卡
GainWayVipBuyCoin = 88 // vip商城购买金币
GainWaySign7 = 89 // 连续签到7天进阶消耗
)
// 后台选择 金币变化类型 的充值 类型id号起始

View File

@ -468,6 +468,7 @@ type NewSignData struct {
AddupIndex []int32 //领取累计奖励
TurnplateIdx []int32 //领取转盘下标
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; //
repeated WelfareDate AddUpDate = 2; //
}
message AddUpDate2TypeData {
int32 Day = 1;
int32 Id = 2;
int32 Num = 3;
}
message Welfare7SignDate {
int32 Day = 1; //
repeated WelfareDate Date = 2; //
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_CS_WELF_CONTINPAY = 2598;//()
PACKET_SC_WELF_CONTINPAY = 2599;//
PACKET_CS_SignDay_Addup2Award = 2600;//
PACKET_SC_SignDay_Addup2Award = 2601;//
// 2900~2999
PACKET_CSWelfRelief = 2900;//
@ -76,6 +78,11 @@ message WelfareDate {
int32 Item_Id = 4; // id
}
message AddUp2TypeDate{
int32 Day = 1;
int32 Id = 2; // 1 2
int32 Num = 3; //
}
//
//PACKET_CS_WELF_GETTURNPLATE
@ -95,6 +102,8 @@ message SCGetTurnplate{
message AddUpWelfareDate {
int32 AddUpDay = 1; //
repeated WelfareDate AddUpDate = 2; //
repeated WelfareDate AddUp2Date =3; //
repeated AddUp2TypeDate AddUp2Type = 4; //
}
//
@ -124,6 +133,12 @@ message Welfare7SignDate {
int32 Day = 1; //
repeated WelfareDate Date = 2; //
repeated AddUpWelfareDate AddUpDate = 3; //
}
message Addup2Data{
int32 Day = 1; //
int32 Num = 2; //
int64 EndTime = 3;// -1
}
//PACKET_SC_WELF_WELFAREINFO
@ -135,6 +150,19 @@ message SCWelfaredInfo{
repeated int32 AddUpSignDay = 5; //
repeated int32 TurnplateIdx = 6; // 0
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 {

View File

@ -487,6 +487,30 @@ func (this *CSPigBankTakeCoinHandler) Process(s *netlib.Session, packetid int, d
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() {
// 领取救济金
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_GETRELIEFFUND), &CSGetReliefFundHandler{})
@ -531,4 +555,7 @@ func init() {
//领取存钱罐金币
common.RegisterHandler(int(welfare.SPacketID_PACKET_CSPigbankTakeCoin), &CSPigBankTakeCoinHandler{})
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{
Day: v.Day,
}
ad := &welfare.AddUpWelfareDate{}
for _, d := range v.Date {
data.Date = append(data.Date, &welfare.WelfareDate{
Grade: d.Grade,
@ -674,9 +675,7 @@ func (this *WelfareMgr) WelfaredInfo(p *Player) {
})
}
for _, d := range v.AddUpDate { // 累计奖励
ad := &welfare.AddUpWelfareDate{
AddUpDay: d.AddUpDay,
}
ad.AddUpDay = d.AddUpDay
for _, d1 := range d.AddUpDate {
ad.AddUpDate = append(ad.AddUpDate, &welfare.WelfareDate{
Grade: d1.Grade,
@ -685,8 +684,28 @@ func (this *WelfareMgr) WelfaredInfo(p *Player) {
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.TurnplateIdx = append(pack.TurnplateIdx, p.WelfData.Sign7.TurnplateIdx...)
@ -699,11 +718,105 @@ func (this *WelfareMgr) WelfaredInfo(p *Player) {
pack.SignDay = signIndex
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)
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 通知活动开关状态
func (this *WelfareMgr) WelfareSwitch(p *Player, platform string, op int) {
pack := &player_proto.SCEasyWelfaredInfo{}