2025-06-04 18:17:39 +08:00
|
|
|
package handler
|
|
|
|
|
2025-06-06 18:31:44 +08:00
|
|
|
import (
|
|
|
|
"ecs/proto"
|
|
|
|
"ecs/proto/pb"
|
|
|
|
"ecs/servers/game/logic"
|
|
|
|
"github.com/oylshe1314/framework/net"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
func (this *PlayerHandler) RoleChangeLanguage(player *logic.Player, msg *net.Message) {
|
|
|
|
var req = new(pb.RoleChangeLanguageReq)
|
|
|
|
var err = msg.Read(req)
|
|
|
|
if err != nil {
|
|
|
|
this.logger.Error("Read message failed, ", err)
|
|
|
|
_ = player.TipNotice(proto.TipMessageError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if player.Language != req.Language {
|
|
|
|
player.Language = req.Language
|
|
|
|
player.SaveField("language", player.Language)
|
|
|
|
}
|
|
|
|
|
|
|
|
_ = player.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleChangeLanguage), &pb.RoleChangeLanguageAck{Language: player.Language})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *PlayerHandler) RoleChangeName(player *logic.Player, msg *net.Message) {
|
|
|
|
var req = new(pb.RoleChangeRoleNameReq)
|
|
|
|
var err = msg.Read(req)
|
|
|
|
if err != nil {
|
|
|
|
this.logger.Error("Read message failed, ", err)
|
|
|
|
_ = player.TipNotice(proto.TipMessageError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var roleName = strings.TrimSpace(req.RoleName)
|
|
|
|
|
|
|
|
if roleName == "" {
|
|
|
|
this.logger.Error("Parameter error, req.Name == \"\"")
|
|
|
|
_ = player.TipNotice(proto.TipParameterError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if roleName != player.RoleName {
|
|
|
|
//if !this.tables.WordBanExtend.Check(roleName) {
|
|
|
|
// this.logger.Error("Illegal role name, roleName: ", roleName)
|
|
|
|
// _ = player.TipNotice(proto.ErrIllegalRoleName)
|
|
|
|
// return
|
|
|
|
//}
|
|
|
|
|
|
|
|
existing, err := this.playerManager.ExistsRoleName(roleName)
|
|
|
|
if err != nil {
|
|
|
|
this.logger.Error("Check role name exist failed, ", err)
|
|
|
|
_ = player.TipNotice(proto.TipServerError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if existing {
|
|
|
|
this.logger.Error("Role name already exists, roleName: ", roleName)
|
|
|
|
_ = player.TipNotice(proto.TipExistedRoleName)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
player.RoleName = roleName
|
|
|
|
player.SaveField("role_name", player.RoleName)
|
|
|
|
}
|
|
|
|
|
|
|
|
_ = player.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleChangeRoleName), &pb.RoleChangeRoleNameAck{RoleName: player.RoleName})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *PlayerHandler) RolePropertyChange(player *logic.Player, msg *net.Message) {
|
|
|
|
var req = new(pb.RolePropertyChangeReq)
|
|
|
|
var err = msg.Read(req)
|
|
|
|
if err != nil {
|
|
|
|
this.logger.Error("Read message failed, ", err)
|
|
|
|
_ = player.TipNotice(proto.TipMessageError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
switch req.Property.Type {
|
|
|
|
case pb.RolePropertyType_AvatarFrame:
|
|
|
|
player.AvatarFrame = uint32(req.Property.Value)
|
|
|
|
case pb.RolePropertyType_ChatBubble:
|
|
|
|
player.ChatBubble = uint32(req.Property.Value)
|
|
|
|
case pb.RolePropertyType_NamePrefix:
|
|
|
|
player.NamePrefix = uint32(req.Property.Value)
|
|
|
|
case pb.RolePropertyType_NameTitle:
|
|
|
|
player.NameTitle = uint32(req.Property.Value)
|
|
|
|
case pb.RolePropertyType_RoleTitle:
|
|
|
|
player.RoleTitle = uint32(req.Property.Value)
|
|
|
|
default:
|
|
|
|
_ = player.TipNotice(proto.TipParameterError)
|
|
|
|
}
|
|
|
|
|
|
|
|
_ = player.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRolePropertyChange), &pb.RolePropertyChangeAck{
|
|
|
|
PropertyList: []*pb.RoleProperty{req.Property},
|
|
|
|
})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *PlayerHandler) BattleHeroChange(player *logic.Player, msg *net.Message) {
|
|
|
|
var req = new(pb.BattleHeroChangeReq)
|
|
|
|
var err = msg.Read(req)
|
|
|
|
if err != nil {
|
|
|
|
this.logger.Error("Read message failed, ", err)
|
|
|
|
_ = player.TipNotice(proto.TipMessageError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if req.Position >= 8 {
|
|
|
|
this.logger.Error("Parameter error, req.Position: ", req.Position)
|
|
|
|
_ = player.TipNotice(proto.TipParameterError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if req.HeroUid == 0 {
|
|
|
|
this.logger.Error("Parameter error, req.HeroUid: ", req.HeroUid)
|
|
|
|
_ = player.TipNotice(proto.TipParameterError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if !player.CheckFunctionOpen(int(pb.ModId_ModuleRole), 1, int(req.Position)) {
|
|
|
|
_ = player.TipNotice(proto.TipFunctionNotUnlocked)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var hero = player.Hero[req.HeroUid]
|
|
|
|
if hero == nil {
|
|
|
|
_ = player.TipNotice(proto.TipHeroNotFound)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var battleHero = player.BattleHeroes[req.Position]
|
|
|
|
if battleHero == nil {
|
|
|
|
battleHero = &logic.PlayerBattleHero{
|
|
|
|
HeroUid: hero.Uid,
|
|
|
|
}
|
|
|
|
player.BattleHeroes[req.Position] = battleHero
|
|
|
|
} else {
|
|
|
|
battleHero.HeroUid = hero.Uid
|
|
|
|
}
|
|
|
|
|
|
|
|
player.SaveArray("battle_heroes", int(req.Position), battleHero)
|
|
|
|
|
|
|
|
player.UpdateHeroAttrs(hero)
|
|
|
|
//TODO battle hero capacity
|
|
|
|
|
|
|
|
_ = player.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleBattleHeroChange), &pb.BattleHeroListAck{
|
|
|
|
HeroList: []*pb.BattleHero{battleHero.BuildMsgBattleHero(int(req.Position))},
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *PlayerHandler) BattleHeroEquip(player *logic.Player, msg *net.Message) {
|
|
|
|
var req = new(pb.BattleHeroEquipReq)
|
|
|
|
var err = msg.Read(req)
|
|
|
|
if err != nil {
|
|
|
|
this.logger.Error("Read message failed, ", err)
|
|
|
|
_ = player.TipNotice(proto.TipMessageError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if req.Position >= 8 {
|
|
|
|
this.logger.Error("Parameter error, req.Position: ", req.Position)
|
|
|
|
_ = player.TipNotice(proto.TipParameterError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if req.EquipType < pb.EquipType_Weapon || req.EquipType > pb.EquipType_Shoe {
|
|
|
|
this.logger.Error("Parameter error, req.EquipType: ", req.EquipType)
|
|
|
|
_ = player.TipNotice(proto.TipParameterError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if !player.CheckFunctionOpen(int(pb.ModId_ModuleRole), 1, int(req.Position)) {
|
|
|
|
_ = player.TipNotice(proto.TipFunctionNotUnlocked)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var battleHero = player.BattleHeroes[req.Position]
|
|
|
|
if battleHero.HeroUid == 0 {
|
|
|
|
_ = player.TipNotice(proto.TipBattleHeroNotSet)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var hero = player.Hero[battleHero.HeroUid]
|
|
|
|
if hero == nil {
|
|
|
|
_ = player.TipNotice(proto.TipHeroNotFound)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
var equip *logic.PlayerEquip
|
|
|
|
if req.EquipUid != 0 {
|
|
|
|
equip = player.Equip[req.EquipUid]
|
|
|
|
if equip == nil {
|
|
|
|
_ = player.TipNotice(proto.TipEquipNotFound)
|
|
|
|
return
|
|
|
|
}
|
2025-06-06 18:31:44 +08:00
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
var equipTable = this.tables.Equip.Find(int(equip.Id))
|
|
|
|
if equipTable == nil {
|
|
|
|
_ = player.TipNotice(proto.TipDataTablesError)
|
|
|
|
return
|
|
|
|
}
|
2025-06-06 18:31:44 +08:00
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
if req.EquipType != pb.EquipType(equipTable.Type) {
|
|
|
|
_ = player.TipNotice(proto.TipParameterError)
|
|
|
|
return
|
|
|
|
}
|
2025-06-06 18:31:44 +08:00
|
|
|
}
|
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
var equipIndex = int(req.EquipType)
|
2025-06-06 18:31:44 +08:00
|
|
|
|
|
|
|
var battleHeroList []*pb.BattleHero
|
|
|
|
var equipChangeList []*pb.EquipChange
|
|
|
|
|
|
|
|
if battleHero.Equip[equipIndex] != 0 {
|
2025-06-06 18:49:30 +08:00
|
|
|
var preEquip = player.Equip[battleHero.Equip[equipIndex]]
|
|
|
|
if preEquip != nil && preEquip.HeroUid != 0 {
|
|
|
|
preEquip.HeroUid = 0
|
|
|
|
player.SaveModel(preEquip)
|
2025-06-06 18:31:44 +08:00
|
|
|
equipChangeList = append(equipChangeList, &pb.EquipChange{
|
|
|
|
ChangeType: pb.ChangeType_Changed,
|
2025-06-06 18:49:30 +08:00
|
|
|
Equip: preEquip.BuildMsgEquip(),
|
2025-06-06 18:31:44 +08:00
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
battleHero.Equip[equipIndex] = req.EquipUid
|
2025-06-06 18:31:44 +08:00
|
|
|
player.SaveArray("battle_heroes", int(req.Position), battleHero)
|
|
|
|
battleHeroList = append(battleHeroList, battleHero.BuildMsgBattleHero(int(req.Position)))
|
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
if equip != nil {
|
|
|
|
if equip.HeroUid != 0 {
|
|
|
|
for i := range player.BattleHeroes {
|
|
|
|
if player.BattleHeroes[i].HeroUid == equip.HeroUid {
|
|
|
|
var preBattleHero = player.BattleHeroes[i]
|
|
|
|
if preBattleHero.Equip[equipIndex] != 0 {
|
|
|
|
preBattleHero.Equip[equipIndex] = 0
|
|
|
|
player.SaveArray("battle_heroes", i, preBattleHero)
|
|
|
|
battleHeroList = append(battleHeroList, preBattleHero.BuildMsgBattleHero(i))
|
|
|
|
}
|
2025-06-06 18:31:44 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
equip.HeroUid = battleHero.HeroUid
|
|
|
|
player.SaveModel(equip)
|
|
|
|
equipChangeList = append(equipChangeList, &pb.EquipChange{
|
|
|
|
ChangeType: pb.ChangeType_Changed,
|
|
|
|
Equip: equip.BuildMsgEquip(),
|
|
|
|
})
|
|
|
|
}
|
2025-06-06 18:31:44 +08:00
|
|
|
|
|
|
|
_ = player.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleBattleHeroChange), &pb.BattleHeroListAck{HeroList: battleHeroList})
|
|
|
|
_ = player.Send(uint16(pb.ModId_ModuleItem), uint16(pb.MsgId_ModItemEquipChange), &pb.EquipChangeListAck{ChangeList: equipChangeList})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *PlayerHandler) BattleHeroTreasure(player *logic.Player, msg *net.Message) {
|
|
|
|
var req = new(pb.BattleHeroTreasureReq)
|
|
|
|
var err = msg.Read(req)
|
|
|
|
if err != nil {
|
|
|
|
this.logger.Error("Read message failed, ", err)
|
|
|
|
_ = player.TipNotice(proto.TipMessageError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if req.Position >= 8 {
|
|
|
|
this.logger.Error("Parameter error, req.Position: ", req.Position)
|
|
|
|
_ = player.TipNotice(proto.TipParameterError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if req.TreasureType < pb.TreasureType_WarBook || req.TreasureType > pb.TreasureType_WarToken {
|
|
|
|
this.logger.Error("Parameter error, req.TreasureType: ", req.TreasureType)
|
|
|
|
_ = player.TipNotice(proto.TipParameterError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if !player.CheckFunctionOpen(int(pb.ModId_ModuleRole), 1, int(req.Position)) {
|
|
|
|
_ = player.TipNotice(proto.TipFunctionNotUnlocked)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var battleHero = player.BattleHeroes[req.Position]
|
|
|
|
if battleHero.HeroUid == 0 {
|
|
|
|
_ = player.TipNotice(proto.TipBattleHeroNotSet)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var hero = player.Hero[battleHero.HeroUid]
|
|
|
|
if hero == nil {
|
|
|
|
_ = player.TipNotice(proto.TipHeroNotFound)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
var treasure *logic.PlayerTreasure
|
|
|
|
if req.TreasureUid != 0 {
|
|
|
|
treasure = player.Treasure[req.TreasureUid]
|
|
|
|
if treasure == nil {
|
|
|
|
_ = player.TipNotice(proto.TipTreasureNotFound)
|
|
|
|
return
|
|
|
|
}
|
2025-06-06 18:31:44 +08:00
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
var treasureTable = this.tables.Treasure.Find(int(treasure.Id))
|
|
|
|
if treasureTable == nil {
|
|
|
|
_ = player.TipNotice(proto.TipDataTablesError)
|
|
|
|
return
|
|
|
|
}
|
2025-06-06 18:31:44 +08:00
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
if req.TreasureType != pb.TreasureType(treasureTable.Type) {
|
|
|
|
_ = player.TipNotice(proto.TipParameterError)
|
|
|
|
return
|
|
|
|
}
|
2025-06-06 18:31:44 +08:00
|
|
|
}
|
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
var treasureIndex = int(req.TreasureType)
|
2025-06-06 18:31:44 +08:00
|
|
|
|
|
|
|
var battleHeroList []*pb.BattleHero
|
|
|
|
var treasureChangeList []*pb.TreasureChange
|
|
|
|
|
|
|
|
if battleHero.Treasure[treasureIndex] != 0 {
|
2025-06-06 18:49:30 +08:00
|
|
|
var preTreasure = player.Treasure[battleHero.Treasure[treasureIndex]]
|
|
|
|
if preTreasure != nil && preTreasure.HeroUid != 0 {
|
|
|
|
preTreasure.HeroUid = 0
|
|
|
|
player.SaveModel(preTreasure)
|
2025-06-06 18:31:44 +08:00
|
|
|
treasureChangeList = append(treasureChangeList, &pb.TreasureChange{
|
|
|
|
ChangeType: pb.ChangeType_Changed,
|
2025-06-06 18:49:30 +08:00
|
|
|
Treasure: preTreasure.BuildMsgTreasure(),
|
2025-06-06 18:31:44 +08:00
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
battleHero.Treasure[treasureIndex] = req.TreasureUid
|
2025-06-06 18:31:44 +08:00
|
|
|
player.SaveArray("battle_heroes", int(req.Position), battleHero)
|
|
|
|
battleHeroList = append(battleHeroList, battleHero.BuildMsgBattleHero(int(req.Position)))
|
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
if treasure != nil {
|
|
|
|
if treasure.HeroUid != 0 {
|
|
|
|
for i := range player.BattleHeroes {
|
|
|
|
if player.BattleHeroes[i].HeroUid == treasure.HeroUid {
|
|
|
|
var preBattleHero = player.BattleHeroes[i]
|
|
|
|
if preBattleHero.Treasure[treasureIndex] != 0 {
|
|
|
|
preBattleHero.Treasure[treasureIndex] = 0
|
|
|
|
player.SaveArray("battle_heroes", i, preBattleHero)
|
|
|
|
battleHeroList = append(battleHeroList, preBattleHero.BuildMsgBattleHero(i))
|
|
|
|
}
|
2025-06-06 18:31:44 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-06-06 18:49:30 +08:00
|
|
|
treasure.HeroUid = battleHero.HeroUid
|
|
|
|
player.SaveModel(treasure)
|
|
|
|
treasureChangeList = append(treasureChangeList, &pb.TreasureChange{
|
|
|
|
ChangeType: pb.ChangeType_Changed,
|
|
|
|
Treasure: treasure.BuildMsgTreasure(),
|
|
|
|
})
|
|
|
|
}
|
2025-06-06 18:31:44 +08:00
|
|
|
|
|
|
|
_ = player.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleBattleHeroChange), &pb.BattleHeroListAck{HeroList: battleHeroList})
|
|
|
|
_ = player.Send(uint16(pb.ModId_ModuleItem), uint16(pb.MsgId_ModItemTreasureChange), &pb.TreasureChangeListAck{ChangeList: treasureChangeList})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *PlayerHandler) BattleHeroArtifact(player *logic.Player, msg *net.Message) {}
|
|
|
|
|
|
|
|
func (this *PlayerHandler) BattleHeroMounts(player *logic.Player, msg *net.Message) {}
|
|
|
|
|
|
|
|
func (this *PlayerHandler) BattleHeroGeneral(player *logic.Player, msg *net.Message) {}
|
|
|
|
|
|
|
|
func (this *PlayerHandler) BattleHeroOrnament(player *logic.Player, msg *net.Message) {}
|
|
|
|
|
2025-06-04 18:17:39 +08:00
|
|
|
//
|
|
|
|
//func (this *PlayerHandler) RoleTalentUpgrade(player *logic.Player, msg *net.Message) {
|
|
|
|
// var req = new(proto.MsgRoleTalentUpgradeReq)
|
|
|
|
// var err = msg.Read(req)
|
|
|
|
// if err != nil {
|
|
|
|
// this.logger.Error("Read message failed, ", err)
|
|
|
|
// _ = player.TipNotice(proto.ErrMessageError)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// if req.Id == 0 {
|
|
|
|
// this.logger.Error("Parameter error, req.Id == 0")
|
|
|
|
// _ = player.TipNotice(proto.ErrParameterError)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// var talent = player.RoleTalent[req.Id]
|
|
|
|
//
|
|
|
|
// var nextLevelTable *data.TalentLevel
|
|
|
|
// if talent != nil {
|
|
|
|
// var talentTreeTable = this.tables.TalentTree.Get(int(talent.Id))
|
|
|
|
// if talentTreeTable == nil {
|
|
|
|
// this.logger.Error("Data error, TalentTree not found, id: ", talent.Id)
|
|
|
|
// _ = player.TipNotice(proto.ErrDataTablesError)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// var talentLevelTable = this.tables.TalentLevel.Get(int(talent.LevelId))
|
|
|
|
// if talentLevelTable == nil {
|
|
|
|
// this.logger.Error("Data error, TalentLevel not found, levelId: ", talent.LevelId)
|
|
|
|
// _ = player.TipNotice(proto.ErrDataTablesError)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// if talentLevelTable.Level >= talentTreeTable.MaxLevel {
|
|
|
|
// this.logger.Errorf("Talent level alreay max, level: %d, maxLevel: %d", talentLevelTable.Level, talentTreeTable.MaxLevel)
|
|
|
|
// _ = player.TipNotice(proto.ErrLevelAlreadyMax)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// nextLevelTable = this.tables.TalentLevelExtend.Get(talentTreeTable.Id, talentLevelTable.Level+1)
|
|
|
|
// if talentLevelTable == nil {
|
|
|
|
// this.logger.Errorf("Data error, TalentLevel not found, treeId: %d, nextLevel: %d", talentTreeTable.Id, talentLevelTable.Level+1)
|
|
|
|
// _ = player.TipNotice(proto.ErrDataTablesError)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// } else {
|
|
|
|
// var talentTreeTable = this.tables.TalentTree.Get(int(req.Id))
|
|
|
|
// if talentTreeTable == nil {
|
|
|
|
// this.logger.Error("Data error, TalentTree not found, id: ", req.Id)
|
|
|
|
// _ = player.TipNotice(proto.ErrDataTablesError)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// if len(talentTreeTable.Parents) > 0 {
|
|
|
|
// for _, parentId := range talentTreeTable.Parents {
|
|
|
|
// if parentId == 0 {
|
|
|
|
// continue
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// var parent = player.RoleTalent[uint32(parentId)]
|
|
|
|
// if parent == nil {
|
|
|
|
// this.logger.Error("Parent not found, parentId: ", parentId)
|
|
|
|
// _ = player.TipNotice(proto.ErrTalentNeedParentMax)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// var parentTreeTable = this.tables.TalentTree.Get(int(parent.Id))
|
|
|
|
// if parentTreeTable == nil {
|
|
|
|
// this.logger.Error("Data error, TalentTree not found, parentId: ", parent.Id)
|
|
|
|
// _ = player.TipNotice(proto.ErrDataTablesError)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// var parentLevelTable = this.tables.TalentLevel.Get(int(parent.LevelId))
|
|
|
|
// if parentLevelTable == nil {
|
|
|
|
// this.logger.Error("Data error, TalentLevel not found, parentLevelId: ", parent.LevelId)
|
|
|
|
// _ = player.TipNotice(proto.ErrDataTablesError)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// if parentLevelTable.Level < parentTreeTable.MaxLevel {
|
|
|
|
// this.logger.Errorf("Parent not level max, parentLevel: %d, maxLevel: %d", parentLevelTable.Level, parentTreeTable.MaxLevel)
|
|
|
|
// _ = player.TipNotice(proto.ErrTalentNeedParentMax)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// nextLevelTable = this.tables.TalentLevelExtend.Get(talentTreeTable.Id, 1)
|
|
|
|
// if nextLevelTable == nil {
|
|
|
|
// this.logger.Errorf("Data error, TalentLevel not found, treeId: %d, nextLevel: %d", talentTreeTable.Id, 1)
|
|
|
|
// _ = player.TipNotice(proto.ErrDataTablesError)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// talent = &logic.PlayerRoleTalent{Id: uint32(talentTreeTable.Id)}
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// err = player.CheckMoney(proto.MoneyType(nextLevelTable.MoneyType), uint32(nextLevelTable.MoneyNum))
|
|
|
|
// if err != nil {
|
|
|
|
// this.logger.Errorf("%s, moneyType: %d, moneyNum: %d", err.Error(), nextLevelTable.MoneyType, nextLevelTable.MoneyNum)
|
|
|
|
// _ = player.TipNotice(err)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// player.ReduceMoney(proto.MoneyType(nextLevelTable.MoneyType), uint32(nextLevelTable.MoneyNum), logic.LogTypeItemConsumeByTalentUpgrade)
|
|
|
|
//
|
|
|
|
// talent.LevelId = uint32(nextLevelTable.Id)
|
|
|
|
//
|
|
|
|
// player.RoleTalent[talent.Id] = talent
|
|
|
|
// player.SaveModel(talent)
|
|
|
|
//
|
|
|
|
// _ = player.Send(proto.ModIdRole, proto.MsgIdRoleTalentUpgrade, &proto.MsgRoleTalentUpgradeAck{RoleTalent: talent.BuildMsgRoleTalent()})
|
|
|
|
//
|
|
|
|
// player.UpdateRigAttrs()
|
|
|
|
// return
|
|
|
|
//}
|
|
|
|
//
|
|
|
|
//func (this *PlayerHandler) RoleTalentReset(player *logic.Player, _ *net.Message) {
|
|
|
|
// var monies = map[uint32]uint32{}
|
|
|
|
// for _, talent := range player.RoleTalent {
|
|
|
|
// var level = 0
|
|
|
|
// for {
|
|
|
|
// level++
|
|
|
|
// var talentLevelTable = this.tables.TalentLevelExtend.Get(int(talent.Id), level)
|
|
|
|
// if talentLevelTable == nil {
|
|
|
|
// continue
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// monies[uint32(talentLevelTable.MoneyType)] += uint32(talentLevelTable.MoneyNum)
|
|
|
|
//
|
|
|
|
// if uint32(talentLevelTable.Id) == talent.LevelId {
|
|
|
|
// break
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// player.RoleTalent = map[uint32]*logic.PlayerRoleTalent{}
|
|
|
|
// player.SaveField("role_talent", player.RoleTalent)
|
|
|
|
//
|
|
|
|
// for moneyType, moneyNum := range monies {
|
|
|
|
// player.AddMoney(proto.MoneyType(moneyType), moneyNum, logic.LogTypeItemObtainByTalentReturn)
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// _ = player.Send(proto.ModIdRole, proto.MsgIdRoleTalentReset, nil)
|
|
|
|
//
|
|
|
|
// player.UpdateRigAttrs()
|
|
|
|
// return
|
|
|
|
//}
|