diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 795af878..1a8932d0 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -17,6 +17,7 @@ import ( mergeDataCfg "server/conf/mergeData" miningCfg "server/conf/mining" "server/db" + "server/game/mod/activity" "server/game/mod/item" "server/game/mod/limitedTimeEvent" MsgMod "server/game/mod/msg" @@ -639,8 +640,13 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { }) BackDataType[item.ITEM_TYPE_FACE] = struct{}{} case item.ITEM_TYPE_ACTIVITY_RACE: // 活动竞速 + ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_RACE) + if ActivityInfo == nil { + continue + } RaceMod := p.PlayMod.getRaceMod() RaceMod.AddCoin(v.Num) + RaceBackData(p) case item.ITEM_TYPE_PLAYROOM_VISIT: // 拜访玩家 Target := GetVisitorPlayer(p) playroomMod := p.PlayMod.getPlayroomMod() diff --git a/src/server/game/mod/race/race.go b/src/server/game/mod/race/race.go index 809e8ec4..4fc8c177 100644 --- a/src/server/game/mod/race/race.go +++ b/src/server/game/mod/race/race.go @@ -55,14 +55,9 @@ func (r *RaceMod) StartGame() error { return fmt.Errorf("the game has started") } r.StartTime = GoUtil.Now() - Opponent := make([]*Opponent, 0) OpponentNum := raceCfg.GetRaceNum(r.Pass) - names := randnameCfg.GetRandNames(OpponentNum) - for i := 0; i < OpponentNum; i++ { - Opponent = append(Opponent, randOpponent(i, names[i])) - } r.EndTime = r.StartTime + int64(raceCfg.GetCD(r.Id)) - r.Opponent = Opponent + r.Opponent = randOpponents(OpponentNum) return nil } @@ -93,17 +88,30 @@ func (r *RaceMod) GetReward() ([]*item.Item, error) { Items = append(Items, ExtraReward...) } r.Pass++ + r.Progress -= Need MaxPass := raceCfg.GetMaxPass(r.Id) if r.Pass > MaxPass { r.Pass = 1 + r.StartTime = 0 + r.EndTime = 0 + r.Opponent = nil + } else { + r.StartTime = Now + r.EndTime = Now + int64(raceCfg.GetCD(r.Id)) + r.Opponent = randOpponents(raceCfg.GetRaceNum(r.Pass)) } - r.StartTime = 0 - r.EndTime = 0 - r.Progress -= Need - r.Opponent = nil + return Items, nil } +func randOpponents(OpponentNum int) []*Opponent { + Opponent := make([]*Opponent, 0) + names := randnameCfg.GetRandNames(OpponentNum) + for i := 0; i < OpponentNum; i++ { + Opponent = append(Opponent, randOpponent(i, names[i])) + } + return Opponent +} func randOpponent(Id int, name string) *Opponent { return &Opponent{ Id: Id,