Merge branch 'develop' into sdk
This commit is contained in:
commit
27c48071da
@ -562,6 +562,40 @@ func (p *Player) GetChampshipActivityId() (int, int) {
|
||||
return todayActivityId, yesterdayActivityId
|
||||
}
|
||||
|
||||
func (p *Player) GetTodayAndYesterdayActivityId(atype int) (int, int) {
|
||||
var todayActivityId int
|
||||
var yesterdayActivityId int
|
||||
activiyCfgList := G_GameLogicPtr.ActivityMgr.GetActivityList()
|
||||
now := GoUtil.Now()
|
||||
level := p.GetBaseMod().GetLevel()
|
||||
type sortData struct {
|
||||
Id int
|
||||
EndTime int64
|
||||
}
|
||||
var sortList []sortData
|
||||
for _, v := range activiyCfgList {
|
||||
if v.Type != atype {
|
||||
continue
|
||||
}
|
||||
if v.Level > level {
|
||||
continue
|
||||
}
|
||||
if v.Startime <= now && v.Endtime >= now {
|
||||
todayActivityId = v.Id
|
||||
}
|
||||
if v.Endtime < now {
|
||||
sortList = append(sortList, sortData{Id: v.Id, EndTime: v.Endtime})
|
||||
}
|
||||
}
|
||||
if len(sortList) > 0 {
|
||||
sort.Slice(sortList, func(i, j int) bool {
|
||||
return sortList[i].EndTime > sortList[j].EndTime
|
||||
})
|
||||
yesterdayActivityId = sortList[0].Id
|
||||
}
|
||||
return todayActivityId, yesterdayActivityId
|
||||
}
|
||||
|
||||
func (p *Player) ChampionshipZeroUpdate() {
|
||||
todayActivityId, _ := p.GetChampshipActivityId()
|
||||
ChampionshipMod := p.PlayMod.getChampshipMod()
|
||||
@ -662,17 +696,26 @@ func (p *Player) CatReturnGiftBackData() {
|
||||
if activityInfo == nil {
|
||||
return
|
||||
}
|
||||
_, YestdayAid := p.GetTodayAndYesterdayActivityId(activity.ACT_TYPE_CAT_RETURN_GIFT)
|
||||
cfg := G_GameLogicPtr.ActivityMgr.GetCatReturnGiftCfg(activityInfo.Id)
|
||||
if cfg == nil {
|
||||
return
|
||||
}
|
||||
CatReturnGiftMod := p.GetCatReturnGiftMod()
|
||||
score := CatReturnGiftMod.GetScore()
|
||||
reward := CatReturnGiftMod.GetReward()
|
||||
// 清理期展示旧活动配置
|
||||
if GoUtil.Now()-activityInfo.StartT < int64(cfg.ClearTime) {
|
||||
cfg = G_GameLogicPtr.ActivityMgr.GetCatReturnGiftCfg(YestdayAid)
|
||||
score = CatReturnGiftMod.GetLastScore()
|
||||
reward = CatReturnGiftMod.GetLastReward()
|
||||
}
|
||||
res := &msg.ResCatReturnGift{
|
||||
StartTime: activityInfo.StartT,
|
||||
EndTime: activityInfo.EndT,
|
||||
Cfg: cfg,
|
||||
Score: int32(CatReturnGiftMod.GetScore()),
|
||||
Reward: int32(CatReturnGiftMod.GetReward()),
|
||||
Score: int32(score),
|
||||
Reward: int32(reward),
|
||||
}
|
||||
p.PushClientRes(res)
|
||||
}
|
||||
|
||||
@ -44,6 +44,23 @@ func (ac *ActivityCfg) String() string {
|
||||
ac.Id, ac.Type, ac.Startime, ac.Endtime, ac.Level, ac.Title, ac.MailTitle, ac.MailContent, ac.cfg, ac.Extra)
|
||||
}
|
||||
|
||||
func (ac *ActivityCfg) Copy() ActivityCfg {
|
||||
return ActivityCfg{
|
||||
Id: ac.Id,
|
||||
AId: ac.AId,
|
||||
Type: ac.Type,
|
||||
Startime: ac.Startime,
|
||||
Endtime: ac.Endtime,
|
||||
Level: ac.Level,
|
||||
Title: ac.Title,
|
||||
MailTitle: ac.MailTitle,
|
||||
MailContent: ac.MailContent,
|
||||
cfg: ac.cfg,
|
||||
Interval: ac.Interval,
|
||||
Extra: ac.Extra,
|
||||
}
|
||||
}
|
||||
|
||||
const ()
|
||||
|
||||
func (r *ActivityMgr) Init() {
|
||||
@ -70,23 +87,22 @@ func (r *ActivityMgr) GetActivityList() []ActivityCfg {
|
||||
list := make([]ActivityCfg, 0, len(data.List))
|
||||
now := GoUtil.Now()
|
||||
for _, v := range data.List {
|
||||
info := v.Copy()
|
||||
//循环活动,重新计算活动时间
|
||||
if v.Interval > 0 {
|
||||
if now > v.Endtime {
|
||||
//活动已结束,计算下一次活动时间
|
||||
interval := (now - v.Startime) / v.Interval
|
||||
v.Startime += interval * v.Interval
|
||||
v.Endtime += interval * v.Interval
|
||||
if now > v.Endtime {
|
||||
v.Startime += v.Interval
|
||||
v.Endtime += v.Interval
|
||||
if info.Interval > 0 {
|
||||
info.AId = int(info.Startime)
|
||||
list = append(list, info)
|
||||
internal := (now - info.Startime) / info.Interval
|
||||
for i := int64(0); i <= internal; i++ {
|
||||
newInfo := info.Copy()
|
||||
newInfo.Startime += info.Interval
|
||||
newInfo.Endtime += info.Interval
|
||||
newInfo.AId = int(newInfo.Startime) //活动id用开始时间表示,方便客户端排序
|
||||
list = append(list, newInfo)
|
||||
}
|
||||
}
|
||||
v.AId = int(v.Startime) //活动id用开始时间表示,方便客户端排序
|
||||
} else {
|
||||
v.AId = v.Id
|
||||
list = append(list, info)
|
||||
}
|
||||
list = append(list, *v)
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
@ -529,7 +529,11 @@ func ReqGmCommand_(player *Player, Command string) error {
|
||||
case "copyUser":
|
||||
p1 := new(Player)
|
||||
p1.M_DwUin = int64(GoUtil.Int(arg[1]))
|
||||
p1.InitPlayerOnly()
|
||||
err := p1.InitPlayerOnly()
|
||||
if err != nil {
|
||||
log.Error("failed to initialize player: %v", err)
|
||||
return err
|
||||
}
|
||||
BaseMod := p1.PlayMod.getBaseMod()
|
||||
BaseMod.Uid = player.M_DwUin
|
||||
BaseMod.NickName = player.PlayMod.getBaseMod().NickName
|
||||
|
||||
@ -5,6 +5,8 @@ type CatReturnGiftMod struct {
|
||||
AId int
|
||||
Score int
|
||||
Reward int
|
||||
LastScore int
|
||||
LastReward int
|
||||
}
|
||||
|
||||
func (c *CatReturnGiftMod) InitData() {}
|
||||
@ -24,6 +26,8 @@ func (c *CatReturnGiftMod) Login(id, aid int) (int, int, int) {
|
||||
}
|
||||
score := c.Score
|
||||
reward := c.Reward
|
||||
c.LastScore = score
|
||||
c.LastReward = reward
|
||||
c.AId = aid
|
||||
c.Id = id
|
||||
c.Score = 0
|
||||
@ -46,3 +50,11 @@ func (c *CatReturnGiftMod) AddScore(score int) {
|
||||
func (c *CatReturnGiftMod) SetReward(reward int) {
|
||||
c.Reward = reward
|
||||
}
|
||||
|
||||
func (c *CatReturnGiftMod) GetLastReward() int {
|
||||
return c.LastReward
|
||||
}
|
||||
|
||||
func (c *CatReturnGiftMod) GetLastScore() int {
|
||||
return c.LastScore
|
||||
}
|
||||
|
||||
@ -1052,7 +1052,7 @@ func (p *Player) LoginBackData() {
|
||||
p.BackUserInfo()
|
||||
}
|
||||
|
||||
func (p *Player) InitPlayerOnly() {
|
||||
func (p *Player) InitPlayerOnly() error {
|
||||
p.lock.Lock()
|
||||
defer p.lock.Unlock()
|
||||
p.Msg = make([]PlayerMsg, 0)
|
||||
@ -1068,7 +1068,7 @@ func (p *Player) InitPlayerOnly() {
|
||||
// 玩家基础数据
|
||||
ok := Base.GetDataByUid(p.M_DwUin)
|
||||
if !ok {
|
||||
return
|
||||
return errors.New("player base data load failed")
|
||||
}
|
||||
p.PlayerBaseMod = Base
|
||||
p.M_DwUin = Base.Data.DwUin
|
||||
@ -1077,10 +1077,11 @@ func (p *Player) InitPlayerOnly() {
|
||||
modData := &PlayerModData{PlayerData: NewPlayerData("PlayerModData", p)}
|
||||
ok = modData.LoadDataFromDB(Base.Data.DwUin)
|
||||
if !ok {
|
||||
return
|
||||
return errors.New("player mod data load failed")
|
||||
}
|
||||
modData.InitMod(p)
|
||||
p.PlayMod.mod_list = modData.ModList
|
||||
return nil
|
||||
}
|
||||
|
||||
// 获取玩家简单数据
|
||||
|
||||
@ -165,5 +165,6 @@ CREATE TABLE IF NOT EXISTS t_activity_mod (
|
||||
`cfg` TEXT COMMENT '活动配置',
|
||||
`cfg_buf` BLOB COMMENT '活动配置buf',
|
||||
`extra` TEXT COMMENT '活动额外数据',
|
||||
`updateTime` int unsigned NOT NULL DEFAULT '0' COMMENT '更新时间'
|
||||
`updateTime` int unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
|
||||
`interval` int unsigned NOT NULL DEFAULT '0' COMMENT '活动开始间隔时间,单位秒,0表示不循环'
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_general_ci COMMENT = '系统活动表';
|
||||
Loading…
Reference in New Issue
Block a user