Ver Fonte

无尽模式最终版

lt há 10 meses atrás
pai
commit
3cff3912c9

+ 2 - 2
RO_Server_Trunk-branch_0.1.39/roserver/game/model/game_model.go

@@ -39,7 +39,7 @@ func (this *GameUpdate) Init() {
 	ActivitiesMag = newActivitiesMag()
 	RuneShopMag = NewRuneShopExploreManager()
 	CrossMag = newCrossMag()
-	//TowerMag = newTowerMag()
+	TowerMag = newTowerMag()
 
 	updateList = append(updateList,
 		RoleMag,
@@ -48,7 +48,7 @@ func (this *GameUpdate) Init() {
 		ActivitiesMag,
 		RuneShopMag,
 		CrossMag,
-		//	TowerMag,
+		TowerMag,
 	)
 }
 

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

@@ -1219,7 +1219,7 @@ func (this *Role) DailyReset(notify bool) {
 	oldDailyResetTimeStamp := this.GetRoleBase().roleBase.DailyResetTimeStamp
 	this.roleArena.DailyReset(notify)
 
-	//this.roleTower.DailyReset(notify)
+	this.roleTower.DailyReset(notify)
 
 	this.roleBattle.DailyReset(notify)
 

+ 35 - 32
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_tower.go

@@ -73,15 +73,15 @@ func (this *RoleTower) Load(msg interface{}) bool {
 			this.nowTowerLevel = proRole.RoleTower.NowTowerLevel
 			this.nowTowerPassTime = proRole.RoleTower.NowTowerTime
 			//无尽模式数据
-			//this.nowTowerWjLevel = proRole.RoleTower.NowTowerWjLevel
-			//this.nowTowerWjPassTime = proRole.RoleTower.NowTowerWjTime
-			//this.boss = proRole.RoleTower.Boss
-			//this.rewardLevel = proRole.RoleTower.RewardLevel
-			//this.buff1 = proRole.RoleTower.Buff1
-			//this.buff2 = proRole.RoleTower.Buff2
-			//this.buff3 = proRole.RoleTower.Buff3
-			//this.duration = proRole.RoleTower.Duration
-			//this.refreshTowerWj = proRole.RoleTower.RefreshTowerWj
+			this.nowTowerWjLevel = proRole.RoleTower.NowTowerWjLevel
+			this.nowTowerWjPassTime = proRole.RoleTower.NowTowerWjTime
+			this.boss = proRole.RoleTower.Boss
+			this.rewardLevel = proRole.RoleTower.RewardLevel
+			this.buff1 = proRole.RoleTower.Buff1
+			this.buff2 = proRole.RoleTower.Buff2
+			this.buff3 = proRole.RoleTower.Buff3
+			this.duration = proRole.RoleTower.Duration
+			this.refreshTowerWj = proRole.RoleTower.RefreshTowerWj
 
 			if proRole.RoleTower.RushTower == nil {
 				proRole.RoleTower.RushTower = &serverproto.RushTower{}
@@ -102,13 +102,13 @@ func (this *RoleTower) Load(msg interface{}) bool {
 			this.SetDirty(true)
 		}
 		//无尽模式初始化第一层boss
-		//if this.nowTowerWjLevel == 0 {
-		//	this.nowTowerWjLevel = 1
-		//	this.duration = TowerMag.day
-		//	//this.TowerRefreshRankTime()
-		//	this.TowerBossRandom()
-		//	this.SetDirty(true)
-		//}
+		if this.nowTowerWjLevel == 0 {
+			this.nowTowerWjLevel = 1
+			this.duration = TowerMag.day
+			//this.TowerRefreshRankTime()
+			this.TowerBossRandom()
+			this.SetDirty(true)
+		}
 		this.towerLevelDayRewardTime = proRole.RoleTower.TowerLevelDayRewardTime
 		this.SysRewardTime = proRole.RoleTower.SysRewardTime
 	}
@@ -168,14 +168,14 @@ func (this *RoleTower) Save() {
 	saveMsg.Tower.SysRewardTime = this.SysRewardTime
 	saveMsg.Tower.NowTowerLevel = this.nowTowerLevel
 	saveMsg.Tower.NowTowerTime = this.nowTowerPassTime
-	//saveMsg.Tower.NowTowerWjLevel = this.nowTowerWjLevel
-	//saveMsg.Tower.NowTowerWjTime = this.nowTowerWjPassTime
-	//saveMsg.Tower.Boss = this.boss
-	//saveMsg.Tower.RefreshTowerWj = this.refreshTowerWj
-	//saveMsg.Tower.Duration = this.duration
-	//saveMsg.Tower.Buff1 = this.buff1
-	//saveMsg.Tower.Buff2 = this.buff2
-	//saveMsg.Tower.Buff3 = this.buff3
+	saveMsg.Tower.NowTowerWjLevel = this.nowTowerWjLevel
+	saveMsg.Tower.NowTowerWjTime = this.nowTowerWjPassTime
+	saveMsg.Tower.Boss = this.boss
+	saveMsg.Tower.RefreshTowerWj = this.refreshTowerWj
+	saveMsg.Tower.Duration = this.duration
+	saveMsg.Tower.Buff1 = this.buff1
+	saveMsg.Tower.Buff2 = this.buff2
+	saveMsg.Tower.Buff3 = this.buff3
 	saveMsg.Tower.RushTower = &serverproto.RushTower{
 		RushRound:  this.RushRound,
 		Count:      this.RushFightCount,
@@ -187,15 +187,15 @@ func (this *RoleTower) Save() {
 
 func (this *RoleTower) CopyData(data *serverproto.RoleTower) {
 	data.NowTowerLevel = this.nowTowerLevel
-	//data.NowTowerWjLevel = this.nowTowerWjLevel
-	//data.Boss = this.boss
-	//data.Buff2 = this.buff2
-	//data.Buff3 = this.buff3
-	//data.Buff1 = this.buff1
-	//data.Duration = this.duration
-	//data.RewardLevel = this.rewardLevel
+	data.NowTowerWjLevel = this.nowTowerWjLevel
+	data.Boss = this.boss
+	data.Buff2 = this.buff2
+	data.Buff3 = this.buff3
+	data.Buff1 = this.buff1
+	data.Duration = this.duration
+	data.RewardLevel = this.rewardLevel
 	data.TowerLevelDayRewardTime = this.towerLevelDayRewardTime
-	//data.NowTowerWjTime = this.nowTowerWjPassTime
+	data.NowTowerWjTime = this.nowTowerWjPassTime
 }
 
 func (this *RoleTower) Update(ms uint64) {
@@ -426,6 +426,9 @@ func (this *RoleTower) OnTowerWjFightEnd(towerLevel, fightTime int32, recordTime
 	if towerLevel != this.nowTowerWjLevel {
 		return serverproto.ErrorCode_ERROR_CLIMBING_TOWER_NOT_CUR_TOWER
 	}
+	if this.duration != TowerMag.day {
+		return serverproto.ErrorCode_ERROR_CLIMBING_TOWER_NOT_CUR_TOWER
+	}
 	//towerCfg, ok := serverproto.ClimbingTowerCfgLoader[towerLevel]
 	//if !ok {
 	//	return serverproto.ErrorCode_ERROR_CLIMBING_TOWER_CONFIG_NOT_FOUND

+ 37 - 32
RO_Server_Trunk-branch_0.1.39/roserver/game/model/tower_manager.go

@@ -4,6 +4,7 @@ import (
 	"rocommon/util"
 	"roserver/baseserver/model"
 	"roserver/serverproto"
+	"strconv"
 	"time"
 )
 
@@ -29,11 +30,12 @@ func newTowerMag() *TowerManager {
 func (this *TowerManager) init(ms uint64) {
 	nowTime := util.GetTimeByUint64(ms)
 	if nowTime.Before(this.seasonEndTime) {
+		//util.ErrorF("tower wj end time4:%v", this.seasonEndTime)
 		return
 	}
 	msg := &serverproto.SSTowerWjRankUpdateReq{}
 	SendRankService(msg)
-	util.ErrorF("tower rank refresh time:%v now day:%v isFresh:%v", nowTime, this.day, this.isRefresh)
+	util.ErrorF("tower wj refresh:%v now day:%v isFresh:%v", nowTime, this.day, this.isRefresh)
 	//this.refreshTime = nowTime
 	this.seasonEndTime = this.seasonEndTime.AddDate(0, 0, 7)
 }
@@ -58,7 +60,7 @@ func (this *TowerManager) DoUpdateTowerInfoFromDB(ssAckMsg *serverproto.SSGetSer
 }
 func getThisWeekendAt23PM() time.Time {
 	now := time.Now()
-
+	//
 	// 计算到本周日的天数差(Sunday=0,Monday=1...)
 	daysUntilSunday := (7 - int(now.Weekday())) % 7
 
@@ -72,6 +74,7 @@ func getThisWeekendAt23PM() time.Time {
 	)
 
 	return weekendAt23PM
+	//return time.Date(now.Year(), now.Month(), now.Day(), 11, 30, 0, 0, now.Location())
 }
 
 func (this *TowerManager) getSeasonTime(seasonId int32) (time.Time, time.Time) {
@@ -90,18 +93,20 @@ func (this *TowerManager) Update(ms uint64) {
 		//获取本周星期weekday的时间戳作为排行榜刷新时间
 		this.seasonEndTime = getThisWeekendAt23PM()
 		this.initStartUp = true
-
+		util.ErrorF("tower wj end time:%v", this.seasonEndTime)
 	}
 	if !this.initFromDb {
 		if this.initTowerWjInfoFromDB() {
 			this.initFromDb = true
 		}
+		util.ErrorF("tower wj end time2:%v", this.seasonEndTime)
 		return
 	}
-	if !this.initFromDb2 {
-		this.initFromDb = false
-		return
-	}
+	//if !this.initFromDb2 {
+	//	this.initFromDb = false
+	//	util.ErrorF("tower wj end time3:%v", this.seasonEndTime)
+	//	return
+	//}
 	this.init(ms)
 
 	//if this.initStartUp && this.updateTimer.IsStart() && this.updateTimer.IsExpired(ms) {
@@ -120,31 +125,31 @@ func (this *TowerManager) GetRankReward(role uint64, selfRank int32) {
 	}
 
 	//获取排名奖励,发送邮件
-	//for _, data := range model.ConvertTowerWjRankInfo[this.day] {
-	//	if selfRank >= data.Left && selfRank <= data.Right {
-	//		itemList := make([]*serverproto.KeyValueType, 0)
-	//		for k, v := range data.RewardList {
-	//			itemList = append(itemList, &serverproto.KeyValueType{
-	//				Key:   k,
-	//				Value: v,
-	//			})
-	//		}
-	//		//发送邮件
-	//		AddMailOnlineAndOffline([]uint64{role}, model.GlobalMailyuanhangRankAward, int32(serverproto.MailType_MailType_GM),
-	//			itemList, []int32{int32(util.GetTimeSeconds())}, "无尽爬塔排行榜奖励", "恭喜您在无尽爬塔中獲得了第"+strconv.FormatInt(int64(selfRank), 10)+"名")
-	//		//判断是否有玩家达到1000层,到了周期难度+1
-	//		if this.isRefresh {
-	//			this.day++
-	//			this.isRefresh = false
-	//			ssNtfMsg := &serverproto.SSServerCompetitionInfoSaveNtf{
-	//				TowerInfo: &serverproto.TowerRound{Day: this.day, IsRefresh: this.isRefresh},
-	//			}
-	//			SendDb(ssNtfMsg)
-	//		}
-	//		util.InfoF("send rank award uid:%v award:%v", role, itemList)
-	//		break
-	//	}
-	//}
+	for _, data := range model.ConvertTowerWjRankInfo[this.day] {
+		if selfRank >= data.Left && selfRank <= data.Right {
+			itemList := make([]*serverproto.KeyValueType, 0)
+			for k, v := range data.RewardList {
+				itemList = append(itemList, &serverproto.KeyValueType{
+					Key:   k,
+					Value: v,
+				})
+			}
+			//发送邮件
+			AddMailOnlineAndOffline([]uint64{role}, model.GlobalMailyuanhangRankAward, int32(serverproto.MailType_MailType_GM),
+				itemList, []int32{int32(util.GetTimeSeconds())}, "无尽爬塔排行榜奖励", "恭喜您在无尽爬塔中獲得了第"+strconv.FormatInt(int64(selfRank), 10)+"名")
+			//判断是否有玩家达到1000层,到了周期难度+1
+			if this.isRefresh {
+				this.day++
+				this.isRefresh = false
+				ssNtfMsg := &serverproto.SSServerCompetitionInfoSaveNtf{
+					TowerInfo: &serverproto.TowerRound{Day: this.day, IsRefresh: this.isRefresh},
+				}
+				SendDb(ssNtfMsg)
+			}
+			util.InfoF("send rank award uid:%v award:%v", role, itemList)
+			break
+		}
+	}
 	//
 	//// 赛季第一名触发称号事件
 	//var value int32 = 1

+ 1 - 1
RO_Server_Trunk-branch_0.1.39/roserver/game/msg/default_msg.go

@@ -32,7 +32,7 @@ func init() {
 	//获取当前已经开启的赛季ID(from db)
 	serverproto.Handle_GAME_SSGetServerCompetitionAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
 		msg := ev.Msg().(*serverproto.SSGetServerCompetitionAck)
-		util.DebugF("receive SSGetServerCompetitionAck msg=%v", msg)
+		util.ErrorF("receive SSGetServerCompetitionAck msg=%v", msg)
 
 		model2.CompetitionMag.DoUpdateCompetitionInfoFromDB(msg)
 		if msg.TowerInfo != nil {

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

@@ -475,9 +475,9 @@ func ConfigInit(path string) {
 	WorldBossCfgLoad(path)
 	WorldBossChangePlayCfgLoad(path)
 	YuanHangTrialRankCfgLoad(path)
-	//TowerWjBossCfgLoad(path)
-	//TowerWjRewardCfgLoad(path)
-	//TowerWjRankCfgLoad(path)
+	TowerWjBossCfgLoad(path)
+	TowerWjRewardCfgLoad(path)
+	TowerWjRankCfgLoad(path)
 }
 
 var ActiveCodeCfgLoader map[int32]*ActiveCodeCfg