123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package player
- import (
- "context"
- "fmt"
- "github.com/mhaya/game/game_cluster/internal/code"
- "github.com/mhaya/game/game_cluster/internal/constant"
- "github.com/mhaya/game/game_cluster/internal/data"
- "github.com/mhaya/game/game_cluster/internal/mdb"
- "github.com/mhaya/game/game_cluster/internal/mdb/models"
- "github.com/mhaya/game/game_cluster/internal/param"
- clog "github.com/mhaya/logger"
- )
- func (p *actorPlayer) invite(req *param.InviteReq) int32 {
- if !p.isOnline {
- return code.PlayerNotLogin
- }
- if p.Player.Pid != "" {
- return code.InviteEmpoweringOthersError
- }
- exists := mdb.RDB.Exists(context.Background(), fmt.Sprintf("%v:1:%v", constant.InviteKey, req.ParentName)).Val()
- if exists > 0 {
- return code.Error
- }
- p.dirty = true
- p.Player.Pid = req.ParentName
- p.Player.SetInvite(req.ParentName)
- //添加日志
- clog.Info("玩家邀请成功,玩家ID:%v,邀请玩家ID:%v", p.Player.UserName, req.ParentName)
- return code.OK
- }
- func (p *actorPlayer) inviteRecord() (*param.WeeklyRankConfigResp, int32) {
- if !p.isOnline {
- return nil, code.PlayerNotLogin
- }
- var resp param.WeeklyRankConfigResp
- if d, ok := p.Player.Invite[models.InvitePlayer]; ok {
- resp.InviteNum = d.Num
- for _, v := range d.Reward {
- resp.InviteTotalReward = append(resp.InviteTotalReward, data.ItemReward{ItemID: v.ItemID, ItemBaseType: v.ItemBaseType, Amount: v.Amount})
- }
- }
- if d, ok := p.Player.Invite[models.InviteVipPlayer]; ok {
- resp.VipInviteNum = d.Num
- for _, v := range d.Reward {
- resp.VipInviteTotalReward = append(resp.VipInviteTotalReward, data.ItemReward{ItemID: v.ItemID, ItemBaseType: v.ItemBaseType, Amount: v.Amount})
- }
- }
- return &resp, code.OK
- }
- func (p *actorPlayer) inviteReward(req *param.InviteReq) (*int, int32) {
- if !p.isOnline {
- p.InitBase(req.ParentName)
- }
- p.dirty = true
- p.isOnline = true
- addItem := models.NewAddItem()
- switch req.Type {
- case models.InvitePlayer:
- ret, ok := data.DiscreteRuleConfig.Get(models.InvitePlayer)
- if !ok {
- return &p.Player.IsLeader, code.Error
- }
- addItem.Add(ret.Reward)
- p.Player.Item.AddItem(ret.Reward)
- addItem.AddById(models.ItemInvite, 1)
- p.Player.SetPlayerRewardLog(models.SourceInvite, models.InvitePlayer, ret.Reward, []data.ItemReward{}, 2)
- case models.InviteVipPlayer:
- ret, ok := data.DiscreteRuleConfig.Get(models.InviteVipPlayer)
- if !ok {
- return &p.Player.IsLeader, code.Error
- }
- addItem.Add(ret.Reward)
- p.Player.Item.AddItem(ret.Reward)
- addItem.AddById(models.ItemInvite, 1)
- p.Player.SetPlayerRewardLog(models.SourceInvite, models.InviteVipPlayer, ret.Reward, []data.ItemReward{}, 2)
- }
- //社区长邀请
- if p.Player.IsLeader == 1 {
- ret, ok := data.DiscreteRuleConfig.Get(models.InvitePlayerByLeader)
- if !ok {
- return &p.Player.IsLeader, code.Error
- }
- addItem.Add(ret.Reward)
- p.Player.Item.AddItem(ret.Reward)
- p.Player.SetPlayerRewardLog(models.SourceInvite, models.InvitePlayerByLeader, ret.Reward, []data.ItemReward{}, 2)
- }
- //设置邀请榜单
- models.SetRank(constant.RankSourceInvite, p.Player.IsRobot, p.Player.UserName, 1)
- p.Player.LevelUp()
- p.Player.FinishAchieveTaskByType2()
- return &p.Player.IsLeader, code.OK
- }
|