From 69dc7d638a89274cd857dd58602a68dae76c7bf8 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 31 Mar 2025 15:53:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=9B=E8=B7=91=E6=B4=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Player.go | 6 ++++++ src/server/game/mod/race/race.go | 28 ++++++++++++++++++---------- 2 files changed, 24 insertions(+), 10 deletions(-) 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,