ecs/servers/game/handler/player_rig.go

1743 lines
52 KiB
Go
Raw Normal View History

2025-06-04 18:17:39 +08:00
package handler
//func (this *PlayerHandler) RigComponentSet(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigComponentSetReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Type == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// if req.Id == 0 {
// player.SetupRigComponent(req.Type, nil)
// return
// }
//
// var componentTable = this.tables.RigComponent.Get(int(req.Id))
// if componentTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// var component = player.RigComponent[uint32(componentTable.ItemId)]
// if component == nil {
// _ = player.TipNotice(proto.ErrItemNotFound)
// return
// }
//
// if component.Type != req.Type {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// if component.Setup {
// _ = player.TipNotice(proto.ErrItemIsSetup)
// return
// }
//
// player.SetupRigComponent(req.Type, component)
// return
//}
//
//func (this *PlayerHandler) RigComponentUpgrade(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigComponentUpgradeReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.ItemId == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var component = player.RigComponent[req.ItemId]
// if component == nil {
// _ = player.TipNotice(proto.ErrComponentUnlocked)
// return
// }
//
// var componentTable = this.tables.RigComponent.Get(int(component.Id))
// if componentTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if componentTable.NextId <= 0 {
// _ = player.TipNotice(proto.ErrLevelAlreadyMax)
// return
// }
//
// var nextComponentTable = this.tables.RigComponent.Get(componentTable.NextId)
// if nextComponentTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// err = player.CheckMoney(proto.MoneyType(componentTable.MoneyType), uint32(componentTable.MoneyNum))
// if err != nil {
// _ = player.TipNotice(err)
// return
// }
//
// player.ReduceMoney(proto.MoneyType(componentTable.MoneyType), uint32(componentTable.MoneyNum), logic.LogTypeItemConsumeByComponentUpgrade)
//
// component.Id = uint32(nextComponentTable.Id)
//
// player.SaveModel(component)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigComponentChange, &proto.MsgRigComponentChangeListAck{
// List: []*proto.RigComponentChange{{RigComponent: component.BuildMsgRigComponent(), ChangeType: uint32(proto.ChangeTypeChange)}},
// })
//
// switch proto.EquipType(component.Type) {
// case proto.EquipTypeHead:
// player.CheckTask(proto.TaskSection1UpgradeHeadComponents, 0, 1)
// player.CheckTask(proto.TaskSection1HeadComponentMaxLevel, 0, nextComponentTable.Level)
// case proto.EquipTypeBody:
// player.CheckTask(proto.TaskSection1UpgradeBodyComponents, 0, 1)
// player.CheckTask(proto.TaskSection1BodyComponentMaxLevel, 0, nextComponentTable.Level)
// case proto.EquipTypeTail:
// player.CheckTask(proto.TaskSection1UpgradeTailComponents, 0, 1)
// player.CheckTask(proto.TaskSection1TailComponentMaxLevel, 0, nextComponentTable.Level)
// }
//
// player.UpdateRigAttrs()
//
// player.CheckRigTrammelsStatus(uint32(nextComponentTable.ItemId), uint32(nextComponentTable.Level), 0)
//
// player.CheckTask(proto.TaskSection1UpgradeComponents, 0, 1)
// player.CheckTask(proto.TaskSection1ComponentsAllLevels, 0, int(player.GetAllRigCompnentLevels()))
// return
//}
//
//func (this *PlayerHandler) RigComponentStarUpgrade(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigComponentStarUpgradeReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.ItemId == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var component = player.RigComponent[req.ItemId]
// if component == nil {
// _ = player.TipNotice(proto.ErrComponentUnlocked)
// return
// }
//
// var componentStarTable = this.tables.RigComponentStar.Get(int(component.StarId))
// if componentStarTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if componentStarTable.NextId <= 0 {
// _ = player.TipNotice(proto.ErrLevelAlreadyMax)
// return
// }
//
// var nextComponentStarTable = this.tables.RigComponentStar.Get(componentStarTable.NextId)
// if nextComponentStarTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// for i := range componentStarTable.CostItemId {
// err = player.CheckItem(uint32(componentStarTable.CostItemId[i]), uint32(componentStarTable.CostItemNum[i]))
// if err != nil {
// _ = player.TipNotice(err)
// return
// }
// }
//
// for i := range componentStarTable.CostItemId {
// player.ReduceItem(uint32(componentStarTable.CostItemId[i]), uint32(componentStarTable.CostItemNum[i]), logic.LogTypeItemConsumeByComponentStarUpgrade)
// }
//
// component.StarId = uint32(nextComponentStarTable.Id)
//
// player.SaveModel(component)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigComponentChange, &proto.MsgRigComponentChangeListAck{
// List: []*proto.RigComponentChange{{RigComponent: component.BuildMsgRigComponent(), ChangeType: uint32(proto.ChangeTypeChange)}},
// })
//
// if component.Setup {
// //TODO if need recalculate rig attribute and send to client?
// }
//
// switch proto.EquipType(component.Type) {
// case proto.EquipTypeHead:
// player.CheckAchievement(proto.AchievementTypeHeadComponentStars, uint32(nextComponentStarTable.StarLevel), 1)
// case proto.EquipTypeBody:
// player.CheckAchievement(proto.AchievementTypeBodyComponentStars, uint32(nextComponentStarTable.StarLevel), 1)
// case proto.EquipTypeTail:
// player.CheckAchievement(proto.AchievementTypeTailComponentStars, uint32(nextComponentStarTable.StarLevel), 1)
// }
//
// player.CheckRigTrammelsStatus(uint32(nextComponentStarTable.ItemId), 0, uint32(nextComponentStarTable.StarLevel))
//
// player.CheckTask(proto.TaskSection1UpgradeComponentStars, int(component.Type), 1)
// return
//}
//
//func (this *PlayerHandler) RigEquipSet(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigEquipSetReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Index >= proto.EquipNum {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// if req.Id == 0 {
// player.SetupRigEquip(req.Index, nil)
// return
// }
//
// err = player.CheckFunctionOpen1(1, req.Index)
// if err != nil {
// _ = player.TipNotice(err)
// return
// }
//
// var equipTable = this.tables.RigEquip.Get(int(req.Id))
// if equipTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// var equip = player.RigEquip[uint32(equipTable.ItemId)]
// if equip == nil {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// if equip.Setup {
// _ = player.TipNotice(proto.ErrItemIsSetup)
// return
// }
//
// player.SetupRigEquip(req.Index, equip)
// return
//}
//
//func (this *PlayerHandler) RigEquipUpgrade(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigEquipUpgradeReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.ItemId == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var equip = player.RigEquip[req.ItemId]
// if equip == nil {
// _ = player.TipNotice(proto.ErrItemNotFound)
// return
// }
//
// var equipTable = this.tables.RigEquip.Get(int(equip.Id))
// if equipTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if equipTable.NextId <= 0 {
// _ = player.TipNotice(proto.ErrLevelAlreadyMax)
// return
// }
//
// var nextEquipTable = this.tables.RigEquip.Get(equipTable.NextId)
// if nextEquipTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// for i := range equipTable.CostItemId {
// err = player.CheckItem(uint32(equipTable.CostItemId[i]), uint32(equipTable.CostItemNum[i]))
// if err != nil {
// _ = player.TipNotice(err)
// return
// }
// }
//
// for i := range equipTable.CostItemId {
// player.ReduceItem(uint32(equipTable.CostItemId[i]), uint32(equipTable.CostItemNum[i]), logic.LogTypeItemConsumeByEquipUpgrade)
// }
//
// equip.Id = uint32(nextEquipTable.Id)
// player.SaveModel(equip)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigEquipChange, &proto.MsgRigEquipChangeListAck{
// List: []*proto.RigEquipChange{{RigEquip: equip.BuildMsgRigEquip(), ChangeType: uint32(proto.ChangeTypeChange)}},
// })
//
// player.UpdateRigAttrs()
//
// player.CheckAchievement(proto.AchievementTypeEquipLevel, uint32(nextEquipTable.Level), 1)
// return
//}
//
//func (this *PlayerHandler) RigEquipUpgradeAll(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigEquipUpgradeAllReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if len(req.List) == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var consumes = map[uint32]uint32{}
// var equips = make([]*logic.PlayerRigEquip, len(req.List))
// var equipTables = make([]*data.RigEquip, len(req.List))
// var nextEquipTables = make([]*data.RigEquip, len(req.List))
//
//idLoop:
// for i, id := range req.List {
// if id == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var equipTable = this.tables.RigEquip.Get(int(id))
// if equipTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// equipTables[i] = equipTable
//
// equips[i] = player.RigEquip[uint32(equipTable.ItemId)]
// if equips[i] == nil {
// _ = player.TipNotice(proto.ErrItemNotFound)
// return
// }
//
// if id != equips[i].Id {
// _ = player.TipNotice(proto.ErrItemNotFound)
// return
// }
//
// var finalEquipTable *data.RigEquip
// nextLoop:
// for {
// if equipTable.NextId <= 0 {
// break nextLoop
// }
//
// var nextEquipTable = this.tables.RigEquip.Get(equipTable.NextId)
// if nextEquipTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// for j := range equipTable.CostItemId {
// err = player.CheckItem(uint32(equipTable.CostItemId[j]), consumes[uint32(equipTable.CostItemId[j])]+uint32(equipTable.CostItemNum[j]))
// if err != nil {
// if err == proto.ErrItemNotEnough {
// break nextLoop
// }
//
// if err == proto.ErrMoneyNotEnough {
// break idLoop
// }
//
// _ = player.TipNotice(err)
// return
// }
//
// consumes[uint32(equipTable.CostItemId[j])] += uint32(equipTable.CostItemNum[j])
// }
//
// equipTable = nextEquipTable
// finalEquipTable = nextEquipTable
// }
//
// if finalEquipTable != nil {
// nextEquipTables[i] = finalEquipTable
// }
// }
//
// for itemId, itemNum := range consumes {
// player.ReduceItem(itemId, itemNum, logic.LogTypeItemConsumeByEquipUpgrade)
// }
//
// var list []*proto.RigEquipChange
// for i, nextEquipTable := range nextEquipTables {
// if nextEquipTable == nil {
// continue
// }
//
// equips[i].Id = uint32(nextEquipTable.Id)
// player.SaveModel(equips[i])
//
// list = append(list, &proto.RigEquipChange{RigEquip: equips[i].BuildMsgRigEquip(), ChangeType: uint32(proto.ChangeTypeChange)})
//
// for level := equipTables[i].Level + 1; level <= nextEquipTable.Level; level++ {
// player.CheckAchievement(proto.AchievementTypeEquipLevel, uint32(level), 1)
// }
// }
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigEquipChange, &proto.MsgRigEquipChangeListAck{
// List: list,
// })
//
// player.UpdateRigAttrs()
// return
//}
//
//func (this *PlayerHandler) RigPendantSet(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigPendantSetReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Index >= proto.PendantNum {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// if req.Id == 0 {
// player.SetupRigPendant(req.Index, nil)
// return
// }
//
// err = player.CheckFunctionOpen1(2, req.Index)
// if err != nil {
// _ = player.TipNotice(err)
// return
// }
//
// var pendantTable = this.tables.RigPendant.Get(int(req.Id))
// if pendantTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// var pendant = player.RigPendant[uint32(pendantTable.ItemId)]
// if pendant == nil {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// if pendant.Setup {
// _ = player.TipNotice(proto.ErrItemIsSetup)
// return
// }
//
// player.SetupRigPendant(req.Index, pendant)
// return
//}
//
//func (this *PlayerHandler) RigPendantUpgrade(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigPendantUpgradeReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.ItemId == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var pendant = player.RigPendant[req.ItemId]
// if pendant == nil {
// _ = player.TipNotice(proto.ErrItemNotFound)
// return
// }
//
// var pendantTable = this.tables.RigPendant.Get(int(pendant.Id))
// if pendantTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if pendantTable.NextId <= 0 {
// _ = player.TipNotice(proto.ErrLevelAlreadyMax)
// return
// }
//
// var nextPendantTable = this.tables.RigPendant.Get(pendantTable.NextId)
// if nextPendantTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// for i := range pendantTable.CostItemId {
// err = player.CheckItem(uint32(pendantTable.CostItemId[i]), uint32(pendantTable.CostItemNum[i]))
// if err != nil {
// _ = player.TipNotice(err)
// return
// }
// }
//
// for i := range pendantTable.CostItemId {
// player.ReduceItem(uint32(pendantTable.CostItemId[i]), uint32(pendantTable.CostItemNum[i]), logic.LogTypeItemConsumeByPendantUpgrade)
// }
//
// pendant.Id = uint32(nextPendantTable.Id)
// player.SaveModel(pendant)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigPendantChange, &proto.MsgRigPendantChangeListAck{
// List: []*proto.RigPendantChange{{RigPendant: pendant.BuildMsgRigPendant(), ChangeType: uint32(proto.ChangeTypeChange)}},
// })
//
// player.UpdateRigAttrs()
//
// player.CheckAchievement(proto.AchievementTypePendantLevel, uint32(nextPendantTable.Level), 1)
// return
//}
//
//func (this *PlayerHandler) RigPendantUpgradeAll(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigPendantUpgradeAllReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if len(req.List) == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var consumes = map[uint32]uint32{}
// var pendants = make([]*logic.PlayerRigPendant, len(req.List))
// var pendantTables = make([]*data.RigPendant, len(req.List))
// var nextPendantTables = make([]*data.RigPendant, len(req.List))
//
//idLoop:
// for i, id := range req.List {
// if id == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var pendantTable = this.tables.RigPendant.Get(int(id))
// if pendantTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// pendantTables[i] = pendantTable
//
// pendants[i] = player.RigPendant[uint32(pendantTable.ItemId)]
// if pendants[i] == nil {
// _ = player.TipNotice(proto.ErrItemNotFound)
// return
// }
//
// if id != pendants[i].Id {
// _ = player.TipNotice(proto.ErrItemNotFound)
// return
// }
//
// var finalPendantTable *data.RigPendant
// nextLoop:
// for {
// if pendantTable.NextId <= 0 {
// break nextLoop
// }
//
// var nextPendantTable = this.tables.RigPendant.Get(pendantTable.NextId)
// if nextPendantTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// for j := range pendantTable.CostItemId {
// err = player.CheckItem(uint32(pendantTable.CostItemId[j]), consumes[uint32(pendantTable.CostItemId[j])]+uint32(pendantTable.CostItemNum[j]))
// if err != nil {
// if err == proto.ErrItemNotEnough {
// break nextLoop
// }
//
// if err == proto.ErrMoneyNotEnough {
// break idLoop
// }
//
// _ = player.TipNotice(err)
// return
// }
//
// consumes[uint32(pendantTable.CostItemId[j])] += uint32(pendantTable.CostItemNum[j])
// }
//
// pendantTable = nextPendantTable
// finalPendantTable = nextPendantTable
// }
//
// if finalPendantTable != nil {
// nextPendantTables[i] = finalPendantTable
// }
// }
//
// for itemId, itemNum := range consumes {
// player.ReduceItem(itemId, itemNum, logic.LogTypeItemConsumeByPendantUpgrade)
// }
//
// var list []*proto.RigPendantChange
// for i, nextPendantTable := range nextPendantTables {
// if nextPendantTables == nil {
// continue
// }
//
// pendants[i].Id = uint32(nextPendantTable.Id)
// player.SaveModel(pendants[i])
//
// list = append(list, &proto.RigPendantChange{RigPendant: pendants[i].BuildMsgRigPendant(), ChangeType: uint32(proto.ChangeTypeChange)})
//
// for level := pendantTables[i].Level + 1; level <= nextPendantTable.Level; level++ {
// player.CheckAchievement(proto.AchievementTypePendantLevel, uint32(level), 1)
// }
// }
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigPendantChange, &proto.MsgRigPendantChangeListAck{
// List: list,
// })
//
// player.UpdateRigAttrs()
// return
//}
//
//func (this *PlayerHandler) RigRemainsUpgrade(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigRemainsUpgradeReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.ItemId == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var remains = player.RigRemains[req.ItemId]
// if remains == nil {
// _ = player.TipNotice(proto.ErrItemNotFound)
// return
// }
//
// var remainsTable = this.tables.RigRemains.Get(int(remains.Id))
// if remainsTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if remainsTable.NextId == 0 {
// _ = player.TipNotice(proto.ErrLevelAlreadyMax)
// return
// }
//
// var nextRemainsTable = this.tables.RigRemains.Get(remainsTable.NextId)
// if nextRemainsTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// for i := range remainsTable.CostItemId {
// err = player.CheckItem(uint32(remainsTable.CostItemId[i]), uint32(remainsTable.CostItemNum[i]))
// if err != nil {
// _ = player.TipNotice(err)
// return
// }
// }
//
// for i := range remainsTable.CostItemId {
// player.ReduceItem(uint32(remainsTable.CostItemId[i]), uint32(remainsTable.CostItemNum[i]), logic.LogTypeItemConsumeByRemainsUpgrade)
// }
//
// remains.Id = uint32(nextRemainsTable.Id)
//
// player.SaveModel(remains)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigRemainsChange, &proto.MsgRigRemainsChangeListAck{
// List: []*proto.RigRemainsChange{{RigRemains: remains.BuildMsgRigRemains(), ChangeType: uint32(proto.ChangeTypeChange)}},
// })
//
// player.UpdateRigAttrs()
//
// player.CheckTask(proto.TaskSection1UpgradeRemains, 0, 1)
// player.CheckAchievement(proto.AchievementTypeRemainsLevel, uint32(nextRemainsTable.Level), 1)
// return
//}
//
//func (this *PlayerHandler) RigSmelterSmelt(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigSmelterSmeltReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Type == 0 || req.Times == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var smelterTable *data.RigSmelter
// var smelter = player.RigSmelter[req.Type]
// if smelter == nil {
// smelterTable = this.tables.RigSmelterExtend.Get(int(req.Type), 1)
// if smelterTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// smelter = player.AddRigSmelter(smelterTable)
// } else {
// smelterTable = this.tables.RigSmelter.Get(int(smelter.Id))
// if smelterTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
// }
//
// var ti = -1
// for i, times := range smelterTable.TimesList {
// if uint32(times) == req.Times {
// ti = i
// break
// }
// }
//
// if ti < 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// if !player.CheckAdFunction(proto.AdFunctionTypeSmelt, uint32(smelterTable.Type), 0, req.Times) {
// err = player.CheckItem(uint32(smelterTable.CostItemId[ti]), uint32(smelterTable.CostItemNum[ti]))
// if err != nil {
// _ = player.TipNotice(err)
// return
// }
//
// player.ReduceItem(uint32(smelterTable.CostItemId[ti]), uint32(smelterTable.CostItemNum[ti]), logic.LogTypeItemConsumeBySmelterSmelt)
// }
//
// var itemMap = map[uint32]uint32{}
// var itemPairs = this.tables.DropExtend.Drop(smelterTable.DropId, int(req.Times))
// var rewardList = make([]*proto.ItemPair, len(itemPairs))
// for i, itemPair := range itemPairs {
// itemMap[itemPair[0]] += itemPair[1]
// rewardList[i] = &proto.ItemPair{ItemId: itemPair[0], ItemNum: itemPair[1]}
// }
//
// player.AddItems(itemMap, logic.LogTypeItemObtainBySmelt)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigSmelterSmelt, &proto.MsgRigSmelterSmeltAck{MsgRewardListAck: &proto.MsgRewardListAck{RewardList: rewardList}})
//
// if smelterTable.SmeltExp > 0 {
// if smelterTable.NextId <= 0 && smelter.Exp >= uint32(smelterTable.UpgradeExp) {
// return
// }
//
// timesLoop:
// for i := uint32(0); i < req.Times; i++ {
// smelter.Exp += uint32(smelterTable.SmeltExp)
// for {
// if smelter.Exp >= uint32(smelterTable.UpgradeExp) {
// if smelterTable.NextId > 0 {
// var nextSmelterTable = this.tables.RigSmelter.Get(smelterTable.NextId)
// if nextSmelterTable == nil {
// this.logger.Error("熔炉升级查找下一级失败, nextId: ", smelterTable.NextId)
// break
// }
//
// smelter.Id = uint32(nextSmelterTable.Id)
// smelter.Exp -= uint32(smelterTable.UpgradeExp)
//
// smelterTable = nextSmelterTable
// } else {
// smelter.Id = uint32(smelterTable.Id)
// smelter.Exp = uint32(smelterTable.UpgradeExp)
// break timesLoop
// }
// } else {
// break
// }
// }
// }
//
// player.RigSmelter[smelter.Type] = smelter
// player.SaveModel(smelter)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigSmelterChange, &proto.MsgRigSmelterChangeAck{Smelter: smelter.BuildMsgSmelter()})
// }
//
// player.CheckTask(proto.TaskSection1SmelterSmeltTimes, smelterTable.Type, int(req.Times))
// return
//}
//
//func (this *PlayerHandler) RigTeamSave(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigTeamSaveReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Team > uint32(len(req.List)) {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var teams []proto.Team
// for _, team := range req.List {
// teams = append(teams, team.Members)
// }
//
// player.Rig.Team = req.Team
// player.Rig.Teams = teams
//
// player.SaveField("rig.team", player.Rig.Team)
// player.SaveField("rig.teams", player.Rig.Teams)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigTeamSave, &proto.MsgRigTeamSaveAck{Team: req.Team, List: req.List})
//
// player.UpdateRigAttrs()
// return
//}
//
//func (this *PlayerHandler) RigCharacterUpgrade(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigCharacterUpgradeReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.ItemId == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var character = player.RigCharacter[req.ItemId]
// if character == nil {
// _ = player.TipNotice(proto.ErrCharacterUnlocked)
// return
// }
//
// var charaterTable = this.tables.RigCharacter.Get(int(character.Id))
// if charaterTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if charaterTable.NextId <= 0 {
// _ = player.TipNotice(proto.ErrLevelAlreadyMax)
// return
// }
//
// var nextCharacterTable = this.tables.RigCharacter.Get(charaterTable.NextId)
// if nextCharacterTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// for i := range charaterTable.CostItemId {
// err = player.CheckItem(uint32(charaterTable.CostItemId[i]), uint32(charaterTable.CostItemNum[i]))
// if err != nil {
// _ = player.TipNotice(err)
// return
// }
// }
//
// for i := range charaterTable.CostItemId {
// player.ReduceItem(uint32(charaterTable.CostItemId[i]), uint32(charaterTable.CostItemNum[i]), logic.LogTypeItemConsumeByCharacterUpgrade)
// }
//
// character.Id = uint32(nextCharacterTable.Id)
// player.SaveModel(character)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigCharacterChange, &proto.MsgRigCharacterChangeListAck{
// List: []*proto.RigCharacterChange{{RigCharacter: character.BuildMsgRigCharacter(), ChangeType: uint32(proto.ChangeTypeChange)}},
// })
//
// player.UpdateRigAttrs()
//
// player.CheckRigTrammelsStatus(uint32(nextCharacterTable.ItemId), uint32(nextCharacterTable.Level), 0)
//
// player.CheckTask(proto.TaskSection1UpgradeCharacters, 0, 1)
// return
//}
//
//func (this *PlayerHandler) RigCharacterStarUpgrade(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigCharacterUpgradeReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.ItemId == 0 {
// this.logger.Error("Parameter error, req.ItemId == 0")
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var character = player.RigCharacter[req.ItemId]
// if character == nil {
// this.logger.Error("Player 'Character' was not found, itemId: ", req.ItemId)
// _ = player.TipNotice(proto.ErrCharacterUnlocked)
// return
// }
//
// var characterStarsTable = this.tables.RigCharacterStar.Get(int(character.StarId))
// if characterStarsTable == nil {
// this.logger.Error("Data tables error, Table 'RigCharacterStar' was not found, starId: ", character.StarId)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if characterStarsTable.NextId <= 0 {
// this.logger.Error("The level of 'RigCharacterStar' already max, nextId: ", characterStarsTable.NextId)
// _ = player.TipNotice(proto.ErrLevelAlreadyMax)
// return
// }
//
// var nextCharacterStarsTable = this.tables.RigCharacterStar.Get(characterStarsTable.NextId)
// if nextCharacterStarsTable == nil {
// this.logger.Error("Data tables error, next level of Table 'RigCharacterStar' was not found, nextId: ", characterStarsTable.NextId)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// for i := range characterStarsTable.CostItemId {
// err = player.CheckItem(uint32(characterStarsTable.CostItemId[i]), uint32(characterStarsTable.CostItemNum[i]))
// if err != nil {
// this.logger.Errorf("Item not enough, costTtemId: %d, costItemNum: %d", characterStarsTable.CostItemId[i], characterStarsTable.CostItemNum[i])
// _ = player.TipNotice(err)
// return
// }
// }
//
// for i := range characterStarsTable.CostItemId {
// player.ReduceItem(uint32(characterStarsTable.CostItemId[i]), uint32(characterStarsTable.CostItemNum[i]), logic.LogTypeItemConsumeByCharacterStarsUpgrade)
// }
//
// character.StarId = uint32(nextCharacterStarsTable.Id)
// player.SaveModel(character)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigCharacterChange, &proto.MsgRigCharacterChangeListAck{
// List: []*proto.RigCharacterChange{{RigCharacter: character.BuildMsgRigCharacter(), ChangeType: uint32(proto.ChangeTypeChange)}},
// })
//
// player.UpdateRigAttrs()
//
// player.CheckRigTrammelsStatus(uint32(nextCharacterStarsTable.ItemId), 0, uint32(nextCharacterStarsTable.StarLevel))
//
// player.CheckTask(proto.TaskSection1UpgradeCharacterStars, 0, 1)
// player.CheckAchievement(proto.AchievementTypeCharacterStars, uint32(nextCharacterStarsTable.StarLevel), 1)
//}
//
//func (this *PlayerHandler) RigCoreSet(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigCoreSetReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Id == 0 || req.Socket < 0 || req.Socket > proto.CoreNum {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// err = player.CheckFunctionOpen1(3, req.Socket)
// if err != nil {
// _ = player.TipNotice(err)
// return
// }
//
// var coreTable = this.tables.RigCore.Get(int(req.Id))
// if coreTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// var core = player.RigCore[uint32(coreTable.ItemId)]
// if core == nil {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var ack = new(proto.MsgRigCoreChangeListAck)
// if req.Socket == 0 {
// if core.Socket == 0 {
// return
// }
//
// core.Socket = 0
// player.SaveModel(core)
//
// ack.List = append(ack.List, &proto.RigCoreChange{RigCore: core.BuildMsgRigCore(), ChangeType: uint32(proto.ChangeTypeChange)})
// } else {
// if core.Socket > 0 {
// _ = player.TipNotice(proto.ErrItemIsSetup)
// return
// }
//
// var setup = player.CheckRigCoreSocket(req.Socket)
// if setup != nil {
// setup.Socket = 0
// player.SaveModel(setup)
//
// ack.List = append(ack.List, &proto.RigCoreChange{RigCore: setup.BuildMsgRigCore(), ChangeType: uint32(proto.ChangeTypeChange)})
// }
//
// core.Socket = req.Socket
// player.SaveModel(core)
//
// ack.List = append(ack.List, &proto.RigCoreChange{RigCore: core.BuildMsgRigCore(), ChangeType: uint32(proto.ChangeTypeChange)})
// }
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigCoreChange, ack)
// return
//}
//
//func (this *PlayerHandler) RigCoreSetAll(player *logic.Player, msg *net.Message) {
// var maxNum = uint32(0)
// for i := uint32(1); i <= proto.CoreNum; i++ {
// if player.CheckFunctionOpen1(3, i) != nil {
// break
// }
// maxNum = i
// }
//
// if maxNum == 0 {
// return
// }
//
// var unsetCores []*logic.PlayerRigCore
// var unsetItems []*data.Item
// var unsetTables []*data.RigCore
// var setupCores = map[uint32]*logic.PlayerRigCore{}
// for _, core := range player.RigCore {
// var item, table = this.tables.Item.Get(int(core.ItemId)), this.tables.RigCore.Get(int(core.Id))
// if item == nil || table == nil {
// continue
// }
//
// if core.Socket > 0 {
// setupCores[core.Socket] = core
// } else {
// unsetCores = append(unsetCores, core)
// unsetItems = append(unsetItems, item)
// unsetTables = append(unsetTables, table)
// }
// }
//
// sort.Slice(unsetCores, func(i, j int) bool {
// var ii, ij = unsetItems[i], unsetItems[j]
// var ti, tj = unsetTables[i], unsetTables[j]
// if ii == nil && ij != nil {
// return false
// }
//
// if ii != nil && ij == nil {
// return true
// }
//
// if ii != nil && ij != nil {
// if ii.Quality != ij.Quality {
// return ii.Quality > ij.Quality
// }
// }
//
// if ti.Level != tj.Level {
// return ti.Level > tj.Level
// }
//
// return ti.Id < tj.Id
// })
//
// var unsetIndex = 0
// var list []*proto.RigCoreChange
// for i := uint32(1); i <= maxNum; i++ {
// if _, ok := setupCores[i]; ok {
// continue
// }
//
// if unsetIndex < len(unsetCores) {
// unsetCores[unsetIndex].Socket = i
// player.SaveModel(unsetCores[unsetIndex])
//
// list = append(list, &proto.RigCoreChange{RigCore: unsetCores[unsetIndex].BuildMsgRigCore(), ChangeType: uint32(proto.ChangeTypeChange)})
//
// unsetIndex += 1
// }
// }
//
// if len(list) > 0 {
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigCoreChange, &proto.MsgRigCoreChangeListAck{
// List: list,
// })
// }
// return
//}
//
//func (this *PlayerHandler) RigCoreUpgrade(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigCoreUpgradeReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.ItemId == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var core = player.RigCore[req.ItemId]
// if core == nil {
// _ = player.TipNotice(proto.ErrItemNotFound)
// return
// }
//
// var coreTable = this.tables.RigCore.Get(int(core.Id))
// if coreTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if coreTable.NextId <= 0 {
// _ = player.TipNotice(proto.ErrLevelAlreadyMax)
// return
// }
//
// var nextCoreTable = this.tables.RigCore.Get(coreTable.NextId)
// if nextCoreTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// for i := range coreTable.CostItemId {
// err = player.CheckItem(uint32(coreTable.CostItemId[i]), uint32(coreTable.CostItemNum[i]))
// if err != nil {
// _ = player.TipNotice(err)
// return
// }
// }
//
// for i := range coreTable.CostItemId {
// player.ReduceItem(uint32(coreTable.CostItemId[i]), uint32(coreTable.CostItemNum[i]), logic.LogTypeItemConsumeByCoreUpgrade)
// }
//
// core.Id = uint32(nextCoreTable.Id)
//
// player.SaveModel(core)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigCoreChange, &proto.MsgRigCoreChangeListAck{
// List: []*proto.RigCoreChange{{RigCore: core.BuildMsgRigCore(), ChangeType: uint32(proto.ChangeTypeChange)}},
// })
//
// player.UpdateRigAttrs()
//
// return
//}
//
//func (this *PlayerHandler) RigCoreUpgradeAll(player *logic.Player, msg *net.Message) {
// var consumes = map[uint32]uint32{}
// var cores []*logic.PlayerRigCore
// var nextCoreTables []*data.RigCore
//
//coreLoop:
// for _, core := range player.RigCore {
// var coreTable = this.tables.RigCore.Get(int(core.Id))
// if coreTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// var finalCoreTable *data.RigCore
// nextLoop:
// for {
// if coreTable.NextId <= 0 {
// break nextLoop
// }
//
// var nextCoreTable = this.tables.RigCore.Get(coreTable.NextId)
// if nextCoreTable == nil {
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// for j := range coreTable.CostItemId {
// var err = player.CheckItem(uint32(coreTable.CostItemId[j]), consumes[uint32(coreTable.CostItemId[j])]+uint32(coreTable.CostItemNum[j]))
// if err != nil {
// if errors.Is(err, proto.ErrItemNotEnough) {
// break nextLoop
// }
//
// if errors.Is(err, proto.ErrMoneyNotEnough) {
// break coreLoop
// }
//
// _ = player.TipNotice(err)
// return
// }
//
// consumes[uint32(coreTable.CostItemId[j])] += uint32(coreTable.CostItemNum[j])
// }
//
// coreTable = nextCoreTable
// finalCoreTable = nextCoreTable
// }
//
// if finalCoreTable != nil {
// cores = append(cores, core)
// nextCoreTables = append(nextCoreTables, finalCoreTable)
// }
// }
//
// for itemId, itemNum := range consumes {
// player.ReduceItem(itemId, itemNum, logic.LogTypeItemConsumeByEquipUpgrade)
// }
//
// var list []*proto.RigCoreChange
// for i, nextCoreTable := range nextCoreTables {
// if nextCoreTable == nil {
// continue
// }
//
// cores[i].Id = uint32(nextCoreTable.Id)
//
// player.SaveModel(cores[i])
//
// list = append(list, &proto.RigCoreChange{RigCore: cores[i].BuildMsgRigCore(), ChangeType: uint32(proto.ChangeTypeChange)})
// }
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigCoreChange, &proto.MsgRigCoreChangeListAck{
// List: list,
// })
//
// player.UpdateRigAttrs()
//}
//
//func (this *PlayerHandler) RigTrammelsActivate(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigTrammelsActivateReq)
// var err = msg.Read(req)
// if err != nil {
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Group == 0 || req.Level == 0 {
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var rigTrammels = player.RigTrammels[req.Group]
// if rigTrammels == nil || proto.TrammelsStatus(rigTrammels.Status[req.Level]) == proto.TrammelsStatusUnable {
// _ = player.TipNotice(proto.ErrTrammelsUnable)
// return
// }
//
// var status = rigTrammels.Status[req.Level]
// if proto.TrammelsStatus(status) == proto.TrammelsStatusUnable {
// _ = player.TipNotice(proto.ErrTrammelsUnable)
// return
// }
//
// if proto.TrammelsStatus(status) == proto.TrammelsStatusActivated {
// _ = player.TipNotice(proto.ErrTrammelsActivated)
// return
// }
//
// rigTrammels.Status[req.Level] = uint32(proto.TrammelsStatusActivated)
// player.SaveModel(rigTrammels)
//
// player.UpdateRigAttrs()
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigTrammelsActivate, &proto.MsgRigTrammelsActivateAck{
// RigTrammelsStatus: &proto.RigTrammelsStatus{Level: req.Level, Status: uint32(proto.TrammelsStatusActivated)},
// Group: rigTrammels.Group,
// })
// return
//}
//
//func (this *PlayerHandler) RigWarshipSet(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigWarshipSetReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message error, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Uid == 0 {
// player.SetupWarship(nil)
// return
// }
//
// var warship = player.RigWarship[req.Uid]
// if warship == nil {
// this.logger.Error("Parameter error, Player 'RigWarship' was not found, uid: ", req.Uid)
// _ = player.TipNotice(proto.ErrWarshipNotFound)
// return
// }
//
// if warship.Setup {
// return
// }
//
// player.SetupWarship(warship)
//}
//
//func (this *PlayerHandler) RigWarshipUpgrade(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigWarshipUpgradeReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message error, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Uid == 0 {
// this.logger.Error("Parameter error, req.Uid == 0")
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var warship = player.RigWarship[req.Uid]
// if warship == nil {
// this.logger.Error("Parameter error, Player 'RigWarship' was not found, uid: ", req.Uid)
// _ = player.TipNotice(proto.ErrWarshipNotFound)
// return
// }
//
// var warshipTable = this.tables.Warship.Get(int(warship.Id))
// if warshipTable == nil {
// this.logger.Error("Parameter or data error, Table 'RigWarship' was not found, id: ", warship.Id)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// var warshipLevelTables = this.tables.WarshipLevelExtend.List(warshipTable.Type)
//
// var lvi = sort.Search(len(warshipLevelTables), func(i int) bool {
// return uint32(warshipLevelTables[i].Id) >= warship.LevelId
// })
//
// if lvi == len(warshipLevelTables) || uint32(warshipLevelTables[lvi].Id) != warship.LevelId {
// this.logger.Error("Parameter or data error, Table 'WarshipLevel' was not found, id: ", warship.Id)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if lvi == len(warshipLevelTables)-1 {
// this.logger.Error("Level already max, levelId: ", warship.LevelId)
// _ = player.TipNotice(proto.ErrLevelAlreadyMax)
// return
// }
//
// var warshipLevelTable = warshipLevelTables[lvi]
//
// if len(warshipLevelTable.ConsumeItemId) > 0 {
// for i := range warshipLevelTable.ConsumeItemId {
// if player.CheckItem(uint32(warshipLevelTable.ConsumeItemId[i]), uint32(warshipLevelTable.ConsumeItemNum[i])) != nil {
// this.logger.Errorf("Check item consume failed, itemId: %d, itemNum: %d, error: %v", warshipLevelTable.ConsumeItemId[i], warshipLevelTable.ConsumeItemNum[i], err)
// _ = player.TipNotice(err)
// return
// }
// }
//
// for i := range warshipLevelTable.ConsumeItemId {
// player.ReduceItem(uint32(warshipLevelTable.ConsumeItemId[i]), uint32(warshipLevelTable.ConsumeItemNum[i]), logic.LogTypeItemConsumeByWarshipUpgrade)
// }
// }
//
// warship.LevelId = uint32(warshipLevelTables[lvi+1].Id)
// player.SaveModel(warship)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigWarshipChange, &proto.MsgRigWarshipChangeAck{
// List: []*proto.RigWarshipChange{{RigWarship: warship.BuildMsgRigWarship(), ChangeType: uint32(proto.ChangeTypeChange)}},
// })
//
// player.UpdateRigAttrs()
//}
//
//func (this *PlayerHandler) RigWarshipFuse(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigWarshipFuseReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message error, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Uid == 0 || req.TargetUid == 0 {
// this.logger.Error("Parameter error, req.Uid == 0 || req.TargetUid == 0")
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var warship = player.RigWarship[req.Uid]
// if warship == nil {
// this.logger.Error("Parameter error, Player 'RigWarship' was not found, uid: ", req.Uid)
// _ = player.TipNotice(proto.ErrWarshipNotFound)
// return
// }
//
// var target = player.RigWarship[req.TargetUid]
// if target == nil {
// this.logger.Error("Parameter error, Player 'RigWarship' was not found, targetUid: ", req.TargetUid)
// _ = player.TipNotice(proto.ErrWarshipNotFound)
// return
// }
//
// if target.Setup {
// this.logger.Error("Parameter error, Can not fuse the target that is setup, targetUid: ", req.TargetUid)
// _ = player.TipNotice(proto.ErrWarshipCanNotFuse)
// return
// }
//
// var warshipStarTables = this.tables.WarshipStarExtend.List(int(warship.Id))
//
// var lvi, tvi = -1, -1
// for i := range warshipStarTables {
// if uint32(warshipStarTables[i].Id) == warship.StarId {
// lvi = i
// if tvi != -1 {
// break
// }
// }
// if uint32(warshipStarTables[i].Id) == target.StarId {
// tvi = i
// if lvi != -1 {
// break
// }
// }
// }
//
// if lvi == -1 {
// this.logger.Error("Parameter or data error, Table 'WarshipStar' was not found, warship.StarId: ", warship.StarId)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if tvi == -1 {
// this.logger.Error("Parameter or data error, Table 'WarshipStar' was not found, target.StarId: ", target.StarId)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if lvi == len(warshipStarTables)-1 {
// this.logger.Error("Star level already max, warship.StarId: ", warship.StarId)
// _ = player.TipNotice(proto.ErrLevelAlreadyMax)
// return
// }
//
// var warshipStarTable = warshipStarTables[lvi]
//
// if len(warshipStarTable.ConsumeItemId) > 0 {
// for i := range warshipStarTable.ConsumeItemId {
// if player.CheckItem(uint32(warshipStarTable.ConsumeItemId[i]), uint32(warshipStarTable.ConsumeItemNum[i])) != nil {
// this.logger.Errorf("Check item consume failed, itemId: %d, itemNum: %d, error: %v", warshipStarTable.ConsumeItemId[i], warshipStarTable.ConsumeItemNum[i], err)
// _ = player.TipNotice(err)
// return
// }
// }
// }
//
// var nvi = lvi + tvi + 1
// if nvi >= len(warshipStarTables) {
// nvi = len(warshipStarTables) - 1
// }
//
// var skills = slices.Clone(warship.Skills)
// var exclude = map[int]struct{}{}
// var skillTables = make([]*data.Skill, len(skills))
// for i, skillId := range skills {
// skillTables[i] = this.tables.Skill.Get(int(skillId))
// if skillTables[i] == nil {
// this.logger.Error("Parameter or data error, Table 'Skill' was not found, skillId: ", skillId)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
// exclude[skillTables[i].Id] = struct{}{}
// }
//
// for i := 0; i < (nvi - lvi); i++ {
// if len(skills) < 4 {
// var warshipSkillTable = this.tables.WarshipSkillExtend.Random(1, exclude)
// if warshipSkillTable == nil {
// this.logger.Error("Parameter or data error, Table 'WarshipSkill' random failed, exclude: ", skills)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// var skillTable = this.tables.SkillExtend.Get(warshipSkillTable.SkillId, 1)
// if skillTable == nil {
// this.logger.Errorf("Parameter or data error, Table 'Skill' was not found, skillId: %d, skillLevel: 1", warshipSkillTable.SkillId)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// skills = append(skills, uint32(skillTable.Id))
// skillTables = append(skillTables, skillTable)
// exclude[skillTable.SkillId] = struct{}{}
// } else {
// var stis []int
// for sti := range skillTables {
// if skillTables[sti].NextId > 0 {
// stis = append(stis, sti)
// }
// }
// if len(stis) == 0 {
// break
// }
//
// var sti = util.RandomSelect(stis, 1)[0]
// var nextSkillTable = this.tables.Skill.Get(skillTables[sti].NextId)
// if nextSkillTable == nil {
// this.logger.Error("Parameter or data error, Table 'Skill' was not found, nextId: ", skillTables[sti].NextId)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// skills[sti] = uint32(nextSkillTable.Id)
// skillTables[sti] = nextSkillTable
// }
// }
//
// if len(warshipStarTable.ConsumeItemId) > 0 {
// for i := range warshipStarTable.ConsumeItemId {
// player.ReduceItem(uint32(warshipStarTable.ConsumeItemId[i]), uint32(warshipStarTable.ConsumeItemNum[i]), logic.LogTypeItemConsumeByWarshipFuse)
// }
// }
//
// warship.StarId = uint32(warshipStarTables[nvi].Id)
// warship.Skills = skills
// player.SaveModel(warship)
//
// delete(player.RigWarship, target.Uid)
// player.WipeModel(target)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigWarshipChange, &proto.MsgRigWarshipChangeAck{
// List: []*proto.RigWarshipChange{
// {RigWarship: warship.BuildMsgRigWarship(), ChangeType: uint32(proto.ChangeTypeChange)},
// {RigWarship: target.BuildMsgRigWarship(), ChangeType: uint32(proto.ChangeTypeDelete)},
// },
// })
//
// player.UpdateRigAttrs()
//}
//
//func (this *PlayerHandler) RigWarshipReform(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgRigWarshipReformReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message error, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Uid == 0 || len(req.LockedSkills) > 3 {
// this.logger.Error("Parameter error, req.Uid == 0 || len(req.LockedSkills) > 3")
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var warship = player.RigWarship[req.Uid]
// if warship == nil {
// this.logger.Error("Parameter error, Player 'RigWarship' was not found, uid: ", req.Uid)
// _ = player.TipNotice(proto.ErrWarshipNotFound)
// return
// }
//
// var warshipTable = this.tables.Warship.Get(int(warship.Id))
// if warshipTable == nil {
// this.logger.Error("Parameter or data error, Table 'RigWarship' was not found, id: ", warship.Id)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if len(warship.Skills) != 4 {
// this.logger.Error("Parameter error, Player 'RigWarship' was not found, uid: ", req.Uid)
// _ = player.TipNotice(proto.ErrWarshipCanNotReform)
// return
// }
//
// var consumeItems = map[uint32]uint32{}
//
// if warshipTable.ConsumeItem > 0 {
// consumeItems[uint32(warshipTable.ConsumeItem)] = uint32(warshipTable.ItemQuantities)
// }
//
// if warshipTable.LockItem > 0 {
// switch len(req.LockedSkills) {
// case 1:
// consumeItems[uint32(warshipTable.LockItem)] = uint32(warshipTable.Lock1Quantities)
// case 2:
// consumeItems[uint32(warshipTable.LockItem)] = uint32(warshipTable.Lock2Quantities)
// case 3:
// consumeItems[uint32(warshipTable.LockItem)] = uint32(warshipTable.Lock3Quantities)
// }
// }
//
// for itemId, itemNum := range consumeItems {
// if player.CheckItem(itemId, itemNum) != nil {
// this.logger.Errorf("Check item consume failed, itemId: %d, itemNum: %d, error: %v", itemId, itemNum, err)
// _ = player.TipNotice(err)
// return
// }
// }
//
// var skills = slices.Clone(warship.Skills)
// var exclude = map[int]struct{}{}
// var skillTables = make([]*data.Skill, len(skills))
// for i, skillId := range skills {
// skillTables[i] = this.tables.Skill.Get(int(skillId))
// if skillTables[i] == nil {
// this.logger.Error("Parameter or data error, Table 'Skill' was not found, skillId: ", skillId)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
// exclude[skillTables[i].SkillId] = struct{}{}
// }
//
//skillsLoop:
// for si, skillId := range skills {
// for _, lockedSkillId := range req.LockedSkills {
// if skillId == lockedSkillId {
// continue skillsLoop
// }
// }
//
// delete(exclude, skillTables[si].SkillId)
//
// var warshipSkillTable = this.tables.WarshipSkillExtend.Random(2, exclude)
// if warshipSkillTable == nil {
// this.logger.Error("Parameter or data error, Table 'WarshipSkill' random failed, exclude: ", skills)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// var newSkillTable = this.tables.SkillExtend.Get(warshipSkillTable.SkillId, skillTables[si].SkillLevel)
// if newSkillTable == nil {
// this.logger.Errorf("Parameter or data error, Table 'Skill' was not found, skillId: %d, skillLevel: %v", warshipSkillTable.SkillId, skillTables[si].SkillLevel)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// skills[si] = uint32(newSkillTable.Id)
// exclude[newSkillTable.SkillId] = struct{}{}
// }
//
// for itemId, itemNum := range consumeItems {
// player.ReduceItem(itemId, itemNum, logic.LogTypeItemConsumeByWarshipReform)
// }
//
// warship.Skills = skills
// player.SaveModel(warship)
//
// _ = player.Send(proto.ModIdRig, proto.MsgIdRigWarshipChange, &proto.MsgRigWarshipChangeAck{
// List: []*proto.RigWarshipChange{
// {RigWarship: warship.BuildMsgRigWarship(), ChangeType: uint32(proto.ChangeTypeChange)},
// },
// })
//}
//
//func (this *PlayerHandler) FunctionOpen1Unlock(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgFunctionOpen1UnlockReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message error, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Id == 0 {
// this.logger.Error("Parameter error, req.Id == 0")
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var functionOpen1Table = this.tables.FunctionOpen1.Get(int(req.Id))
// if functionOpen1Table == nil {
// this.logger.Error("Parameter or data error, Table 'FunctionOpen1'was not found, id: ", req.Id)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if functionOpen1Table.LockType != 4 {
// this.logger.Error("Function can not unlock, functionOpen1Table.LockType != 4, id: ", req.Id)
// _ = player.TipNotice(proto.ErrFunctionCanNotUnlock)
// return
// }
//
// if player.GetCounterTotal(proto.CounterTypeFunctionOpen1, util.Compose2uint16(uint16(functionOpen1Table.GridType), uint16(functionOpen1Table.GridId))) > 0 {
// this.logger.Errorf("Function has unlocked, id: %d, gridType: %d, gridId: %d", req.Id, functionOpen1Table.GridType, functionOpen1Table.GridId)
// _ = player.TipNotice(proto.ErrFunctionHasUnlocked)
// return
// }
//
// if functionOpen1Table.GridId > 0 {
// if player.GetCounterTotal(proto.CounterTypeFunctionOpen1, util.Compose2uint16(uint16(functionOpen1Table.GridType), uint16(functionOpen1Table.GridId-1))) == 0 {
// this.logger.Errorf("Function can not unlock, The previous one has not unlocked, id: %d, gridType: %d, gridId: %d", req.Id, functionOpen1Table.GridType, functionOpen1Table.GridId)
// _ = player.TipNotice(proto.ErrFunctionCanNotUnlock)
// return
// }
// }
//
// err = player.CheckItem(uint32(functionOpen1Table.LockArg1), uint32(functionOpen1Table.LockArg2))
// if err != nil {
// this.logger.Errorf("Check item consume failed, itemId: %d, itemNum: %d, error: %v", functionOpen1Table.LockArg1, functionOpen1Table.LockArg2, err)
// _ = player.TipNotice(err)
// return
// }
//
// player.ReduceItem(uint32(functionOpen1Table.LockArg1), uint32(functionOpen1Table.LockArg2), logic.LogTypeItemConsumeByFunctionUnlock)
//
// player.AddCounter(proto.CounterTypeFunctionOpen1, util.Compose2uint16(uint16(functionOpen1Table.GridType), uint16(functionOpen1Table.GridId)), 1)
//}