diff --git a/gdconf/game_data_config/txt/AvatarSkillData.txt b/gdconf/game_data_config/txt/AvatarSkillData.txt index 674ac34b..3ee1edb7 100644 --- a/gdconf/game_data_config/txt/AvatarSkillData.txt +++ b/gdconf/game_data_config/txt/AvatarSkillData.txt @@ -1,15 +1,15 @@ ID Ability名称 是远程 技能CD 无视冷却缩减属性 消耗体力 消耗能量类型 消耗能量值 可累积次数 TriggerID 索敌范围 索敌公式权重1 索敌公式权重2 索敌公式权重3 索敌公式权重4 是默认镜头 支持按钮拖动 是否显示箭头 是否监控状态 默认锁定 图标名称 升级技能组ID 技能能量键值 消耗能量最小值 CanDoSkill为false强制可用 处理冷却所属技能槽 是否存档 shareCDID -10001 0 1 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 -10002 0 1 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 -10003 0 1 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 -10004 0 1 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 +10001 0 0 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 +10002 0 0 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 +10003 0 0 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 +10004 0 0 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 10006 1 0 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 10011 0 0 1 1 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 10101 10 0 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 10102 10 0 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 -10111 0 10 1 11 CircleLockEnemy 1 1 0.3 0 1 0 +10111 0 0 1 11 CircleLockEnemy 1 1 0.3 0 1 0 10012 2 0 1 2 CircleLockEnemyR15H10HC 1 1 0.3 0 1 0 -10013 0 1 1 3 CircleLockEnemyR5H6HC 1 1 0.3 0 1 1 233 1 +10013 0 15 1 3 CircleLockEnemyR5H6HC 1 1 0.3 0 1 1 233 1 10014 8 0 4 30 1 5 CircleLockEnemyR15H10HC 1 1 0.3 0 1 0 10015 8 0 1 4 CircleLockEnemyR15H10HC 1 1 0.3 0 1 0 10016 0 0 1 4 CircleLockEnemyR5H6HC 1 1 0.3 0 1 0 @@ -23,10 +23,10 @@ ID Ability名称 是远程 技能CD 无视冷却缩减属性 消耗体力 消耗 10024 Avatar_Ayaka_ExtraAttack 0 0 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 231 10031 Avatar_Qin_ExtraAttack 0 0 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 331 10032 15 0 1 2 CircleLockEnemyR15H10HC 1 1 0.3 0 1 2 1 2132 -10033 Avatar_Qin_VortexSmash 6 0 1 2 CircleLockEnemyR5H6HC 1 1 0.3 0 1 1 332 +10033 Avatar_Qin_VortexSmash 6 20 1 2 CircleLockEnemyR5H6HC 1 1 0.3 0 1 1 332 10034 Avatar_Qin_DandelionWind 20 0 7 80 1 5 CircleLockEnemyR15H10HC 1 1 0.3 0 1 339 10035 15 1 0 1 11 CircleLockEnemyR10 1 1 0.3 0 1 2 1 0 -10036 Avatar_Qin_EnterSkill 30 1 0 CircleLockEnemyR10 1 1 0.3 0 0 +10036 Avatar_Qin_EnterSkill 30 0 1 0 CircleLockEnemyR10 1 1 0.3 0 0 10037 Avatar_Player_FlyingBomber 2 1 0 1 0 CircleLockEnemyAmborFly 1 1 0.3 0 1 2 1 0 10038 1 1 0 1 11 CircleLockEnemyR10 1 1 0.3 0 1 2 1 0 10041 Avatar_Ambor_PressShoot 1 0 0 1 0 CircleLockEnemyR15H10HC 1 1 0.3 0 1 2131 @@ -176,9 +176,9 @@ ID Ability名称 是远程 技能CD 无视冷却缩减属性 消耗体力 消耗 10403 Diluc_FireCross 12 0 5 40 1 5 CircleLockEnemyR15H10HC 1 1 0.3 0 1 3639 10411 Avatar_Mona_ExtraAttack 0 0 1 0 CircleLockEnemyR15H10HC 1 1 0.3 0 1 4131 10412 12 0 1 2 CircleLockEnemyR15H10HC 1 1 0.3 0 1 4132 -10413 0 1 1 3 CircleLockEnemyR5H6HC 1 1 0.3 0 1 1 4133 1 +10413 0 15 1 3 CircleLockEnemyR5H6HC 1 1 0.3 0 1 1 4133 1 10415 15 0 2 60 1 5 CircleLockEnemyR15H10HC 1 1 0.3 0 1 4139 -10421 Avatar_Keqing_ExtraAttack 0 0 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 4231 +10421 Avatar_Keqing_ExtraAttack 0 25 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 4231 10422 7.5 0 1 2 CircleLockEnemyR15H10HC 1 1 0.3 0 1 4232 10423 0 0 1 3 CircleLockEnemyR15H10HC 1 1 0.3 0 1 0 10425 12 0 4 40 1 5 CircleLockEnemyR5H6HC 1 1 0.3 0 1 4239 @@ -242,7 +242,7 @@ ID Ability名称 是远程 技能CD 无视冷却缩减属性 消耗体力 消耗 10582 4 0 3 2 CircleLockEnemyR15H10HC 1 1 0.3 0 1 1 5832 10583 4 0 3 3 CircleLockEnemyR15H10HC 1 1 0.3 0 1 0 10585 22 0 4 90 1 5 CircleLockEnemyR15H10HC 1 1 0.3 0 1 5839 -10591 Avatar_Heizo_ExtraAttack 0 0 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 5931 +10591 Avatar_Heizo_ExtraAttack 0 25 1 0 CircleLockEnemyR5H6HC 1 1 0.3 0 1 5931 10592 10 0 1 2 CircleLockEnemyR8H6HC 1 1 0.3 0 1 5932 10595 12 0 7 40 1 5 CircleLockEnemyR15H10HC 1 1 0.3 0 1 5939 10602 13.5 0 1 22 CircleLockEnemyR15H10HC 1 1 0.3 0 1 1032 @@ -310,8 +310,8 @@ ID Ability名称 是远程 技能CD 无视冷却缩减属性 消耗体力 消耗 10755 15 0 7 60 1 5 CircleLockEnemyR15H10HC 1 1 0.3 0 1 7539 10757 0 0 1 7 CircleLockEnemyR8H6HC 1 1 0.3 0 1 10758 Avatar_Wanderer_ElementalArt_HoverAir_Shoot 0 0 1 0 CircleLockEnemyR15H10HC 1 1 0.3 0 1 -10759 0 1 1 8 CircleLockEnemyR15H10HC 1 1 0.3 0 1 1 0 1 -10750 0 1 1 9 CircleLockEnemyR15H10HC 1 1 0.3 0 1 1 +10759 0 0 1 8 CircleLockEnemyR15H10HC 1 1 0.3 0 1 1 0 1 +10750 0 0 1 9 CircleLockEnemyR15H10HC 1 1 0.3 0 1 1 10761 Avatar_Faruzan_PressShoot 1 0 0 1 0 CircleLockEnemyR15H10HC 1 1 0.3 0 1 0 10762 8 0 1 2 CircleLockEnemyR15H10HC 1 1 0.3 0 1 0 10764 Avatar_Faruzan_AimPressShoot 1 0 0 1 0 CircleLockEnemyR15H10HC 1 1 0.3 0 1 0 diff --git a/gs/game/player_avatar.go b/gs/game/player_avatar.go index 128760c2..62c64b78 100644 --- a/gs/game/player_avatar.go +++ b/gs/game/player_avatar.go @@ -23,6 +23,10 @@ func (g *GameManager) GetAllAvatarDataConfig() map[int32]*gdconf.AvatarData { // 跳过主角 continue } + if avatarId >= 10000079 { + // 跳过后续版本的角色 + continue + } allAvatarDataConfig[avatarId] = avatarData } return allAvatarDataConfig @@ -67,8 +71,18 @@ func (g *GameManager) WearEquipReq(player *model.Player, payloadMsg pb.Message) req := payloadMsg.(*proto.WearEquipReq) avatarGuid := req.AvatarGuid equipGuid := req.EquipGuid - avatar := player.GameObjectGuidMap[avatarGuid].(*model.Avatar) - weapon := player.GameObjectGuidMap[equipGuid].(*model.Weapon) + avatar, ok := player.GameObjectGuidMap[avatarGuid].(*model.Avatar) + if !ok { + logger.Error("avatar error, avatar guid: %v", avatarGuid) + g.CommonRetError(cmd.WearEquipRsp, player, &proto.WearEquipRsp{}) + return + } + weapon, ok := player.GameObjectGuidMap[equipGuid].(*model.Weapon) + if !ok { + logger.Error("equip error, equip guid: %v", equipGuid) + g.CommonRetError(cmd.WearEquipRsp, player, &proto.WearEquipRsp{}) + return + } g.WearUserAvatarEquip(player.PlayerID, avatar.AvatarId, weapon.WeaponId) wearEquipRsp := &proto.WearEquipRsp{ @@ -203,23 +217,30 @@ func (g *GameManager) AvatarWearFlycloakReq(player *model.Player, payloadMsg pb. } func (g *GameManager) PacketAvatarEquipChangeNotify(avatar *model.Avatar, weapon *model.Weapon, entityId uint32) *proto.AvatarEquipChangeNotify { + itemDataConfig, ok := gdconf.CONF.ItemDataMap[int32(weapon.ItemId)] + if !ok { + logger.Error("item data config error, item id: %v") + return new(proto.AvatarEquipChangeNotify) + } avatarEquipChangeNotify := &proto.AvatarEquipChangeNotify{ AvatarGuid: avatar.Guid, ItemId: weapon.ItemId, EquipGuid: weapon.Guid, } + switch itemDataConfig.Type { + case int32(constant.ItemTypeConst.ITEM_WEAPON): + avatarEquipChangeNotify.EquipType = uint32(constant.EquipTypeConst.EQUIP_WEAPON) + case int32(constant.ItemTypeConst.ITEM_RELIQUARY): + avatarEquipChangeNotify.EquipType = uint32(itemDataConfig.ReliquaryType) + } avatarEquipChangeNotify.Weapon = &proto.SceneWeaponInfo{ EntityId: entityId, - GadgetId: uint32(gdconf.CONF.ItemDataMap[int32(weapon.ItemId)].GadgetId), + GadgetId: uint32(itemDataConfig.GadgetId), ItemId: weapon.ItemId, Guid: weapon.Guid, Level: uint32(weapon.Level), AbilityInfo: new(proto.AbilitySyncStateInfo), } - itemDataConfig, exist := gdconf.CONF.ItemDataMap[int32(weapon.ItemId)] - if exist { - avatarEquipChangeNotify.EquipType = uint32(itemDataConfig.Type) - } return avatarEquipChangeNotify } diff --git a/gs/game/player_fight_sync.go b/gs/game/player_fight_sync.go index 7bc61ead..3f181b67 100644 --- a/gs/game/player_fight_sync.go +++ b/gs/game/player_fight_sync.go @@ -394,6 +394,7 @@ func (g *GameManager) ClientAbilityChangeNotify(player *model.Player, payloadMsg } ok := utils.UnmarshalProtoObj(abilityMetaAddAbility, clientProtoObj, abilityInvokeEntry.AbilityData) if !ok { + logger.Error("AbilityMetaAddAbility proto error") continue } } else { @@ -421,6 +422,7 @@ func (g *GameManager) ClientAbilityChangeNotify(player *model.Player, payloadMsg } ok := utils.UnmarshalProtoObj(abilityMetaModifierChange, clientProtoObj, abilityInvokeEntry.AbilityData) if !ok { + logger.Error("AbilityMetaModifierChange proto error") continue } } else { diff --git a/gs/game/player_gcg.go b/gs/game/player_gcg.go index a1227978..c66d7fad 100644 --- a/gs/game/player_gcg.go +++ b/gs/game/player_gcg.go @@ -16,26 +16,30 @@ func (g *GameManager) GCGLogin(player *model.Player) { // player.Pos.X = 8.974 // player.Pos.Y = 0 // player.Pos.Z = 9.373 - // GCG基础信息 - g.SendMsg(cmd.GCGBasicDataNotify, player.PlayerID, player.ClientSeq, g.PacketGCGBasicDataNotify(player)) - // GCG等级挑战解锁 - g.SendMsg(cmd.GCGLevelChallengeNotify, player.PlayerID, player.ClientSeq, g.PacketGCGLevelChallengeNotify(player)) - // GCG禁止的卡牌 - g.SendMsg(cmd.GCGDSBanCardNotify, player.PlayerID, player.ClientSeq, g.PacketGCGDSBanCardNotify(player)) - // GCG解锁或拥有的内容 - g.SendMsg(cmd.GCGDSDataNotify, player.PlayerID, player.ClientSeq, g.PacketGCGDSDataNotify(player)) - // GCG酒馆挑战数据 - g.SendMsg(cmd.GCGTCTavernChallengeDataNotify, player.PlayerID, player.ClientSeq, g.PacketGCGTCTavernChallengeDataNotify(player)) + + // GCG目前可能有点问题先不发送 + // 以后再慢慢搞 + + // // GCG基础信息 + // g.SendMsg(cmd.GCGBasicDataNotify, player.PlayerID, player.ClientSeq, g.PacketGCGBasicDataNotify(player)) + // // GCG等级挑战解锁 + // g.SendMsg(cmd.GCGLevelChallengeNotify, player.PlayerID, player.ClientSeq, g.PacketGCGLevelChallengeNotify(player)) + // // GCG禁止的卡牌 + // g.SendMsg(cmd.GCGDSBanCardNotify, player.PlayerID, player.ClientSeq, g.PacketGCGDSBanCardNotify(player)) + // // GCG解锁或拥有的内容 + // g.SendMsg(cmd.GCGDSDataNotify, player.PlayerID, player.ClientSeq, g.PacketGCGDSDataNotify(player)) + // // GCG酒馆挑战数据 + // g.SendMsg(cmd.GCGTCTavernChallengeDataNotify, player.PlayerID, player.ClientSeq, g.PacketGCGTCTavernChallengeDataNotify(player)) } // GCGTavernInit GCG酒馆初始化 func (g *GameManager) GCGTavernInit(player *model.Player) { - if player.SceneId == 1076 { - // GCG酒馆信息通知 - g.SendMsg(cmd.GCGTCTavernInfoNotify, player.PlayerID, player.ClientSeq, g.PacketGCGTCTavernInfoNotify(player)) - // GCG酒馆NPC信息通知 - g.SendMsg(cmd.GCGTavernNpcInfoNotify, player.PlayerID, player.ClientSeq, g.PacketGCGTavernNpcInfoNotify(player)) - } + // if player.SceneId == 1076 { + // // GCG酒馆信息通知 + // g.SendMsg(cmd.GCGTCTavernInfoNotify, player.PlayerID, player.ClientSeq, g.PacketGCGTCTavernInfoNotify(player)) + // // GCG酒馆NPC信息通知 + // g.SendMsg(cmd.GCGTavernNpcInfoNotify, player.PlayerID, player.ClientSeq, g.PacketGCGTavernNpcInfoNotify(player)) + // } } // GCGStartChallenge GCG开始挑战 diff --git a/gs/game/player_team.go b/gs/game/player_team.go index d36c0f20..525ed747 100644 --- a/gs/game/player_team.go +++ b/gs/game/player_team.go @@ -19,6 +19,7 @@ func (g *GameManager) ChangeAvatarReq(player *model.Player, payloadMsg pb.Messag world := WORLD_MANAGER.GetWorldByID(player.WorldId) scene := world.GetSceneById(player.SceneId) targetAvatarId := player.GetAvatarIdByGuid(targetAvatarGuid) + logger.Error("avatarId: %v", targetAvatarGuid) oldAvatarId := world.GetPlayerActiveAvatarId(player) if targetAvatarId == oldAvatarId { logger.Error("can not change to the same avatar, uid: %v, oldAvatarId: %v, targetAvatarId: %v", player.PlayerID, oldAvatarId, targetAvatarId)