增加playroom广告观看次数限制

This commit is contained in:
hahwu 2025-07-25 18:22:34 +08:00
parent 6ca18ac8f4
commit 0a4ad94306
4 changed files with 606 additions and 481 deletions

View File

@ -583,3 +583,11 @@ func GetPetOrderItemExpByList(ItemList []*item.Item) int {
}
return r
}
func GetShopItemAdNum(Id int) int {
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_SHOP, Id)
if err != nil {
return 0
}
return gamedata.GetIntValue(data, "Dailystorage")
}

View File

@ -3637,6 +3637,16 @@ func ReqPlayroomBuyItem(player *Player, buf []byte) error {
})
return err
}
if CostItem[0].Num == 0 {
err := PlayroomMod.AdWatch(AddItems[0].Id)
if err != nil {
player.SendErrClienRes(&msg.ResPlayroomBuyItem{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
}
err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_PlayroomBuyItem.String())
if err != nil {
player.SendErrClienRes(&msg.ResPlayroomBuyItem{

View File

@ -56,6 +56,12 @@ type PlayroomMod struct {
RevengeUid int64 // 复仇Uid
FilterVisitor bool // 是否过滤访客
TodayVisitedUsers []int // 今日已拜访过的用户
ADItem map[int]*ItemInfo
}
type ItemInfo struct {
Watch int // 观看次数
LastTime int64 // 上次观看时间
}
type DailyTask struct {
@ -184,6 +190,9 @@ func (p *PlayroomMod) InitData() {
p.Dress[Part] = append(p.Dress[Part], v)
}
}
if p.ADItem == nil {
p.ADItem = make(map[int]*ItemInfo)
}
}
func (p *PlayroomMod) ZeroUpdate() {
@ -193,6 +202,7 @@ func (p *PlayroomMod) ZeroUpdate() {
p.UpvoteList = make([]int, 0)
p.DailyTaskReward = make([]int, 0)
p.TodayVisitedUsers = make([]int, 0)
p.ADItem = make(map[int]*ItemInfo)
p.InitDailyTask()
}
@ -632,10 +642,19 @@ func (p *PlayroomMod) NotifyMood() *msg.NotifyPlayroomMood {
for k, v := range p.MoodInfo {
Mood[int32(k)] = int32(v.Num)
}
resAdItems := make([]*msg.AdItem, 0)
for k, v := range p.ADItem {
resAdItems = append(resAdItems, &msg.AdItem{
ItemId: int32(k),
Watch: int32(v.Watch),
LastWatch: int32(v.LastTime),
})
}
return &msg.NotifyPlayroomMood{
AllMood: int32(p.AllMood),
Mood: Mood,
Physiology: GoUtil.MapIntToInt32(p.GetPhysiologyList()),
AdItem: resAdItems,
}
}
@ -739,6 +758,7 @@ func (p *PlayroomMod) GetFlipReward() ([]*item.Item, int, error) {
func (p *PlayroomMod) BuyItem(Id int) ([]*item.Item, []*item.Item) {
return playroomCfg.GetBuyItem(Id)
}
func (p *PlayroomMod) UnLock(Lv int) bool {
@ -915,3 +935,15 @@ func (p *PlayroomMod) Guide(Type int) error {
p.Physiology[Type].Num = 0
return nil
}
func (p *PlayroomMod) AdWatch(Id int) error {
if _, ok := p.ADItem[Id]; !ok {
p.ADItem[Id] = &ItemInfo{Watch: 0, LastTime: 0}
}
p.ADItem[Id].Watch++
p.ADItem[Id].LastTime = GoUtil.Now()
if p.ADItem[Id].Watch > playroomCfg.GetShopItemAdNum(Id) {
return fmt.Errorf("AdWatch Watch is over limit")
}
return nil
}

File diff suppressed because it is too large Load Diff