Jelajahi Sumber

无尽模式

lt 10 bulan lalu
induk
melakukan
147d0ef927

+ 2 - 3
RO_Server_Trunk-branch_0.1.39/roserver/baseserver/model/base_config.go

@@ -3528,10 +3528,9 @@ func convertTowerWjCfg() {
 			key, value := Str2Res(tower.Levels[0])
 			if key == 0 || value == 0 {
 				continue
-
-				convertReward.Min = key
-				convertReward.Max = value
 			}
+			convertReward.Min = key
+			convertReward.Max = value
 			ConvertTowerWjData[tower.Day] = append(ConvertTowerWjData[tower.Day], convertReward)
 		}
 

+ 11 - 1
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_tower.go

@@ -117,6 +117,7 @@ func (this *RoleTower) TowerBossRandom() {
 		this.boss = append(this.boss, k)
 		count++
 	}
+	util.InfoF("tower random tower boss: %v", this.boss)
 }
 
 func (this *RoleTower) OnlineProcess() {
@@ -338,6 +339,15 @@ func (this *RoleTower) OnTowerWjFightBuff(buff1, buff2, buff3 int32) (b1, b2, b3
 		return 0, 0, 0, serverproto.ErrorCode_ERROR_FAIL
 	}
 	this.SetDirty(true)
+	ntf := &serverproto.SCClimbingTowerWjBossNtf{
+		Boos:     this.boss,
+		WjLevel:  this.nowTowerWjLevel,
+		Buff1:    this.buff1,
+		Buff2:    this.buff2,
+		Buff3:    this.buff3,
+		Duration: this.duration,
+	}
+	this.role.ReplayGate(ntf, true)
 	util.InfoF("uuid:%v tower buff buy buff1:%v,buff2:%v,buff3:%v", this.role.GetUUid(), this.buff1, this.buff2, this.buff3)
 	return this.buff1, this.buff2, this.buff3, serverproto.ErrorCode_ERROR_OK
 }
@@ -429,7 +439,7 @@ func (this *RoleTower) OnTowerWjFightEnd(towerLevel, fightTime int32, recordTime
 	this.nowTowerWjPassTime = util.GetTimeSeconds()
 	this.TowerBossRandom() //随机下一关boss
 	this.SetDirty(true)
-
+	util.InfoF("uuid:%v tower wj get level:%v", this.role.GetUUid(), this.nowTowerWjLevel)
 	//this.onTowerLevelChange(this.nowTowerLevel - 1)
 	//更新排行榜
 

+ 115 - 0
RO_Server_Trunk-branch_0.1.39/roserver/game/model/tower_manager.go

@@ -0,0 +1,115 @@
+package model
+
+import (
+	"rocommon/util"
+	"roserver/baseserver/model"
+	"roserver/serverproto"
+	"time"
+)
+
+type TowerManager struct {
+	updateTimer                    util.ServerTimer //更新定时器
+	initStartUp                    bool
+	seasonStartTime, seasonEndTime time.Time
+	refreshTime                    time.Time
+	day                            int32 //周期
+	isRefresh                      bool  //已经有玩家到达1000层可以增加周期
+	initFromDb                     bool
+	initFromDb2                    bool
+}
+
+func newTowerMag() *TowerManager {
+	mag := &TowerManager{
+		day: 1,
+	}
+	mag.updateTimer = util.NewDurationTimer(util.GetCurrentTime(), 5000)
+	return mag
+}
+
+func (this *TowerManager) init(ms uint64) {
+	nowTime := util.GetTimeByUint64(ms)
+	if nowTime.Before(this.seasonEndTime) {
+		return
+	}
+	//msg := &serverproto.SSCrossYuanHangTrialRankUpdateReq{}
+	//SendCrossService(msg)
+	util.ErrorF("tower rank refresh time:%v", nowTime)
+	//this.refreshTime = nowTime
+	this.seasonEndTime = this.seasonEndTime.AddDate(0, 0, 7)
+}
+
+// 成功发送消息返回true
+func (this *TowerManager) initTowerWjInfoFromDB() bool {
+	//util.InfoF("initCompetitionInfoFromDB send to db")
+	ssReqMsg := &serverproto.SSGetServerCompetitionReq{}
+	if SendDb(ssReqMsg) {
+		return true
+	}
+	return false
+}
+
+// 获取当前已经开启的赛季ID(from db)
+func (this *TowerManager) DoUpdateTowerInfoFromDB(ssAckMsg *serverproto.SSGetServerCompetitionAck) {
+	this.initFromDb = true
+	if ssAckMsg.TowerInfo != nil {
+		TowerMag.day = ssAckMsg.TowerInfo.Day
+		TowerMag.isRefresh = ssAckMsg.TowerInfo.IsRefresh
+	}
+}
+func getThisWeekendAt23PM() time.Time {
+	now := time.Now()
+
+	// 计算到本周日的天数差(Sunday=0,Monday=1...)
+	daysUntilSunday := (7 - int(now.Weekday())) % 7
+
+	// 本周日 23:00:00
+	weekendAt23PM := time.Date(
+		now.Year(),
+		now.Month(),
+		now.Day()+daysUntilSunday, // 跳到周日
+		23, 0, 0, 0,               // 23:00:00
+		now.Location(),
+	)
+
+	return weekendAt23PM
+}
+
+func (this *TowerManager) getSeasonTime(seasonId int32) (time.Time, time.Time) {
+	resetTime := int64((model.ConvertArenaSeason.Reset + 1) * HourMs)
+	diffDurationDay := model.ConvertArenaSeason.DiffDurationDay
+	deltaTime := (diffDurationDay + resetTime) * int64(seasonId-1)
+
+	loc := util.GetLoc()
+	startTime := time.Unix(model.ConvertArenaSeason.StartTime.Unix()+deltaTime, 0).In(loc)
+	endTime := time.Unix(model.ConvertArenaSeason.EndTime.Unix()+deltaTime, 0).In(loc)
+	return startTime, endTime
+}
+
+func (this *TowerManager) Update(ms uint64) {
+	if !this.initStartUp {
+		//获取本周星期weekday的时间戳作为排行榜刷新时间
+		this.seasonEndTime = getThisWeekendAt23PM()
+		this.initStartUp = true
+
+	}
+	if !this.initFromDb {
+		if this.initTowerWjInfoFromDB() {
+			this.initFromDb = true
+		}
+		return
+	}
+	if !this.initFromDb2 {
+		this.initFromDb = false
+		return
+	}
+	this.init(ms)
+
+	//if this.initStartUp && this.updateTimer.IsStart() && this.updateTimer.IsExpired(ms) {
+	//	if len(ServerStateCacheList) <= 0 {
+	//		ssStateMsg := &serverproto.SSGetGServerStateReq{
+	//			ServerType: model.SERVICE_NODE_TYPE_GLOBALCROSSMAP,
+	//		}
+	//		SendSocial(ssStateMsg)
+	//	}
+	//}
+}

+ 2 - 2
RO_Server_Trunk-branch_0.1.39/roserver/game/msg/role_msg.go

@@ -2200,7 +2200,7 @@ func init() {
 	//无尽爬塔开始
 	serverproto.Handle_GAME_CSClimbingTowerWjBeginReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
 		msg := ev.Msg().(*serverproto.CSClimbingTowerWjBeginReq)
-		//util.DebugF("receive CSClimbingTowerBeginReq msg:%v", msg)
+		util.InfoF("receive CSClimbingTowerWjBeginReq msg:%v", msg)
 		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
 		if role == nil {
 			return
@@ -2211,7 +2211,7 @@ func init() {
 	//无尽爬塔结束
 	serverproto.Handle_GAME_CSClimbingTowerWjEndReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
 		msg := ev.Msg().(*serverproto.CSClimbingTowerWjEndReq)
-		//util.DebugF("receive CSClimbingTowerEndReq msg:%v", msg)
+		util.InfoF("receive CSClimbingTowerWjEndReq msg:%v", msg)
 		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
 		if role == nil {
 			return

+ 2 - 2
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/config_csv.go

@@ -475,8 +475,8 @@ func ConfigInit(path string) {
 	WorldBossCfgLoad(path)
 	WorldBossChangePlayCfgLoad(path)
 	YuanHangTrialRankCfgLoad(path)
-	//TowerWjBossCfgLoad(path)
-	//TowerWjRewardCfgLoad(path)
+	TowerWjBossCfgLoad(path)
+	TowerWjRewardCfgLoad(path)
 	//TowerWjRankCfgLoad(path)
 }