累计签到进阶奖励实现
This commit is contained in:
parent
992ccb280e
commit
6985bc0437
|
|
@ -272,6 +272,7 @@ const (
|
|||
GainWayBuyItem = 86 // 商城购买道具
|
||||
GainWayBuyWeekCard = 87 // 商城购买周卡
|
||||
GainWayVipBuyCoin = 88 // vip商城购买金币
|
||||
GainWaySign7 = 89 // 连续签到7天进阶消耗
|
||||
)
|
||||
|
||||
// 后台选择 金币变化类型 的充值 类型id号起始
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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{})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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{}
|
||||
|
|
|
|||
Loading…
Reference in New Issue