1158 lines
41 KiB
Go
1158 lines
41 KiB
Go
package handler
|
|
|
|
import (
|
|
"ecs/proto"
|
|
"ecs/proto/pb"
|
|
"ecs/servers/game/data"
|
|
"ecs/servers/game/logic"
|
|
"github.com/oylshe1314/framework/net"
|
|
)
|
|
|
|
func (this *PlayerHandler) checkLevelConsume(sceneTable *data.Scene, player *logic.Player, times uint32) proto.TipError {
|
|
var consumeItems = map[uint32]uint32{}
|
|
for i := range sceneTable.ConsumeItems {
|
|
consumeItems[uint32(sceneTable.ConsumeItems[i])] += uint32(sceneTable.ConsumeNums[i]) * times
|
|
}
|
|
for i := range sceneTable.SuConsumeItems {
|
|
consumeItems[uint32(sceneTable.SuConsumeItems[i])] += uint32(sceneTable.SuConsumeNums[i]) * times
|
|
}
|
|
for itemId, itemNum := range consumeItems {
|
|
if ok, tip := player.CheckItem(itemId, itemNum); !ok {
|
|
return tip
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (this *PlayerHandler) reduceLevelConsume(sceneTable *data.Scene, player *logic.Player, times uint32) {
|
|
this.reduceLevelEnterConsume(sceneTable, player, times)
|
|
this.reduceLevelSuccessConsume(sceneTable, player, times)
|
|
}
|
|
|
|
func (this *PlayerHandler) reduceLevelEnterConsume(sceneTable *data.Scene, player *logic.Player, times uint32) {
|
|
for i := range sceneTable.ConsumeItems {
|
|
player.ReduceItem(uint32(sceneTable.ConsumeItems[i]), uint32(sceneTable.ConsumeNums[i])*times, logic.LogTypeItemConsumeByCopy)
|
|
}
|
|
}
|
|
|
|
func (this *PlayerHandler) reduceLevelSuccessConsume(sceneTable *data.Scene, player *logic.Player, times uint32) {
|
|
for i := range sceneTable.SuConsumeItems {
|
|
player.ReduceItem(uint32(sceneTable.SuConsumeItems[i]), uint32(sceneTable.SuConsumeNums[i])*times, logic.LogTypeItemConsumeByCopy)
|
|
}
|
|
}
|
|
|
|
func (this *PlayerHandler) enterCopyMain(player *logic.Player, levelId uint32) {
|
|
var copyMainTable = this.tables.CopyMain.Find1(int(levelId))
|
|
if copyMainTable == nil {
|
|
this.Logger().Error("Parameter or data error, table 'CopyMain' was not found, levelId: ", levelId)
|
|
_ = player.TipNotice(proto.TipDataTablesError)
|
|
return
|
|
}
|
|
|
|
for i, unlockType := range copyMainTable.UnlockType {
|
|
switch unlockType {
|
|
case 1:
|
|
if player.RoleLevel < uint32(copyMainTable.UnlockArgs[i]) {
|
|
_ = player.TipNotice(proto.TipCopyCanNotEnter)
|
|
return
|
|
}
|
|
case 2:
|
|
if player.GetCopyPassed(pb.CopyType(copyMainTable.CopyType), uint32(copyMainTable.UnlockArgs[i])) == 0 {
|
|
_ = player.TipNotice(proto.TipCopyCanNotEnter)
|
|
return
|
|
}
|
|
case 3:
|
|
if player.GetCounterTotal(pb.CounterType_TaskCompleted, uint64(copyMainTable.UnlockArgs[i])) == 0 {
|
|
_ = player.TipNotice(proto.TipCopyCanNotEnter)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
var sceneTable = this.tables.Scene.Find(copyMainTable.SceneId)
|
|
if sceneTable == nil {
|
|
this.Logger().Error("Data error, table 'Scene' was not found, sceneId: ", copyMainTable.SceneId)
|
|
_ = player.TipNotice(proto.TipDataTablesError)
|
|
return
|
|
}
|
|
|
|
var err = this.checkLevelConsume(sceneTable, player, 1)
|
|
if err != nil {
|
|
_ = player.TipNotice(err)
|
|
return
|
|
}
|
|
|
|
this.reduceLevelEnterConsume(sceneTable, player, 1)
|
|
|
|
player.EnterBattle(nil, sceneTable)
|
|
}
|
|
|
|
//func (this *PlayerHandler) enterCopyMaterial(player *logic.Player, indexId uint32) {
|
|
// var copyMaterialTable = this.tables.CopyMaterial.Get(int(indexId))
|
|
// if copyMaterialTable == nil {
|
|
// this.Logger().Error("Parameter or data error, Table 'CopyChapter' was not found, indexId: ", indexId)
|
|
// _ = player.TipNotice(proto.TipCopyNotFound)
|
|
// return
|
|
// }
|
|
//
|
|
// var counter = player.GetCounterDaily(proto.CounterTypeCopyMaterial, uint32(copyMaterialTable.MaterialType))
|
|
// if counter >= uint32(copyMaterialTable.Time) {
|
|
// this.Logger().Errorf("Daily times over, CounterType: %d, Id: %d, counter: %d, times: %d", proto.CounterTypeCopyMaterial, copyMaterialTable.MaterialType, counter, copyMaterialTable.Time)
|
|
// _ = player.TipNotice(proto.TipTodayTimesOver)
|
|
// return
|
|
// }
|
|
//
|
|
// var sceneTable = this.tables.Scene.Get(copyMaterialTable.SceneId)
|
|
// if sceneTable == nil {
|
|
// this.Logger().Error("Data error, Table 'Scene' was not found, sceneId: ", copyMaterialTable.SceneId)
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// var err = this.checkLevelConsume(sceneTable, player, 1)
|
|
// if err != nil {
|
|
// _ = player.TipNotice(err)
|
|
// return
|
|
// }
|
|
//
|
|
// this.reduceLevelEnterConsume(sceneTable, player, 1)
|
|
//
|
|
// player.enterScene(uint32(sceneTable.Id), true)
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) enterCopySpeed(player *logic.Player, indexId uint32) {
|
|
// var copySpeedTable = this.tables.CopySpeed.Get(int(indexId))
|
|
// if copySpeedTable == nil {
|
|
// this.Logger().Error("Parameter or data error, Table 'CopyChapter' was not found, indexId: ", indexId)
|
|
// _ = player.TipNotice(proto.TipCopyNotFound)
|
|
// return
|
|
// }
|
|
//
|
|
// var counter = player.GetCounterDaily(proto.CounterTypeCopySpeed, uint32(copySpeedTable.CopyType))
|
|
// if counter >= uint32(copySpeedTable.LimitTimes) {
|
|
// this.Logger().Errorf("Daily times over, CounterType: %d, Id: %d, counter: %d, times: %d", proto.CounterTypeCopySpeed, copySpeedTable.CopyType, counter, copySpeedTable.LimitTimes)
|
|
// _ = player.TipNotice(proto.TipTodayTimesOver)
|
|
// return
|
|
// }
|
|
//
|
|
// var season = this.arenaManager.CopySpeedSeason()
|
|
// if season == nil {
|
|
// this.Logger().Error("Copy not in time, season == nil")
|
|
// _ = player.TipNotice(proto.TipCopyNotInTime)
|
|
// return
|
|
// }
|
|
//
|
|
// var sceneTable = this.tables.Scene.Get(copySpeedTable.SceneId)
|
|
// if sceneTable == nil {
|
|
// this.Logger().Error("Data error, Table 'Scene' was not found, sceneId: ", copySpeedTable.SceneId)
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// var err = this.checkLevelConsume(sceneTable, player, 1)
|
|
// if err != nil {
|
|
// _ = player.TipNotice(err)
|
|
// return
|
|
// }
|
|
//
|
|
// this.reduceLevelEnterConsume(sceneTable, player, 1)
|
|
//
|
|
// player.AddCopySpeed(season, copySpeedTable)
|
|
//
|
|
// player.enterScene(uint32(sceneTable.Id), true)
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) enterCopyArena(player *logic.Player, indexId uint32) {
|
|
// var copyArenaTable = this.tables.CopyArena.Get(1)
|
|
// if copyArenaTable == nil {
|
|
// this.Logger().Error("Parameter or data error, Table 'CopyChapter' was not found, indexId: ", indexId)
|
|
// _ = player.TipNotice(proto.TipCopyNotFound)
|
|
// return
|
|
// }
|
|
//
|
|
// var season = this.arenaManager.CopyArenaSeason()
|
|
// if season == nil {
|
|
// this.Logger().Error("Copy not in time, season == nil")
|
|
// _ = player.TipNotice(proto.TipCopyNotInTime)
|
|
// return
|
|
// }
|
|
//
|
|
// var sceneTable = this.tables.Scene.Get(copyArenaTable.ArenaSceneId)
|
|
// if sceneTable == nil {
|
|
// this.Logger().Error("Data error, Table 'Scene' was not found, sceneId: ", copyArenaTable.ArenaSceneId)
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// if player.GetCounterDaily(proto.CounterTypeCopyArena, uint32(copyArenaTable.Id)) >= uint32(copyArenaTable.MaxChallengeNum) {
|
|
// var err = this.checkLevelConsume(sceneTable, player, 1)
|
|
// if err != nil {
|
|
// _ = player.TipNotice(err)
|
|
// return
|
|
// }
|
|
//
|
|
// this.reduceLevelEnterConsume(sceneTable, player, 1)
|
|
// }
|
|
//
|
|
// player.enterScene(uint32(sceneTable.Id), true)
|
|
//}
|
|
|
|
func (this *PlayerHandler) LevelEnter(player *logic.Player, msg *net.Message) {
|
|
var req = new(pb.LevelEnterReq)
|
|
var err = msg.Read(req)
|
|
if err != nil {
|
|
this.Logger().Error("Read message failed, ", err)
|
|
_ = player.TipNotice(proto.TipMessageError)
|
|
return
|
|
}
|
|
|
|
if req.LevelId == 0 {
|
|
this.Logger().Error("Parameter error, req.LevelId == 0")
|
|
_ = player.TipNotice(proto.TipParameterError)
|
|
return
|
|
}
|
|
|
|
switch pb.CopyType(req.CopyType) {
|
|
case pb.CopyType_CopyMain:
|
|
this.enterCopyMain(player, req.LevelId)
|
|
//case pb.CopyTypeMaterial:
|
|
// this.enterCopyMaterial(player, req.IndexId)
|
|
//case pb.CopyTypeReserve:
|
|
// //TODO 暂时保留
|
|
// this.Logger().Error("Parameter error, req.CopyType: ", req.CopyType)
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
//case pb.CopyTypeSpeed:
|
|
// this.enterCopySpeed(player, req.IndexId)
|
|
//case pb.CopyTypeArena: //进入竞技场在选择对手的消息
|
|
// // return this.enterCopyArena(player, req.IndexId)
|
|
// this.Logger().Error("Parameter error, req.CopyType: ", req.CopyType)
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
default:
|
|
this.Logger().Error("Parameter error, req.CopyType: ", req.CopyType)
|
|
_ = player.TipNotice(proto.TipParameterError)
|
|
}
|
|
}
|
|
|
|
func (this *PlayerHandler) LevelSweep(player *logic.Player, msg *net.Message) {
|
|
|
|
}
|
|
|
|
//func (this *PlayerHandler) CopySpeedGetReward(player *logic.Player, msg *net.Message) {
|
|
// var req = new(proto.MsgCopySpeedGetRewardReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// if req.Id == 0 {
|
|
// this.Logger().Error("Parameter error, req.Id == 0")
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// var copySpeedRewardTable = this.tables.CopySpeedReward.Get(int(req.Id))
|
|
// if copySpeedRewardTable == nil {
|
|
// this.Logger().Error("Data error, Table 'CopySpeedReward' was not found, id: ", req.Id)
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// var copySpeed = player.CopySpeed[uint32(copySpeedRewardTable.CopyId)]
|
|
// if copySpeed == nil {
|
|
// this.Logger().Error("Reward unable, copySpeed == nil")
|
|
// _ = player.TipNotice(proto.TipRewardUnable)
|
|
// return
|
|
// }
|
|
//
|
|
// if proto.RewardStatus(copySpeed.RewardStatus[req.Id]) == proto.RewardStatusUnable {
|
|
// this.Logger().Error("Reward unable, req.Id: ", req.Id)
|
|
// _ = player.TipNotice(proto.TipRewardUnable)
|
|
// return
|
|
// }
|
|
//
|
|
// if proto.RewardStatus(copySpeed.RewardStatus[req.Id]) == proto.RewardStatusHasGot {
|
|
// this.Logger().Error("Reward has got, req.Id: ", req.Id)
|
|
// _ = player.TipNotice(proto.TipRewardHasGot)
|
|
// return
|
|
// }
|
|
//
|
|
// var rewardList []*proto.ItemPair
|
|
// for i := range copySpeedRewardTable.ItemList {
|
|
// _ = player.AddItem(uint32(copySpeedRewardTable.ItemList[i]), uint32(copySpeedRewardTable.NumList[i]), logic.LogTypeItemObtainByCopySpeedReward)
|
|
// rewardList = append(rewardList, &proto.ItemPair{ItemId: uint32(copySpeedRewardTable.ItemList[i]), ItemNum: uint32(copySpeedRewardTable.NumList[i])})
|
|
// }
|
|
//
|
|
// copySpeed.RewardStatus[req.Id] = uint32(proto.RewardStatusHasGot)
|
|
// player.SaveField(fmt.Sprintf("arena_copy.%d.reward_status.%d", copySpeed.Id, req.Id), uint32(proto.RewardStatusHasGot))
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdCopySpeedGetReward, &proto.MsgCopySpeedGetRewardAck{MsgRewardListAck: &proto.MsgRewardListAck{RewardList: rewardList}})
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdCopySpeedRewardStatusChange, &proto.MsgCopySpeedRewardStatusChangeAck{StatusList: copySpeed.BuildCopySpeedRewardStatusList()})
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) CopySpeedRankList(player *logic.Player, msg *net.Message) {
|
|
// var req = new(proto.MsgCopySpeedRankListReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// if req.Id == 0 {
|
|
// this.Logger().Error("Parameter error, req.Id == 0")
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// var copySpeedTable = this.tables.CopySpeed.Get(int(req.Id))
|
|
// if copySpeedTable == nil {
|
|
// this.Logger().Error("Parameter or data error, Table 'CopySpeed' was not found, req.Id: ", req.Id)
|
|
// _ = player.TipNotice(proto.TipCopyNotFound)
|
|
// return
|
|
// }
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdCopySpeedRankList, player.BuildMsgCopySpeedRankListAck(uint32(copySpeedTable.Id)))
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) ArenaPlayerDetail(player *logic.Player, msg *net.Message) {
|
|
// var req = new(proto.MsgArenaPlayerDetailReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// if req.CopyId == 0 || req.PlayerId == 0 {
|
|
// this.Logger().Error("Parameter error, req.CopyId == 0 || req.PlayerId == 0")
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// var season logic.ArenaSeason
|
|
// switch proto.CopyType(req.CopyType) {
|
|
// case proto.CopyTypeMainline:
|
|
// season = this.arenaManager.CopyMainRanking()
|
|
// case proto.CopyTypeSpeed:
|
|
// season = this.arenaManager.CopySpeedSeason()
|
|
// case proto.CopyTypeArena:
|
|
// season = this.arenaManager.CopyArenaSeason()
|
|
// default:
|
|
// this.Logger().Error("Parameter error, req.CopyType: ", req.CopyType)
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// if season == nil {
|
|
// this.Logger().Error("Copy not in time, season == nil")
|
|
// _ = player.TipNotice(proto.TipCopyNotInTime)
|
|
// return
|
|
// }
|
|
//
|
|
// var rankingPlayer = season.GetPlayer(req.PlayerId)
|
|
// if rankingPlayer == nil {
|
|
// this.Logger().Error("Arena player not found: req.PlayerId: ", req.PlayerId)
|
|
// _ = player.TipNotice(proto.TipArenaPlayerNotFound)
|
|
// return
|
|
// }
|
|
//
|
|
// var ack *proto.MsgArenaPlayerDetailAck
|
|
// if req.PlayerId == player.PlayerId {
|
|
// var playerSelf = &proto.ArenaPlayer{
|
|
// PlayerId: player.PlayerId,
|
|
// IsRobot: false,
|
|
// Name: player.Role.Name,
|
|
// Avatar: player.Role.Avatar,
|
|
// Capacity: player.RigAttrsCapacity(),
|
|
// RigEquips: make([]uint32, proto.EquipNum),
|
|
// RigPendants: make([]uint32, proto.PendantNum),
|
|
// RigAttrs: player.Rig.Attrs[:],
|
|
// }
|
|
//
|
|
// var copoment *logic.PlayerRigComponent
|
|
// copoment = player.RigComponent[player.Rig.Head]
|
|
// if copoment != nil {
|
|
// playerSelf.RigHead = copoment.Id
|
|
// playerSelf.RigHeadStar = copoment.StarId
|
|
// }
|
|
//
|
|
// copoment = player.RigComponent[player.Rig.Body]
|
|
// if copoment != nil {
|
|
// playerSelf.RigBody = copoment.Id
|
|
// playerSelf.RigBodyStar = copoment.StarId
|
|
// }
|
|
//
|
|
// copoment = player.RigComponent[player.Rig.Tail]
|
|
// if copoment != nil {
|
|
// playerSelf.RigTail = copoment.Id
|
|
// playerSelf.RigTailStar = copoment.StarId
|
|
// }
|
|
//
|
|
// for i := range player.Rig.Equips {
|
|
// var equip = player.RigEquip[player.Rig.Equips[i]]
|
|
// if equip != nil {
|
|
// playerSelf.RigEquips[i] = equip.Id
|
|
// }
|
|
// }
|
|
//
|
|
// for i := range player.Rig.Pendants {
|
|
// var pendant = player.RigPendant[player.Rig.Pendants[i]]
|
|
// if pendant != nil {
|
|
// playerSelf.RigPendants[i] = pendant.Id
|
|
// }
|
|
// }
|
|
//
|
|
// ack = &proto.MsgArenaPlayerDetailAck{
|
|
// ArenaPlayer: playerSelf,
|
|
// }
|
|
// } else {
|
|
// ack = &proto.MsgArenaPlayerDetailAck{
|
|
// ArenaPlayer: &proto.ArenaPlayer{
|
|
// PlayerId: rankingPlayer.PlayerId,
|
|
// IsRobot: rankingPlayer.PlayerId < 1000000000,
|
|
// Name: rankingPlayer.Name,
|
|
// Avatar: rankingPlayer.Avatar,
|
|
// Capacity: rankingPlayer.Capacity,
|
|
// RigHead: rankingPlayer.RigHead,
|
|
// RigHeadStar: rankingPlayer.RigHeadStar,
|
|
// RigBody: rankingPlayer.RigBody,
|
|
// RigBodyStar: rankingPlayer.RigBodyStar,
|
|
// RigTail: rankingPlayer.RigTail,
|
|
// RigTailStar: rankingPlayer.RigTailStar,
|
|
// RigEquips: rankingPlayer.RigEquips[:],
|
|
// RigPendants: rankingPlayer.RigPendants[:],
|
|
// RigAttrs: rankingPlayer.RigAttrs[:],
|
|
// },
|
|
// }
|
|
// }
|
|
//
|
|
// var score = rankingPlayer.Scores[req.CopyId]
|
|
// if score != nil {
|
|
// ack.Duration = score.Duration
|
|
// ack.MaxScore = score.MaxScore
|
|
// ack.MaxDepth = score.MaxDepth
|
|
// ack.RankIndex = score.RankIndex
|
|
// }
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdArenaPlayerDetail, ack)
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) MaterialCopySweep(player *logic.Player, msg *net.Message) {
|
|
// var req = new(proto.MsgMaterialCopySweepReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// if req.IndexId == 0 || req.Times == 0 {
|
|
// this.Logger().Error("Parameter error, req.IndexId == 0 || req.Times == 0")
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// switch proto.CopyType(req.CopyType) {
|
|
// case proto.CopyTypeMainline:
|
|
// this.Logger().Error("Copy cannot sweep, req.CopyType: ", req.CopyType)
|
|
// _ = player.TipNotice(proto.TipCopyCannotSweep)
|
|
// return
|
|
// case proto.CopyTypeMaterial:
|
|
// var allowSweep = player.CheckMonthlyCardPrivilege(proto.MonthlyCardPrivilegeTypeMaterialCopyAllowSweep) > 0
|
|
// if !allowSweep {
|
|
// _ = player.TipNotice(proto.TipCopyCannotSweep)
|
|
// return
|
|
// }
|
|
//
|
|
// var copyMaterialTable = this.tables.CopyMaterial.Get(int(req.IndexId))
|
|
// if copyMaterialTable == nil {
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// var counter = player.GetCounterDaily(proto.CounterTypeCopyMaterial, uint32(copyMaterialTable.MaterialType))
|
|
// if counter >= uint32(copyMaterialTable.Time) {
|
|
// this.Logger().Errorf("Daily times over, CounterType: %d, Id: %d, counter: %d, times: %d", proto.CounterTypeCopyMaterial, copyMaterialTable.MaterialType, counter, copyMaterialTable.Time)
|
|
// _ = player.TipNotice(proto.TipTodayTimesOver)
|
|
// return
|
|
// }
|
|
//
|
|
// err = this.sweepCopy(player, uint32(copyMaterialTable.SceneId), req.Times)
|
|
// if err != nil {
|
|
// _ = player.TipNotice(err)
|
|
// return
|
|
// }
|
|
// case proto.CopyTypeReserve:
|
|
// this.Logger().Error("Copy cannot sweep, req.CopyType: ", req.CopyType)
|
|
// _ = player.TipNotice(proto.TipCopyCannotSweep)
|
|
// return
|
|
// case proto.CopyTypeSpeed:
|
|
// this.Logger().Error("Copy cannot sweep, req.CopyType: ", req.CopyType)
|
|
// _ = player.TipNotice(proto.TipCopyCannotSweep)
|
|
// return
|
|
// case proto.CopyTypeArena:
|
|
// this.Logger().Error("Copy cannot sweep, req.CopyType: ", req.CopyType)
|
|
// _ = player.TipNotice(proto.TipCopyCannotSweep)
|
|
// return
|
|
// default:
|
|
// this.Logger().Error("Parameter error, req.CopyType: ", req.CopyType)
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) sweepCopy(player *logic.Player, sceneId, times uint32) error {
|
|
// var sceneTable = this.tables.Scene.Get(int(sceneId))
|
|
// if sceneTable == nil {
|
|
// this.Logger().Error("Data error, Table 'Scene' was not found, sceneId: ", sceneId)
|
|
// return proto.TipDataTablesError
|
|
// }
|
|
//
|
|
// var err = this.checkLevelConsume(sceneTable, player, times)
|
|
// if err != nil {
|
|
// this.Logger().Error("Check level consume failed, ", err)
|
|
// return err
|
|
// }
|
|
//
|
|
// _, err = player.PassedCopy(sceneTable, 0, 0, 0)
|
|
// if err != nil {
|
|
// this.Logger().Error("Passed copy failed, ", err)
|
|
// return err
|
|
// }
|
|
//
|
|
// this.reduceLevelConsume(sceneTable, player, times)
|
|
//
|
|
// var rewardMap = map[uint32]uint32{}
|
|
// var sceneMapTables = this.tables.SceneMapExtend.Get(sceneTable.Id)
|
|
// for _, sceneMapTable := range sceneMapTables {
|
|
// if sceneMapTable.Seat1Monster <= 0 {
|
|
// continue
|
|
// }
|
|
//
|
|
// var monsterTable = this.tables.Monster.Get(sceneMapTable.Seat1Monster)
|
|
// if monsterTable == nil {
|
|
// continue
|
|
// }
|
|
//
|
|
// for _, dropId := range monsterTable.DeathDropItems {
|
|
// var dropResult = this.tables.DropExtend.Drop(dropId, int(times))
|
|
// for _, itemPair := range dropResult {
|
|
// rewardMap[itemPair[0]] += itemPair[1]
|
|
// }
|
|
// }
|
|
//
|
|
// player.CheckTask(proto.TaskSection1KillSpecificMonster, monsterTable.Id, int(1*times))
|
|
// player.CheckTask(proto.TaskSection1KillClassifyMonsters, monsterTable.Type, int(1*times))
|
|
// }
|
|
//
|
|
// var dropResult = this.tables.DropExtend.Drop(sceneTable.RewardId, int(times))
|
|
// for _, itemPair := range dropResult {
|
|
// rewardMap[itemPair[0]] += itemPair[1]
|
|
// }
|
|
//
|
|
// var outputMultiple = int64(1)
|
|
// if proto.CopyType(sceneTable.CopyType) == proto.CopyTypeMaterial {
|
|
// outputMultiple = player.CheckMonthlyCardPrivilege(proto.MonthlyCardPrivilegeTypeCoinCopyOutputMultiple)
|
|
// if outputMultiple < 1 {
|
|
// outputMultiple = 1
|
|
// }
|
|
// }
|
|
//
|
|
// var rewardList []*proto.ItemPair
|
|
// for itemId, itemNum := range rewardMap {
|
|
// var itemTable = this.tables.Item.Get(int(itemId))
|
|
// if proto.ItemType(itemTable.ItemType) == proto.ItemTypeMoney && proto.MoneyType(itemTable.Subtype) == proto.MoneyTypeCoin {
|
|
// itemNum += uint32(float64(itemNum) * (player.RigAttr(proto.AttrTypeExtraCoinRate) * proto.AttrRateIn))
|
|
// itemNum *= uint32(outputMultiple)
|
|
// }
|
|
//
|
|
// _ = player.AddItem(itemId, itemNum, logic.LogTypeItemObtainByCopy)
|
|
// rewardList = append(rewardList, &proto.ItemPair{ItemId: itemId, ItemNum: itemNum})
|
|
// }
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdMaterialCopySweep, &proto.MsgMaterialCopySweepAck{
|
|
// MsgRewardListAck: &proto.MsgRewardListAck{RewardList: rewardList},
|
|
// })
|
|
// return nil
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) PlanetMine(player *logic.Player, msg *net.Message) {
|
|
// var req = new(proto.MsgPlanetMineReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// if req.PlanetId == 0 {
|
|
// this.Logger().Error("Parameter error, req.PlanetId == 0")
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// var planetTable = this.tables.Planet.Get(int(req.PlanetId))
|
|
// if planetTable == nil {
|
|
// this.Logger().Error("Parameter or data error, Table 'Planet' was not found, req.PlanetId: ", req.PlanetId)
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// var chapterTables = this.tables.CopyChapterExtend.List(planetTable.Id)
|
|
// for _, chapterTable := range chapterTables {
|
|
// if player.GetCopyPassedNum(uint32(chapterTable.SceneId)) == 0 {
|
|
// this.Logger().Error("Planet incomplete, sceneId: ", chapterTable.SceneId)
|
|
// _ = player.TipNotice(proto.TipPlanetIncomplete)
|
|
// return
|
|
// }
|
|
// }
|
|
//
|
|
// err = player.CheckItem(uint32(planetTable.SweepCostId), uint32(planetTable.SweepCostNum))
|
|
// if err != nil {
|
|
// this.Logger().Errorf("Check item consume failed, itemId: %d, itemNum: %d, error: %v", planetTable.SweepCostId, planetTable.SweepCostNum, err)
|
|
// _ = player.TipNotice(err)
|
|
// return
|
|
// }
|
|
//
|
|
// player.ReduceItem(uint32(planetTable.SweepCostId), uint32(planetTable.SweepCostNum), logic.LogTypeItemConsumeByPlanetMime)
|
|
//
|
|
// var rewardList []*proto.ItemPair
|
|
// var dropResult = this.tables.DropExtend.Drop(planetTable.DropId, 1)
|
|
// for _, itemPair := range dropResult {
|
|
// _ = player.AddItem(itemPair[0], itemPair[1], logic.LogTypeItemObtainByPlanetMime)
|
|
// rewardList = append(rewardList, &proto.ItemPair{ItemId: itemPair[0], ItemNum: itemPair[1]})
|
|
// }
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdPlanetMine, &proto.MsgPlanetMineAck{MsgRewardListAck: &proto.MsgRewardListAck{RewardList: rewardList}, PlanetId: req.PlanetId})
|
|
//
|
|
// player.CheckTask(proto.TaskSection1PlanetMineTimes, 0, 1)
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) PlanetCivilizationChoose(player *logic.Player, msg *net.Message) {
|
|
// if !player.CheckRequestTime(logic.RequestTimeTypeChooseCivilization) {
|
|
// this.Logger().Error("Repeated choose civilization request")
|
|
// _ = player.TipNotice(proto.TipRepeatedRequest)
|
|
// return
|
|
// }
|
|
//
|
|
// var req = new(proto.MsgPlanetCivilizationChooseReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// if req.PlanetId == 0 {
|
|
// this.Logger().Error("Parameter error, req.PlanetId == 0")
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// var planetTable = this.tables.Planet.Get(int(req.PlanetId))
|
|
// if planetTable == nil {
|
|
// this.Logger().Error("Parameter or data error, Table 'Planet' was not found, req.PlanetId: ", req.PlanetId)
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// var chapterTables = this.tables.CopyChapterExtend.List(planetTable.Id)
|
|
// for _, chapterTable := range chapterTables {
|
|
// if player.GetCopyPassedNum(uint32(chapterTable.SceneId)) == 0 {
|
|
// this.Logger().Error("Planet incomplete, sceneId: ", chapterTable.SceneId)
|
|
// _ = player.TipNotice(proto.TipPlanetIncomplete)
|
|
// return
|
|
// }
|
|
// }
|
|
//
|
|
// for i := range planetTable.CivilizationCostId {
|
|
// err = player.CheckItem(uint32(planetTable.CivilizationCostId[i]), uint32(planetTable.CivilizationCostNum[i]))
|
|
// if err != nil {
|
|
// this.Logger().Errorf("Check item consume failed, itemId: %d, itemNum: %d, error: %v", planetTable.CivilizationCostId[i], planetTable.CivilizationCostNum[i], err)
|
|
// _ = player.TipNotice(err)
|
|
// return
|
|
// }
|
|
// }
|
|
//
|
|
// var builtIds = map[uint32]bool{}
|
|
// var planet = player.Planet[req.PlanetId]
|
|
// if planet != nil {
|
|
// for _, civilization := range planet.Civilizations {
|
|
// builtIds[civilization.CivilizationId] = true
|
|
// }
|
|
// }
|
|
//
|
|
// var weights []uint32
|
|
// var civilizationIds []uint32
|
|
// for i := range planetTable.CivilizationWeights {
|
|
// if builtIds[uint32(planetTable.CivilizationWeights[i][0])] {
|
|
// continue
|
|
// }
|
|
//
|
|
// civilizationIds = append(civilizationIds, uint32(planetTable.CivilizationWeights[i][0]))
|
|
// weights = append(weights, uint32(planetTable.CivilizationWeights[i][1]))
|
|
// }
|
|
//
|
|
// for i := range planetTable.CivilizationCostId {
|
|
// player.ReduceItem(uint32(planetTable.CivilizationCostId[i]), uint32(planetTable.CivilizationCostNum[i]), logic.LogTypeItemConsumeByCivilizationBuild)
|
|
// }
|
|
//
|
|
// var chosenId = util.RandomWeights(civilizationIds, func(i int) uint32 {
|
|
// return weights[i]
|
|
// })
|
|
//
|
|
// player.Temp.ChosenPlanetId = req.PlanetId
|
|
// player.Temp.ChosenCivilizationId = chosenId
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdPlanetCivilizationChoose, &proto.MsgPlanetCivilizationChooseAck{PlanetId: req.PlanetId, CivilizationId: chosenId})
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) PlanetCivilizationBuild(player *logic.Player, msg *net.Message) {
|
|
// var req = new(proto.MsgPlanetCivilizationBuildReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// if req.PlanetId != player.Temp.ChosenPlanetId || req.CivilizationId != player.Temp.ChosenCivilizationId {
|
|
// this.Logger().Error("Parameter error, req.PlanetId: %d, chosenPlanetId: %d, req.CivilizationId: %d, chosenCivilizationId: %d", req.PlanetId, player.Temp.ChosenPlanetId, req.CivilizationId, player.Temp.ChosenCivilizationId)
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// var planetTable = this.tables.Planet.Get(int(req.PlanetId))
|
|
// if planetTable == nil {
|
|
// this.Logger().Error("Parameter or data error, Table 'Planet' was not found, req.PlanetId: ", req.PlanetId)
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// var planetCivilizationTable = this.tables.PlanetCivilizationExtend.Get(int(req.CivilizationId), 1)
|
|
// if planetCivilizationTable == nil {
|
|
// this.Logger().Error("Parameter or data error, Table 'PlanetCivilization' was not found, req.CivilizationId: ", req.CivilizationId)
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// var index = -1
|
|
// var planet = player.Planet[req.PlanetId]
|
|
// if planet == nil {
|
|
// index = 0
|
|
// planet = &logic.PlayerPlanet{Id: uint32(planetTable.Id), Civilizations: []*logic.PlayerPlanetCivilization{nil}}
|
|
// } else {
|
|
// if len(planet.Civilizations) < proto.CivilizationNum {
|
|
// index = len(planet.Civilizations)
|
|
// planet.Civilizations = append(planet.Civilizations, nil)
|
|
// } else {
|
|
// index, _ = planet.FindCivilization(req.ReplacedId)
|
|
// if index < 0 {
|
|
// this.Logger().Error("Parameter error, 'ReplacedId' was not found, req.ReplacedId: ", req.ReplacedId)
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
// }
|
|
// }
|
|
//
|
|
// player.Temp.ChosenCivilizationId = 0
|
|
//
|
|
// planet.Civilizations[index] = &logic.PlayerPlanetCivilization{CivilizationId: uint32(planetCivilizationTable.CivilizationId), Id: uint32(planetCivilizationTable.Id)}
|
|
//
|
|
// player.Planet[planet.Id] = planet
|
|
// player.SaveModel(planet)
|
|
//
|
|
// player.UpdateRigAttrs()
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdPlanetChange, &proto.MsgPlanetChangeAck{Planet: planet.BuildMsgPlanet()})
|
|
//
|
|
// player.ResetRequestTime(logic.RequestTimeTypeChooseCivilization)
|
|
//
|
|
// player.CheckTask(proto.TaskSection1BuildCivilizations, 0, 1)
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) PlanetCivilizationUpgrade(player *logic.Player, msg *net.Message) {
|
|
// var req = new(proto.MsgPlanetCivilizationUpgradeReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// if req.PlanetId == 0 || req.CivilizationId == 0 {
|
|
// this.Logger().Error("Parameter error, req.PlanetId == 0 || req.CivilizationId == 0")
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// var planet = player.Planet[req.PlanetId]
|
|
// if planet == nil {
|
|
// this.Logger().Error("Parameter or data error, Table 'Planet' was not found, req.PlanetId: ", req.PlanetId)
|
|
// _ = player.TipNotice(proto.TipPlanetNotExists)
|
|
// return
|
|
// }
|
|
//
|
|
// var _, civilization = planet.FindCivilization(req.CivilizationId)
|
|
// if civilization == nil {
|
|
// this.Logger().Error("Parameter or data error, Civilization not built, req.CivilizationId: ", req.CivilizationId)
|
|
// _ = player.TipNotice(proto.TipCivilizationNotBuilt)
|
|
// return
|
|
// }
|
|
//
|
|
// var planetCivilizationTables = this.tables.PlanetCivilizationExtend.List(int(req.CivilizationId))
|
|
// if len(planetCivilizationTables) == 0 {
|
|
// this.Logger().Error("Parameter or data error, 'PlanetCivilizations' length 0, req.CivilizationId: ", req.CivilizationId)
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// var curIndex = -1
|
|
// for i, planetCivilizationTable := range planetCivilizationTables {
|
|
// if uint32(planetCivilizationTable.Id) == civilization.Id {
|
|
// curIndex = i
|
|
// break
|
|
// }
|
|
// }
|
|
//
|
|
// if curIndex == -1 {
|
|
// this.Logger().Error("Data error, Civilization level was not found, civilization.Id: ", civilization.Id)
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// if curIndex+1 >= len(planetCivilizationTables) {
|
|
// this.Logger().Error("Civilization level already max, civilization.Id: ", civilization.Id)
|
|
// _ = player.TipNotice(proto.TipLevelAlreadyMax)
|
|
// return
|
|
// }
|
|
//
|
|
// for i := range planetCivilizationTables[curIndex].CostItemId {
|
|
// err = player.CheckItem(uint32(planetCivilizationTables[curIndex].CostItemId[i]), uint32(planetCivilizationTables[curIndex].CostItemNum[i]))
|
|
// if err != nil {
|
|
// this.Logger().Errorf("Check item consume failed, itemId: %d, itemNum: %d, error: %v", planetCivilizationTables[curIndex].CostItemId[i], planetCivilizationTables[curIndex].CostItemNum[i], err)
|
|
// _ = player.TipNotice(err)
|
|
// return
|
|
// }
|
|
// }
|
|
//
|
|
// for i := range planetCivilizationTables[curIndex].CostItemId {
|
|
// player.ReduceItem(uint32(planetCivilizationTables[curIndex].CostItemId[i]), uint32(planetCivilizationTables[curIndex].CostItemNum[i]), logic.LogTypeItemConsumeByCivilizationUpgrade)
|
|
// }
|
|
//
|
|
// civilization.Id = uint32(planetCivilizationTables[curIndex+1].Id)
|
|
// player.SaveModel(planet)
|
|
//
|
|
// player.UpdateRigAttrs()
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdPlanetChange, &proto.MsgPlanetChangeAck{Planet: planet.BuildMsgPlanet()})
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) PlanetCivilizationDestroy(player *logic.Player, msg *net.Message) {
|
|
// var req = new(proto.MsgPlanetCivilizationDestroyReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// if req.PlanetId == 0 || req.CivilizationId == 0 {
|
|
// this.Logger().Error("Parameter error, req.PlanetId == 0 || req.CivilizationId == 0")
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// var planet = player.Planet[req.PlanetId]
|
|
// if planet == nil {
|
|
// this.Logger().Error("Parameter error, Player 'Planet' was not found, req.PlanetId: ", req.PlanetId)
|
|
// _ = player.TipNotice(proto.TipPlanetNotExists)
|
|
// return
|
|
// }
|
|
//
|
|
// var index, _ = planet.FindCivilization(req.CivilizationId)
|
|
// if index == -1 {
|
|
// this.Logger().Error("Parameter or data error, Civilization not built, req.CivilizationId: ", req.CivilizationId)
|
|
// _ = player.TipNotice(proto.TipCivilizationNotBuilt)
|
|
// return
|
|
// }
|
|
//
|
|
// planet.Civilizations = append(planet.Civilizations[:index], planet.Civilizations[index+1:]...)
|
|
// player.SaveModel(planet)
|
|
//
|
|
// player.UpdateRigAttrs()
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdPlanetChange, &proto.MsgPlanetChangeAck{Planet: planet.BuildMsgPlanet()})
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) PlanetRawStoneMine(player *logic.Player, msg *net.Message) {
|
|
// var req = new(proto.MsgPlanetRawStoneMineReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// if req.Id == 0 || req.Times == 0 {
|
|
// this.Logger().Error("Parameter error, req.Id == 0 || req.Times == 0")
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// var rawStoneTable = this.tables.PlanetRawStone.Get(int(req.Id))
|
|
// if rawStoneTable == nil {
|
|
// this.Logger().Error("Parameter or data error, Table 'PlanetRawStone' was not found, req.Id: ", req.Id)
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// var now = util.Unix()
|
|
// var rawStone = player.RawStone[req.Id]
|
|
// if rawStone == nil {
|
|
// rawStone = &logic.PlayerRawStone{Id: uint32(rawStoneTable.Id)}
|
|
// player.RawStone[rawStone.Id] = rawStone
|
|
// }
|
|
//
|
|
// if rawStoneTable.FreeInterval > 0 && (rawStone.FreeTime == 0 || now >= rawStone.FreeTime) { //免费时只能抽一次
|
|
// if req.Times != 1 {
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// rawStone.FreeTime = now + int64(rawStoneTable.FreeInterval)
|
|
// } else {
|
|
// if req.Times < uint32(rawStoneTable.MinTimes) || req.Times > uint32(rawStoneTable.MaxTimes) {
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// err = player.CheckItem(uint32(rawStoneTable.CostItemId), uint32(rawStoneTable.CostItemNum)*req.Times)
|
|
// if err != nil {
|
|
// _ = player.TipNotice(err)
|
|
// return
|
|
// }
|
|
//
|
|
// player.ReduceItem(uint32(rawStoneTable.CostItemId), uint32(rawStoneTable.CostItemNum)*req.Times, logic.LogTypeItemConsumeByRawStoneMime)
|
|
// }
|
|
//
|
|
// var dropResult [][2]uint32
|
|
// if req.Times == uint32(rawStoneTable.MaxTimes) {
|
|
// if player.GetCounterTotal(proto.CounterTypeRawStoneTenfold, rawStone.Id) > 0 { //第一次走首次十连,之后走普通十连,一次掉落出十个东西
|
|
// dropResult = this.tables.DropExtend.Drop(rawStoneTable.TenfoldDropId, 1)
|
|
// } else {
|
|
// dropResult = this.tables.DropExtend.Drop(rawStoneTable.FirstTenfoldDropId, 1)
|
|
// }
|
|
// player.AddCounter(proto.CounterTypeRawStoneTenfold, rawStone.Id, 1) //计一次十连抽,而不是十次
|
|
// } else {
|
|
// dropResult = this.tables.DropExtend.Drop(rawStoneTable.GeneralDropId, int(req.Times)) //多次单抽掉落多次,每次一个东西
|
|
// }
|
|
//
|
|
// rawStone.MineCount += req.Times
|
|
// player.SaveModel(rawStone)
|
|
//
|
|
// var rewardList []*proto.ItemPair
|
|
// for _, itemPair := range dropResult {
|
|
// _ = player.AddItem(itemPair[0], itemPair[1], logic.LogTypeItemObtainByRawStoneMime)
|
|
// rewardList = append(rewardList, &proto.ItemPair{ItemId: itemPair[0], ItemNum: itemPair[1]})
|
|
// }
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdPlanetRawStoneMine, &proto.MsgPlanetRawStoneMineAck{MsgRewardListAck: &proto.MsgRewardListAck{RewardList: rewardList}})
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdPlanetRawStoneStatus, &proto.MsgPlanetRawStoneStatusListAck{
|
|
// List: []*proto.PlanetRawStoneStatus{rawStone.BuildMsgPlanetRawStoneStatus()},
|
|
// })
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) PlanetRawStoneAccrueReward(player *logic.Player, msg *net.Message) {
|
|
// var req = new(proto.MsgPlanetRawStoneAccrueRewardReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// if req.Id == 0 {
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// var planetRawStoneTable = this.tables.PlanetRawStone.Get(int(req.Id))
|
|
// if planetRawStoneTable == nil {
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// var rawStone = player.RawStone[req.Id]
|
|
// if rawStone == nil || rawStone.MineCount < uint32(planetRawStoneTable.RewardTimes) {
|
|
// _ = player.TipNotice(proto.TipRewardUnable)
|
|
// return
|
|
// }
|
|
//
|
|
// var multiple = rawStone.MineCount / uint32(planetRawStoneTable.RewardTimes)
|
|
//
|
|
// rawStone.MineCount = rawStone.MineCount % uint32(planetRawStoneTable.RewardTimes)
|
|
// player.SaveModel(rawStone)
|
|
//
|
|
// _ = player.AddItem(uint32(planetRawStoneTable.RewardItemId), uint32(planetRawStoneTable.RewardItemNum)*multiple, logic.LogTypeItemObtainByRawStoneAccrue)
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdPlanetRawStoneAccrueReward, &proto.MsgPlanetRawStoneAccrueRewardAck{MsgRewardListAck: &proto.MsgRewardListAck{
|
|
// RewardList: []*proto.ItemPair{
|
|
// {ItemId: uint32(planetRawStoneTable.RewardItemId), ItemNum: uint32(planetRawStoneTable.RewardItemNum) * multiple},
|
|
// },
|
|
// }})
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdPlanetRawStoneStatus, &proto.MsgPlanetRawStoneStatusListAck{
|
|
// List: []*proto.PlanetRawStoneStatus{rawStone.BuildMsgPlanetRawStoneStatus()},
|
|
// })
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) CopyArenaMatches(player *logic.Player, msg *net.Message) {
|
|
// var req = new(proto.MsgCopyArenaMatchesReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// var copyArenaTable = this.tables.CopyArena.Get(1)
|
|
// if copyArenaTable == nil {
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// var season = this.arenaManager.CopyArenaSeason()
|
|
// if season == nil {
|
|
// _ = player.TipNotice(proto.TipCopyNotInTime)
|
|
// return
|
|
// }
|
|
//
|
|
// if player.Arena == nil {
|
|
// player.EnterArena(season, copyArenaTable)
|
|
// if player.Arena == nil {
|
|
// _ = player.TipNotice(proto.TipArenaNotEntered)
|
|
// return
|
|
// }
|
|
// } else if req.Refresh {
|
|
// var counter = player.GetCounterDaily(proto.CounterTypeCopyArenaRefresh, uint32(copyArenaTable.Id))
|
|
// if counter >= uint32(copyArenaTable.MaxReloadNum) {
|
|
// this.Logger().Error("Daily arena refresh times over, count: ", counter)
|
|
// _ = player.TipNotice(proto.TipTodayTimesOver)
|
|
// return
|
|
// }
|
|
//
|
|
// player.Arena.Matches = season.Matches(player, uint32(copyArenaTable.Id), 4, player.Arena.Matches)
|
|
// player.SaveField("arena.matches", player.Arena.Matches)
|
|
//
|
|
// player.AddCounter(proto.CounterTypeCopyArenaRefresh, uint32(copyArenaTable.Id), 1)
|
|
// }
|
|
//
|
|
// var matches []*proto.ArenaPlayer
|
|
// for _, playerId := range player.Arena.Matches {
|
|
// var arenaPlayer = season.GetPlayer(playerId)
|
|
// if arenaPlayer != nil {
|
|
// var match = &proto.ArenaPlayer{
|
|
// PlayerId: arenaPlayer.PlayerId,
|
|
// IsRobot: arenaPlayer.PlayerId < 1000000000,
|
|
// Name: arenaPlayer.Name,
|
|
// Avatar: arenaPlayer.Avatar,
|
|
// Capacity: arenaPlayer.Capacity,
|
|
// RigHead: arenaPlayer.RigHead,
|
|
// RigHeadStar: arenaPlayer.RigHeadStar,
|
|
// RigBody: arenaPlayer.RigBody,
|
|
// RigBodyStar: arenaPlayer.RigBodyStar,
|
|
// RigTail: arenaPlayer.RigTail,
|
|
// RigTailStar: arenaPlayer.RigTailStar,
|
|
// RigEquips: arenaPlayer.RigEquips[:],
|
|
// RigPendants: arenaPlayer.RigPendants[:],
|
|
// RigAttrs: arenaPlayer.RigAttrs[:],
|
|
// }
|
|
//
|
|
// var score = arenaPlayer.Scores[uint32(copyArenaTable.Id)]
|
|
// if score != nil {
|
|
// match.MaxScore = score.MaxScore
|
|
// match.RankIndex = score.RankIndex
|
|
// }
|
|
//
|
|
// matches = append(matches, match)
|
|
// }
|
|
// }
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdCopyArenaMatches, &proto.MsgCopyArenaMatchesAck{Matches: matches})
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) CopyArenaSelectMatch(player *logic.Player, msg *net.Message) {
|
|
// var req = new(proto.MsgCopyArenaSelectMatchReq)
|
|
// var err = msg.Read(req)
|
|
// if err != nil {
|
|
// this.Logger().Error("Read message failed, ", err)
|
|
// _ = player.TipNotice(proto.TipMessageError)
|
|
// return
|
|
// }
|
|
//
|
|
// if req.PlayerId == 0 {
|
|
// _ = player.TipNotice(proto.TipParameterError)
|
|
// return
|
|
// }
|
|
//
|
|
// if player.Arena == nil {
|
|
// _ = player.TipNotice(proto.TipArenaNotEntered)
|
|
// return
|
|
// }
|
|
//
|
|
// if !player.Arena.Matched(req.PlayerId) {
|
|
// _ = player.TipNotice(proto.TipArenaNotMatched)
|
|
// return
|
|
// }
|
|
//
|
|
// var season = this.arenaManager.CopyArenaSeason()
|
|
// if season == nil {
|
|
// _ = player.TipNotice(proto.TipCopyNotInTime)
|
|
// return
|
|
// }
|
|
//
|
|
// var arenaPlayer = season.GetPlayer(req.PlayerId)
|
|
// if arenaPlayer == nil {
|
|
// _ = player.TipNotice(proto.TipArenaMatchNotFound)
|
|
// return
|
|
// }
|
|
//
|
|
// player.Temp.ArenaEnemy = arenaPlayer
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdCopyArenaSelectMatch, nil)
|
|
//
|
|
// this.enterCopyArena(player, 1)
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) CopyArenaRankList(player *logic.Player, msg *net.Message) {
|
|
// var copyArenaTable = this.tables.CopyArena.Get(1)
|
|
// if copyArenaTable == nil {
|
|
// _ = player.TipNotice(proto.TipDataTablesError)
|
|
// return
|
|
// }
|
|
//
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdCopyArenaRankList, player.BuildMsgCopyArenaRankListAck(uint32(copyArenaTable.Id)))
|
|
// return
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) CopyArenaBattleRecordList(player *logic.Player, msg *net.Message) {
|
|
// var list []*proto.CopyArenaBattleRecord
|
|
// if player.Arena != nil {
|
|
// for _, record := range player.Arena.Records {
|
|
// list = append(list, record.BuildMsgCopyArenaBattleRecord())
|
|
// }
|
|
// }
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdCopyArenaBattleRecordList, &proto.MsgCopyArenaBattleRecordListAck{List: list})
|
|
// return
|
|
//}
|
|
//
|
|
//func (this *PlayerHandler) CopyMainlineRankList(player *logic.Player, msg *net.Message) {
|
|
// _ = player.Send(proto.ModIdLevel, proto.MsgIdCopyMainlineRankList, player.BuildMsgCopyMainlineRankListAck())
|
|
// return
|
|
//}
|