From ae4c505e4891d69828745fa51337fac0648c200b Mon Sep 17 00:00:00 2001 From: flswld Date: Thu, 9 Feb 2023 19:20:47 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=A1=A8=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=8C=96=EF=BC=8C=E7=AE=80=E5=8C=96=E5=B8=B8?= =?UTF-8?q?=E9=87=8F=E8=AE=BF=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant/action_reason.go | 530 +++++--------- common/constant/climate_type.go | 32 +- common/constant/constant.go | 25 - common/constant/default_ability.go | 26 + common/constant/element_type.go | 87 +-- common/constant/enter_reason.go | 107 +-- common/constant/entity_id_type.go | 32 +- common/constant/entity_type.go | 235 ++---- common/constant/equip_type.go | 43 +- common/constant/fetter_state.go | 23 +- common/constant/fight_property.go | 399 +++------- common/constant/game_constant.go | 32 - common/constant/gcg_token_type.go | 23 +- common/constant/grow_curve.go | 191 ++--- common/constant/item_constant.go | 70 +- common/constant/item_type.go | 43 +- common/constant/life_state.go | 23 +- common/constant/material_type.go | 131 +--- common/constant/open_state.go | 678 ++++++++--------- common/constant/player_prop.go | 137 ++-- common/constant/scene_type.go | 32 +- common/constant/stamina_cost.go | 83 +-- common/constant/weapon_type.go | 53 +- fight/app/app.go | 3 - fight/engine/fight_engine.go | 10 +- gdconf/avatar_data.go | 16 +- gdconf/avatar_level_data.go | 12 +- gdconf/avatar_promote_data.go | 12 +- gdconf/avatar_skill_data.go | 11 +- gdconf/avatar_skill_depot_data.go | 13 +- gdconf/fetter_data.go | 13 + gdconf/game_data_config.go | 4 +- gdconf/game_data_config_test.go | 2 +- gdconf/gather_data.go | 13 + gdconf/gcg_char_data.go | 11 +- gdconf/gcg_skill_data.go | 14 +- gdconf/item_data.go | 16 +- gdconf/player_level_data.go | 12 +- gdconf/reward_data.go | 12 +- gdconf/scene_data.go | 9 + .../{scene_data_config.go => scene_detail.go} | 34 +- gdconf/scene_point.go | 18 + gdconf/scene_tag_data.go | 9 + gdconf/weapon_level_data.go | 12 +- gdconf/weapon_promote_data.go | 12 +- gdconf/world_area_data.go | 9 + gs/app/app.go | 2 - gs/game/command_gm.go | 2 +- gs/game/game_manager.go | 11 +- gs/game/gcg_manager.go | 24 +- gs/game/player_avatar.go | 136 ++-- gs/game/player_base.go | 30 +- gs/game/player_fight_sync.go | 6 +- gs/game/player_gcg.go | 10 +- gs/game/player_item.go | 24 +- gs/game/player_login.go | 72 +- gs/game/player_map.go | 37 +- gs/game/player_multiplayer.go | 20 +- gs/game/player_scene.go | 158 ++-- gs/game/player_shop.go | 2 +- gs/game/player_social.go | 24 +- gs/game/player_stamina.go | 70 +- gs/game/player_team.go | 14 +- gs/game/player_weapon.go | 110 ++- gs/game/route_manager.go | 2 +- gs/game/tick_manager.go | 6 +- gs/game/world_manager.go | 679 +----------------- gs/game/world_scene.go | 673 +++++++++++++++++ gs/model/avatar.go | 46 +- gs/model/item.go | 2 +- gs/model/reliquary.go | 4 +- gs/model/stamina.go | 20 +- gs/model/team.go | 2 +- gs/model/weapon.go | 4 +- 74 files changed, 2313 insertions(+), 3189 deletions(-) delete mode 100644 common/constant/constant.go create mode 100644 common/constant/default_ability.go delete mode 100644 common/constant/game_constant.go rename gdconf/{scene_data_config.go => scene_detail.go} (90%) create mode 100644 gs/game/world_scene.go diff --git a/common/constant/action_reason.go b/common/constant/action_reason.go index f8f9473b..b751d530 100644 --- a/common/constant/action_reason.go +++ b/common/constant/action_reason.go @@ -1,357 +1,177 @@ package constant -var ActionReasonConst *ActionReason - -type ActionReason struct { - None uint16 - QuestItem uint16 - QuestReward uint16 - Trifle uint16 - Shop uint16 - PlayerUpgradeReward uint16 - AddAvatar uint16 - GadgetEnvAnimal uint16 - MonsterEnvAnimal uint16 - Compound uint16 - Cook uint16 - Gather uint16 - MailAttachment uint16 - CityLevelupReturn uint16 - CityLevelupReward uint16 - AreaExploreReward uint16 - UnlockPointReward uint16 - DungeonFirstPass uint16 - DungeonPass uint16 - ChangeElemType uint16 - FetterOpen uint16 - DailyTaskScore uint16 - DailyTaskHost uint16 - RandTaskHost uint16 - Expedition uint16 - Gacha uint16 - Combine uint16 - RandTaskGuest uint16 - DailyTaskGuest uint16 - ForgeOutput uint16 - ForgeReturn uint16 - InitAvatar uint16 - MonsterDie uint16 - Gm uint16 - OpenChest uint16 - GadgetDie uint16 - MonsterChangeHp uint16 - SubfieldDrop uint16 - PushTipsReward uint16 - ActivityMonsterDrop uint16 - ActivityGather uint16 - ActivitySubfieldDrop uint16 - TowerScheduleReward uint16 - TowerFloorStarReward uint16 - TowerFirstPassReward uint16 - TowerDailyReward uint16 - HitClientTrivialEntity uint16 - OpenWorldBossChest uint16 - MaterialDeleteReturn uint16 - SignInReward uint16 - OpenBlossomChest uint16 - Recharge uint16 - BonusActivityReward uint16 - TowerCommemorativeReward uint16 - TowerSkipFloorReward uint16 - RechargeBonus uint16 - RechargeCard uint16 - RechargeCardDaily uint16 - RechargeCardReplace uint16 - RechargeCardReplaceFree uint16 - RechargePlayReplace uint16 - MpPlayTakeReward uint16 - ActivityWatcher uint16 - SalesmanDeliverItem uint16 - SalesmanReward uint16 - Rebate uint16 - McoinExchangeHcoin uint16 - DailyTaskExchangeLegendaryKey uint16 - UnlockPersonLine uint16 - FetterLevelReward uint16 - BuyResin uint16 - RechargePackage uint16 - DeliveryDailyReward uint16 - CityReputationLevel uint16 - CityReputationQuest uint16 - CityReputationRequest uint16 - CityReputationExplore uint16 - OffergingLevel uint16 - RoutineHost uint16 - RoutineGuest uint16 - TreasureMapSpotToken uint16 - TreasureMapBonusLevelReward uint16 - TreasureMapMpReward uint16 - Convert uint16 - OverflowTransform uint16 - ActivityAvatarSelectionReward uint16 - ActivityWatcherBatch uint16 - HitTreeDrop uint16 - GetHomeLevelupReward uint16 - HomeDefaultFurniture uint16 - ActivityCond uint16 - BattlePassNotify uint16 - PlayerUseItem uint16 - DropItem uint16 - WeaponUpgrade uint16 - WeaponPromote uint16 - WeaponAwaken uint16 - RelicUpgrade uint16 - Ability uint16 - DungeonStatueDrop uint16 - OfflineMsg uint16 - AvatarUpgrade uint16 - AvatarPromote uint16 - QuestAction uint16 - CityLevelup uint16 - UpgradeSkill uint16 - UnlockTalent uint16 - UpgradeProudSkill uint16 - PlayerLevelLimitUp uint16 - DungeonDaily uint16 - ItemGiving uint16 - ForgeCost uint16 - InvestigationReward uint16 - InvestigationTargetReward uint16 - GadgetInteract uint16 - SeaLampCiMaterial uint16 - SeaLampContributionReward uint16 - SeaLampPhaseReward uint16 - SeaLampFlyLamp uint16 - AutoRecover uint16 - ActivityExpireItem uint16 - SubCoinNegative uint16 - BargainDeduct uint16 - BattlePassPaidReward uint16 - BattlePassLevelReward uint16 - TrialAvatarActivityFirstPassReward uint16 - BuyBattlePassLevel uint16 - GrantBirthdayBenefit uint16 - AchievementReward uint16 - AchievementGoalReward uint16 - FirstShareToSocialNetwork uint16 - DestroyMaterial uint16 - CodexLevelupReward uint16 - HuntingOfferReward uint16 - UseWidgetAnchorPoint uint16 - UseWidgetBonfire uint16 - UngradeWeaponReturnMaterial uint16 - UseWidgetOneoffGatherPointDetector uint16 - UseWidgetClientCollector uint16 - UseWidgetClientDetector uint16 - TakeGeneralReward uint16 - AsterTakeSpecialReward uint16 - RemoveCodexBook uint16 - OfferingItem uint16 - UseWidgetGadgetBuilder uint16 - EffigyFirstPassReward uint16 - EffigyReward uint16 - ReunionFirstGiftReward uint16 - ReunionSignInReward uint16 - ReunionWatcherReward uint16 - SalesmanMpReward uint16 - ActionReasionAvatarPromoteReward uint16 - BlessingRedeemReward uint16 - ActionMiracleRingReward uint16 - ExpeditionReward uint16 - TreasureMapRemoveDetector uint16 - MechanicusDungeonTicket uint16 - MechanicusLevelupGear uint16 - MechanicusBattleSettle uint16 - RegionSearchReward uint16 - UnlockCoopChapter uint16 - TakeCoopReward uint16 - FleurFairDungeonReward uint16 - ActivityScore uint16 - ChannellerSlabOneoffDungeonReward uint16 - FurnitureMakeStart uint16 - FurnitureMakeTake uint16 - FurnitureMakeCancel uint16 - FurnitureMakeFastFinish uint16 - ChannellerSlabLoopDungeonFirstPassReward uint16 - ChannellerSlabLoopDungeonScoreReward uint16 - HomeLimitedShopBuy uint16 - HomeCoinCollect uint16 -} - -func InitActionReasonConst() { - ActionReasonConst = new(ActionReason) - - ActionReasonConst.None = 0 - ActionReasonConst.QuestItem = 1 - ActionReasonConst.QuestReward = 2 - ActionReasonConst.Trifle = 3 - ActionReasonConst.Shop = 4 - ActionReasonConst.PlayerUpgradeReward = 5 - ActionReasonConst.AddAvatar = 6 - ActionReasonConst.GadgetEnvAnimal = 7 - ActionReasonConst.MonsterEnvAnimal = 8 - ActionReasonConst.Compound = 9 - ActionReasonConst.Cook = 10 - ActionReasonConst.Gather = 11 - ActionReasonConst.MailAttachment = 12 - ActionReasonConst.CityLevelupReturn = 15 - ActionReasonConst.CityLevelupReward = 17 - ActionReasonConst.AreaExploreReward = 18 - ActionReasonConst.UnlockPointReward = 19 - ActionReasonConst.DungeonFirstPass = 20 - ActionReasonConst.DungeonPass = 21 - ActionReasonConst.ChangeElemType = 23 - ActionReasonConst.FetterOpen = 25 - ActionReasonConst.DailyTaskScore = 26 - ActionReasonConst.DailyTaskHost = 27 - ActionReasonConst.RandTaskHost = 28 - ActionReasonConst.Expedition = 29 - ActionReasonConst.Gacha = 30 - ActionReasonConst.Combine = 31 - ActionReasonConst.RandTaskGuest = 32 - ActionReasonConst.DailyTaskGuest = 33 - ActionReasonConst.ForgeOutput = 34 - ActionReasonConst.ForgeReturn = 35 - ActionReasonConst.InitAvatar = 36 - ActionReasonConst.MonsterDie = 37 - ActionReasonConst.Gm = 38 - ActionReasonConst.OpenChest = 39 - ActionReasonConst.GadgetDie = 40 - ActionReasonConst.MonsterChangeHp = 41 - ActionReasonConst.SubfieldDrop = 42 - ActionReasonConst.PushTipsReward = 43 - ActionReasonConst.ActivityMonsterDrop = 44 - ActionReasonConst.ActivityGather = 45 - ActionReasonConst.ActivitySubfieldDrop = 46 - ActionReasonConst.TowerScheduleReward = 47 - ActionReasonConst.TowerFloorStarReward = 48 - ActionReasonConst.TowerFirstPassReward = 49 - ActionReasonConst.TowerDailyReward = 50 - ActionReasonConst.HitClientTrivialEntity = 51 - ActionReasonConst.OpenWorldBossChest = 52 - ActionReasonConst.MaterialDeleteReturn = 53 - ActionReasonConst.SignInReward = 54 - ActionReasonConst.OpenBlossomChest = 55 - ActionReasonConst.Recharge = 56 - ActionReasonConst.BonusActivityReward = 57 - ActionReasonConst.TowerCommemorativeReward = 58 - ActionReasonConst.TowerSkipFloorReward = 59 - ActionReasonConst.RechargeBonus = 60 - ActionReasonConst.RechargeCard = 61 - ActionReasonConst.RechargeCardDaily = 62 - ActionReasonConst.RechargeCardReplace = 63 - ActionReasonConst.RechargeCardReplaceFree = 64 - ActionReasonConst.RechargePlayReplace = 65 - ActionReasonConst.MpPlayTakeReward = 66 - ActionReasonConst.ActivityWatcher = 67 - ActionReasonConst.SalesmanDeliverItem = 68 - ActionReasonConst.SalesmanReward = 69 - ActionReasonConst.Rebate = 70 - ActionReasonConst.McoinExchangeHcoin = 71 - ActionReasonConst.DailyTaskExchangeLegendaryKey = 72 - ActionReasonConst.UnlockPersonLine = 73 - ActionReasonConst.FetterLevelReward = 74 - ActionReasonConst.BuyResin = 75 - ActionReasonConst.RechargePackage = 76 - ActionReasonConst.DeliveryDailyReward = 77 - ActionReasonConst.CityReputationLevel = 78 - ActionReasonConst.CityReputationQuest = 79 - ActionReasonConst.CityReputationRequest = 80 - ActionReasonConst.CityReputationExplore = 81 - ActionReasonConst.OffergingLevel = 82 - ActionReasonConst.RoutineHost = 83 - ActionReasonConst.RoutineGuest = 84 - ActionReasonConst.TreasureMapSpotToken = 89 - ActionReasonConst.TreasureMapBonusLevelReward = 90 - ActionReasonConst.TreasureMapMpReward = 91 - ActionReasonConst.Convert = 92 - ActionReasonConst.OverflowTransform = 93 - ActionReasonConst.ActivityAvatarSelectionReward = 96 - ActionReasonConst.ActivityWatcherBatch = 97 - ActionReasonConst.HitTreeDrop = 98 - ActionReasonConst.GetHomeLevelupReward = 99 - ActionReasonConst.HomeDefaultFurniture = 100 - ActionReasonConst.ActivityCond = 101 - ActionReasonConst.BattlePassNotify = 102 - ActionReasonConst.PlayerUseItem = 1001 - ActionReasonConst.DropItem = 1002 - ActionReasonConst.WeaponUpgrade = 1011 - ActionReasonConst.WeaponPromote = 1012 - ActionReasonConst.WeaponAwaken = 1013 - ActionReasonConst.RelicUpgrade = 1014 - ActionReasonConst.Ability = 1015 - ActionReasonConst.DungeonStatueDrop = 1016 - ActionReasonConst.OfflineMsg = 1017 - ActionReasonConst.AvatarUpgrade = 1018 - ActionReasonConst.AvatarPromote = 1019 - ActionReasonConst.QuestAction = 1021 - ActionReasonConst.CityLevelup = 1022 - ActionReasonConst.UpgradeSkill = 1024 - ActionReasonConst.UnlockTalent = 1025 - ActionReasonConst.UpgradeProudSkill = 1026 - ActionReasonConst.PlayerLevelLimitUp = 1027 - ActionReasonConst.DungeonDaily = 1028 - ActionReasonConst.ItemGiving = 1030 - ActionReasonConst.ForgeCost = 1031 - ActionReasonConst.InvestigationReward = 1032 - ActionReasonConst.InvestigationTargetReward = 1033 - ActionReasonConst.GadgetInteract = 1034 - ActionReasonConst.SeaLampCiMaterial = 1036 - ActionReasonConst.SeaLampContributionReward = 1037 - ActionReasonConst.SeaLampPhaseReward = 1038 - ActionReasonConst.SeaLampFlyLamp = 1039 - ActionReasonConst.AutoRecover = 1040 - ActionReasonConst.ActivityExpireItem = 1041 - ActionReasonConst.SubCoinNegative = 1042 - ActionReasonConst.BargainDeduct = 1043 - ActionReasonConst.BattlePassPaidReward = 1044 - ActionReasonConst.BattlePassLevelReward = 1045 - ActionReasonConst.TrialAvatarActivityFirstPassReward = 1046 - ActionReasonConst.BuyBattlePassLevel = 1047 - ActionReasonConst.GrantBirthdayBenefit = 1048 - ActionReasonConst.AchievementReward = 1049 - ActionReasonConst.AchievementGoalReward = 1050 - ActionReasonConst.FirstShareToSocialNetwork = 1051 - ActionReasonConst.DestroyMaterial = 1052 - ActionReasonConst.CodexLevelupReward = 1053 - ActionReasonConst.HuntingOfferReward = 1054 - ActionReasonConst.UseWidgetAnchorPoint = 1055 - ActionReasonConst.UseWidgetBonfire = 1056 - ActionReasonConst.UngradeWeaponReturnMaterial = 1057 - ActionReasonConst.UseWidgetOneoffGatherPointDetector = 1058 - ActionReasonConst.UseWidgetClientCollector = 1059 - ActionReasonConst.UseWidgetClientDetector = 1060 - ActionReasonConst.TakeGeneralReward = 1061 - ActionReasonConst.AsterTakeSpecialReward = 1062 - ActionReasonConst.RemoveCodexBook = 1063 - ActionReasonConst.OfferingItem = 1064 - ActionReasonConst.UseWidgetGadgetBuilder = 1065 - ActionReasonConst.EffigyFirstPassReward = 1066 - ActionReasonConst.EffigyReward = 1067 - ActionReasonConst.ReunionFirstGiftReward = 1068 - ActionReasonConst.ReunionSignInReward = 1069 - ActionReasonConst.ReunionWatcherReward = 1070 - ActionReasonConst.SalesmanMpReward = 1071 - ActionReasonConst.ActionReasionAvatarPromoteReward = 1072 - ActionReasonConst.BlessingRedeemReward = 1073 - ActionReasonConst.ActionMiracleRingReward = 1074 - ActionReasonConst.ExpeditionReward = 1075 - ActionReasonConst.TreasureMapRemoveDetector = 1076 - ActionReasonConst.MechanicusDungeonTicket = 1077 - ActionReasonConst.MechanicusLevelupGear = 1078 - ActionReasonConst.MechanicusBattleSettle = 1079 - ActionReasonConst.RegionSearchReward = 1080 - ActionReasonConst.UnlockCoopChapter = 1081 - ActionReasonConst.TakeCoopReward = 1082 - ActionReasonConst.FleurFairDungeonReward = 1083 - ActionReasonConst.ActivityScore = 1084 - ActionReasonConst.ChannellerSlabOneoffDungeonReward = 1085 - ActionReasonConst.FurnitureMakeStart = 1086 - ActionReasonConst.FurnitureMakeTake = 1087 - ActionReasonConst.FurnitureMakeCancel = 1088 - ActionReasonConst.FurnitureMakeFastFinish = 1089 - ActionReasonConst.ChannellerSlabLoopDungeonFirstPassReward = 1090 - ActionReasonConst.ChannellerSlabLoopDungeonScoreReward = 1091 - ActionReasonConst.HomeLimitedShopBuy = 1092 - ActionReasonConst.HomeCoinCollect = 1093 -} +const ( + ActionReasonNone uint16 = 0 + ActionReasonQuestItem uint16 = 1 + ActionReasonQuestReward uint16 = 2 + ActionReasonTrifle uint16 = 3 + ActionReasonShop uint16 = 4 + ActionReasonPlayerUpgradeReward uint16 = 5 + ActionReasonAddAvatar uint16 = 6 + ActionReasonGadgetEnvAnimal uint16 = 7 + ActionReasonMonsterEnvAnimal uint16 = 8 + ActionReasonCompound uint16 = 9 + ActionReasonCook uint16 = 10 + ActionReasonGather uint16 = 11 + ActionReasonMailAttachment uint16 = 12 + ActionReasonCityLevelupReturn uint16 = 15 + ActionReasonCityLevelupReward uint16 = 17 + ActionReasonAreaExploreReward uint16 = 18 + ActionReasonUnlockPointReward uint16 = 19 + ActionReasonDungeonFirstPass uint16 = 20 + ActionReasonDungeonPass uint16 = 21 + ActionReasonChangeElemType uint16 = 23 + ActionReasonFetterOpen uint16 = 25 + ActionReasonDailyTaskScore uint16 = 26 + ActionReasonDailyTaskHost uint16 = 27 + ActionReasonRandTaskHost uint16 = 28 + ActionReasonExpedition uint16 = 29 + ActionReasonGacha uint16 = 30 + ActionReasonCombine uint16 = 31 + ActionReasonRandTaskGuest uint16 = 32 + ActionReasonDailyTaskGuest uint16 = 33 + ActionReasonForgeOutput uint16 = 34 + ActionReasonForgeReturn uint16 = 35 + ActionReasonInitAvatar uint16 = 36 + ActionReasonMonsterDie uint16 = 37 + ActionReasonGm uint16 = 38 + ActionReasonOpenChest uint16 = 39 + ActionReasonGadgetDie uint16 = 40 + ActionReasonMonsterChangeHp uint16 = 41 + ActionReasonSubfieldDrop uint16 = 42 + ActionReasonPushTipsReward uint16 = 43 + ActionReasonActivityMonsterDrop uint16 = 44 + ActionReasonActivityGather uint16 = 45 + ActionReasonActivitySubfieldDrop uint16 = 46 + ActionReasonTowerScheduleReward uint16 = 47 + ActionReasonTowerFloorStarReward uint16 = 48 + ActionReasonTowerFirstPassReward uint16 = 49 + ActionReasonTowerDailyReward uint16 = 50 + ActionReasonHitClientTrivialEntity uint16 = 51 + ActionReasonOpenWorldBossChest uint16 = 52 + ActionReasonMaterialDeleteReturn uint16 = 53 + ActionReasonSignInReward uint16 = 54 + ActionReasonOpenBlossomChest uint16 = 55 + ActionReasonRecharge uint16 = 56 + ActionReasonBonusActivityReward uint16 = 57 + ActionReasonTowerCommemorativeReward uint16 = 58 + ActionReasonTowerSkipFloorReward uint16 = 59 + ActionReasonRechargeBonus uint16 = 60 + ActionReasonRechargeCard uint16 = 61 + ActionReasonRechargeCardDaily uint16 = 62 + ActionReasonRechargeCardReplace uint16 = 63 + ActionReasonRechargeCardReplaceFree uint16 = 64 + ActionReasonRechargePlayReplace uint16 = 65 + ActionReasonMpPlayTakeReward uint16 = 66 + ActionReasonActivityWatcher uint16 = 67 + ActionReasonSalesmanDeliverItem uint16 = 68 + ActionReasonSalesmanReward uint16 = 69 + ActionReasonRebate uint16 = 70 + ActionReasonMcoinExchangeHcoin uint16 = 71 + ActionReasonDailyTaskExchangeLegendaryKey uint16 = 72 + ActionReasonUnlockPersonLine uint16 = 73 + ActionReasonFetterLevelReward uint16 = 74 + ActionReasonBuyResin uint16 = 75 + ActionReasonRechargePackage uint16 = 76 + ActionReasonDeliveryDailyReward uint16 = 77 + ActionReasonCityReputationLevel uint16 = 78 + ActionReasonCityReputationQuest uint16 = 79 + ActionReasonCityReputationRequest uint16 = 80 + ActionReasonCityReputationExplore uint16 = 81 + ActionReasonOffergingLevel uint16 = 82 + ActionReasonRoutineHost uint16 = 83 + ActionReasonRoutineGuest uint16 = 84 + ActionReasonTreasureMapSpotToken uint16 = 89 + ActionReasonTreasureMapBonusLevelReward uint16 = 90 + ActionReasonTreasureMapMpReward uint16 = 91 + ActionReasonConvert uint16 = 92 + ActionReasonOverflowTransform uint16 = 93 + ActionReasonActivityAvatarSelectionReward uint16 = 96 + ActionReasonActivityWatcherBatch uint16 = 97 + ActionReasonHitTreeDrop uint16 = 98 + ActionReasonGetHomeLevelupReward uint16 = 99 + ActionReasonHomeDefaultFurniture uint16 = 100 + ActionReasonActivityCond uint16 = 101 + ActionReasonBattlePassNotify uint16 = 102 + ActionReasonPlayerUseItem uint16 = 1001 + ActionReasonDropItem uint16 = 1002 + ActionReasonWeaponUpgrade uint16 = 1011 + ActionReasonWeaponPromote uint16 = 1012 + ActionReasonWeaponAwaken uint16 = 1013 + ActionReasonRelicUpgrade uint16 = 1014 + ActionReasonAbility uint16 = 1015 + ActionReasonDungeonStatueDrop uint16 = 1016 + ActionReasonOfflineMsg uint16 = 1017 + ActionReasonAvatarUpgrade uint16 = 1018 + ActionReasonAvatarPromote uint16 = 1019 + ActionReasonQuestAction uint16 = 1021 + ActionReasonCityLevelup uint16 = 1022 + ActionReasonUpgradeSkill uint16 = 1024 + ActionReasonUnlockTalent uint16 = 1025 + ActionReasonUpgradeProudSkill uint16 = 1026 + ActionReasonPlayerLevelLimitUp uint16 = 1027 + ActionReasonDungeonDaily uint16 = 1028 + ActionReasonItemGiving uint16 = 1030 + ActionReasonForgeCost uint16 = 1031 + ActionReasonInvestigationReward uint16 = 1032 + ActionReasonInvestigationTargetReward uint16 = 1033 + ActionReasonGadgetInteract uint16 = 1034 + ActionReasonSeaLampCiMaterial uint16 = 1036 + ActionReasonSeaLampContributionReward uint16 = 1037 + ActionReasonSeaLampPhaseReward uint16 = 1038 + ActionReasonSeaLampFlyLamp uint16 = 1039 + ActionReasonAutoRecover uint16 = 1040 + ActionReasonActivityExpireItem uint16 = 1041 + ActionReasonSubCoinNegative uint16 = 1042 + ActionReasonBargainDeduct uint16 = 1043 + ActionReasonBattlePassPaidReward uint16 = 1044 + ActionReasonBattlePassLevelReward uint16 = 1045 + ActionReasonTrialAvatarActivityFirstPassReward uint16 = 1046 + ActionReasonBuyBattlePassLevel uint16 = 1047 + ActionReasonGrantBirthdayBenefit uint16 = 1048 + ActionReasonAchievementReward uint16 = 1049 + ActionReasonAchievementGoalReward uint16 = 1050 + ActionReasonFirstShareToSocialNetwork uint16 = 1051 + ActionReasonDestroyMaterial uint16 = 1052 + ActionReasonCodexLevelupReward uint16 = 1053 + ActionReasonHuntingOfferReward uint16 = 1054 + ActionReasonUseWidgetAnchorPoint uint16 = 1055 + ActionReasonUseWidgetBonfire uint16 = 1056 + ActionReasonUngradeWeaponReturnMaterial uint16 = 1057 + ActionReasonUseWidgetOneoffGatherPointDetector uint16 = 1058 + ActionReasonUseWidgetClientCollector uint16 = 1059 + ActionReasonUseWidgetClientDetector uint16 = 1060 + ActionReasonTakeGeneralReward uint16 = 1061 + ActionReasonAsterTakeSpecialReward uint16 = 1062 + ActionReasonRemoveCodexBook uint16 = 1063 + ActionReasonOfferingItem uint16 = 1064 + ActionReasonUseWidgetGadgetBuilder uint16 = 1065 + ActionReasonEffigyFirstPassReward uint16 = 1066 + ActionReasonEffigyReward uint16 = 1067 + ActionReasonReunionFirstGiftReward uint16 = 1068 + ActionReasonReunionSignInReward uint16 = 1069 + ActionReasonReunionWatcherReward uint16 = 1070 + ActionReasonSalesmanMpReward uint16 = 1071 + ActionReasonActionReasionAvatarPromoteReward uint16 = 1072 + ActionReasonBlessingRedeemReward uint16 = 1073 + ActionReasonActionMiracleRingReward uint16 = 1074 + ActionReasonExpeditionReward uint16 = 1075 + ActionReasonTreasureMapRemoveDetector uint16 = 1076 + ActionReasonMechanicusDungeonTicket uint16 = 1077 + ActionReasonMechanicusLevelupGear uint16 = 1078 + ActionReasonMechanicusBattleSettle uint16 = 1079 + ActionReasonRegionSearchReward uint16 = 1080 + ActionReasonUnlockCoopChapter uint16 = 1081 + ActionReasonTakeCoopReward uint16 = 1082 + ActionReasonFleurFairDungeonReward uint16 = 1083 + ActionReasonActivityScore uint16 = 1084 + ActionReasonChannellerSlabOneoffDungeonReward uint16 = 1085 + ActionReasonFurnitureMakeStart uint16 = 1086 + ActionReasonFurnitureMakeTake uint16 = 1087 + ActionReasonFurnitureMakeCancel uint16 = 1088 + ActionReasonFurnitureMakeFastFinish uint16 = 1089 + ActionReasonChannellerSlabLoopDungeonFirstPassReward uint16 = 1090 + ActionReasonChannellerSlabLoopDungeonScoreReward uint16 = 1091 + ActionReasonHomeLimitedShopBuy uint16 = 1092 + ActionReasonHomeCoinCollect uint16 = 1093 +) diff --git a/common/constant/climate_type.go b/common/constant/climate_type.go index b3895a45..439bae0d 100644 --- a/common/constant/climate_type.go +++ b/common/constant/climate_type.go @@ -1,25 +1,11 @@ package constant -var ClimateTypeConst *ClimateType - -type ClimateType struct { - CLIMATE_NONE uint16 - CLIMATE_SUNNY uint16 - CLIMATE_CLOUDY uint16 - CLIMATE_RAIN uint16 - CLIMATE_THUNDERSTORM uint16 - CLIMATE_SNOW uint16 - CLIMATE_MIST uint16 -} - -func InitClimateTypeConst() { - ClimateTypeConst = new(ClimateType) - - ClimateTypeConst.CLIMATE_NONE = 0 - ClimateTypeConst.CLIMATE_SUNNY = 1 - ClimateTypeConst.CLIMATE_CLOUDY = 2 - ClimateTypeConst.CLIMATE_RAIN = 3 - ClimateTypeConst.CLIMATE_THUNDERSTORM = 4 - ClimateTypeConst.CLIMATE_SNOW = 5 - ClimateTypeConst.CLIMATE_MIST = 6 -} +const ( + CLIMATE_TYPE_NONE uint16 = 0 + CLIMATE_TYPE_SUNNY uint16 = 1 + CLIMATE_TYPE_CLOUDY uint16 = 2 + CLIMATE_TYPE_RAIN uint16 = 3 + CLIMATE_TYPE_THUNDERSTORM uint16 = 4 + CLIMATE_TYPE_SNOW uint16 = 5 + CLIMATE_TYPE_MIST uint16 = 6 +) diff --git a/common/constant/constant.go b/common/constant/constant.go deleted file mode 100644 index 62f2ca23..00000000 --- a/common/constant/constant.go +++ /dev/null @@ -1,25 +0,0 @@ -package constant - -func InitConstant() { - InitFightPropertyConst() - InitActionReasonConst() - InitClimateTypeConst() - InitElementTypeConst() - InitEnterReasonConst() - InitEntityIdTypeConst() - InitEquipTypeConst() - InitFetterStateConst() - InitGameConstant() - InitGrowCurveConst() - InitItemTypeConst() - InitLifeStateConst() - InitMaterialTypeConst() - InitOpenStateConst() - InitPlayerPropertyConst() - InitSceneTypeConst() - InitEntityTypeConst() - InitStaminaCostConst() - InitWeaponTypeConst() - InitGCGTokenConst() - InitItemConstantConst() -} diff --git a/common/constant/default_ability.go b/common/constant/default_ability.go new file mode 100644 index 00000000..27c36666 --- /dev/null +++ b/common/constant/default_ability.go @@ -0,0 +1,26 @@ +package constant + +import "hk4e/pkg/endec" + +var ( + DEFAULT_ABILITY_STRINGS []string + DEFAULT_ABILITY_HASHES []int32 + DEFAULT_ABILITY_NAME int32 +) + +func init() { + DEFAULT_ABILITY_STRINGS = []string{ + "Avatar_DefaultAbility_VisionReplaceDieInvincible", + "Avatar_DefaultAbility_AvartarInShaderChange", + "Avatar_SprintBS_Invincible", + "Avatar_Freeze_Duration_Reducer", + "Avatar_Attack_ReviveEnergy", + "Avatar_Component_Initializer", + "Avatar_FallAnthem_Achievement_Listener", + } + DEFAULT_ABILITY_HASHES = make([]int32, 0) + for _, v := range DEFAULT_ABILITY_STRINGS { + DEFAULT_ABILITY_HASHES = append(DEFAULT_ABILITY_HASHES, endec.Hk4eAbilityHashCode(v)) + } + DEFAULT_ABILITY_NAME = endec.Hk4eAbilityHashCode("Default") +} diff --git a/common/constant/element_type.go b/common/constant/element_type.go index 504d9ae5..3f116de4 100644 --- a/common/constant/element_type.go +++ b/common/constant/element_type.go @@ -14,129 +14,112 @@ type ElementTypeValue struct { } type ElementType struct { - None *ElementTypeValue - Fire *ElementTypeValue - Water *ElementTypeValue - Grass *ElementTypeValue - Electric *ElementTypeValue - Ice *ElementTypeValue - Frozen *ElementTypeValue - Wind *ElementTypeValue - Rock *ElementTypeValue - AntiFire *ElementTypeValue - Default *ElementTypeValue - STRING_MAP map[string]*ElementTypeValue - VALUE_MAP map[uint16]*ElementTypeValue + None *ElementTypeValue + Fire *ElementTypeValue + Water *ElementTypeValue + Grass *ElementTypeValue + Electric *ElementTypeValue + Ice *ElementTypeValue + Frozen *ElementTypeValue + Wind *ElementTypeValue + Rock *ElementTypeValue + AntiFire *ElementTypeValue + Default *ElementTypeValue + VALUE_MAP map[uint16]*ElementTypeValue } -func InitElementTypeConst() { +func init() { ElementTypeConst = new(ElementType) - ElementTypeConst.None = &ElementTypeValue{ 0, - FightPropertyConst.FIGHT_PROP_CUR_FIRE_ENERGY, - FightPropertyConst.FIGHT_PROP_MAX_FIRE_ENERGY, + FIGHT_PROP_CUR_FIRE_ENERGY, + FIGHT_PROP_MAX_FIRE_ENERGY, 0, "", endec.Hk4eAbilityHashCode(""), } ElementTypeConst.Fire = &ElementTypeValue{ 1, - FightPropertyConst.FIGHT_PROP_CUR_FIRE_ENERGY, - FightPropertyConst.FIGHT_PROP_MAX_FIRE_ENERGY, + FIGHT_PROP_CUR_FIRE_ENERGY, + FIGHT_PROP_MAX_FIRE_ENERGY, 10101, "TeamResonance_Fire_Lv2", endec.Hk4eAbilityHashCode("TeamResonance_Fire_Lv2"), } ElementTypeConst.Water = &ElementTypeValue{ 2, - FightPropertyConst.FIGHT_PROP_CUR_WATER_ENERGY, - FightPropertyConst.FIGHT_PROP_MAX_WATER_ENERGY, + FIGHT_PROP_CUR_WATER_ENERGY, + FIGHT_PROP_MAX_WATER_ENERGY, 10201, "TeamResonance_Water_Lv2", endec.Hk4eAbilityHashCode("TeamResonance_Water_Lv2"), } ElementTypeConst.Grass = &ElementTypeValue{ 3, - FightPropertyConst.FIGHT_PROP_CUR_GRASS_ENERGY, - FightPropertyConst.FIGHT_PROP_MAX_GRASS_ENERGY, + FIGHT_PROP_CUR_GRASS_ENERGY, + FIGHT_PROP_MAX_GRASS_ENERGY, 0, "", endec.Hk4eAbilityHashCode(""), } ElementTypeConst.Electric = &ElementTypeValue{ 4, - FightPropertyConst.FIGHT_PROP_CUR_ELEC_ENERGY, - FightPropertyConst.FIGHT_PROP_MAX_ELEC_ENERGY, + FIGHT_PROP_CUR_ELEC_ENERGY, + FIGHT_PROP_MAX_ELEC_ENERGY, 10401, "TeamResonance_Electric_Lv2", endec.Hk4eAbilityHashCode("TeamResonance_Electric_Lv2"), } ElementTypeConst.Ice = &ElementTypeValue{ 5, - FightPropertyConst.FIGHT_PROP_CUR_ICE_ENERGY, - FightPropertyConst.FIGHT_PROP_MAX_ICE_ENERGY, + FIGHT_PROP_CUR_ICE_ENERGY, + FIGHT_PROP_MAX_ICE_ENERGY, 10601, "TeamResonance_Ice_Lv2", endec.Hk4eAbilityHashCode("TeamResonance_Ice_Lv2"), } ElementTypeConst.Frozen = &ElementTypeValue{ 6, - FightPropertyConst.FIGHT_PROP_CUR_ICE_ENERGY, - FightPropertyConst.FIGHT_PROP_MAX_ICE_ENERGY, + FIGHT_PROP_CUR_ICE_ENERGY, + FIGHT_PROP_MAX_ICE_ENERGY, 0, "", endec.Hk4eAbilityHashCode(""), } ElementTypeConst.Wind = &ElementTypeValue{ 7, - FightPropertyConst.FIGHT_PROP_CUR_WIND_ENERGY, - FightPropertyConst.FIGHT_PROP_MAX_WIND_ENERGY, + FIGHT_PROP_CUR_WIND_ENERGY, + FIGHT_PROP_MAX_WIND_ENERGY, 10301, "TeamResonance_Wind_Lv2", endec.Hk4eAbilityHashCode("TeamResonance_Wind_Lv2"), } ElementTypeConst.Rock = &ElementTypeValue{ 8, - FightPropertyConst.FIGHT_PROP_CUR_ROCK_ENERGY, - FightPropertyConst.FIGHT_PROP_MAX_ROCK_ENERGY, + FIGHT_PROP_CUR_ROCK_ENERGY, + FIGHT_PROP_MAX_ROCK_ENERGY, 10701, "TeamResonance_Rock_Lv2", endec.Hk4eAbilityHashCode("TeamResonance_Rock_Lv2"), } ElementTypeConst.AntiFire = &ElementTypeValue{ 9, - FightPropertyConst.FIGHT_PROP_CUR_FIRE_ENERGY, - FightPropertyConst.FIGHT_PROP_MAX_FIRE_ENERGY, + FIGHT_PROP_CUR_FIRE_ENERGY, + FIGHT_PROP_MAX_FIRE_ENERGY, 0, "", endec.Hk4eAbilityHashCode(""), } ElementTypeConst.Default = &ElementTypeValue{ 255, - FightPropertyConst.FIGHT_PROP_CUR_FIRE_ENERGY, - FightPropertyConst.FIGHT_PROP_MAX_FIRE_ENERGY, + FIGHT_PROP_CUR_FIRE_ENERGY, + FIGHT_PROP_MAX_FIRE_ENERGY, 10801, "TeamResonance_AllDifferent", endec.Hk4eAbilityHashCode("TeamResonance_AllDifferent"), } - ElementTypeConst.STRING_MAP = make(map[string]*ElementTypeValue) - - ElementTypeConst.STRING_MAP["None"] = ElementTypeConst.None - ElementTypeConst.STRING_MAP["Fire"] = ElementTypeConst.Fire - ElementTypeConst.STRING_MAP["Water"] = ElementTypeConst.Water - ElementTypeConst.STRING_MAP["Grass"] = ElementTypeConst.Grass - ElementTypeConst.STRING_MAP["Electric"] = ElementTypeConst.Electric - ElementTypeConst.STRING_MAP["Ice"] = ElementTypeConst.Ice - ElementTypeConst.STRING_MAP["Frozen"] = ElementTypeConst.Frozen - ElementTypeConst.STRING_MAP["Wind"] = ElementTypeConst.Wind - ElementTypeConst.STRING_MAP["Rock"] = ElementTypeConst.Rock - ElementTypeConst.STRING_MAP["AntiFire"] = ElementTypeConst.AntiFire - ElementTypeConst.STRING_MAP["Default"] = ElementTypeConst.Default - ElementTypeConst.VALUE_MAP = make(map[uint16]*ElementTypeValue) - ElementTypeConst.VALUE_MAP[0] = ElementTypeConst.None ElementTypeConst.VALUE_MAP[1] = ElementTypeConst.Fire ElementTypeConst.VALUE_MAP[2] = ElementTypeConst.Water diff --git a/common/constant/enter_reason.go b/common/constant/enter_reason.go index 774f512c..45466b5e 100644 --- a/common/constant/enter_reason.go +++ b/common/constant/enter_reason.go @@ -1,75 +1,36 @@ package constant -var EnterReasonConst *EnterReason - -type EnterReason struct { - None uint16 - Login uint16 // 登录 - DungeonReplay uint16 // 秘境重新挑战 - DungeonReviveOnWaypoint uint16 // 秘境重生 - DungeonEnter uint16 // 秘境进入 - DungeonQuit uint16 // 秘境离开 - Gm uint16 // 管理员 - QuestRollback uint16 // 任务回滚 - Revival uint16 // 重生 - PersonalScene uint16 // 个人场景 - TransPoint uint16 // 传送点 - ClientTransmit uint16 // 客户端传送 - ForceDragBack uint16 // 强制后退 - TeamKick uint16 // 队伍踢出 - TeamJoin uint16 // 队伍加入 - TeamBack uint16 // 队伍返回 - Muip uint16 // ?? - DungeonInviteAccept uint16 // 秘境邀请接受 - Lua uint16 // 脚本 - ActivityLoadTerrain uint16 // 活动加载地形 - HostFromSingleToMp uint16 // 房主从单人到多人 - MpPlay uint16 // 多人游戏 - AnchorPoint uint16 // 迷你锚点 - LuaSkipUi uint16 // 脚本跳过UI - ReloadTerrain uint16 // 重载地形 - DraftTransfer uint16 // 某个东西传送 ?? - EnterHome uint16 // 进入尘歌壶 - ExitHome uint16 // 离开尘歌壶 - ChangeHomeModule uint16 // 更改尘歌壶模块 - Gallery uint16 // ?? - HomeSceneJump uint16 // 尘歌壶场景跳转 - HideAndSeek uint16 // 隐藏和搜索 ?? -} - -func InitEnterReasonConst() { - EnterReasonConst = new(EnterReason) - - EnterReasonConst.None = 0 - EnterReasonConst.Login = 1 - EnterReasonConst.DungeonReplay = 11 - EnterReasonConst.DungeonReviveOnWaypoint = 12 - EnterReasonConst.DungeonEnter = 13 - EnterReasonConst.DungeonQuit = 14 - EnterReasonConst.Gm = 21 - EnterReasonConst.QuestRollback = 31 - EnterReasonConst.Revival = 32 - EnterReasonConst.PersonalScene = 41 - EnterReasonConst.TransPoint = 42 - EnterReasonConst.ClientTransmit = 43 - EnterReasonConst.ForceDragBack = 44 - EnterReasonConst.TeamKick = 51 - EnterReasonConst.TeamJoin = 52 - EnterReasonConst.TeamBack = 53 - EnterReasonConst.Muip = 54 - EnterReasonConst.DungeonInviteAccept = 55 - EnterReasonConst.Lua = 56 - EnterReasonConst.ActivityLoadTerrain = 57 - EnterReasonConst.HostFromSingleToMp = 58 - EnterReasonConst.MpPlay = 59 - EnterReasonConst.AnchorPoint = 60 - EnterReasonConst.LuaSkipUi = 61 - EnterReasonConst.ReloadTerrain = 62 - EnterReasonConst.DraftTransfer = 63 - EnterReasonConst.EnterHome = 64 - EnterReasonConst.ExitHome = 65 - EnterReasonConst.ChangeHomeModule = 66 - EnterReasonConst.Gallery = 67 - EnterReasonConst.HomeSceneJump = 68 - EnterReasonConst.HideAndSeek = 69 -} +const ( + EnterReasonNone uint16 = 0 + EnterReasonLogin uint16 = 1 // 登录 + EnterReasonDungeonReplay uint16 = 11 // 秘境重新挑战 + EnterReasonDungeonReviveOnWaypoint uint16 = 12 // 秘境重生 + EnterReasonDungeonEnter uint16 = 13 // 秘境进入 + EnterReasonDungeonQuit uint16 = 14 // 秘境离开 + EnterReasonGm uint16 = 21 // 管理员 + EnterReasonQuestRollback uint16 = 31 // 任务回滚 + EnterReasonRevival uint16 = 32 // 重生 + EnterReasonPersonalScene uint16 = 41 // 个人场景 + EnterReasonTransPoint uint16 = 42 // 传送点 + EnterReasonClientTransmit uint16 = 43 // 客户端传送 + EnterReasonForceDragBack uint16 = 44 // 强制后退 + EnterReasonTeamKick uint16 = 51 // 队伍踢出 + EnterReasonTeamJoin uint16 = 52 // 队伍加入 + EnterReasonTeamBack uint16 = 53 // 队伍返回 + EnterReasonMuip uint16 = 54 // 与原神项目组的某个服务器组件相关 + EnterReasonDungeonInviteAccept uint16 = 55 // 秘境邀请接受 + EnterReasonLua uint16 = 56 // 脚本 + EnterReasonActivityLoadTerrain uint16 = 57 // 活动加载地形 + EnterReasonHostFromSingleToMp uint16 = 58 // 房主从单人到多人 + EnterReasonMpPlay uint16 = 59 // 多人游戏 + EnterReasonAnchorPoint uint16 = 60 // 迷你锚点 + EnterReasonLuaSkipUi uint16 = 61 // 脚本跳过UI + EnterReasonReloadTerrain uint16 = 62 // 重载地形 + EnterReasonDraftTransfer uint16 = 63 // 某个东西传送 ?? + EnterReasonEnterHome uint16 = 64 // 进入尘歌壶 + EnterReasonExitHome uint16 = 65 // 离开尘歌壶 + EnterReasonChangeHomeModule uint16 = 66 // 更改尘歌壶模块 + EnterReasonGallery uint16 = 67 // ?? + EnterReasonHomeSceneJump uint16 = 68 // 尘歌壶场景跳转 + EnterReasonHideAndSeek uint16 = 69 // 捉迷藏也就是风行迷宗 +) diff --git a/common/constant/entity_id_type.go b/common/constant/entity_id_type.go index e33dd1a6..846e8814 100644 --- a/common/constant/entity_id_type.go +++ b/common/constant/entity_id_type.go @@ -1,25 +1,11 @@ package constant -var EntityIdTypeConst *EntityIdType - -type EntityIdType struct { - AVATAR uint16 - MONSTER uint16 - NPC uint16 - GADGET uint16 - WEAPON uint16 - TEAM uint16 - MPLEVEL uint16 -} - -func InitEntityIdTypeConst() { - EntityIdTypeConst = new(EntityIdType) - - EntityIdTypeConst.AVATAR = 0x01 - EntityIdTypeConst.MONSTER = 0x02 - EntityIdTypeConst.NPC = 0x03 - EntityIdTypeConst.GADGET = 0x04 - EntityIdTypeConst.WEAPON = 0x06 - EntityIdTypeConst.TEAM = 0x09 - EntityIdTypeConst.MPLEVEL = 0x0b -} +const ( + ENTITY_ID_TYPE_AVATAR uint16 = 0x01 + ENTITY_ID_TYPE_MONSTER uint16 = 0x02 + ENTITY_ID_TYPE_NPC uint16 = 0x03 + ENTITY_ID_TYPE_GADGET uint16 = 0x04 + ENTITY_ID_TYPE_WEAPON uint16 = 0x06 + ENTITY_ID_TYPE_TEAM uint16 = 0x09 + ENTITY_ID_TYPE_MPLEVEL uint16 = 0x0b +) diff --git a/common/constant/entity_type.go b/common/constant/entity_type.go index fb389b7b..7dd0db2b 100644 --- a/common/constant/entity_type.go +++ b/common/constant/entity_type.go @@ -1,180 +1,59 @@ package constant -var EntityTypeConst *EntityType - -type EntityType struct { - None uint16 - Avatar uint16 - Monster uint16 - Bullet uint16 - AttackPhyisicalUnit uint16 - AOE uint16 - Camera uint16 - EnviroArea uint16 - Equip uint16 - MonsterEquip uint16 - Grass uint16 - Level uint16 - NPC uint16 - TransPointFirst uint16 - TransPointFirstGadget uint16 - TransPointSecond uint16 - TransPointSecondGadget uint16 - DropItem uint16 - Field uint16 - Gadget uint16 - Water uint16 - GatherPoint uint16 - GatherObject uint16 - AirflowField uint16 - SpeedupField uint16 - Gear uint16 - Chest uint16 - EnergyBall uint16 - ElemCrystal uint16 - Timeline uint16 - Worktop uint16 - Team uint16 - Platform uint16 - AmberWind uint16 - EnvAnimal uint16 - SealGadget uint16 - Tree uint16 - Bush uint16 - QuestGadget uint16 - Lightning uint16 - RewardPoint uint16 - RewardStatue uint16 - MPLevel uint16 - WindSeed uint16 - MpPlayRewardPoint uint16 - ViewPoint uint16 - RemoteAvatar uint16 - GeneralRewardPoint uint16 - PlayTeam uint16 - OfferingGadget uint16 - EyePoint uint16 - MiracleRing uint16 - Foundation uint16 - WidgetGadget uint16 - PlaceHolder uint16 - STRING_MAP map[string]uint16 -} - -func InitEntityTypeConst() { - EntityTypeConst = new(EntityType) - - EntityTypeConst.None = 0 - EntityTypeConst.Avatar = 1 - EntityTypeConst.Monster = 2 - EntityTypeConst.Bullet = 3 - EntityTypeConst.AttackPhyisicalUnit = 4 - EntityTypeConst.AOE = 5 - EntityTypeConst.Camera = 6 - EntityTypeConst.EnviroArea = 7 - EntityTypeConst.Equip = 8 - EntityTypeConst.MonsterEquip = 9 - EntityTypeConst.Grass = 10 - EntityTypeConst.Level = 11 - EntityTypeConst.NPC = 12 - EntityTypeConst.TransPointFirst = 13 - EntityTypeConst.TransPointFirstGadget = 14 - EntityTypeConst.TransPointSecond = 15 - EntityTypeConst.TransPointSecondGadget = 16 - EntityTypeConst.DropItem = 17 - EntityTypeConst.Field = 18 - EntityTypeConst.Gadget = 19 - EntityTypeConst.Water = 20 - EntityTypeConst.GatherPoint = 21 - EntityTypeConst.GatherObject = 22 - EntityTypeConst.AirflowField = 23 - EntityTypeConst.SpeedupField = 24 - EntityTypeConst.Gear = 25 - EntityTypeConst.Chest = 26 - EntityTypeConst.EnergyBall = 27 - EntityTypeConst.ElemCrystal = 28 - EntityTypeConst.Timeline = 29 - EntityTypeConst.Worktop = 30 - EntityTypeConst.Team = 31 - EntityTypeConst.Platform = 32 - EntityTypeConst.AmberWind = 33 - EntityTypeConst.EnvAnimal = 34 - EntityTypeConst.SealGadget = 35 - EntityTypeConst.Tree = 36 - EntityTypeConst.Bush = 37 - EntityTypeConst.QuestGadget = 38 - EntityTypeConst.Lightning = 39 - EntityTypeConst.RewardPoint = 40 - EntityTypeConst.RewardStatue = 41 - EntityTypeConst.MPLevel = 42 - EntityTypeConst.WindSeed = 43 - EntityTypeConst.MpPlayRewardPoint = 44 - EntityTypeConst.ViewPoint = 45 - EntityTypeConst.RemoteAvatar = 46 - EntityTypeConst.GeneralRewardPoint = 47 - EntityTypeConst.PlayTeam = 48 - EntityTypeConst.OfferingGadget = 49 - EntityTypeConst.EyePoint = 50 - EntityTypeConst.MiracleRing = 51 - EntityTypeConst.Foundation = 52 - EntityTypeConst.WidgetGadget = 53 - EntityTypeConst.PlaceHolder = 99 - - EntityTypeConst.STRING_MAP = make(map[string]uint16) - - EntityTypeConst.STRING_MAP["None"] = EntityTypeConst.None - EntityTypeConst.STRING_MAP["Avatar"] = EntityTypeConst.Avatar - EntityTypeConst.STRING_MAP["Monster"] = EntityTypeConst.Monster - EntityTypeConst.STRING_MAP["Bullet"] = EntityTypeConst.Bullet - EntityTypeConst.STRING_MAP["AttackPhyisicalUnit"] = EntityTypeConst.AttackPhyisicalUnit - EntityTypeConst.STRING_MAP["AOE"] = EntityTypeConst.AOE - EntityTypeConst.STRING_MAP["Camera"] = EntityTypeConst.Camera - EntityTypeConst.STRING_MAP["EnviroArea"] = EntityTypeConst.EnviroArea - EntityTypeConst.STRING_MAP["Equip"] = EntityTypeConst.Equip - EntityTypeConst.STRING_MAP["MonsterEquip"] = EntityTypeConst.MonsterEquip - EntityTypeConst.STRING_MAP["Grass"] = EntityTypeConst.Grass - EntityTypeConst.STRING_MAP["Level"] = EntityTypeConst.Level - EntityTypeConst.STRING_MAP["NPC"] = EntityTypeConst.NPC - EntityTypeConst.STRING_MAP["TransPointFirst"] = EntityTypeConst.TransPointFirst - EntityTypeConst.STRING_MAP["TransPointFirstGadget"] = EntityTypeConst.TransPointFirstGadget - EntityTypeConst.STRING_MAP["TransPointSecond"] = EntityTypeConst.TransPointSecond - EntityTypeConst.STRING_MAP["TransPointSecondGadget"] = EntityTypeConst.TransPointSecondGadget - EntityTypeConst.STRING_MAP["DropItem"] = EntityTypeConst.DropItem - EntityTypeConst.STRING_MAP["Field"] = EntityTypeConst.Field - EntityTypeConst.STRING_MAP["Gadget"] = EntityTypeConst.Gadget - EntityTypeConst.STRING_MAP["Water"] = EntityTypeConst.Water - EntityTypeConst.STRING_MAP["GatherPoint"] = EntityTypeConst.GatherPoint - EntityTypeConst.STRING_MAP["GatherObject"] = EntityTypeConst.GatherObject - EntityTypeConst.STRING_MAP["AirflowField"] = EntityTypeConst.AirflowField - EntityTypeConst.STRING_MAP["SpeedupField"] = EntityTypeConst.SpeedupField - EntityTypeConst.STRING_MAP["Gear"] = EntityTypeConst.Gear - EntityTypeConst.STRING_MAP["Chest"] = EntityTypeConst.Chest - EntityTypeConst.STRING_MAP["EnergyBall"] = EntityTypeConst.EnergyBall - EntityTypeConst.STRING_MAP["ElemCrystal"] = EntityTypeConst.ElemCrystal - EntityTypeConst.STRING_MAP["Timeline"] = EntityTypeConst.Timeline - EntityTypeConst.STRING_MAP["Worktop"] = EntityTypeConst.Worktop - EntityTypeConst.STRING_MAP["Team"] = EntityTypeConst.Team - EntityTypeConst.STRING_MAP["Platform"] = EntityTypeConst.Platform - EntityTypeConst.STRING_MAP["AmberWind"] = EntityTypeConst.AmberWind - EntityTypeConst.STRING_MAP["EnvAnimal"] = EntityTypeConst.EnvAnimal - EntityTypeConst.STRING_MAP["SealGadget"] = EntityTypeConst.SealGadget - EntityTypeConst.STRING_MAP["Tree"] = EntityTypeConst.Tree - EntityTypeConst.STRING_MAP["Bush"] = EntityTypeConst.Bush - EntityTypeConst.STRING_MAP["QuestGadget"] = EntityTypeConst.QuestGadget - EntityTypeConst.STRING_MAP["Lightning"] = EntityTypeConst.Lightning - EntityTypeConst.STRING_MAP["RewardPoint"] = EntityTypeConst.RewardPoint - EntityTypeConst.STRING_MAP["RewardStatue"] = EntityTypeConst.RewardStatue - EntityTypeConst.STRING_MAP["MPLevel"] = EntityTypeConst.MPLevel - EntityTypeConst.STRING_MAP["WindSeed"] = EntityTypeConst.WindSeed - EntityTypeConst.STRING_MAP["MpPlayRewardPoint"] = EntityTypeConst.MpPlayRewardPoint - EntityTypeConst.STRING_MAP["ViewPoint"] = EntityTypeConst.ViewPoint - EntityTypeConst.STRING_MAP["RemoteAvatar"] = EntityTypeConst.RemoteAvatar - EntityTypeConst.STRING_MAP["GeneralRewardPoint"] = EntityTypeConst.GeneralRewardPoint - EntityTypeConst.STRING_MAP["PlayTeam"] = EntityTypeConst.PlayTeam - EntityTypeConst.STRING_MAP["OfferingGadget"] = EntityTypeConst.OfferingGadget - EntityTypeConst.STRING_MAP["EyePoint"] = EntityTypeConst.EyePoint - EntityTypeConst.STRING_MAP["MiracleRing"] = EntityTypeConst.MiracleRing - EntityTypeConst.STRING_MAP["Foundation"] = EntityTypeConst.Foundation - EntityTypeConst.STRING_MAP["WidgetGadget"] = EntityTypeConst.WidgetGadget - EntityTypeConst.STRING_MAP["PlaceHolder"] = EntityTypeConst.PlaceHolder -} +const ( + EntityTypeNone uint16 = 0 + EntityTypeAvatar uint16 = 1 + EntityTypeMonster uint16 = 2 + EntityTypeBullet uint16 = 3 + EntityTypeAttackPhyisicalUnit uint16 = 4 + EntityTypeAOE uint16 = 5 + EntityTypeCamera uint16 = 6 + EntityTypeEnviroArea uint16 = 7 + EntityTypeEquip uint16 = 8 + EntityTypeMonsterEquip uint16 = 9 + EntityTypeGrass uint16 = 10 + EntityTypeLevel uint16 = 11 + EntityTypeNPC uint16 = 12 + EntityTypeTransPointFirst uint16 = 13 + EntityTypeTransPointFirstGadget uint16 = 14 + EntityTypeTransPointSecond uint16 = 15 + EntityTypeTransPointSecondGadget uint16 = 16 + EntityTypeDropItem uint16 = 17 + EntityTypeField uint16 = 18 + EntityTypeGadget uint16 = 19 + EntityTypeWater uint16 = 20 + EntityTypeGatherPoint uint16 = 21 + EntityTypeGatherObject uint16 = 22 + EntityTypeAirflowField uint16 = 23 + EntityTypeSpeedupField uint16 = 24 + EntityTypeGear uint16 = 25 + EntityTypeChest uint16 = 26 + EntityTypeEnergyBall uint16 = 27 + EntityTypeElemCrystal uint16 = 28 + EntityTypeTimeline uint16 = 29 + EntityTypeWorktop uint16 = 30 + EntityTypeTeam uint16 = 31 + EntityTypePlatform uint16 = 32 + EntityTypeAmberWind uint16 = 33 + EntityTypeEnvAnimal uint16 = 34 + EntityTypeSealGadget uint16 = 35 + EntityTypeTree uint16 = 36 + EntityTypeBush uint16 = 37 + EntityTypeQuestGadget uint16 = 38 + EntityTypeLightning uint16 = 39 + EntityTypeRewardPoint uint16 = 40 + EntityTypeRewardStatue uint16 = 41 + EntityTypeMPLevel uint16 = 42 + EntityTypeWindSeed uint16 = 43 + EntityTypeMpPlayRewardPoint uint16 = 44 + EntityTypeViewPoint uint16 = 45 + EntityTypeRemoteAvatar uint16 = 46 + EntityTypeGeneralRewardPoint uint16 = 47 + EntityTypePlayTeam uint16 = 48 + EntityTypeOfferingGadget uint16 = 49 + EntityTypeEyePoint uint16 = 50 + EntityTypeMiracleRing uint16 = 51 + EntityTypeFoundation uint16 = 52 + EntityTypeWidgetGadget uint16 = 53 + EntityTypePlaceHolder uint16 = 99 +) diff --git a/common/constant/equip_type.go b/common/constant/equip_type.go index 5cbb85c6..a1034401 100644 --- a/common/constant/equip_type.go +++ b/common/constant/equip_type.go @@ -1,36 +1,11 @@ package constant -var EquipTypeConst *EquipType - -type EquipType struct { - EQUIP_NONE uint16 - EQUIP_BRACER uint16 - EQUIP_NECKLACE uint16 - EQUIP_SHOES uint16 - EQUIP_RING uint16 - EQUIP_DRESS uint16 - EQUIP_WEAPON uint16 - STRING_MAP map[string]uint16 -} - -func InitEquipTypeConst() { - EquipTypeConst = new(EquipType) - - EquipTypeConst.EQUIP_NONE = 0 - EquipTypeConst.EQUIP_BRACER = 1 - EquipTypeConst.EQUIP_NECKLACE = 2 - EquipTypeConst.EQUIP_SHOES = 3 - EquipTypeConst.EQUIP_RING = 4 - EquipTypeConst.EQUIP_DRESS = 5 - EquipTypeConst.EQUIP_WEAPON = 6 - - EquipTypeConst.STRING_MAP = make(map[string]uint16) - - EquipTypeConst.STRING_MAP["EQUIP_NONE"] = 0 - EquipTypeConst.STRING_MAP["EQUIP_BRACER"] = 1 - EquipTypeConst.STRING_MAP["EQUIP_NECKLACE"] = 2 - EquipTypeConst.STRING_MAP["EQUIP_SHOES"] = 3 - EquipTypeConst.STRING_MAP["EQUIP_RING"] = 4 - EquipTypeConst.STRING_MAP["EQUIP_DRESS"] = 5 - EquipTypeConst.STRING_MAP["EQUIP_WEAPON"] = 6 -} +const ( + EQUIP_TYPE_NONE uint16 = 0 + EQUIP_TYPE_BRACER uint16 = 1 + EQUIP_TYPE_NECKLACE uint16 = 2 + EQUIP_TYPE_SHOES uint16 = 3 + EQUIP_TYPE_RING uint16 = 4 + EQUIP_TYPE_DRESS uint16 = 5 + EQUIP_TYPE_WEAPON uint16 = 6 +) diff --git a/common/constant/fetter_state.go b/common/constant/fetter_state.go index 885037f9..6c52d62b 100644 --- a/common/constant/fetter_state.go +++ b/common/constant/fetter_state.go @@ -1,19 +1,8 @@ package constant -var FetterStateConst *FetterState - -type FetterState struct { - NONE uint16 - NOT_OPEN uint16 - OPEN uint16 - FINISH uint16 -} - -func InitFetterStateConst() { - FetterStateConst = new(FetterState) - - FetterStateConst.NONE = 0 - FetterStateConst.NOT_OPEN = 1 - FetterStateConst.OPEN = 1 - FetterStateConst.FINISH = 3 -} +const ( + FETTER_STATE_NONE uint16 = 0 + FETTER_STATE_NOT_OPEN uint16 = 1 + FETTER_STATE_OPEN uint16 = 1 + FETTER_STATE_FINISH uint16 = 3 +) diff --git a/common/constant/fight_property.go b/common/constant/fight_property.go index 6b6d7e5c..9a35a435 100644 --- a/common/constant/fight_property.go +++ b/common/constant/fight_property.go @@ -1,303 +1,100 @@ package constant -var FightPropertyConst *FightProperty - -type FightProperty struct { - FIGHT_PROP_NONE uint16 - FIGHT_PROP_BASE_HP uint16 - FIGHT_PROP_HP uint16 - FIGHT_PROP_HP_PERCENT uint16 - FIGHT_PROP_BASE_ATTACK uint16 - FIGHT_PROP_ATTACK uint16 - FIGHT_PROP_ATTACK_PERCENT uint16 - FIGHT_PROP_BASE_DEFENSE uint16 - FIGHT_PROP_DEFENSE uint16 - FIGHT_PROP_DEFENSE_PERCENT uint16 - FIGHT_PROP_BASE_SPEED uint16 - FIGHT_PROP_SPEED_PERCENT uint16 - FIGHT_PROP_HP_MP_PERCENT uint16 - FIGHT_PROP_ATTACK_MP_PERCENT uint16 - FIGHT_PROP_CRITICAL uint16 - FIGHT_PROP_ANTI_CRITICAL uint16 - FIGHT_PROP_CRITICAL_HURT uint16 - FIGHT_PROP_CHARGE_EFFICIENCY uint16 - FIGHT_PROP_ADD_HURT uint16 - FIGHT_PROP_SUB_HURT uint16 - FIGHT_PROP_HEAL_ADD uint16 - FIGHT_PROP_HEALED_ADD uint16 - FIGHT_PROP_ELEMENT_MASTERY uint16 - FIGHT_PROP_PHYSICAL_SUB_HURT uint16 - FIGHT_PROP_PHYSICAL_ADD_HURT uint16 - FIGHT_PROP_DEFENCE_IGNORE_RATIO uint16 - FIGHT_PROP_DEFENCE_IGNORE_DELTA uint16 - FIGHT_PROP_FIRE_ADD_HURT uint16 - FIGHT_PROP_ELEC_ADD_HURT uint16 - FIGHT_PROP_WATER_ADD_HURT uint16 - FIGHT_PROP_GRASS_ADD_HURT uint16 - FIGHT_PROP_WIND_ADD_HURT uint16 - FIGHT_PROP_ROCK_ADD_HURT uint16 - FIGHT_PROP_ICE_ADD_HURT uint16 - FIGHT_PROP_HIT_HEAD_ADD_HURT uint16 - FIGHT_PROP_FIRE_SUB_HURT uint16 - FIGHT_PROP_ELEC_SUB_HURT uint16 - FIGHT_PROP_WATER_SUB_HURT uint16 - FIGHT_PROP_GRASS_SUB_HURT uint16 - FIGHT_PROP_WIND_SUB_HURT uint16 - FIGHT_PROP_ROCK_SUB_HURT uint16 - FIGHT_PROP_ICE_SUB_HURT uint16 - FIGHT_PROP_EFFECT_HIT uint16 - FIGHT_PROP_EFFECT_RESIST uint16 - FIGHT_PROP_FREEZE_RESIST uint16 - FIGHT_PROP_TORPOR_RESIST uint16 - FIGHT_PROP_DIZZY_RESIST uint16 - FIGHT_PROP_FREEZE_SHORTEN uint16 - FIGHT_PROP_TORPOR_SHORTEN uint16 - FIGHT_PROP_DIZZY_SHORTEN uint16 - FIGHT_PROP_MAX_FIRE_ENERGY uint16 - FIGHT_PROP_MAX_ELEC_ENERGY uint16 - FIGHT_PROP_MAX_WATER_ENERGY uint16 - FIGHT_PROP_MAX_GRASS_ENERGY uint16 - FIGHT_PROP_MAX_WIND_ENERGY uint16 - FIGHT_PROP_MAX_ICE_ENERGY uint16 - FIGHT_PROP_MAX_ROCK_ENERGY uint16 - FIGHT_PROP_SKILL_CD_MINUS_RATIO uint16 - FIGHT_PROP_SHIELD_COST_MINUS_RATIO uint16 - FIGHT_PROP_CUR_FIRE_ENERGY uint16 - FIGHT_PROP_CUR_ELEC_ENERGY uint16 - FIGHT_PROP_CUR_WATER_ENERGY uint16 - FIGHT_PROP_CUR_GRASS_ENERGY uint16 - FIGHT_PROP_CUR_WIND_ENERGY uint16 - FIGHT_PROP_CUR_ICE_ENERGY uint16 - FIGHT_PROP_CUR_ROCK_ENERGY uint16 - FIGHT_PROP_CUR_HP uint16 - FIGHT_PROP_MAX_HP uint16 - FIGHT_PROP_CUR_ATTACK uint16 - FIGHT_PROP_CUR_DEFENSE uint16 - FIGHT_PROP_CUR_SPEED uint16 - FIGHT_PROP_NONEXTRA_ATTACK uint16 - FIGHT_PROP_NONEXTRA_DEFENSE uint16 - FIGHT_PROP_NONEXTRA_CRITICAL uint16 - FIGHT_PROP_NONEXTRA_ANTI_CRITICAL uint16 - FIGHT_PROP_NONEXTRA_CRITICAL_HURT uint16 - FIGHT_PROP_NONEXTRA_CHARGE_EFFICIENCY uint16 - FIGHT_PROP_NONEXTRA_ELEMENT_MASTERY uint16 - FIGHT_PROP_NONEXTRA_PHYSICAL_SUB_HURT uint16 - FIGHT_PROP_NONEXTRA_FIRE_ADD_HURT uint16 - FIGHT_PROP_NONEXTRA_ELEC_ADD_HURT uint16 - FIGHT_PROP_NONEXTRA_WATER_ADD_HURT uint16 - FIGHT_PROP_NONEXTRA_GRASS_ADD_HURT uint16 - FIGHT_PROP_NONEXTRA_WIND_ADD_HURT uint16 - FIGHT_PROP_NONEXTRA_ROCK_ADD_HURT uint16 - FIGHT_PROP_NONEXTRA_ICE_ADD_HURT uint16 - FIGHT_PROP_NONEXTRA_FIRE_SUB_HURT uint16 - FIGHT_PROP_NONEXTRA_ELEC_SUB_HURT uint16 - FIGHT_PROP_NONEXTRA_WATER_SUB_HURT uint16 - FIGHT_PROP_NONEXTRA_GRASS_SUB_HURT uint16 - FIGHT_PROP_NONEXTRA_WIND_SUB_HURT uint16 - FIGHT_PROP_NONEXTRA_ROCK_SUB_HURT uint16 - FIGHT_PROP_NONEXTRA_ICE_SUB_HURT uint16 - FIGHT_PROP_NONEXTRA_SKILL_CD_MINUS_RATIO uint16 - FIGHT_PROP_NONEXTRA_SHIELD_COST_MINUS_RATIO uint16 - FIGHT_PROP_NONEXTRA_PHYSICAL_ADD_HURT uint16 - STRING_MAP map[string]uint16 -} - -func InitFightPropertyConst() { - FightPropertyConst = new(FightProperty) - - FightPropertyConst.FIGHT_PROP_NONE = 0 - FightPropertyConst.FIGHT_PROP_BASE_HP = 1 - FightPropertyConst.FIGHT_PROP_HP = 2 - FightPropertyConst.FIGHT_PROP_HP_PERCENT = 3 - FightPropertyConst.FIGHT_PROP_BASE_ATTACK = 4 - FightPropertyConst.FIGHT_PROP_ATTACK = 5 - FightPropertyConst.FIGHT_PROP_ATTACK_PERCENT = 6 - FightPropertyConst.FIGHT_PROP_BASE_DEFENSE = 7 - FightPropertyConst.FIGHT_PROP_DEFENSE = 8 - FightPropertyConst.FIGHT_PROP_DEFENSE_PERCENT = 9 - FightPropertyConst.FIGHT_PROP_BASE_SPEED = 10 - FightPropertyConst.FIGHT_PROP_SPEED_PERCENT = 11 - FightPropertyConst.FIGHT_PROP_HP_MP_PERCENT = 12 - FightPropertyConst.FIGHT_PROP_ATTACK_MP_PERCENT = 13 - FightPropertyConst.FIGHT_PROP_CRITICAL = 20 - FightPropertyConst.FIGHT_PROP_ANTI_CRITICAL = 21 - FightPropertyConst.FIGHT_PROP_CRITICAL_HURT = 22 - FightPropertyConst.FIGHT_PROP_CHARGE_EFFICIENCY = 23 - FightPropertyConst.FIGHT_PROP_ADD_HURT = 24 - FightPropertyConst.FIGHT_PROP_SUB_HURT = 25 - FightPropertyConst.FIGHT_PROP_HEAL_ADD = 26 - FightPropertyConst.FIGHT_PROP_HEALED_ADD = 27 - FightPropertyConst.FIGHT_PROP_ELEMENT_MASTERY = 28 - FightPropertyConst.FIGHT_PROP_PHYSICAL_SUB_HURT = 29 - FightPropertyConst.FIGHT_PROP_PHYSICAL_ADD_HURT = 30 - FightPropertyConst.FIGHT_PROP_DEFENCE_IGNORE_RATIO = 31 - FightPropertyConst.FIGHT_PROP_DEFENCE_IGNORE_DELTA = 32 - FightPropertyConst.FIGHT_PROP_FIRE_ADD_HURT = 40 - FightPropertyConst.FIGHT_PROP_ELEC_ADD_HURT = 41 - FightPropertyConst.FIGHT_PROP_WATER_ADD_HURT = 42 - FightPropertyConst.FIGHT_PROP_GRASS_ADD_HURT = 43 - FightPropertyConst.FIGHT_PROP_WIND_ADD_HURT = 44 - FightPropertyConst.FIGHT_PROP_ROCK_ADD_HURT = 45 - FightPropertyConst.FIGHT_PROP_ICE_ADD_HURT = 46 - FightPropertyConst.FIGHT_PROP_HIT_HEAD_ADD_HURT = 47 - FightPropertyConst.FIGHT_PROP_FIRE_SUB_HURT = 50 - FightPropertyConst.FIGHT_PROP_ELEC_SUB_HURT = 51 - FightPropertyConst.FIGHT_PROP_WATER_SUB_HURT = 52 - FightPropertyConst.FIGHT_PROP_GRASS_SUB_HURT = 53 - FightPropertyConst.FIGHT_PROP_WIND_SUB_HURT = 54 - FightPropertyConst.FIGHT_PROP_ROCK_SUB_HURT = 55 - FightPropertyConst.FIGHT_PROP_ICE_SUB_HURT = 56 - FightPropertyConst.FIGHT_PROP_EFFECT_HIT = 60 - FightPropertyConst.FIGHT_PROP_EFFECT_RESIST = 61 - FightPropertyConst.FIGHT_PROP_FREEZE_RESIST = 62 - FightPropertyConst.FIGHT_PROP_TORPOR_RESIST = 63 - FightPropertyConst.FIGHT_PROP_DIZZY_RESIST = 64 - FightPropertyConst.FIGHT_PROP_FREEZE_SHORTEN = 65 - FightPropertyConst.FIGHT_PROP_TORPOR_SHORTEN = 66 - FightPropertyConst.FIGHT_PROP_DIZZY_SHORTEN = 67 - FightPropertyConst.FIGHT_PROP_MAX_FIRE_ENERGY = 70 - FightPropertyConst.FIGHT_PROP_MAX_ELEC_ENERGY = 71 - FightPropertyConst.FIGHT_PROP_MAX_WATER_ENERGY = 72 - FightPropertyConst.FIGHT_PROP_MAX_GRASS_ENERGY = 73 - FightPropertyConst.FIGHT_PROP_MAX_WIND_ENERGY = 74 - FightPropertyConst.FIGHT_PROP_MAX_ICE_ENERGY = 75 - FightPropertyConst.FIGHT_PROP_MAX_ROCK_ENERGY = 76 - FightPropertyConst.FIGHT_PROP_SKILL_CD_MINUS_RATIO = 80 - FightPropertyConst.FIGHT_PROP_SHIELD_COST_MINUS_RATIO = 81 - FightPropertyConst.FIGHT_PROP_CUR_FIRE_ENERGY = 1000 - FightPropertyConst.FIGHT_PROP_CUR_ELEC_ENERGY = 1001 - FightPropertyConst.FIGHT_PROP_CUR_WATER_ENERGY = 1002 - FightPropertyConst.FIGHT_PROP_CUR_GRASS_ENERGY = 1003 - FightPropertyConst.FIGHT_PROP_CUR_WIND_ENERGY = 1004 - FightPropertyConst.FIGHT_PROP_CUR_ICE_ENERGY = 1005 - FightPropertyConst.FIGHT_PROP_CUR_ROCK_ENERGY = 1006 - FightPropertyConst.FIGHT_PROP_CUR_HP = 1010 - FightPropertyConst.FIGHT_PROP_MAX_HP = 2000 - FightPropertyConst.FIGHT_PROP_CUR_ATTACK = 2001 - FightPropertyConst.FIGHT_PROP_CUR_DEFENSE = 2002 - FightPropertyConst.FIGHT_PROP_CUR_SPEED = 2003 - FightPropertyConst.FIGHT_PROP_NONEXTRA_ATTACK = 3000 - FightPropertyConst.FIGHT_PROP_NONEXTRA_DEFENSE = 3001 - FightPropertyConst.FIGHT_PROP_NONEXTRA_CRITICAL = 3002 - FightPropertyConst.FIGHT_PROP_NONEXTRA_ANTI_CRITICAL = 3003 - FightPropertyConst.FIGHT_PROP_NONEXTRA_CRITICAL_HURT = 3004 - FightPropertyConst.FIGHT_PROP_NONEXTRA_CHARGE_EFFICIENCY = 3005 - FightPropertyConst.FIGHT_PROP_NONEXTRA_ELEMENT_MASTERY = 3006 - FightPropertyConst.FIGHT_PROP_NONEXTRA_PHYSICAL_SUB_HURT = 3007 - FightPropertyConst.FIGHT_PROP_NONEXTRA_FIRE_ADD_HURT = 3008 - FightPropertyConst.FIGHT_PROP_NONEXTRA_ELEC_ADD_HURT = 3009 - FightPropertyConst.FIGHT_PROP_NONEXTRA_WATER_ADD_HURT = 3010 - FightPropertyConst.FIGHT_PROP_NONEXTRA_GRASS_ADD_HURT = 3011 - FightPropertyConst.FIGHT_PROP_NONEXTRA_WIND_ADD_HURT = 3012 - FightPropertyConst.FIGHT_PROP_NONEXTRA_ROCK_ADD_HURT = 3013 - FightPropertyConst.FIGHT_PROP_NONEXTRA_ICE_ADD_HURT = 3014 - FightPropertyConst.FIGHT_PROP_NONEXTRA_FIRE_SUB_HURT = 3015 - FightPropertyConst.FIGHT_PROP_NONEXTRA_ELEC_SUB_HURT = 3016 - FightPropertyConst.FIGHT_PROP_NONEXTRA_WATER_SUB_HURT = 3017 - FightPropertyConst.FIGHT_PROP_NONEXTRA_GRASS_SUB_HURT = 3018 - FightPropertyConst.FIGHT_PROP_NONEXTRA_WIND_SUB_HURT = 3019 - FightPropertyConst.FIGHT_PROP_NONEXTRA_ROCK_SUB_HURT = 3020 - FightPropertyConst.FIGHT_PROP_NONEXTRA_ICE_SUB_HURT = 3021 - FightPropertyConst.FIGHT_PROP_NONEXTRA_SKILL_CD_MINUS_RATIO = 3022 - FightPropertyConst.FIGHT_PROP_NONEXTRA_SHIELD_COST_MINUS_RATIO = 3023 - FightPropertyConst.FIGHT_PROP_NONEXTRA_PHYSICAL_ADD_HURT = 3024 - - FightPropertyConst.STRING_MAP = make(map[string]uint16) - - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONE"] = 0 - FightPropertyConst.STRING_MAP["FIGHT_PROP_BASE_HP"] = 1 - FightPropertyConst.STRING_MAP["FIGHT_PROP_HP"] = 2 - FightPropertyConst.STRING_MAP["FIGHT_PROP_HP_PERCENT"] = 3 - FightPropertyConst.STRING_MAP["FIGHT_PROP_BASE_ATTACK"] = 4 - FightPropertyConst.STRING_MAP["FIGHT_PROP_ATTACK"] = 5 - FightPropertyConst.STRING_MAP["FIGHT_PROP_ATTACK_PERCENT"] = 6 - FightPropertyConst.STRING_MAP["FIGHT_PROP_BASE_DEFENSE"] = 7 - FightPropertyConst.STRING_MAP["FIGHT_PROP_DEFENSE"] = 8 - FightPropertyConst.STRING_MAP["FIGHT_PROP_DEFENSE_PERCENT"] = 9 - FightPropertyConst.STRING_MAP["FIGHT_PROP_BASE_SPEED"] = 10 - FightPropertyConst.STRING_MAP["FIGHT_PROP_SPEED_PERCENT"] = 11 - FightPropertyConst.STRING_MAP["FIGHT_PROP_HP_MP_PERCENT"] = 12 - FightPropertyConst.STRING_MAP["FIGHT_PROP_ATTACK_MP_PERCENT"] = 13 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CRITICAL"] = 20 - FightPropertyConst.STRING_MAP["FIGHT_PROP_ANTI_CRITICAL"] = 21 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CRITICAL_HURT"] = 22 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CHARGE_EFFICIENCY"] = 23 - FightPropertyConst.STRING_MAP["FIGHT_PROP_ADD_HURT"] = 24 - FightPropertyConst.STRING_MAP["FIGHT_PROP_SUB_HURT"] = 25 - FightPropertyConst.STRING_MAP["FIGHT_PROP_HEAL_ADD"] = 26 - FightPropertyConst.STRING_MAP["FIGHT_PROP_HEALED_ADD"] = 27 - FightPropertyConst.STRING_MAP["FIGHT_PROP_ELEMENT_MASTERY"] = 28 - FightPropertyConst.STRING_MAP["FIGHT_PROP_PHYSICAL_SUB_HURT"] = 29 - FightPropertyConst.STRING_MAP["FIGHT_PROP_PHYSICAL_ADD_HURT"] = 30 - FightPropertyConst.STRING_MAP["FIGHT_PROP_DEFENCE_IGNORE_RATIO"] = 31 - FightPropertyConst.STRING_MAP["FIGHT_PROP_DEFENCE_IGNORE_DELTA"] = 32 - FightPropertyConst.STRING_MAP["FIGHT_PROP_FIRE_ADD_HURT"] = 40 - FightPropertyConst.STRING_MAP["FIGHT_PROP_ELEC_ADD_HURT"] = 41 - FightPropertyConst.STRING_MAP["FIGHT_PROP_WATER_ADD_HURT"] = 42 - FightPropertyConst.STRING_MAP["FIGHT_PROP_GRASS_ADD_HURT"] = 43 - FightPropertyConst.STRING_MAP["FIGHT_PROP_WIND_ADD_HURT"] = 44 - FightPropertyConst.STRING_MAP["FIGHT_PROP_ROCK_ADD_HURT"] = 45 - FightPropertyConst.STRING_MAP["FIGHT_PROP_ICE_ADD_HURT"] = 46 - FightPropertyConst.STRING_MAP["FIGHT_PROP_HIT_HEAD_ADD_HURT"] = 47 - FightPropertyConst.STRING_MAP["FIGHT_PROP_FIRE_SUB_HURT"] = 50 - FightPropertyConst.STRING_MAP["FIGHT_PROP_ELEC_SUB_HURT"] = 51 - FightPropertyConst.STRING_MAP["FIGHT_PROP_WATER_SUB_HURT"] = 52 - FightPropertyConst.STRING_MAP["FIGHT_PROP_GRASS_SUB_HURT"] = 53 - FightPropertyConst.STRING_MAP["FIGHT_PROP_WIND_SUB_HURT"] = 54 - FightPropertyConst.STRING_MAP["FIGHT_PROP_ROCK_SUB_HURT"] = 55 - FightPropertyConst.STRING_MAP["FIGHT_PROP_ICE_SUB_HURT"] = 56 - FightPropertyConst.STRING_MAP["FIGHT_PROP_EFFECT_HIT"] = 60 - FightPropertyConst.STRING_MAP["FIGHT_PROP_EFFECT_RESIST"] = 61 - FightPropertyConst.STRING_MAP["FIGHT_PROP_FREEZE_RESIST"] = 62 - FightPropertyConst.STRING_MAP["FIGHT_PROP_TORPOR_RESIST"] = 63 - FightPropertyConst.STRING_MAP["FIGHT_PROP_DIZZY_RESIST"] = 64 - FightPropertyConst.STRING_MAP["FIGHT_PROP_FREEZE_SHORTEN"] = 65 - FightPropertyConst.STRING_MAP["FIGHT_PROP_TORPOR_SHORTEN"] = 66 - FightPropertyConst.STRING_MAP["FIGHT_PROP_DIZZY_SHORTEN"] = 67 - FightPropertyConst.STRING_MAP["FIGHT_PROP_MAX_FIRE_ENERGY"] = 70 - FightPropertyConst.STRING_MAP["FIGHT_PROP_MAX_ELEC_ENERGY"] = 71 - FightPropertyConst.STRING_MAP["FIGHT_PROP_MAX_WATER_ENERGY"] = 72 - FightPropertyConst.STRING_MAP["FIGHT_PROP_MAX_GRASS_ENERGY"] = 73 - FightPropertyConst.STRING_MAP["FIGHT_PROP_MAX_WIND_ENERGY"] = 74 - FightPropertyConst.STRING_MAP["FIGHT_PROP_MAX_ICE_ENERGY"] = 75 - FightPropertyConst.STRING_MAP["FIGHT_PROP_MAX_ROCK_ENERGY"] = 76 - FightPropertyConst.STRING_MAP["FIGHT_PROP_SKILL_CD_MINUS_RATIO"] = 80 - FightPropertyConst.STRING_MAP["FIGHT_PROP_SHIELD_COST_MINUS_RATIO"] = 81 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CUR_FIRE_ENERGY"] = 1000 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CUR_ELEC_ENERGY"] = 1001 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CUR_WATER_ENERGY"] = 1002 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CUR_GRASS_ENERGY"] = 1003 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CUR_WIND_ENERGY"] = 1004 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CUR_ICE_ENERGY"] = 1005 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CUR_ROCK_ENERGY"] = 1006 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CUR_HP"] = 1010 - FightPropertyConst.STRING_MAP["FIGHT_PROP_MAX_HP"] = 2000 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CUR_ATTACK"] = 2001 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CUR_DEFENSE"] = 2002 - FightPropertyConst.STRING_MAP["FIGHT_PROP_CUR_SPEED"] = 2003 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_ATTACK"] = 3000 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_DEFENSE"] = 3001 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_CRITICAL"] = 3002 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_ANTI_CRITICAL"] = 3003 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_CRITICAL_HURT"] = 3004 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_CHARGE_EFFICIENCY"] = 3005 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_ELEMENT_MASTERY"] = 3006 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_PHYSICAL_SUB_HURT"] = 3007 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_FIRE_ADD_HURT"] = 3008 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_ELEC_ADD_HURT"] = 3009 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_WATER_ADD_HURT"] = 3010 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_GRASS_ADD_HURT"] = 3011 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_WIND_ADD_HURT"] = 3012 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_ROCK_ADD_HURT"] = 3013 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_ICE_ADD_HURT"] = 3014 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_FIRE_SUB_HURT"] = 3015 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_ELEC_SUB_HURT"] = 3016 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_WATER_SUB_HURT"] = 3017 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_GRASS_SUB_HURT"] = 3018 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_WIND_SUB_HURT"] = 3019 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_ROCK_SUB_HURT"] = 3020 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_ICE_SUB_HURT"] = 3021 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_SKILL_CD_MINUS_RATIO"] = 3022 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_SHIELD_COST_MINUS_RATIO"] = 3023 - FightPropertyConst.STRING_MAP["FIGHT_PROP_NONEXTRA_PHYSICAL_ADD_HURT"] = 3024 -} +const ( + FIGHT_PROP_NONE uint16 = 0 + FIGHT_PROP_BASE_HP uint16 = 1 + FIGHT_PROP_HP uint16 = 2 + FIGHT_PROP_HP_PERCENT uint16 = 3 + FIGHT_PROP_BASE_ATTACK uint16 = 4 + FIGHT_PROP_ATTACK uint16 = 5 + FIGHT_PROP_ATTACK_PERCENT uint16 = 6 + FIGHT_PROP_BASE_DEFENSE uint16 = 7 + FIGHT_PROP_DEFENSE uint16 = 8 + FIGHT_PROP_DEFENSE_PERCENT uint16 = 9 + FIGHT_PROP_BASE_SPEED uint16 = 10 + FIGHT_PROP_SPEED_PERCENT uint16 = 11 + FIGHT_PROP_HP_MP_PERCENT uint16 = 12 + FIGHT_PROP_ATTACK_MP_PERCENT uint16 = 13 + FIGHT_PROP_CRITICAL uint16 = 20 + FIGHT_PROP_ANTI_CRITICAL uint16 = 21 + FIGHT_PROP_CRITICAL_HURT uint16 = 22 + FIGHT_PROP_CHARGE_EFFICIENCY uint16 = 23 + FIGHT_PROP_ADD_HURT uint16 = 24 + FIGHT_PROP_SUB_HURT uint16 = 25 + FIGHT_PROP_HEAL_ADD uint16 = 26 + FIGHT_PROP_HEALED_ADD uint16 = 27 + FIGHT_PROP_ELEMENT_MASTERY uint16 = 28 + FIGHT_PROP_PHYSICAL_SUB_HURT uint16 = 29 + FIGHT_PROP_PHYSICAL_ADD_HURT uint16 = 30 + FIGHT_PROP_DEFENCE_IGNORE_RATIO uint16 = 31 + FIGHT_PROP_DEFENCE_IGNORE_DELTA uint16 = 32 + FIGHT_PROP_FIRE_ADD_HURT uint16 = 40 + FIGHT_PROP_ELEC_ADD_HURT uint16 = 41 + FIGHT_PROP_WATER_ADD_HURT uint16 = 42 + FIGHT_PROP_GRASS_ADD_HURT uint16 = 43 + FIGHT_PROP_WIND_ADD_HURT uint16 = 44 + FIGHT_PROP_ROCK_ADD_HURT uint16 = 45 + FIGHT_PROP_ICE_ADD_HURT uint16 = 46 + FIGHT_PROP_HIT_HEAD_ADD_HURT uint16 = 47 + FIGHT_PROP_FIRE_SUB_HURT uint16 = 50 + FIGHT_PROP_ELEC_SUB_HURT uint16 = 51 + FIGHT_PROP_WATER_SUB_HURT uint16 = 52 + FIGHT_PROP_GRASS_SUB_HURT uint16 = 53 + FIGHT_PROP_WIND_SUB_HURT uint16 = 54 + FIGHT_PROP_ROCK_SUB_HURT uint16 = 55 + FIGHT_PROP_ICE_SUB_HURT uint16 = 56 + FIGHT_PROP_EFFECT_HIT uint16 = 60 + FIGHT_PROP_EFFECT_RESIST uint16 = 61 + FIGHT_PROP_FREEZE_RESIST uint16 = 62 + FIGHT_PROP_TORPOR_RESIST uint16 = 63 + FIGHT_PROP_DIZZY_RESIST uint16 = 64 + FIGHT_PROP_FREEZE_SHORTEN uint16 = 65 + FIGHT_PROP_TORPOR_SHORTEN uint16 = 66 + FIGHT_PROP_DIZZY_SHORTEN uint16 = 67 + FIGHT_PROP_MAX_FIRE_ENERGY uint16 = 70 + FIGHT_PROP_MAX_ELEC_ENERGY uint16 = 71 + FIGHT_PROP_MAX_WATER_ENERGY uint16 = 72 + FIGHT_PROP_MAX_GRASS_ENERGY uint16 = 73 + FIGHT_PROP_MAX_WIND_ENERGY uint16 = 74 + FIGHT_PROP_MAX_ICE_ENERGY uint16 = 75 + FIGHT_PROP_MAX_ROCK_ENERGY uint16 = 76 + FIGHT_PROP_SKILL_CD_MINUS_RATIO uint16 = 80 + FIGHT_PROP_SHIELD_COST_MINUS_RATIO uint16 = 81 + FIGHT_PROP_CUR_FIRE_ENERGY uint16 = 1000 + FIGHT_PROP_CUR_ELEC_ENERGY uint16 = 1001 + FIGHT_PROP_CUR_WATER_ENERGY uint16 = 1002 + FIGHT_PROP_CUR_GRASS_ENERGY uint16 = 1003 + FIGHT_PROP_CUR_WIND_ENERGY uint16 = 1004 + FIGHT_PROP_CUR_ICE_ENERGY uint16 = 1005 + FIGHT_PROP_CUR_ROCK_ENERGY uint16 = 1006 + FIGHT_PROP_CUR_HP uint16 = 1010 + FIGHT_PROP_MAX_HP uint16 = 2000 + FIGHT_PROP_CUR_ATTACK uint16 = 2001 + FIGHT_PROP_CUR_DEFENSE uint16 = 2002 + FIGHT_PROP_CUR_SPEED uint16 = 2003 + FIGHT_PROP_NONEXTRA_ATTACK uint16 = 3000 + FIGHT_PROP_NONEXTRA_DEFENSE uint16 = 3001 + FIGHT_PROP_NONEXTRA_CRITICAL uint16 = 3002 + FIGHT_PROP_NONEXTRA_ANTI_CRITICAL uint16 = 3003 + FIGHT_PROP_NONEXTRA_CRITICAL_HURT uint16 = 3004 + FIGHT_PROP_NONEXTRA_CHARGE_EFFICIENCY uint16 = 3005 + FIGHT_PROP_NONEXTRA_ELEMENT_MASTERY uint16 = 3006 + FIGHT_PROP_NONEXTRA_PHYSICAL_SUB_HURT uint16 = 3007 + FIGHT_PROP_NONEXTRA_FIRE_ADD_HURT uint16 = 3008 + FIGHT_PROP_NONEXTRA_ELEC_ADD_HURT uint16 = 3009 + FIGHT_PROP_NONEXTRA_WATER_ADD_HURT uint16 = 3010 + FIGHT_PROP_NONEXTRA_GRASS_ADD_HURT uint16 = 3011 + FIGHT_PROP_NONEXTRA_WIND_ADD_HURT uint16 = 3012 + FIGHT_PROP_NONEXTRA_ROCK_ADD_HURT uint16 = 3013 + FIGHT_PROP_NONEXTRA_ICE_ADD_HURT uint16 = 3014 + FIGHT_PROP_NONEXTRA_FIRE_SUB_HURT uint16 = 3015 + FIGHT_PROP_NONEXTRA_ELEC_SUB_HURT uint16 = 3016 + FIGHT_PROP_NONEXTRA_WATER_SUB_HURT uint16 = 3017 + FIGHT_PROP_NONEXTRA_GRASS_SUB_HURT uint16 = 3018 + FIGHT_PROP_NONEXTRA_WIND_SUB_HURT uint16 = 3019 + FIGHT_PROP_NONEXTRA_ROCK_SUB_HURT uint16 = 3020 + FIGHT_PROP_NONEXTRA_ICE_SUB_HURT uint16 = 3021 + FIGHT_PROP_NONEXTRA_SKILL_CD_MINUS_RATIO uint16 = 3022 + FIGHT_PROP_NONEXTRA_SHIELD_COST_MINUS_RATIO uint16 = 3023 + FIGHT_PROP_NONEXTRA_PHYSICAL_ADD_HURT uint16 = 3024 +) diff --git a/common/constant/game_constant.go b/common/constant/game_constant.go deleted file mode 100644 index ad2ac078..00000000 --- a/common/constant/game_constant.go +++ /dev/null @@ -1,32 +0,0 @@ -package constant - -import "hk4e/pkg/endec" - -var GameConstantConst *GameConstant - -type GameConstant struct { - DEFAULT_ABILITY_STRINGS []string - DEFAULT_ABILITY_HASHES []int32 - DEFAULT_ABILITY_NAME int32 -} - -func InitGameConstant() { - GameConstantConst = new(GameConstant) - - GameConstantConst.DEFAULT_ABILITY_STRINGS = []string{ - "Avatar_DefaultAbility_VisionReplaceDieInvincible", - "Avatar_DefaultAbility_AvartarInShaderChange", - "Avatar_SprintBS_Invincible", - "Avatar_Freeze_Duration_Reducer", - "Avatar_Attack_ReviveEnergy", - "Avatar_Component_Initializer", - "Avatar_FallAnthem_Achievement_Listener", - } - - GameConstantConst.DEFAULT_ABILITY_HASHES = make([]int32, 0) - for _, v := range GameConstantConst.DEFAULT_ABILITY_STRINGS { - GameConstantConst.DEFAULT_ABILITY_HASHES = append(GameConstantConst.DEFAULT_ABILITY_HASHES, endec.Hk4eAbilityHashCode(v)) - } - - GameConstantConst.DEFAULT_ABILITY_NAME = endec.Hk4eAbilityHashCode("Default") -} diff --git a/common/constant/gcg_token_type.go b/common/constant/gcg_token_type.go index 30e6184f..7ecac8ef 100644 --- a/common/constant/gcg_token_type.go +++ b/common/constant/gcg_token_type.go @@ -1,19 +1,8 @@ package constant -var GCGTokenConst *GCGTokenType - -type GCGTokenType struct { - TOKEN_CUR_HEALTH uint32 // 现行血量 - TOKEN_MAX_HEALTH uint32 // 最大血量(不确定) - TOKEN_CUR_ELEM uint32 // 现行充能 - TOKEN_MAX_ELEM uint32 // 最大充能(充能条长度) -} - -func InitGCGTokenConst() { - GCGTokenConst = new(GCGTokenType) - - GCGTokenConst.TOKEN_CUR_HEALTH = 1 - GCGTokenConst.TOKEN_MAX_HEALTH = 2 - GCGTokenConst.TOKEN_CUR_ELEM = 4 - GCGTokenConst.TOKEN_MAX_ELEM = 5 -} +const ( + GCG_TOKEN_TYPE_CUR_HEALTH uint32 = 1 // 现行血量 + GCG_TOKEN_TYPE_MAX_HEALTH uint32 = 2 // 最大血量(不确定) + GCG_TOKEN_TYPE_CUR_ELEM uint32 = 4 // 现行充能 + GCG_TOKEN_TYPE_MAX_ELEM uint32 = 5 // 最大充能(充能条长度) +) diff --git a/common/constant/grow_curve.go b/common/constant/grow_curve.go index a9defa68..10e97a0c 100644 --- a/common/constant/grow_curve.go +++ b/common/constant/grow_curve.go @@ -1,131 +1,64 @@ package constant -var GrowCurveConst *GrowCurve - -type GrowCurve struct { - GROW_CURVE_NONE uint16 - GROW_CURVE_HP uint16 - GROW_CURVE_ATTACK uint16 - GROW_CURVE_STAMINA uint16 - GROW_CURVE_STRIKE uint16 - GROW_CURVE_ANTI_STRIKE uint16 - GROW_CURVE_ANTI_STRIKE1 uint16 - GROW_CURVE_ANTI_STRIKE2 uint16 - GROW_CURVE_ANTI_STRIKE3 uint16 - GROW_CURVE_STRIKE_HURT uint16 - GROW_CURVE_ELEMENT uint16 - GROW_CURVE_KILL_EXP uint16 - GROW_CURVE_DEFENSE uint16 - GROW_CURVE_ATTACK_BOMB uint16 - GROW_CURVE_HP_LITTLEMONSTER uint16 - GROW_CURVE_ELEMENT_MASTERY uint16 - GROW_CURVE_PROGRESSION uint16 - GROW_CURVE_DEFENDING uint16 - GROW_CURVE_MHP uint16 - GROW_CURVE_MATK uint16 - GROW_CURVE_TOWERATK uint16 - GROW_CURVE_HP_S5 uint16 - GROW_CURVE_HP_S4 uint16 - GROW_CURVE_HP_2 uint16 - GROW_CURVE_ATTACK_S5 uint16 - GROW_CURVE_ATTACK_S4 uint16 - GROW_CURVE_ATTACK_S3 uint16 - GROW_CURVE_STRIKE_S5 uint16 - GROW_CURVE_DEFENSE_S5 uint16 - GROW_CURVE_DEFENSE_S4 uint16 - GROW_CURVE_ATTACK_101 uint16 - GROW_CURVE_ATTACK_102 uint16 - GROW_CURVE_ATTACK_103 uint16 - GROW_CURVE_ATTACK_104 uint16 - GROW_CURVE_ATTACK_105 uint16 - GROW_CURVE_ATTACK_201 uint16 - GROW_CURVE_ATTACK_202 uint16 - GROW_CURVE_ATTACK_203 uint16 - GROW_CURVE_ATTACK_204 uint16 - GROW_CURVE_ATTACK_205 uint16 - GROW_CURVE_ATTACK_301 uint16 - GROW_CURVE_ATTACK_302 uint16 - GROW_CURVE_ATTACK_303 uint16 - GROW_CURVE_ATTACK_304 uint16 - GROW_CURVE_ATTACK_305 uint16 - GROW_CURVE_CRITICAL_101 uint16 - GROW_CURVE_CRITICAL_102 uint16 - GROW_CURVE_CRITICAL_103 uint16 - GROW_CURVE_CRITICAL_104 uint16 - GROW_CURVE_CRITICAL_105 uint16 - GROW_CURVE_CRITICAL_201 uint16 - GROW_CURVE_CRITICAL_202 uint16 - GROW_CURVE_CRITICAL_203 uint16 - GROW_CURVE_CRITICAL_204 uint16 - GROW_CURVE_CRITICAL_205 uint16 - GROW_CURVE_CRITICAL_301 uint16 - GROW_CURVE_CRITICAL_302 uint16 - GROW_CURVE_CRITICAL_303 uint16 - GROW_CURVE_CRITICAL_304 uint16 - GROW_CURVE_CRITICAL_305 uint16 -} - -func InitGrowCurveConst() { - GrowCurveConst = new(GrowCurve) - - GrowCurveConst.GROW_CURVE_NONE = 0 - GrowCurveConst.GROW_CURVE_HP = 1 - GrowCurveConst.GROW_CURVE_ATTACK = 2 - GrowCurveConst.GROW_CURVE_STAMINA = 3 - GrowCurveConst.GROW_CURVE_STRIKE = 4 - GrowCurveConst.GROW_CURVE_ANTI_STRIKE = 5 - GrowCurveConst.GROW_CURVE_ANTI_STRIKE1 = 6 - GrowCurveConst.GROW_CURVE_ANTI_STRIKE2 = 7 - GrowCurveConst.GROW_CURVE_ANTI_STRIKE3 = 8 - GrowCurveConst.GROW_CURVE_STRIKE_HURT = 9 - GrowCurveConst.GROW_CURVE_ELEMENT = 10 - GrowCurveConst.GROW_CURVE_KILL_EXP = 11 - GrowCurveConst.GROW_CURVE_DEFENSE = 12 - GrowCurveConst.GROW_CURVE_ATTACK_BOMB = 13 - GrowCurveConst.GROW_CURVE_HP_LITTLEMONSTER = 14 - GrowCurveConst.GROW_CURVE_ELEMENT_MASTERY = 15 - GrowCurveConst.GROW_CURVE_PROGRESSION = 16 - GrowCurveConst.GROW_CURVE_DEFENDING = 17 - GrowCurveConst.GROW_CURVE_MHP = 18 - GrowCurveConst.GROW_CURVE_MATK = 19 - GrowCurveConst.GROW_CURVE_TOWERATK = 20 - GrowCurveConst.GROW_CURVE_HP_S5 = 21 - GrowCurveConst.GROW_CURVE_HP_S4 = 22 - GrowCurveConst.GROW_CURVE_HP_2 = 23 - GrowCurveConst.GROW_CURVE_ATTACK_S5 = 31 - GrowCurveConst.GROW_CURVE_ATTACK_S4 = 32 - GrowCurveConst.GROW_CURVE_ATTACK_S3 = 33 - GrowCurveConst.GROW_CURVE_STRIKE_S5 = 34 - GrowCurveConst.GROW_CURVE_DEFENSE_S5 = 41 - GrowCurveConst.GROW_CURVE_DEFENSE_S4 = 42 - GrowCurveConst.GROW_CURVE_ATTACK_101 = 1101 - GrowCurveConst.GROW_CURVE_ATTACK_102 = 1102 - GrowCurveConst.GROW_CURVE_ATTACK_103 = 1103 - GrowCurveConst.GROW_CURVE_ATTACK_104 = 1104 - GrowCurveConst.GROW_CURVE_ATTACK_105 = 1105 - GrowCurveConst.GROW_CURVE_ATTACK_201 = 1201 - GrowCurveConst.GROW_CURVE_ATTACK_202 = 1202 - GrowCurveConst.GROW_CURVE_ATTACK_203 = 1203 - GrowCurveConst.GROW_CURVE_ATTACK_204 = 1204 - GrowCurveConst.GROW_CURVE_ATTACK_205 = 1205 - GrowCurveConst.GROW_CURVE_ATTACK_301 = 1301 - GrowCurveConst.GROW_CURVE_ATTACK_302 = 1302 - GrowCurveConst.GROW_CURVE_ATTACK_303 = 1303 - GrowCurveConst.GROW_CURVE_ATTACK_304 = 1304 - GrowCurveConst.GROW_CURVE_ATTACK_305 = 1305 - GrowCurveConst.GROW_CURVE_CRITICAL_101 = 2101 - GrowCurveConst.GROW_CURVE_CRITICAL_102 = 2102 - GrowCurveConst.GROW_CURVE_CRITICAL_103 = 2103 - GrowCurveConst.GROW_CURVE_CRITICAL_104 = 2104 - GrowCurveConst.GROW_CURVE_CRITICAL_105 = 2105 - GrowCurveConst.GROW_CURVE_CRITICAL_201 = 2201 - GrowCurveConst.GROW_CURVE_CRITICAL_202 = 2202 - GrowCurveConst.GROW_CURVE_CRITICAL_203 = 2203 - GrowCurveConst.GROW_CURVE_CRITICAL_204 = 2204 - GrowCurveConst.GROW_CURVE_CRITICAL_205 = 2205 - GrowCurveConst.GROW_CURVE_CRITICAL_301 = 2301 - GrowCurveConst.GROW_CURVE_CRITICAL_302 = 2302 - GrowCurveConst.GROW_CURVE_CRITICAL_303 = 2303 - GrowCurveConst.GROW_CURVE_CRITICAL_304 = 2304 - GrowCurveConst.GROW_CURVE_CRITICAL_305 = 2305 -} +const ( + GROW_CURVE_NONE uint16 = 0 + GROW_CURVE_HP uint16 = 1 + GROW_CURVE_ATTACK uint16 = 2 + GROW_CURVE_STAMINA uint16 = 3 + GROW_CURVE_STRIKE uint16 = 4 + GROW_CURVE_ANTI_STRIKE uint16 = 5 + GROW_CURVE_ANTI_STRIKE1 uint16 = 6 + GROW_CURVE_ANTI_STRIKE2 uint16 = 7 + GROW_CURVE_ANTI_STRIKE3 uint16 = 8 + GROW_CURVE_STRIKE_HURT uint16 = 9 + GROW_CURVE_ELEMENT uint16 = 10 + GROW_CURVE_KILL_EXP uint16 = 11 + GROW_CURVE_DEFENSE uint16 = 12 + GROW_CURVE_ATTACK_BOMB uint16 = 13 + GROW_CURVE_HP_LITTLEMONSTER uint16 = 14 + GROW_CURVE_ELEMENT_MASTERY uint16 = 15 + GROW_CURVE_PROGRESSION uint16 = 16 + GROW_CURVE_DEFENDING uint16 = 17 + GROW_CURVE_MHP uint16 = 18 + GROW_CURVE_MATK uint16 = 19 + GROW_CURVE_TOWERATK uint16 = 20 + GROW_CURVE_HP_S5 uint16 = 21 + GROW_CURVE_HP_S4 uint16 = 22 + GROW_CURVE_HP_2 uint16 = 23 + GROW_CURVE_ATTACK_S5 uint16 = 31 + GROW_CURVE_ATTACK_S4 uint16 = 32 + GROW_CURVE_ATTACK_S3 uint16 = 33 + GROW_CURVE_STRIKE_S5 uint16 = 34 + GROW_CURVE_DEFENSE_S5 uint16 = 41 + GROW_CURVE_DEFENSE_S4 uint16 = 42 + GROW_CURVE_ATTACK_101 uint16 = 1101 + GROW_CURVE_ATTACK_102 uint16 = 1102 + GROW_CURVE_ATTACK_103 uint16 = 1103 + GROW_CURVE_ATTACK_104 uint16 = 1104 + GROW_CURVE_ATTACK_105 uint16 = 1105 + GROW_CURVE_ATTACK_201 uint16 = 1201 + GROW_CURVE_ATTACK_202 uint16 = 1202 + GROW_CURVE_ATTACK_203 uint16 = 1203 + GROW_CURVE_ATTACK_204 uint16 = 1204 + GROW_CURVE_ATTACK_205 uint16 = 1205 + GROW_CURVE_ATTACK_301 uint16 = 1301 + GROW_CURVE_ATTACK_302 uint16 = 1302 + GROW_CURVE_ATTACK_303 uint16 = 1303 + GROW_CURVE_ATTACK_304 uint16 = 1304 + GROW_CURVE_ATTACK_305 uint16 = 1305 + GROW_CURVE_CRITICAL_101 uint16 = 2101 + GROW_CURVE_CRITICAL_102 uint16 = 2102 + GROW_CURVE_CRITICAL_103 uint16 = 2103 + GROW_CURVE_CRITICAL_104 uint16 = 2104 + GROW_CURVE_CRITICAL_105 uint16 = 2105 + GROW_CURVE_CRITICAL_201 uint16 = 2201 + GROW_CURVE_CRITICAL_202 uint16 = 2202 + GROW_CURVE_CRITICAL_203 uint16 = 2203 + GROW_CURVE_CRITICAL_204 uint16 = 2204 + GROW_CURVE_CRITICAL_205 uint16 = 2205 + GROW_CURVE_CRITICAL_301 uint16 = 2301 + GROW_CURVE_CRITICAL_302 uint16 = 2302 + GROW_CURVE_CRITICAL_303 uint16 = 2303 + GROW_CURVE_CRITICAL_304 uint16 = 2304 + GROW_CURVE_CRITICAL_305 uint16 = 2305 +) diff --git a/common/constant/item_constant.go b/common/constant/item_constant.go index 0eedbd21..fa864bad 100644 --- a/common/constant/item_constant.go +++ b/common/constant/item_constant.go @@ -1,49 +1,39 @@ package constant -var ItemConstantConst *ItemConstant - -type ItemConstant struct { +const ( // 虚拟物品 - HCOIN uint32 // 原石 201 - SCOIN uint32 // 摩拉 202 - MCOIN uint32 // 创世结晶 203 - RESIN uint32 // 树脂 106 - LEGENDARY_KEY uint32 // 传说任务钥匙 107 - HOME_COIN uint32 // 洞天宝钱 204 - PLAYER_EXP uint32 // 冒险阅历 102 - VIRTUAL_ITEM_PROP map[uint32]uint16 // 虚拟物品对应玩家的属性 + ITEM_ID_HCOIN uint32 = 201 // 原石 + ITEM_ID_SCOIN uint32 = 202 // 摩拉 + ITEM_ID_MCOIN uint32 = 203 // 创世结晶 + ITEM_ID_RESIN uint32 = 106 // 树脂 + ITEM_ID_LEGENDARY_KEY uint32 = 207 // 传说任务钥匙 + ITEM_ID_HOME_COIN uint32 = 204 // 洞天宝钱 + ITEM_ID_PLAYER_EXP uint32 = 102 // 冒险阅历 // 武器强化物品 - WEAPON_UPGRADE_MAGIC uint32 // 精锻用魔矿 104013 - WEAPON_UPGRADE_GOOD uint32 // 精锻用良矿 104012 - WEAPON_UPGRADE_MOTLEY uint32 // 精锻用杂矿 104011 - WEAPON_UPGRADE_MATERIAL []uint32 // 武器强化返还材料列表 -} + ITEM_ID_WEAPON_UPGRADE_MAGIC uint32 = 104013 // 精锻用魔矿 + ITEM_ID_WEAPON_UPGRADE_GOOD uint32 = 104012 // 精锻用良矿 + ITEM_ID_WEAPON_UPGRADE_MOTLEY uint32 = 104011 // 精锻用杂矿 +) -func InitItemConstantConst() { - ItemConstantConst = new(ItemConstant) +// 虚拟物品对应玩家的属性 +var VIRTUAL_ITEM_PROP map[uint32]uint16 - ItemConstantConst.HCOIN = 201 - ItemConstantConst.SCOIN = 202 - ItemConstantConst.MCOIN = 203 - ItemConstantConst.RESIN = 106 - ItemConstantConst.LEGENDARY_KEY = 207 - ItemConstantConst.HOME_COIN = 204 - ItemConstantConst.PLAYER_EXP = 102 - ItemConstantConst.VIRTUAL_ITEM_PROP = map[uint32]uint16{ - ItemConstantConst.HCOIN: PlayerPropertyConst.PROP_PLAYER_HCOIN, - ItemConstantConst.SCOIN: PlayerPropertyConst.PROP_PLAYER_SCOIN, - ItemConstantConst.MCOIN: PlayerPropertyConst.PROP_PLAYER_MCOIN, - ItemConstantConst.RESIN: PlayerPropertyConst.PROP_PLAYER_RESIN, - ItemConstantConst.LEGENDARY_KEY: PlayerPropertyConst.PROP_PLAYER_LEGENDARY_KEY, - ItemConstantConst.HOME_COIN: PlayerPropertyConst.PROP_PLAYER_HOME_COIN, - ItemConstantConst.PLAYER_EXP: PlayerPropertyConst.PROP_PLAYER_EXP, +// 武器强化返还材料列表 +var WEAPON_UPGRADE_MATERIAL []uint32 + +func init() { + VIRTUAL_ITEM_PROP = map[uint32]uint16{ + ITEM_ID_HCOIN: PLAYER_PROP_PLAYER_HCOIN, + ITEM_ID_SCOIN: PLAYER_PROP_PLAYER_SCOIN, + ITEM_ID_MCOIN: PLAYER_PROP_PLAYER_MCOIN, + ITEM_ID_RESIN: PLAYER_PROP_PLAYER_RESIN, + ITEM_ID_LEGENDARY_KEY: PLAYER_PROP_PLAYER_LEGENDARY_KEY, + ITEM_ID_HOME_COIN: PLAYER_PROP_PLAYER_HOME_COIN, + ITEM_ID_PLAYER_EXP: PLAYER_PROP_PLAYER_EXP, } - ItemConstantConst.WEAPON_UPGRADE_MAGIC = 104013 - ItemConstantConst.WEAPON_UPGRADE_GOOD = 104012 - ItemConstantConst.WEAPON_UPGRADE_MOTLEY = 104011 - ItemConstantConst.WEAPON_UPGRADE_MATERIAL = []uint32{ - ItemConstantConst.WEAPON_UPGRADE_MAGIC, - ItemConstantConst.WEAPON_UPGRADE_GOOD, - ItemConstantConst.WEAPON_UPGRADE_MOTLEY, + WEAPON_UPGRADE_MATERIAL = []uint32{ + ITEM_ID_WEAPON_UPGRADE_MAGIC, + ITEM_ID_WEAPON_UPGRADE_GOOD, + ITEM_ID_WEAPON_UPGRADE_MOTLEY, } } diff --git a/common/constant/item_type.go b/common/constant/item_type.go index 0cda87b2..ee0116db 100644 --- a/common/constant/item_type.go +++ b/common/constant/item_type.go @@ -1,36 +1,11 @@ package constant -var ItemTypeConst *ItemType - -type ItemType struct { - ITEM_NONE uint16 - ITEM_VIRTUAL uint16 - ITEM_MATERIAL uint16 - ITEM_RELIQUARY uint16 - ITEM_WEAPON uint16 - ITEM_DISPLAY uint16 - ITEM_FURNITURE uint16 - STRING_MAP map[string]uint16 -} - -func InitItemTypeConst() { - ItemTypeConst = new(ItemType) - - ItemTypeConst.ITEM_NONE = 0 - ItemTypeConst.ITEM_VIRTUAL = 1 - ItemTypeConst.ITEM_MATERIAL = 2 - ItemTypeConst.ITEM_RELIQUARY = 3 - ItemTypeConst.ITEM_WEAPON = 4 - ItemTypeConst.ITEM_DISPLAY = 5 - ItemTypeConst.ITEM_FURNITURE = 6 - - ItemTypeConst.STRING_MAP = make(map[string]uint16) - - ItemTypeConst.STRING_MAP["ITEM_NONE"] = 0 - ItemTypeConst.STRING_MAP["ITEM_VIRTUAL"] = 1 - ItemTypeConst.STRING_MAP["ITEM_MATERIAL"] = 2 - ItemTypeConst.STRING_MAP["ITEM_RELIQUARY"] = 3 - ItemTypeConst.STRING_MAP["ITEM_WEAPON"] = 4 - ItemTypeConst.STRING_MAP["ITEM_DISPLAY"] = 5 - ItemTypeConst.STRING_MAP["ITEM_FURNITURE"] = 6 -} +const ( + ITEM_TYPE_NONE uint16 = 0 + ITEM_TYPE_VIRTUAL uint16 = 1 + ITEM_TYPE_MATERIAL uint16 = 2 + ITEM_TYPE_RELIQUARY uint16 = 3 + ITEM_TYPE_WEAPON uint16 = 4 + ITEM_TYPE_DISPLAY uint16 = 5 + ITEM_TYPE_FURNITURE uint16 = 6 +) diff --git a/common/constant/life_state.go b/common/constant/life_state.go index 34788582..7998d50f 100644 --- a/common/constant/life_state.go +++ b/common/constant/life_state.go @@ -1,19 +1,8 @@ package constant -var LifeStateConst *LifeState - -type LifeState struct { - LIFE_NONE uint16 - LIFE_ALIVE uint16 - LIFE_DEAD uint16 - LIFE_REVIVE uint16 -} - -func InitLifeStateConst() { - LifeStateConst = new(LifeState) - - LifeStateConst.LIFE_NONE = 0 - LifeStateConst.LIFE_ALIVE = 1 - LifeStateConst.LIFE_DEAD = 2 - LifeStateConst.LIFE_REVIVE = 3 -} +const ( + LIFE_STATE_NONE uint16 = 0 + LIFE_STATE_ALIVE uint16 = 1 + LIFE_STATE_DEAD uint16 = 2 + LIFE_STATE_REVIVE uint16 = 3 +) diff --git a/common/constant/material_type.go b/common/constant/material_type.go index dddb935e..c3cbbde2 100644 --- a/common/constant/material_type.go +++ b/common/constant/material_type.go @@ -1,102 +1,33 @@ package constant -var MaterialTypeConst *MaterialType - -type MaterialType struct { - MATERIAL_NONE uint16 - MATERIAL_FOOD uint16 - MATERIAL_QUEST uint16 - MATERIAL_EXCHANGE uint16 - MATERIAL_CONSUME uint16 - MATERIAL_EXP_FRUIT uint16 - MATERIAL_AVATAR uint16 - MATERIAL_ADSORBATE uint16 - MATERIAL_CRICKET uint16 - MATERIAL_ELEM_CRYSTAL uint16 - MATERIAL_WEAPON_EXP_STONE uint16 - MATERIAL_CHEST uint16 - MATERIAL_RELIQUARY_MATERIAL uint16 - MATERIAL_AVATAR_MATERIAL uint16 - MATERIAL_NOTICE_ADD_HP uint16 - MATERIAL_SEA_LAMP uint16 - MATERIAL_SELECTABLE_CHEST uint16 - MATERIAL_FLYCLOAK uint16 - MATERIAL_NAMECARD uint16 - MATERIAL_TALENT uint16 - MATERIAL_WIDGET uint16 - MATERIAL_CHEST_BATCH_USE uint16 - MATERIAL_FAKE_ABSORBATE uint16 - MATERIAL_CONSUME_BATCH_USE uint16 - MATERIAL_WOOD uint16 - MATERIAL_FURNITURE_FORMULA uint16 - MATERIAL_CHANNELLER_SLAB_BUFF uint16 - MATERIAL_FURNITURE_SUITE_FORMULA uint16 - MATERIAL_COSTUME uint16 - STRING_MAP map[string]uint16 -} - -func InitMaterialTypeConst() { - MaterialTypeConst = new(MaterialType) - - MaterialTypeConst.MATERIAL_NONE = 0 - MaterialTypeConst.MATERIAL_FOOD = 1 - MaterialTypeConst.MATERIAL_QUEST = 2 - MaterialTypeConst.MATERIAL_EXCHANGE = 4 - MaterialTypeConst.MATERIAL_CONSUME = 5 - MaterialTypeConst.MATERIAL_EXP_FRUIT = 6 - MaterialTypeConst.MATERIAL_AVATAR = 7 - MaterialTypeConst.MATERIAL_ADSORBATE = 8 - MaterialTypeConst.MATERIAL_CRICKET = 9 - MaterialTypeConst.MATERIAL_ELEM_CRYSTAL = 10 - MaterialTypeConst.MATERIAL_WEAPON_EXP_STONE = 11 - MaterialTypeConst.MATERIAL_CHEST = 12 - MaterialTypeConst.MATERIAL_RELIQUARY_MATERIAL = 13 - MaterialTypeConst.MATERIAL_AVATAR_MATERIAL = 14 - MaterialTypeConst.MATERIAL_NOTICE_ADD_HP = 15 - MaterialTypeConst.MATERIAL_SEA_LAMP = 16 - MaterialTypeConst.MATERIAL_SELECTABLE_CHEST = 17 - MaterialTypeConst.MATERIAL_FLYCLOAK = 18 - MaterialTypeConst.MATERIAL_NAMECARD = 19 - MaterialTypeConst.MATERIAL_TALENT = 20 - MaterialTypeConst.MATERIAL_WIDGET = 21 - MaterialTypeConst.MATERIAL_CHEST_BATCH_USE = 22 - MaterialTypeConst.MATERIAL_FAKE_ABSORBATE = 23 - MaterialTypeConst.MATERIAL_CONSUME_BATCH_USE = 24 - MaterialTypeConst.MATERIAL_WOOD = 25 - MaterialTypeConst.MATERIAL_FURNITURE_FORMULA = 27 - MaterialTypeConst.MATERIAL_CHANNELLER_SLAB_BUFF = 28 - MaterialTypeConst.MATERIAL_FURNITURE_SUITE_FORMULA = 29 - MaterialTypeConst.MATERIAL_COSTUME = 30 - - MaterialTypeConst.STRING_MAP = make(map[string]uint16) - - MaterialTypeConst.STRING_MAP["MATERIAL_NONE"] = 0 - MaterialTypeConst.STRING_MAP["MATERIAL_FOOD"] = 1 - MaterialTypeConst.STRING_MAP["MATERIAL_QUEST"] = 2 - MaterialTypeConst.STRING_MAP["MATERIAL_EXCHANGE"] = 4 - MaterialTypeConst.STRING_MAP["MATERIAL_CONSUME"] = 5 - MaterialTypeConst.STRING_MAP["MATERIAL_EXP_FRUIT"] = 6 - MaterialTypeConst.STRING_MAP["MATERIAL_AVATAR"] = 7 - MaterialTypeConst.STRING_MAP["MATERIAL_ADSORBATE"] = 8 - MaterialTypeConst.STRING_MAP["MATERIAL_CRICKET"] = 9 - MaterialTypeConst.STRING_MAP["MATERIAL_ELEM_CRYSTAL"] = 10 - MaterialTypeConst.STRING_MAP["MATERIAL_WEAPON_EXP_STONE"] = 11 - MaterialTypeConst.STRING_MAP["MATERIAL_CHEST"] = 12 - MaterialTypeConst.STRING_MAP["MATERIAL_RELIQUARY_MATERIAL"] = 13 - MaterialTypeConst.STRING_MAP["MATERIAL_AVATAR_MATERIAL"] = 14 - MaterialTypeConst.STRING_MAP["MATERIAL_NOTICE_ADD_HP"] = 15 - MaterialTypeConst.STRING_MAP["MATERIAL_SEA_LAMP"] = 16 - MaterialTypeConst.STRING_MAP["MATERIAL_SELECTABLE_CHEST"] = 17 - MaterialTypeConst.STRING_MAP["MATERIAL_FLYCLOAK"] = 18 - MaterialTypeConst.STRING_MAP["MATERIAL_NAMECARD"] = 19 - MaterialTypeConst.STRING_MAP["MATERIAL_TALENT"] = 20 - MaterialTypeConst.STRING_MAP["MATERIAL_WIDGET"] = 21 - MaterialTypeConst.STRING_MAP["MATERIAL_CHEST_BATCH_USE"] = 22 - MaterialTypeConst.STRING_MAP["MATERIAL_FAKE_ABSORBATE"] = 23 - MaterialTypeConst.STRING_MAP["MATERIAL_CONSUME_BATCH_USE"] = 24 - MaterialTypeConst.STRING_MAP["MATERIAL_WOOD"] = 25 - MaterialTypeConst.STRING_MAP["MATERIAL_FURNITURE_FORMULA"] = 27 - MaterialTypeConst.STRING_MAP["MATERIAL_CHANNELLER_SLAB_BUFF"] = 28 - MaterialTypeConst.STRING_MAP["MATERIAL_FURNITURE_SUITE_FORMULA"] = 29 - MaterialTypeConst.STRING_MAP["MATERIAL_COSTUME"] = 30 -} +const ( + MATERIAL_TYPE_NONE uint16 = 0 + MATERIAL_TYPE_FOOD uint16 = 1 + MATERIAL_TYPE_QUEST uint16 = 2 + MATERIAL_TYPE_EXCHANGE uint16 = 4 + MATERIAL_TYPE_CONSUME uint16 = 5 + MATERIAL_TYPE_EXP_FRUIT uint16 = 6 + MATERIAL_TYPE_AVATAR uint16 = 7 + MATERIAL_TYPE_ADSORBATE uint16 = 8 + MATERIAL_TYPE_CRICKET uint16 = 9 + MATERIAL_TYPE_ELEM_CRYSTAL uint16 = 10 + MATERIAL_TYPE_WEAPON_EXP_STONE uint16 = 11 + MATERIAL_TYPE_CHEST uint16 = 12 + MATERIAL_TYPE_RELIQUARY_MATERIAL uint16 = 13 + MATERIAL_TYPE_AVATAR_MATERIAL uint16 = 14 + MATERIAL_TYPE_NOTICE_ADD_HP uint16 = 15 + MATERIAL_TYPE_SEA_LAMP uint16 = 16 + MATERIAL_TYPE_SELECTABLE_CHEST uint16 = 17 + MATERIAL_TYPE_FLYCLOAK uint16 = 18 + MATERIAL_TYPE_NAMECARD uint16 = 19 + MATERIAL_TYPE_TALENT uint16 = 20 + MATERIAL_TYPE_WIDGET uint16 = 21 + MATERIAL_TYPE_CHEST_BATCH_USE uint16 = 22 + MATERIAL_TYPE_FAKE_ABSORBATE uint16 = 23 + MATERIAL_TYPE_CONSUME_BATCH_USE uint16 = 24 + MATERIAL_TYPE_WOOD uint16 = 25 + MATERIAL_TYPE_FURNITURE_FORMULA uint16 = 27 + MATERIAL_TYPE_CHANNELLER_SLAB_BUFF uint16 = 28 + MATERIAL_TYPE_FURNITURE_SUITE_FORMULA uint16 = 29 + MATERIAL_TYPE_COSTUME uint16 = 30 +) diff --git a/common/constant/open_state.go b/common/constant/open_state.go index 09715a3e..c80a6c6d 100644 --- a/common/constant/open_state.go +++ b/common/constant/open_state.go @@ -1,343 +1,343 @@ package constant -var OpenStateConst *OpenState +const ( + OPEN_STATE_NONE uint16 = 0 + OPEN_STATE_PAIMON uint16 = 1 + OPEN_STATE_PAIMON_NAVIGATION uint16 = 2 + OPEN_STATE_AVATAR_PROMOTE uint16 = 3 + OPEN_STATE_AVATAR_TALENT uint16 = 4 + OPEN_STATE_WEAPON_PROMOTE uint16 = 5 + OPEN_STATE_WEAPON_AWAKEN uint16 = 6 + OPEN_STATE_QUEST_REMIND uint16 = 7 + OPEN_STATE_GAME_GUIDE uint16 = 8 + OPEN_STATE_COOK uint16 = 9 + OPEN_STATE_WEAPON_UPGRADE uint16 = 10 + OPEN_STATE_RELIQUARY_UPGRADE uint16 = 11 + OPEN_STATE_RELIQUARY_PROMOTE uint16 = 12 + OPEN_STATE_WEAPON_PROMOTE_GUIDE uint16 = 13 + OPEN_STATE_WEAPON_CHANGE_GUIDE uint16 = 14 + OPEN_STATE_PLAYER_LVUP_GUIDE uint16 = 15 + OPEN_STATE_FRESHMAN_GUIDE uint16 = 16 + OPEN_STATE_SKIP_FRESHMAN_GUIDE uint16 = 17 + OPEN_STATE_GUIDE_MOVE_CAMERA uint16 = 18 + OPEN_STATE_GUIDE_SCALE_CAMERA uint16 = 19 + OPEN_STATE_GUIDE_KEYBOARD uint16 = 20 + OPEN_STATE_GUIDE_MOVE uint16 = 21 + OPEN_STATE_GUIDE_JUMP uint16 = 22 + OPEN_STATE_GUIDE_SPRINT uint16 = 23 + OPEN_STATE_GUIDE_MAP uint16 = 24 + OPEN_STATE_GUIDE_ATTACK uint16 = 25 + OPEN_STATE_GUIDE_FLY uint16 = 26 + OPEN_STATE_GUIDE_TALENT uint16 = 27 + OPEN_STATE_GUIDE_RELIC uint16 = 28 + OPEN_STATE_GUIDE_RELIC_PROM uint16 = 29 + OPEN_STATE_COMBINE uint16 = 30 + OPEN_STATE_GACHA uint16 = 31 + OPEN_STATE_GUIDE_GACHA uint16 = 32 + OPEN_STATE_GUIDE_TEAM uint16 = 33 + OPEN_STATE_GUIDE_PROUD uint16 = 34 + OPEN_STATE_GUIDE_AVATAR_PROMOTE uint16 = 35 + OPEN_STATE_GUIDE_ADVENTURE_CARD uint16 = 36 + OPEN_STATE_FORGE uint16 = 37 + OPEN_STATE_GUIDE_BAG uint16 = 38 + OPEN_STATE_EXPEDITION uint16 = 39 + OPEN_STATE_GUIDE_ADVENTURE_DAILYTASK uint16 = 40 + OPEN_STATE_GUIDE_ADVENTURE_DUNGEON uint16 = 41 + OPEN_STATE_TOWER uint16 = 42 + OPEN_STATE_WORLD_STAMINA uint16 = 43 + OPEN_STATE_TOWER_FIRST_ENTER uint16 = 44 + OPEN_STATE_RESIN uint16 = 45 + OPEN_STATE_LIMIT_REGION_FRESHMEAT uint16 = 47 + OPEN_STATE_LIMIT_REGION_GLOBAL uint16 = 48 + OPEN_STATE_MULTIPLAYER uint16 = 49 + OPEN_STATE_GUIDE_MOUSEPC uint16 = 50 + OPEN_STATE_GUIDE_MULTIPLAYER uint16 = 51 + OPEN_STATE_GUIDE_DUNGEONREWARD uint16 = 52 + OPEN_STATE_GUIDE_BLOSSOM uint16 = 53 + OPEN_STATE_AVATAR_FASHION uint16 = 54 + OPEN_STATE_PHOTOGRAPH uint16 = 55 + OPEN_STATE_GUIDE_KSLQUEST uint16 = 56 + OPEN_STATE_PERSONAL_LINE uint16 = 57 + OPEN_STATE_GUIDE_PERSONAL_LINE uint16 = 58 + OPEN_STATE_GUIDE_APPEARANCE uint16 = 59 + OPEN_STATE_GUIDE_PROCESS uint16 = 60 + OPEN_STATE_GUIDE_PERSONAL_LINE_KEY uint16 = 61 + OPEN_STATE_GUIDE_WIDGET uint16 = 62 + OPEN_STATE_GUIDE_ACTIVITY_SKILL_ASTER uint16 = 63 + OPEN_STATE_GUIDE_COLDCLIMATE uint16 = 64 + OPEN_STATE_DERIVATIVE_MALL uint16 = 65 + OPEN_STATE_GUIDE_EXITMULTIPLAYER uint16 = 66 + OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD uint16 = 67 + OPEN_STATE_GUIDE_THEATREMACHANICUS_REBUILD uint16 = 68 + OPEN_STATE_GUIDE_THEATREMACHANICUS_CARD uint16 = 69 + OPEN_STATE_GUIDE_THEATREMACHANICUS_MONSTER uint16 = 70 + OPEN_STATE_GUIDE_THEATREMACHANICUS_MISSION_CHECK uint16 = 71 + OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD_SELECT uint16 = 72 + OPEN_STATE_GUIDE_THEATREMACHANICUS_CHALLENGE_START uint16 = 73 + OPEN_STATE_GUIDE_CONVERT uint16 = 74 + OPEN_STATE_GUIDE_THEATREMACHANICUS_MULTIPLAYER uint16 = 75 + OPEN_STATE_GUIDE_COOP_TASK uint16 = 76 + OPEN_STATE_GUIDE_HOMEWORLD_ADEPTIABODE uint16 = 77 + OPEN_STATE_GUIDE_HOMEWORLD_DEPLOY uint16 = 78 + OPEN_STATE_GUIDE_CHANNELLERSLAB_EQUIP uint16 = 79 + OPEN_STATE_GUIDE_CHANNELLERSLAB_MP_SOLUTION uint16 = 80 + OPEN_STATE_GUIDE_CHANNELLERSLAB_POWER uint16 = 81 + OPEN_STATE_GUIDE_HIDEANDSEEK_SKILL uint16 = 82 + OPEN_STATE_GUIDE_HOMEWORLD_MAPLIST uint16 = 83 + OPEN_STATE_GUIDE_RELICRESOLVE uint16 = 84 + OPEN_STATE_GUIDE_GGUIDE uint16 = 85 + OPEN_STATE_GUIDE_GGUIDE_HINT uint16 = 86 + OPEN_STATE_CITY_REPUATION_MENGDE uint16 = 800 + OPEN_STATE_CITY_REPUATION_LIYUE uint16 = 801 + OPEN_STATE_CITY_REPUATION_UI_HINT uint16 = 802 + OPEN_STATE_CITY_REPUATION_INAZUMA uint16 = 803 + OPEN_STATE_SHOP_TYPE_MALL uint16 = 900 + OPEN_STATE_SHOP_TYPE_RECOMMANDED uint16 = 901 + OPEN_STATE_SHOP_TYPE_GENESISCRYSTAL uint16 = 902 + OPEN_STATE_SHOP_TYPE_GIFTPACKAGE uint16 = 903 + OPEN_STATE_SHOP_TYPE_PAIMON uint16 = 1001 + OPEN_STATE_SHOP_TYPE_CITY uint16 = 1002 + OPEN_STATE_SHOP_TYPE_BLACKSMITH uint16 = 1003 + OPEN_STATE_SHOP_TYPE_GROCERY uint16 = 1004 + OPEN_STATE_SHOP_TYPE_FOOD uint16 = 1005 + OPEN_STATE_SHOP_TYPE_SEA_LAMP uint16 = 1006 + OPEN_STATE_SHOP_TYPE_VIRTUAL_SHOP uint16 = 1007 + OPEN_STATE_SHOP_TYPE_LIYUE_GROCERY uint16 = 1008 + OPEN_STATE_SHOP_TYPE_LIYUE_SOUVENIR uint16 = 1009 + OPEN_STATE_SHOP_TYPE_LIYUE_RESTAURANT uint16 = 1010 + OPEN_STATE_SHOP_TYPE_INAZUMA_SOUVENIR uint16 = 1011 + OPEN_STATE_SHOP_TYPE_NPC_TOMOKI uint16 = 1012 + OPEN_ADVENTURE_MANUAL uint16 = 1100 + OPEN_ADVENTURE_MANUAL_CITY_MENGDE uint16 = 1101 + OPEN_ADVENTURE_MANUAL_CITY_LIYUE uint16 = 1102 + OPEN_ADVENTURE_MANUAL_MONSTER uint16 = 1103 + OPEN_ADVENTURE_MANUAL_BOSS_DUNGEON uint16 = 1104 + OPEN_STATE_ACTIVITY_SEALAMP uint16 = 1200 + OPEN_STATE_ACTIVITY_SEALAMP_TAB2 uint16 = 1201 + OPEN_STATE_ACTIVITY_SEALAMP_TAB3 uint16 = 1202 + OPEN_STATE_BATTLE_PASS uint16 = 1300 + OPEN_STATE_BATTLE_PASS_ENTRY uint16 = 1301 + OPEN_STATE_ACTIVITY_CRUCIBLE uint16 = 1400 + OPEN_STATE_ACTIVITY_NEWBEEBOUNS_OPEN uint16 = 1401 + OPEN_STATE_ACTIVITY_NEWBEEBOUNS_CLOSE uint16 = 1402 + OPEN_STATE_ACTIVITY_ENTRY_OPEN uint16 = 1403 + OPEN_STATE_MENGDE_INFUSEDCRYSTAL uint16 = 1404 + OPEN_STATE_LIYUE_INFUSEDCRYSTAL uint16 = 1405 + OPEN_STATE_SNOW_MOUNTAIN_ELDER_TREE uint16 = 1406 + OPEN_STATE_MIRACLE_RING uint16 = 1407 + OPEN_STATE_COOP_LINE uint16 = 1408 + OPEN_STATE_INAZUMA_INFUSEDCRYSTAL uint16 = 1409 + OPEN_STATE_FISH uint16 = 1410 + OPEN_STATE_GUIDE_SUMO_TEAM_SKILL uint16 = 1411 + OPEN_STATE_GUIDE_FISH_RECIPE uint16 = 1412 + OPEN_STATE_HOME uint16 = 1500 + OPEN_STATE_ACTIVITY_HOMEWORLD uint16 = 1501 + OPEN_STATE_ADEPTIABODE uint16 = 1502 + OPEN_STATE_HOME_AVATAR uint16 = 1503 + OPEN_STATE_HOME_EDIT uint16 = 1504 + OPEN_STATE_HOME_EDIT_TIPS uint16 = 1505 + OPEN_STATE_RELIQUARY_DECOMPOSE uint16 = 1600 + OPEN_STATE_ACTIVITY_H5 uint16 = 1700 + OPEN_STATE_ORAIONOKAMI uint16 = 2000 + OPEN_STATE_GUIDE_CHESS_MISSION_CHECK uint16 = 2001 + OPEN_STATE_GUIDE_CHESS_BUILD uint16 = 2002 + OPEN_STATE_GUIDE_CHESS_WIND_TOWER_CIRCLE uint16 = 2003 + OPEN_STATE_GUIDE_CHESS_CARD_SELECT uint16 = 2004 + OPEN_STATE_INAZUMA_MAINQUEST_FINISHED uint16 = 2005 + OPEN_STATE_PAIMON_LVINFO uint16 = 2100 + OPEN_STATE_TELEPORT_HUD uint16 = 2101 + OPEN_STATE_GUIDE_MAP_UNLOCK uint16 = 2102 + OPEN_STATE_GUIDE_PAIMON_LVINFO uint16 = 2103 + OPEN_STATE_GUIDE_AMBORTRANSPORT uint16 = 2104 + OPEN_STATE_GUIDE_FLY_SECOND uint16 = 2105 + OPEN_STATE_GUIDE_KAEYA_CLUE uint16 = 2106 + OPEN_STATE_CAPTURE_CODEX uint16 = 2107 + OPEN_STATE_ACTIVITY_FISH_OPEN uint16 = 2200 + OPEN_STATE_ACTIVITY_FISH_CLOSE uint16 = 2201 + OPEN_STATE_GUIDE_ROGUE_MAP uint16 = 2205 + OPEN_STATE_GUIDE_ROGUE_RUNE uint16 = 2206 + OPEN_STATE_GUIDE_BARTENDER_FORMULA uint16 = 2210 + OPEN_STATE_GUIDE_BARTENDER_MIX uint16 = 2211 + OPEN_STATE_GUIDE_BARTENDER_CUP uint16 = 2212 + OPEN_STATE_GUIDE_MAIL_FAVORITES uint16 = 2400 + OPEN_STATE_GUIDE_POTION_CONFIGURE uint16 = 2401 + OPEN_STATE_GUIDE_LANV2_FIREWORK uint16 = 2402 + OPEN_STATE_LOADINGTIPS_ENKANOMIYA uint16 = 2403 + OPEN_STATE_MICHIAE_CASKET uint16 = 2500 + OPEN_STATE_MAIL_COLLECT_UNLOCK_RED_POINT uint16 = 2501 + OPEN_STATE_LUMEN_STONE uint16 = 2600 + OPEN_STATE_GUIDE_CRYSTALLINK_BUFF uint16 = 2601 +) -type OpenState struct { - OPEN_STATE_NONE uint16 - OPEN_STATE_PAIMON uint16 - OPEN_STATE_PAIMON_NAVIGATION uint16 - OPEN_STATE_AVATAR_PROMOTE uint16 - OPEN_STATE_AVATAR_TALENT uint16 - OPEN_STATE_WEAPON_PROMOTE uint16 - OPEN_STATE_WEAPON_AWAKEN uint16 - OPEN_STATE_QUEST_REMIND uint16 - OPEN_STATE_GAME_GUIDE uint16 - OPEN_STATE_COOK uint16 - OPEN_STATE_WEAPON_UPGRADE uint16 - OPEN_STATE_RELIQUARY_UPGRADE uint16 - OPEN_STATE_RELIQUARY_PROMOTE uint16 - OPEN_STATE_WEAPON_PROMOTE_GUIDE uint16 - OPEN_STATE_WEAPON_CHANGE_GUIDE uint16 - OPEN_STATE_PLAYER_LVUP_GUIDE uint16 - OPEN_STATE_FRESHMAN_GUIDE uint16 - OPEN_STATE_SKIP_FRESHMAN_GUIDE uint16 - OPEN_STATE_GUIDE_MOVE_CAMERA uint16 - OPEN_STATE_GUIDE_SCALE_CAMERA uint16 - OPEN_STATE_GUIDE_KEYBOARD uint16 - OPEN_STATE_GUIDE_MOVE uint16 - OPEN_STATE_GUIDE_JUMP uint16 - OPEN_STATE_GUIDE_SPRINT uint16 - OPEN_STATE_GUIDE_MAP uint16 - OPEN_STATE_GUIDE_ATTACK uint16 - OPEN_STATE_GUIDE_FLY uint16 - OPEN_STATE_GUIDE_TALENT uint16 - OPEN_STATE_GUIDE_RELIC uint16 - OPEN_STATE_GUIDE_RELIC_PROM uint16 - OPEN_STATE_COMBINE uint16 - OPEN_STATE_GACHA uint16 - OPEN_STATE_GUIDE_GACHA uint16 - OPEN_STATE_GUIDE_TEAM uint16 - OPEN_STATE_GUIDE_PROUD uint16 - OPEN_STATE_GUIDE_AVATAR_PROMOTE uint16 - OPEN_STATE_GUIDE_ADVENTURE_CARD uint16 - OPEN_STATE_FORGE uint16 - OPEN_STATE_GUIDE_BAG uint16 - OPEN_STATE_EXPEDITION uint16 - OPEN_STATE_GUIDE_ADVENTURE_DAILYTASK uint16 - OPEN_STATE_GUIDE_ADVENTURE_DUNGEON uint16 - OPEN_STATE_TOWER uint16 - OPEN_STATE_WORLD_STAMINA uint16 - OPEN_STATE_TOWER_FIRST_ENTER uint16 - OPEN_STATE_RESIN uint16 - OPEN_STATE_LIMIT_REGION_FRESHMEAT uint16 - OPEN_STATE_LIMIT_REGION_GLOBAL uint16 - OPEN_STATE_MULTIPLAYER uint16 - OPEN_STATE_GUIDE_MOUSEPC uint16 - OPEN_STATE_GUIDE_MULTIPLAYER uint16 - OPEN_STATE_GUIDE_DUNGEONREWARD uint16 - OPEN_STATE_GUIDE_BLOSSOM uint16 - OPEN_STATE_AVATAR_FASHION uint16 - OPEN_STATE_PHOTOGRAPH uint16 - OPEN_STATE_GUIDE_KSLQUEST uint16 - OPEN_STATE_PERSONAL_LINE uint16 - OPEN_STATE_GUIDE_PERSONAL_LINE uint16 - OPEN_STATE_GUIDE_APPEARANCE uint16 - OPEN_STATE_GUIDE_PROCESS uint16 - OPEN_STATE_GUIDE_PERSONAL_LINE_KEY uint16 - OPEN_STATE_GUIDE_WIDGET uint16 - OPEN_STATE_GUIDE_ACTIVITY_SKILL_ASTER uint16 - OPEN_STATE_GUIDE_COLDCLIMATE uint16 - OPEN_STATE_DERIVATIVE_MALL uint16 - OPEN_STATE_GUIDE_EXITMULTIPLAYER uint16 - OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD uint16 - OPEN_STATE_GUIDE_THEATREMACHANICUS_REBUILD uint16 - OPEN_STATE_GUIDE_THEATREMACHANICUS_CARD uint16 - OPEN_STATE_GUIDE_THEATREMACHANICUS_MONSTER uint16 - OPEN_STATE_GUIDE_THEATREMACHANICUS_MISSION_CHECK uint16 - OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD_SELECT uint16 - OPEN_STATE_GUIDE_THEATREMACHANICUS_CHALLENGE_START uint16 - OPEN_STATE_GUIDE_CONVERT uint16 - OPEN_STATE_GUIDE_THEATREMACHANICUS_MULTIPLAYER uint16 - OPEN_STATE_GUIDE_COOP_TASK uint16 - OPEN_STATE_GUIDE_HOMEWORLD_ADEPTIABODE uint16 - OPEN_STATE_GUIDE_HOMEWORLD_DEPLOY uint16 - OPEN_STATE_GUIDE_CHANNELLERSLAB_EQUIP uint16 - OPEN_STATE_GUIDE_CHANNELLERSLAB_MP_SOLUTION uint16 - OPEN_STATE_GUIDE_CHANNELLERSLAB_POWER uint16 - OPEN_STATE_GUIDE_HIDEANDSEEK_SKILL uint16 - OPEN_STATE_GUIDE_HOMEWORLD_MAPLIST uint16 - OPEN_STATE_GUIDE_RELICRESOLVE uint16 - OPEN_STATE_GUIDE_GGUIDE uint16 - OPEN_STATE_GUIDE_GGUIDE_HINT uint16 - OPEN_STATE_CITY_REPUATION_MENGDE uint16 - OPEN_STATE_CITY_REPUATION_LIYUE uint16 - OPEN_STATE_CITY_REPUATION_UI_HINT uint16 - OPEN_STATE_CITY_REPUATION_INAZUMA uint16 - OPEN_STATE_SHOP_TYPE_MALL uint16 - OPEN_STATE_SHOP_TYPE_RECOMMANDED uint16 - OPEN_STATE_SHOP_TYPE_GENESISCRYSTAL uint16 - OPEN_STATE_SHOP_TYPE_GIFTPACKAGE uint16 - OPEN_STATE_SHOP_TYPE_PAIMON uint16 - OPEN_STATE_SHOP_TYPE_CITY uint16 - OPEN_STATE_SHOP_TYPE_BLACKSMITH uint16 - OPEN_STATE_SHOP_TYPE_GROCERY uint16 - OPEN_STATE_SHOP_TYPE_FOOD uint16 - OPEN_STATE_SHOP_TYPE_SEA_LAMP uint16 - OPEN_STATE_SHOP_TYPE_VIRTUAL_SHOP uint16 - OPEN_STATE_SHOP_TYPE_LIYUE_GROCERY uint16 - OPEN_STATE_SHOP_TYPE_LIYUE_SOUVENIR uint16 - OPEN_STATE_SHOP_TYPE_LIYUE_RESTAURANT uint16 - OPEN_STATE_SHOP_TYPE_INAZUMA_SOUVENIR uint16 - OPEN_STATE_SHOP_TYPE_NPC_TOMOKI uint16 - OPEN_ADVENTURE_MANUAL uint16 - OPEN_ADVENTURE_MANUAL_CITY_MENGDE uint16 - OPEN_ADVENTURE_MANUAL_CITY_LIYUE uint16 - OPEN_ADVENTURE_MANUAL_MONSTER uint16 - OPEN_ADVENTURE_MANUAL_BOSS_DUNGEON uint16 - OPEN_STATE_ACTIVITY_SEALAMP uint16 - OPEN_STATE_ACTIVITY_SEALAMP_TAB2 uint16 - OPEN_STATE_ACTIVITY_SEALAMP_TAB3 uint16 - OPEN_STATE_BATTLE_PASS uint16 - OPEN_STATE_BATTLE_PASS_ENTRY uint16 - OPEN_STATE_ACTIVITY_CRUCIBLE uint16 - OPEN_STATE_ACTIVITY_NEWBEEBOUNS_OPEN uint16 - OPEN_STATE_ACTIVITY_NEWBEEBOUNS_CLOSE uint16 - OPEN_STATE_ACTIVITY_ENTRY_OPEN uint16 - OPEN_STATE_MENGDE_INFUSEDCRYSTAL uint16 - OPEN_STATE_LIYUE_INFUSEDCRYSTAL uint16 - OPEN_STATE_SNOW_MOUNTAIN_ELDER_TREE uint16 - OPEN_STATE_MIRACLE_RING uint16 - OPEN_STATE_COOP_LINE uint16 - OPEN_STATE_INAZUMA_INFUSEDCRYSTAL uint16 - OPEN_STATE_FISH uint16 - OPEN_STATE_GUIDE_SUMO_TEAM_SKILL uint16 - OPEN_STATE_GUIDE_FISH_RECIPE uint16 - OPEN_STATE_HOME uint16 - OPEN_STATE_ACTIVITY_HOMEWORLD uint16 - OPEN_STATE_ADEPTIABODE uint16 - OPEN_STATE_HOME_AVATAR uint16 - OPEN_STATE_HOME_EDIT uint16 - OPEN_STATE_HOME_EDIT_TIPS uint16 - OPEN_STATE_RELIQUARY_DECOMPOSE uint16 - OPEN_STATE_ACTIVITY_H5 uint16 - OPEN_STATE_ORAIONOKAMI uint16 - OPEN_STATE_GUIDE_CHESS_MISSION_CHECK uint16 - OPEN_STATE_GUIDE_CHESS_BUILD uint16 - OPEN_STATE_GUIDE_CHESS_WIND_TOWER_CIRCLE uint16 - OPEN_STATE_GUIDE_CHESS_CARD_SELECT uint16 - OPEN_STATE_INAZUMA_MAINQUEST_FINISHED uint16 - OPEN_STATE_PAIMON_LVINFO uint16 - OPEN_STATE_TELEPORT_HUD uint16 - OPEN_STATE_GUIDE_MAP_UNLOCK uint16 - OPEN_STATE_GUIDE_PAIMON_LVINFO uint16 - OPEN_STATE_GUIDE_AMBORTRANSPORT uint16 - OPEN_STATE_GUIDE_FLY_SECOND uint16 - OPEN_STATE_GUIDE_KAEYA_CLUE uint16 - OPEN_STATE_CAPTURE_CODEX uint16 - OPEN_STATE_ACTIVITY_FISH_OPEN uint16 - OPEN_STATE_ACTIVITY_FISH_CLOSE uint16 - OPEN_STATE_GUIDE_ROGUE_MAP uint16 - OPEN_STATE_GUIDE_ROGUE_RUNE uint16 - OPEN_STATE_GUIDE_BARTENDER_FORMULA uint16 - OPEN_STATE_GUIDE_BARTENDER_MIX uint16 - OPEN_STATE_GUIDE_BARTENDER_CUP uint16 - OPEN_STATE_GUIDE_MAIL_FAVORITES uint16 - OPEN_STATE_GUIDE_POTION_CONFIGURE uint16 - OPEN_STATE_GUIDE_LANV2_FIREWORK uint16 - OPEN_STATE_LOADINGTIPS_ENKANOMIYA uint16 - OPEN_STATE_MICHIAE_CASKET uint16 - OPEN_STATE_MAIL_COLLECT_UNLOCK_RED_POINT uint16 - OPEN_STATE_LUMEN_STONE uint16 - OPEN_STATE_GUIDE_CRYSTALLINK_BUFF uint16 -} - -func InitOpenStateConst() { - OpenStateConst = new(OpenState) - - OpenStateConst.OPEN_STATE_NONE = 0 - OpenStateConst.OPEN_STATE_PAIMON = 1 - OpenStateConst.OPEN_STATE_PAIMON_NAVIGATION = 2 - OpenStateConst.OPEN_STATE_AVATAR_PROMOTE = 3 - OpenStateConst.OPEN_STATE_AVATAR_TALENT = 4 - OpenStateConst.OPEN_STATE_WEAPON_PROMOTE = 5 - OpenStateConst.OPEN_STATE_WEAPON_AWAKEN = 6 - OpenStateConst.OPEN_STATE_QUEST_REMIND = 7 - OpenStateConst.OPEN_STATE_GAME_GUIDE = 8 - OpenStateConst.OPEN_STATE_COOK = 9 - OpenStateConst.OPEN_STATE_WEAPON_UPGRADE = 10 - OpenStateConst.OPEN_STATE_RELIQUARY_UPGRADE = 11 - OpenStateConst.OPEN_STATE_RELIQUARY_PROMOTE = 12 - OpenStateConst.OPEN_STATE_WEAPON_PROMOTE_GUIDE = 13 - OpenStateConst.OPEN_STATE_WEAPON_CHANGE_GUIDE = 14 - OpenStateConst.OPEN_STATE_PLAYER_LVUP_GUIDE = 15 - OpenStateConst.OPEN_STATE_FRESHMAN_GUIDE = 16 - OpenStateConst.OPEN_STATE_SKIP_FRESHMAN_GUIDE = 17 - OpenStateConst.OPEN_STATE_GUIDE_MOVE_CAMERA = 18 - OpenStateConst.OPEN_STATE_GUIDE_SCALE_CAMERA = 19 - OpenStateConst.OPEN_STATE_GUIDE_KEYBOARD = 20 - OpenStateConst.OPEN_STATE_GUIDE_MOVE = 21 - OpenStateConst.OPEN_STATE_GUIDE_JUMP = 22 - OpenStateConst.OPEN_STATE_GUIDE_SPRINT = 23 - OpenStateConst.OPEN_STATE_GUIDE_MAP = 24 - OpenStateConst.OPEN_STATE_GUIDE_ATTACK = 25 - OpenStateConst.OPEN_STATE_GUIDE_FLY = 26 - OpenStateConst.OPEN_STATE_GUIDE_TALENT = 27 - OpenStateConst.OPEN_STATE_GUIDE_RELIC = 28 - OpenStateConst.OPEN_STATE_GUIDE_RELIC_PROM = 29 - OpenStateConst.OPEN_STATE_COMBINE = 30 - OpenStateConst.OPEN_STATE_GACHA = 31 - OpenStateConst.OPEN_STATE_GUIDE_GACHA = 32 - OpenStateConst.OPEN_STATE_GUIDE_TEAM = 33 - OpenStateConst.OPEN_STATE_GUIDE_PROUD = 34 - OpenStateConst.OPEN_STATE_GUIDE_AVATAR_PROMOTE = 35 - OpenStateConst.OPEN_STATE_GUIDE_ADVENTURE_CARD = 36 - OpenStateConst.OPEN_STATE_FORGE = 37 - OpenStateConst.OPEN_STATE_GUIDE_BAG = 38 - OpenStateConst.OPEN_STATE_EXPEDITION = 39 - OpenStateConst.OPEN_STATE_GUIDE_ADVENTURE_DAILYTASK = 40 - OpenStateConst.OPEN_STATE_GUIDE_ADVENTURE_DUNGEON = 41 - OpenStateConst.OPEN_STATE_TOWER = 42 - OpenStateConst.OPEN_STATE_WORLD_STAMINA = 43 - OpenStateConst.OPEN_STATE_TOWER_FIRST_ENTER = 44 - OpenStateConst.OPEN_STATE_RESIN = 45 - OpenStateConst.OPEN_STATE_LIMIT_REGION_FRESHMEAT = 47 - OpenStateConst.OPEN_STATE_LIMIT_REGION_GLOBAL = 48 - OpenStateConst.OPEN_STATE_MULTIPLAYER = 49 - OpenStateConst.OPEN_STATE_GUIDE_MOUSEPC = 50 - OpenStateConst.OPEN_STATE_GUIDE_MULTIPLAYER = 51 - OpenStateConst.OPEN_STATE_GUIDE_DUNGEONREWARD = 52 - OpenStateConst.OPEN_STATE_GUIDE_BLOSSOM = 53 - OpenStateConst.OPEN_STATE_AVATAR_FASHION = 54 - OpenStateConst.OPEN_STATE_PHOTOGRAPH = 55 - OpenStateConst.OPEN_STATE_GUIDE_KSLQUEST = 56 - OpenStateConst.OPEN_STATE_PERSONAL_LINE = 57 - OpenStateConst.OPEN_STATE_GUIDE_PERSONAL_LINE = 58 - OpenStateConst.OPEN_STATE_GUIDE_APPEARANCE = 59 - OpenStateConst.OPEN_STATE_GUIDE_PROCESS = 60 - OpenStateConst.OPEN_STATE_GUIDE_PERSONAL_LINE_KEY = 61 - OpenStateConst.OPEN_STATE_GUIDE_WIDGET = 62 - OpenStateConst.OPEN_STATE_GUIDE_ACTIVITY_SKILL_ASTER = 63 - OpenStateConst.OPEN_STATE_GUIDE_COLDCLIMATE = 64 - OpenStateConst.OPEN_STATE_DERIVATIVE_MALL = 65 - OpenStateConst.OPEN_STATE_GUIDE_EXITMULTIPLAYER = 66 - OpenStateConst.OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD = 67 - OpenStateConst.OPEN_STATE_GUIDE_THEATREMACHANICUS_REBUILD = 68 - OpenStateConst.OPEN_STATE_GUIDE_THEATREMACHANICUS_CARD = 69 - OpenStateConst.OPEN_STATE_GUIDE_THEATREMACHANICUS_MONSTER = 70 - OpenStateConst.OPEN_STATE_GUIDE_THEATREMACHANICUS_MISSION_CHECK = 71 - OpenStateConst.OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD_SELECT = 72 - OpenStateConst.OPEN_STATE_GUIDE_THEATREMACHANICUS_CHALLENGE_START = 73 - OpenStateConst.OPEN_STATE_GUIDE_CONVERT = 74 - OpenStateConst.OPEN_STATE_GUIDE_THEATREMACHANICUS_MULTIPLAYER = 75 - OpenStateConst.OPEN_STATE_GUIDE_COOP_TASK = 76 - OpenStateConst.OPEN_STATE_GUIDE_HOMEWORLD_ADEPTIABODE = 77 - OpenStateConst.OPEN_STATE_GUIDE_HOMEWORLD_DEPLOY = 78 - OpenStateConst.OPEN_STATE_GUIDE_CHANNELLERSLAB_EQUIP = 79 - OpenStateConst.OPEN_STATE_GUIDE_CHANNELLERSLAB_MP_SOLUTION = 80 - OpenStateConst.OPEN_STATE_GUIDE_CHANNELLERSLAB_POWER = 81 - OpenStateConst.OPEN_STATE_GUIDE_HIDEANDSEEK_SKILL = 82 - OpenStateConst.OPEN_STATE_GUIDE_HOMEWORLD_MAPLIST = 83 - OpenStateConst.OPEN_STATE_GUIDE_RELICRESOLVE = 84 - OpenStateConst.OPEN_STATE_GUIDE_GGUIDE = 85 - OpenStateConst.OPEN_STATE_GUIDE_GGUIDE_HINT = 86 - OpenStateConst.OPEN_STATE_CITY_REPUATION_MENGDE = 800 - OpenStateConst.OPEN_STATE_CITY_REPUATION_LIYUE = 801 - OpenStateConst.OPEN_STATE_CITY_REPUATION_UI_HINT = 802 - OpenStateConst.OPEN_STATE_CITY_REPUATION_INAZUMA = 803 - OpenStateConst.OPEN_STATE_SHOP_TYPE_MALL = 900 - OpenStateConst.OPEN_STATE_SHOP_TYPE_RECOMMANDED = 901 - OpenStateConst.OPEN_STATE_SHOP_TYPE_GENESISCRYSTAL = 902 - OpenStateConst.OPEN_STATE_SHOP_TYPE_GIFTPACKAGE = 903 - OpenStateConst.OPEN_STATE_SHOP_TYPE_PAIMON = 1001 - OpenStateConst.OPEN_STATE_SHOP_TYPE_CITY = 1002 - OpenStateConst.OPEN_STATE_SHOP_TYPE_BLACKSMITH = 1003 - OpenStateConst.OPEN_STATE_SHOP_TYPE_GROCERY = 1004 - OpenStateConst.OPEN_STATE_SHOP_TYPE_FOOD = 1005 - OpenStateConst.OPEN_STATE_SHOP_TYPE_SEA_LAMP = 1006 - OpenStateConst.OPEN_STATE_SHOP_TYPE_VIRTUAL_SHOP = 1007 - OpenStateConst.OPEN_STATE_SHOP_TYPE_LIYUE_GROCERY = 1008 - OpenStateConst.OPEN_STATE_SHOP_TYPE_LIYUE_SOUVENIR = 1009 - OpenStateConst.OPEN_STATE_SHOP_TYPE_LIYUE_RESTAURANT = 1010 - OpenStateConst.OPEN_STATE_SHOP_TYPE_INAZUMA_SOUVENIR = 1011 - OpenStateConst.OPEN_STATE_SHOP_TYPE_NPC_TOMOKI = 1012 - OpenStateConst.OPEN_ADVENTURE_MANUAL = 1100 - OpenStateConst.OPEN_ADVENTURE_MANUAL_CITY_MENGDE = 1101 - OpenStateConst.OPEN_ADVENTURE_MANUAL_CITY_LIYUE = 1102 - OpenStateConst.OPEN_ADVENTURE_MANUAL_MONSTER = 1103 - OpenStateConst.OPEN_ADVENTURE_MANUAL_BOSS_DUNGEON = 1104 - OpenStateConst.OPEN_STATE_ACTIVITY_SEALAMP = 1200 - OpenStateConst.OPEN_STATE_ACTIVITY_SEALAMP_TAB2 = 1201 - OpenStateConst.OPEN_STATE_ACTIVITY_SEALAMP_TAB3 = 1202 - OpenStateConst.OPEN_STATE_BATTLE_PASS = 1300 - OpenStateConst.OPEN_STATE_BATTLE_PASS_ENTRY = 1301 - OpenStateConst.OPEN_STATE_ACTIVITY_CRUCIBLE = 1400 - OpenStateConst.OPEN_STATE_ACTIVITY_NEWBEEBOUNS_OPEN = 1401 - OpenStateConst.OPEN_STATE_ACTIVITY_NEWBEEBOUNS_CLOSE = 1402 - OpenStateConst.OPEN_STATE_ACTIVITY_ENTRY_OPEN = 1403 - OpenStateConst.OPEN_STATE_MENGDE_INFUSEDCRYSTAL = 1404 - OpenStateConst.OPEN_STATE_LIYUE_INFUSEDCRYSTAL = 1405 - OpenStateConst.OPEN_STATE_SNOW_MOUNTAIN_ELDER_TREE = 1406 - OpenStateConst.OPEN_STATE_MIRACLE_RING = 1407 - OpenStateConst.OPEN_STATE_COOP_LINE = 1408 - OpenStateConst.OPEN_STATE_INAZUMA_INFUSEDCRYSTAL = 1409 - OpenStateConst.OPEN_STATE_FISH = 1410 - OpenStateConst.OPEN_STATE_GUIDE_SUMO_TEAM_SKILL = 1411 - OpenStateConst.OPEN_STATE_GUIDE_FISH_RECIPE = 1412 - OpenStateConst.OPEN_STATE_HOME = 1500 - OpenStateConst.OPEN_STATE_ACTIVITY_HOMEWORLD = 1501 - OpenStateConst.OPEN_STATE_ADEPTIABODE = 1502 - OpenStateConst.OPEN_STATE_HOME_AVATAR = 1503 - OpenStateConst.OPEN_STATE_HOME_EDIT = 1504 - OpenStateConst.OPEN_STATE_HOME_EDIT_TIPS = 1505 - OpenStateConst.OPEN_STATE_RELIQUARY_DECOMPOSE = 1600 - OpenStateConst.OPEN_STATE_ACTIVITY_H5 = 1700 - OpenStateConst.OPEN_STATE_ORAIONOKAMI = 2000 - OpenStateConst.OPEN_STATE_GUIDE_CHESS_MISSION_CHECK = 2001 - OpenStateConst.OPEN_STATE_GUIDE_CHESS_BUILD = 2002 - OpenStateConst.OPEN_STATE_GUIDE_CHESS_WIND_TOWER_CIRCLE = 2003 - OpenStateConst.OPEN_STATE_GUIDE_CHESS_CARD_SELECT = 2004 - OpenStateConst.OPEN_STATE_INAZUMA_MAINQUEST_FINISHED = 2005 - OpenStateConst.OPEN_STATE_PAIMON_LVINFO = 2100 - OpenStateConst.OPEN_STATE_TELEPORT_HUD = 2101 - OpenStateConst.OPEN_STATE_GUIDE_MAP_UNLOCK = 2102 - OpenStateConst.OPEN_STATE_GUIDE_PAIMON_LVINFO = 2103 - OpenStateConst.OPEN_STATE_GUIDE_AMBORTRANSPORT = 2104 - OpenStateConst.OPEN_STATE_GUIDE_FLY_SECOND = 2105 - OpenStateConst.OPEN_STATE_GUIDE_KAEYA_CLUE = 2106 - OpenStateConst.OPEN_STATE_CAPTURE_CODEX = 2107 - OpenStateConst.OPEN_STATE_ACTIVITY_FISH_OPEN = 2200 - OpenStateConst.OPEN_STATE_ACTIVITY_FISH_CLOSE = 2201 - OpenStateConst.OPEN_STATE_GUIDE_ROGUE_MAP = 2205 - OpenStateConst.OPEN_STATE_GUIDE_ROGUE_RUNE = 2206 - OpenStateConst.OPEN_STATE_GUIDE_BARTENDER_FORMULA = 2210 - OpenStateConst.OPEN_STATE_GUIDE_BARTENDER_MIX = 2211 - OpenStateConst.OPEN_STATE_GUIDE_BARTENDER_CUP = 2212 - OpenStateConst.OPEN_STATE_GUIDE_MAIL_FAVORITES = 2400 - OpenStateConst.OPEN_STATE_GUIDE_POTION_CONFIGURE = 2401 - OpenStateConst.OPEN_STATE_GUIDE_LANV2_FIREWORK = 2402 - OpenStateConst.OPEN_STATE_LOADINGTIPS_ENKANOMIYA = 2403 - OpenStateConst.OPEN_STATE_MICHIAE_CASKET = 2500 - OpenStateConst.OPEN_STATE_MAIL_COLLECT_UNLOCK_RED_POINT = 2501 - OpenStateConst.OPEN_STATE_LUMEN_STONE = 2600 - OpenStateConst.OPEN_STATE_GUIDE_CRYSTALLINK_BUFF = 2601 +var ALL_OPEN_STATE []uint16 + +func init() { + ALL_OPEN_STATE = []uint16{ + OPEN_STATE_NONE, + OPEN_STATE_PAIMON, + OPEN_STATE_PAIMON_NAVIGATION, + OPEN_STATE_AVATAR_PROMOTE, + OPEN_STATE_AVATAR_TALENT, + OPEN_STATE_WEAPON_PROMOTE, + OPEN_STATE_WEAPON_AWAKEN, + OPEN_STATE_QUEST_REMIND, + OPEN_STATE_GAME_GUIDE, + OPEN_STATE_COOK, + OPEN_STATE_WEAPON_UPGRADE, + OPEN_STATE_RELIQUARY_UPGRADE, + OPEN_STATE_RELIQUARY_PROMOTE, + OPEN_STATE_WEAPON_PROMOTE_GUIDE, + OPEN_STATE_WEAPON_CHANGE_GUIDE, + OPEN_STATE_PLAYER_LVUP_GUIDE, + OPEN_STATE_FRESHMAN_GUIDE, + OPEN_STATE_SKIP_FRESHMAN_GUIDE, + OPEN_STATE_GUIDE_MOVE_CAMERA, + OPEN_STATE_GUIDE_SCALE_CAMERA, + OPEN_STATE_GUIDE_KEYBOARD, + OPEN_STATE_GUIDE_MOVE, + OPEN_STATE_GUIDE_JUMP, + OPEN_STATE_GUIDE_SPRINT, + OPEN_STATE_GUIDE_MAP, + OPEN_STATE_GUIDE_ATTACK, + OPEN_STATE_GUIDE_FLY, + OPEN_STATE_GUIDE_TALENT, + OPEN_STATE_GUIDE_RELIC, + OPEN_STATE_GUIDE_RELIC_PROM, + OPEN_STATE_COMBINE, + OPEN_STATE_GACHA, + OPEN_STATE_GUIDE_GACHA, + OPEN_STATE_GUIDE_TEAM, + OPEN_STATE_GUIDE_PROUD, + OPEN_STATE_GUIDE_AVATAR_PROMOTE, + OPEN_STATE_GUIDE_ADVENTURE_CARD, + OPEN_STATE_FORGE, + OPEN_STATE_GUIDE_BAG, + OPEN_STATE_EXPEDITION, + OPEN_STATE_GUIDE_ADVENTURE_DAILYTASK, + OPEN_STATE_GUIDE_ADVENTURE_DUNGEON, + OPEN_STATE_TOWER, + OPEN_STATE_WORLD_STAMINA, + OPEN_STATE_TOWER_FIRST_ENTER, + OPEN_STATE_RESIN, + OPEN_STATE_LIMIT_REGION_FRESHMEAT, + OPEN_STATE_LIMIT_REGION_GLOBAL, + OPEN_STATE_MULTIPLAYER, + OPEN_STATE_GUIDE_MOUSEPC, + OPEN_STATE_GUIDE_MULTIPLAYER, + OPEN_STATE_GUIDE_DUNGEONREWARD, + OPEN_STATE_GUIDE_BLOSSOM, + OPEN_STATE_AVATAR_FASHION, + OPEN_STATE_PHOTOGRAPH, + OPEN_STATE_GUIDE_KSLQUEST, + OPEN_STATE_PERSONAL_LINE, + OPEN_STATE_GUIDE_PERSONAL_LINE, + OPEN_STATE_GUIDE_APPEARANCE, + OPEN_STATE_GUIDE_PROCESS, + OPEN_STATE_GUIDE_PERSONAL_LINE_KEY, + OPEN_STATE_GUIDE_WIDGET, + OPEN_STATE_GUIDE_ACTIVITY_SKILL_ASTER, + OPEN_STATE_GUIDE_COLDCLIMATE, + OPEN_STATE_DERIVATIVE_MALL, + OPEN_STATE_GUIDE_EXITMULTIPLAYER, + OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD, + OPEN_STATE_GUIDE_THEATREMACHANICUS_REBUILD, + OPEN_STATE_GUIDE_THEATREMACHANICUS_CARD, + OPEN_STATE_GUIDE_THEATREMACHANICUS_MONSTER, + OPEN_STATE_GUIDE_THEATREMACHANICUS_MISSION_CHECK, + OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD_SELECT, + OPEN_STATE_GUIDE_THEATREMACHANICUS_CHALLENGE_START, + OPEN_STATE_GUIDE_CONVERT, + OPEN_STATE_GUIDE_THEATREMACHANICUS_MULTIPLAYER, + OPEN_STATE_GUIDE_COOP_TASK, + OPEN_STATE_GUIDE_HOMEWORLD_ADEPTIABODE, + OPEN_STATE_GUIDE_HOMEWORLD_DEPLOY, + OPEN_STATE_GUIDE_CHANNELLERSLAB_EQUIP, + OPEN_STATE_GUIDE_CHANNELLERSLAB_MP_SOLUTION, + OPEN_STATE_GUIDE_CHANNELLERSLAB_POWER, + OPEN_STATE_GUIDE_HIDEANDSEEK_SKILL, + OPEN_STATE_GUIDE_HOMEWORLD_MAPLIST, + OPEN_STATE_GUIDE_RELICRESOLVE, + OPEN_STATE_GUIDE_GGUIDE, + OPEN_STATE_GUIDE_GGUIDE_HINT, + OPEN_STATE_CITY_REPUATION_MENGDE, + OPEN_STATE_CITY_REPUATION_LIYUE, + OPEN_STATE_CITY_REPUATION_UI_HINT, + OPEN_STATE_CITY_REPUATION_INAZUMA, + OPEN_STATE_SHOP_TYPE_MALL, + OPEN_STATE_SHOP_TYPE_RECOMMANDED, + OPEN_STATE_SHOP_TYPE_GENESISCRYSTAL, + OPEN_STATE_SHOP_TYPE_GIFTPACKAGE, + OPEN_STATE_SHOP_TYPE_PAIMON, + OPEN_STATE_SHOP_TYPE_CITY, + OPEN_STATE_SHOP_TYPE_BLACKSMITH, + OPEN_STATE_SHOP_TYPE_GROCERY, + OPEN_STATE_SHOP_TYPE_FOOD, + OPEN_STATE_SHOP_TYPE_SEA_LAMP, + OPEN_STATE_SHOP_TYPE_VIRTUAL_SHOP, + OPEN_STATE_SHOP_TYPE_LIYUE_GROCERY, + OPEN_STATE_SHOP_TYPE_LIYUE_SOUVENIR, + OPEN_STATE_SHOP_TYPE_LIYUE_RESTAURANT, + OPEN_STATE_SHOP_TYPE_INAZUMA_SOUVENIR, + OPEN_STATE_SHOP_TYPE_NPC_TOMOKI, + OPEN_ADVENTURE_MANUAL, + OPEN_ADVENTURE_MANUAL_CITY_MENGDE, + OPEN_ADVENTURE_MANUAL_CITY_LIYUE, + OPEN_ADVENTURE_MANUAL_MONSTER, + OPEN_ADVENTURE_MANUAL_BOSS_DUNGEON, + OPEN_STATE_ACTIVITY_SEALAMP, + OPEN_STATE_ACTIVITY_SEALAMP_TAB2, + OPEN_STATE_ACTIVITY_SEALAMP_TAB3, + OPEN_STATE_BATTLE_PASS, + OPEN_STATE_BATTLE_PASS_ENTRY, + OPEN_STATE_ACTIVITY_CRUCIBLE, + OPEN_STATE_ACTIVITY_NEWBEEBOUNS_OPEN, + OPEN_STATE_ACTIVITY_NEWBEEBOUNS_CLOSE, + OPEN_STATE_ACTIVITY_ENTRY_OPEN, + OPEN_STATE_MENGDE_INFUSEDCRYSTAL, + OPEN_STATE_LIYUE_INFUSEDCRYSTAL, + OPEN_STATE_SNOW_MOUNTAIN_ELDER_TREE, + OPEN_STATE_MIRACLE_RING, + OPEN_STATE_COOP_LINE, + OPEN_STATE_INAZUMA_INFUSEDCRYSTAL, + OPEN_STATE_FISH, + OPEN_STATE_GUIDE_SUMO_TEAM_SKILL, + OPEN_STATE_GUIDE_FISH_RECIPE, + OPEN_STATE_HOME, + OPEN_STATE_ACTIVITY_HOMEWORLD, + OPEN_STATE_ADEPTIABODE, + OPEN_STATE_HOME_AVATAR, + OPEN_STATE_HOME_EDIT, + OPEN_STATE_HOME_EDIT_TIPS, + OPEN_STATE_RELIQUARY_DECOMPOSE, + OPEN_STATE_ACTIVITY_H5, + OPEN_STATE_ORAIONOKAMI, + OPEN_STATE_GUIDE_CHESS_MISSION_CHECK, + OPEN_STATE_GUIDE_CHESS_BUILD, + OPEN_STATE_GUIDE_CHESS_WIND_TOWER_CIRCLE, + OPEN_STATE_GUIDE_CHESS_CARD_SELECT, + OPEN_STATE_INAZUMA_MAINQUEST_FINISHED, + OPEN_STATE_PAIMON_LVINFO, + OPEN_STATE_TELEPORT_HUD, + OPEN_STATE_GUIDE_MAP_UNLOCK, + OPEN_STATE_GUIDE_PAIMON_LVINFO, + OPEN_STATE_GUIDE_AMBORTRANSPORT, + OPEN_STATE_GUIDE_FLY_SECOND, + OPEN_STATE_GUIDE_KAEYA_CLUE, + OPEN_STATE_CAPTURE_CODEX, + OPEN_STATE_ACTIVITY_FISH_OPEN, + OPEN_STATE_ACTIVITY_FISH_CLOSE, + OPEN_STATE_GUIDE_ROGUE_MAP, + OPEN_STATE_GUIDE_ROGUE_RUNE, + OPEN_STATE_GUIDE_BARTENDER_FORMULA, + OPEN_STATE_GUIDE_BARTENDER_MIX, + OPEN_STATE_GUIDE_BARTENDER_CUP, + OPEN_STATE_GUIDE_MAIL_FAVORITES, + OPEN_STATE_GUIDE_POTION_CONFIGURE, + OPEN_STATE_GUIDE_LANV2_FIREWORK, + OPEN_STATE_LOADINGTIPS_ENKANOMIYA, + OPEN_STATE_MICHIAE_CASKET, + OPEN_STATE_MAIL_COLLECT_UNLOCK_RED_POINT, + OPEN_STATE_LUMEN_STONE, + OPEN_STATE_GUIDE_CRYSTALLINK_BUFF, + } } diff --git a/common/constant/player_prop.go b/common/constant/player_prop.go index 0673b33d..0d33c523 100644 --- a/common/constant/player_prop.go +++ b/common/constant/player_prop.go @@ -1,95 +1,46 @@ package constant -var PlayerPropertyConst *PlayerProperty - -type PlayerProperty struct { - PROP_EXP uint16 // 角色经验 - PROP_BREAK_LEVEL uint16 // 角色突破等阶 - PROP_SATIATION_VAL uint16 // 角色饱食度 - PROP_SATIATION_PENALTY_TIME uint16 // 角色饱食度溢出 - PROP_LEVEL uint16 // 角色等级 - PROP_LAST_CHANGE_AVATAR_TIME uint16 // 上一次改变角色的时间 暂不确定 - PROP_MAX_SPRING_VOLUME uint16 // 七天神像最大恢复血量 0-8500000 - PROP_CUR_SPRING_VOLUME uint16 // 七天神像当前血量 0-PROP_MAX_SPRING_VOLUME - PROP_IS_SPRING_AUTO_USE uint16 // 是否开启靠近自动回血 0 1 - PROP_SPRING_AUTO_USE_PERCENT uint16 // 自动回血百分比 0-100 - PROP_IS_FLYABLE uint16 // 禁止使用风之翼 0 1 - PROP_IS_WEATHER_LOCKED uint16 // 游戏内天气锁定 - PROP_IS_GAME_TIME_LOCKED uint16 // 游戏内时间锁定 - PROP_IS_TRANSFERABLE uint16 // 是否禁止传送 0 1 - PROP_MAX_STAMINA uint16 // 最大体力 0-24000 - PROP_CUR_PERSIST_STAMINA uint16 // 当前体力 0-PROP_MAX_STAMINA - PROP_CUR_TEMPORARY_STAMINA uint16 // 当前临时体力 暂不确定 - PROP_PLAYER_LEVEL uint16 // 冒险等级 - PROP_PLAYER_EXP uint16 // 冒险经验 - PROP_PLAYER_HCOIN uint16 // 原石 可以为负数 - PROP_PLAYER_SCOIN uint16 // 摩拉 - PROP_PLAYER_MP_SETTING_TYPE uint16 // 多人游戏世界权限 0禁止加入 1直接加入 2需要申请 - PROP_IS_MP_MODE_AVAILABLE uint16 // 玩家当前的世界是否可加入 0 1 例如任务中就不可加入 - PROP_PLAYER_WORLD_LEVEL uint16 // 世界等级 0-8 - PROP_PLAYER_RESIN uint16 // 树脂 0-2000 - PROP_PLAYER_WAIT_SUB_HCOIN uint16 // 暂存的原石 暂不确定 - PROP_PLAYER_WAIT_SUB_SCOIN uint16 // 暂存的摩拉 暂不确定 - PROP_IS_ONLY_MP_WITH_PS_PLAYER uint16 // 当前玩家多人世界里是否有PS主机玩家 0 1 - PROP_PLAYER_MCOIN uint16 // 创世结晶 可以为负数 - PROP_PLAYER_WAIT_SUB_MCOIN uint16 // 暂存的创世结晶 暂不确定 - PROP_PLAYER_LEGENDARY_KEY uint16 // 传说任务钥匙 - PROP_IS_HAS_FIRST_SHARE uint16 // 是否拥有抽卡结果首次分享奖励 暂不确定 - PROP_PLAYER_FORGE_POINT uint16 // 锻造相关 - PROP_CUR_CLIMATE_METER uint16 // 天气相关 - PROP_CUR_CLIMATE_TYPE uint16 // 天气相关 - PROP_CUR_CLIMATE_AREA_ID uint16 // 天气相关 - PROP_CUR_CLIMATE_AREA_CLIMATE_TYPE uint16 // 天气相关 - PROP_PLAYER_WORLD_LEVEL_LIMIT uint16 // 降低世界等级到此等级 暂不确定 - PROP_PLAYER_WORLD_LEVEL_ADJUST_CD uint16 // 降低世界等级的CD - PROP_PLAYER_LEGENDARY_DAILY_TASK_NUM uint16 // 传说每日任务数量 暂不确定 - PROP_PLAYER_HOME_COIN uint16 // 洞天宝钱 - PROP_PLAYER_WAIT_SUB_HOME_COIN uint16 // 暂存的洞天宝钱 暂不确定 -} - -func InitPlayerPropertyConst() { - PlayerPropertyConst = new(PlayerProperty) - - PlayerPropertyConst.PROP_EXP = 1001 - PlayerPropertyConst.PROP_BREAK_LEVEL = 1002 - PlayerPropertyConst.PROP_SATIATION_VAL = 1003 - PlayerPropertyConst.PROP_SATIATION_PENALTY_TIME = 1004 - PlayerPropertyConst.PROP_LEVEL = 4001 - PlayerPropertyConst.PROP_LAST_CHANGE_AVATAR_TIME = 10001 - PlayerPropertyConst.PROP_MAX_SPRING_VOLUME = 10002 - PlayerPropertyConst.PROP_CUR_SPRING_VOLUME = 10003 - PlayerPropertyConst.PROP_IS_SPRING_AUTO_USE = 10004 - PlayerPropertyConst.PROP_SPRING_AUTO_USE_PERCENT = 10005 - PlayerPropertyConst.PROP_IS_FLYABLE = 10006 - PlayerPropertyConst.PROP_IS_WEATHER_LOCKED = 10007 - PlayerPropertyConst.PROP_IS_GAME_TIME_LOCKED = 10008 - PlayerPropertyConst.PROP_IS_TRANSFERABLE = 10009 - PlayerPropertyConst.PROP_MAX_STAMINA = 10010 - PlayerPropertyConst.PROP_CUR_PERSIST_STAMINA = 10011 - PlayerPropertyConst.PROP_CUR_TEMPORARY_STAMINA = 10012 - PlayerPropertyConst.PROP_PLAYER_LEVEL = 10013 - PlayerPropertyConst.PROP_PLAYER_EXP = 10014 - PlayerPropertyConst.PROP_PLAYER_HCOIN = 10015 - PlayerPropertyConst.PROP_PLAYER_SCOIN = 10016 - PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE = 10017 - PlayerPropertyConst.PROP_IS_MP_MODE_AVAILABLE = 10018 - PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL = 10019 - PlayerPropertyConst.PROP_PLAYER_RESIN = 10020 - PlayerPropertyConst.PROP_PLAYER_WAIT_SUB_HCOIN = 10022 - PlayerPropertyConst.PROP_PLAYER_WAIT_SUB_SCOIN = 10023 - PlayerPropertyConst.PROP_IS_ONLY_MP_WITH_PS_PLAYER = 10024 - PlayerPropertyConst.PROP_PLAYER_MCOIN = 10025 - PlayerPropertyConst.PROP_PLAYER_WAIT_SUB_MCOIN = 10026 - PlayerPropertyConst.PROP_PLAYER_LEGENDARY_KEY = 10027 - PlayerPropertyConst.PROP_IS_HAS_FIRST_SHARE = 10028 - PlayerPropertyConst.PROP_PLAYER_FORGE_POINT = 10029 - PlayerPropertyConst.PROP_CUR_CLIMATE_METER = 10035 - PlayerPropertyConst.PROP_CUR_CLIMATE_TYPE = 10036 - PlayerPropertyConst.PROP_CUR_CLIMATE_AREA_ID = 10037 - PlayerPropertyConst.PROP_CUR_CLIMATE_AREA_CLIMATE_TYPE = 10038 - PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL_LIMIT = 10039 - PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL_ADJUST_CD = 10040 - PlayerPropertyConst.PROP_PLAYER_LEGENDARY_DAILY_TASK_NUM = 10041 - PlayerPropertyConst.PROP_PLAYER_HOME_COIN = 10042 - PlayerPropertyConst.PROP_PLAYER_WAIT_SUB_HOME_COIN = 10043 -} +const ( + PLAYER_PROP_EXP uint16 = 1001 // 角色经验 + PLAYER_PROP_BREAK_LEVEL uint16 = 1002 // 角色突破等阶 + PLAYER_PROP_SATIATION_VAL uint16 = 1003 // 角色饱食度 + PLAYER_PROP_SATIATION_PENALTY_TIME uint16 = 1004 // 角色饱食度溢出 + PLAYER_PROP_LEVEL uint16 = 4001 // 角色等级 + PLAYER_PROP_LAST_CHANGE_AVATAR_TIME uint16 = 10001 // 上一次改变角色的时间 暂不确定 + PLAYER_PROP_MAX_SPRING_VOLUME uint16 = 10002 // 七天神像最大恢复血量 0-8500000 + PLAYER_PROP_CUR_SPRING_VOLUME uint16 = 10003 // 七天神像当前血量 0-PROP_MAX_SPRING_VOLUME + PLAYER_PROP_IS_SPRING_AUTO_USE uint16 = 10004 // 是否开启靠近自动回血 0 1 + PLAYER_PROP_SPRING_AUTO_USE_PERCENT uint16 = 10005 // 自动回血百分比 0-100 + PLAYER_PROP_IS_FLYABLE uint16 = 10006 // 禁止使用风之翼 0 1 + PLAYER_PROP_IS_WEATHER_LOCKED uint16 = 10007 // 游戏内天气锁定 + PLAYER_PROP_IS_GAME_TIME_LOCKED uint16 = 10008 // 游戏内时间锁定 + PLAYER_PROP_IS_TRANSFERABLE uint16 = 10009 // 是否禁止传送 0 1 + PLAYER_PROP_MAX_STAMINA uint16 = 10010 // 最大体力 0-24000 + PLAYER_PROP_CUR_PERSIST_STAMINA uint16 = 10011 // 当前体力 0-PROP_MAX_STAMINA + PLAYER_PROP_CUR_TEMPORARY_STAMINA uint16 = 10012 // 当前临时体力 暂不确定 + PLAYER_PROP_PLAYER_LEVEL uint16 = 10013 // 冒险等级 + PLAYER_PROP_PLAYER_EXP uint16 = 10014 // 冒险经验 + PLAYER_PROP_PLAYER_HCOIN uint16 = 10015 // 原石 可以为负数 + PLAYER_PROP_PLAYER_SCOIN uint16 = 10016 // 摩拉 + PLAYER_PROP_PLAYER_MP_SETTING_TYPE uint16 = 10017 // 多人游戏世界权限 0禁止加入 1直接加入 2需要申请 + PLAYER_PROP_IS_MP_MODE_AVAILABLE uint16 = 10018 // 玩家当前的世界是否可加入 0 1 例如任务中就不可加入 + PLAYER_PROP_PLAYER_WORLD_LEVEL uint16 = 10019 // 世界等级 0-8 + PLAYER_PROP_PLAYER_RESIN uint16 = 10020 // 树脂 0-2000 + PLAYER_PROP_PLAYER_WAIT_SUB_HCOIN uint16 = 10022 // 暂存的原石 暂不确定 + PLAYER_PROP_PLAYER_WAIT_SUB_SCOIN uint16 = 10023 // 暂存的摩拉 暂不确定 + PLAYER_PROP_IS_ONLY_MP_WITH_PS_PLAYER uint16 = 10024 // 当前玩家多人世界里是否有PS主机玩家 0 1 + PLAYER_PROP_PLAYER_MCOIN uint16 = 10025 // 创世结晶 可以为负数 + PLAYER_PROP_PLAYER_WAIT_SUB_MCOIN uint16 = 10026 // 暂存的创世结晶 暂不确定 + PLAYER_PROP_PLAYER_LEGENDARY_KEY uint16 = 10027 // 传说任务钥匙 + PLAYER_PROP_IS_HAS_FIRST_SHARE uint16 = 10028 // 是否拥有抽卡结果首次分享奖励 暂不确定 + PLAYER_PROP_PLAYER_FORGE_POINT uint16 = 10029 // 锻造相关 + PLAYER_PROP_CUR_CLIMATE_METER uint16 = 10035 // 天气相关 + PLAYER_PROP_CUR_CLIMATE_TYPE uint16 = 10036 // 天气相关 + PLAYER_PROP_CUR_CLIMATE_AREA_ID uint16 = 10037 // 天气相关 + PLAYER_PROP_CUR_CLIMATE_AREA_CLIMATE_TYPE uint16 = 10038 // 天气相关 + PLAYER_PROP_PLAYER_WORLD_LEVEL_LIMIT uint16 = 10039 // 降低世界等级到此等级 暂不确定 + PLAYER_PROP_PLAYER_WORLD_LEVEL_ADJUST_CD uint16 = 10040 // 降低世界等级的CD + PLAYER_PROP_PLAYER_LEGENDARY_DAILY_TASK_NUM uint16 = 10041 // 传说每日任务数量 暂不确定 + PLAYER_PROP_PLAYER_HOME_COIN uint16 = 10042 // 洞天宝钱 + PLAYER_PROP_PLAYER_WAIT_SUB_HOME_COIN uint16 = 10043 // 暂存的洞天宝钱 暂不确定 +) diff --git a/common/constant/scene_type.go b/common/constant/scene_type.go index 85fbbd87..9f766cd0 100644 --- a/common/constant/scene_type.go +++ b/common/constant/scene_type.go @@ -1,25 +1,11 @@ package constant -var SceneTypeConst *SceneType - -type SceneType struct { - SCENE_NONE uint16 - SCENE_WORLD uint16 - SCENE_DUNGEON uint16 - SCENE_ROOM uint16 - SCENE_HOME_WORLD uint16 - SCENE_HOME_ROOM uint16 - SCENE_ACTIVITY uint16 -} - -func InitSceneTypeConst() { - SceneTypeConst = new(SceneType) - - SceneTypeConst.SCENE_NONE = 0 - SceneTypeConst.SCENE_WORLD = 1 - SceneTypeConst.SCENE_DUNGEON = 2 - SceneTypeConst.SCENE_ROOM = 3 - SceneTypeConst.SCENE_HOME_WORLD = 4 - SceneTypeConst.SCENE_HOME_ROOM = 5 - SceneTypeConst.SCENE_ACTIVITY = 6 -} +const ( + SCENE_TYPE_NONE uint16 = 0 + SCENE_TYPE_WORLD uint16 = 1 + SCENE_TYPE_DUNGEON uint16 = 2 + SCENE_TYPE_ROOM uint16 = 3 + SCENE_TYPE_HOME_WORLD uint16 = 4 + SCENE_TYPE_HOME_ROOM uint16 = 5 + SCENE_TYPE_ACTIVITY uint16 = 6 +) diff --git a/common/constant/stamina_cost.go b/common/constant/stamina_cost.go index 762002fd..d57242d6 100644 --- a/common/constant/stamina_cost.go +++ b/common/constant/stamina_cost.go @@ -1,65 +1,30 @@ package constant -var StaminaCostConst *StaminaCost - -type StaminaCost struct { +const ( // 消耗耐力 - CLIMBING_BASE int32 // 缓慢攀爬基数 - CLIMB_START int32 // 攀爬开始 - CLIMB_JUMP int32 // 攀爬跳跃 - DASH int32 // 快速跑步 - FLY int32 // 滑翔 - SPRINT int32 // 冲刺 - SWIM_DASH_START int32 // 快速游泳开始 - SWIM_DASH int32 // 快速游泳 - SWIMMING int32 // 缓慢游泳 + STAMINA_COST_CLIMBING_BASE int32 = -100 // 缓慢攀爬基数 + STAMINA_COST_CLIMB_START int32 = -500 // 攀爬开始 + STAMINA_COST_CLIMB_JUMP int32 = -2500 // 攀爬跳跃 + STAMINA_COST_DASH int32 = -360 // 快速跑步 + STAMINA_COST_FLY int32 = -60 // 滑翔 + STAMINA_COST_SPRINT int32 = -1800 // 冲刺 + STAMINA_COST_SWIM_DASH_START int32 = -200 // 快速游泳开始 + STAMINA_COST_SWIM_DASH int32 = -204 // 快速游泳 + STAMINA_COST_SWIMMING int32 = -400 // 缓慢游泳 // 恢复耐力 - POWERED_FLY int32 // 滑翔加速(风圈等) - RUN int32 // 正常跑步 - STANDBY int32 // 站立 - WALK int32 // 走路 + STAMINA_COST_POWERED_FLY int32 = 500 // 滑翔加速(风圈等) + STAMINA_COST_RUN int32 = 500 // 正常跑步 + STAMINA_COST_STANDBY int32 = 500 // 站立 + STAMINA_COST_WALK int32 = 500 // 走路 // 载具浪船 - SKIFF_DASH int32 // 浪船加速 - SKIFF_NORMAL int32 // 浪船正常移动 (回复耐力) - POWERED_SKIFF int32 // 浪船加速(风圈等) (回复耐力) - IN_SKIFF int32 // 处于浪船中回复角色耐力 (回复耐力) - SKIFF_NOBODY int32 // 浪船无人时回复载具耐力 (回复耐力) + STAMINA_COST_SKIFF_DASH int32 = -204 // 浪船加速 + STAMINA_COST_SKIFF_NORMAL int32 = 500 // 浪船正常移动 (回复耐力) + STAMINA_COST_POWERED_SKIFF int32 = 500 // 浪船加速(风圈等) (回复耐力) + STAMINA_COST_IN_SKIFF int32 = 500 // 处于浪船中回复角色耐力 (回复耐力) + STAMINA_COST_SKIFF_NOBODY int32 = 500 // 浪船无人时回复载具耐力 (回复耐力) // 武器消耗默认值 - FIGHT_SWORD_ONE_HAND int32 // 单手剑 - FIGHT_POLE int32 // 长枪 - FIGHT_CATALYST int32 // 法器 - FIGHT_CLAYMORE_PER int32 // 双手剑 (每秒消耗) - // 技能开始消耗 (目前仅发现绫华与莫娜的冲刺会有开始消耗) - SKILL_START map[uint32]int32 // [skillId]消耗值 -} - -func InitStaminaCostConst() { - StaminaCostConst = new(StaminaCost) - - StaminaCostConst.CLIMBING_BASE = -100 - StaminaCostConst.CLIMB_START = -500 - StaminaCostConst.CLIMB_JUMP = -2500 - StaminaCostConst.DASH = -360 - StaminaCostConst.FLY = -60 - StaminaCostConst.SPRINT = -1800 - StaminaCostConst.SWIM_DASH_START = -200 - StaminaCostConst.SWIM_DASH = -204 - StaminaCostConst.SWIMMING = -400 - StaminaCostConst.POWERED_FLY = 500 - StaminaCostConst.RUN = 500 - StaminaCostConst.STANDBY = 500 - StaminaCostConst.WALK = 500 - StaminaCostConst.SKIFF_DASH = -204 - StaminaCostConst.SKIFF_NORMAL = 500 - StaminaCostConst.POWERED_SKIFF = 500 - StaminaCostConst.IN_SKIFF = 500 - StaminaCostConst.SKIFF_NOBODY = 500 - StaminaCostConst.FIGHT_SWORD_ONE_HAND = -2000 - StaminaCostConst.FIGHT_POLE = -2500 - StaminaCostConst.FIGHT_CATALYST = -5000 - StaminaCostConst.FIGHT_CLAYMORE_PER = -4000 - StaminaCostConst.SKILL_START = map[uint32]int32{ - 10013: -1000, // 绫华冲刺(霰步) - 10413: -1000, // 莫娜冲刺(虚实流动) - } -} + STAMINA_COST_FIGHT_SWORD_ONE_HAND int32 = -2000 // 单手剑 + STAMINA_COST_FIGHT_POLE int32 = -2500 // 长枪 + STAMINA_COST_FIGHT_CATALYST int32 = -5000 // 法器 + STAMINA_COST_FIGHT_CLAYMORE_PER int32 = -4000 // 双手剑 (每秒消耗) +) diff --git a/common/constant/weapon_type.go b/common/constant/weapon_type.go index b0143815..dee3e002 100644 --- a/common/constant/weapon_type.go +++ b/common/constant/weapon_type.go @@ -1,39 +1,18 @@ package constant -var WeaponTypeConst *WeaponType - -type WeaponType struct { - WEAPON_NONE int32 - WEAPON_SWORD_ONE_HAND int32 // 单手剑 - WEAPON_CROSSBOW int32 // 弩 - WEAPON_STAFF int32 // 权杖 - WEAPON_DOUBLE_DAGGER int32 // 双刀 - WEAPON_KATANA int32 // 武士刀 - WEAPON_SHURIKEN int32 // 手里剑 - WEAPON_STICK int32 // 棍 - WEAPON_SPEAR int32 // 矛 - WEAPON_SHIELD_SMALL int32 // 小盾牌 - WEAPON_CATALYST int32 // 法器 - WEAPON_CLAYMORE int32 // 双手剑 - WEAPON_BOW int32 // 弓 - WEAPON_POLE int32 // 长枪 -} - -func InitWeaponTypeConst() { - WeaponTypeConst = new(WeaponType) - - WeaponTypeConst.WEAPON_NONE = 0 - WeaponTypeConst.WEAPON_SWORD_ONE_HAND = 1 - WeaponTypeConst.WEAPON_CROSSBOW = 2 - WeaponTypeConst.WEAPON_STAFF = 3 - WeaponTypeConst.WEAPON_DOUBLE_DAGGER = 4 - WeaponTypeConst.WEAPON_KATANA = 5 - WeaponTypeConst.WEAPON_SHURIKEN = 6 - WeaponTypeConst.WEAPON_STICK = 7 - WeaponTypeConst.WEAPON_SPEAR = 8 - WeaponTypeConst.WEAPON_SHIELD_SMALL = 9 - WeaponTypeConst.WEAPON_CATALYST = 10 - WeaponTypeConst.WEAPON_CLAYMORE = 11 - WeaponTypeConst.WEAPON_BOW = 12 - WeaponTypeConst.WEAPON_POLE = 13 -} +const ( + WEAPON_TYPE_NONE int32 = 0 + WEAPON_TYPE_SWORD_ONE_HAND int32 = 1 // 单手剑 + WEAPON_TYPE_CROSSBOW int32 = 2 // 弩 + WEAPON_TYPE_STAFF int32 = 3 // 权杖 + WEAPON_TYPE_DOUBLE_DAGGER int32 = 4 // 双刀 + WEAPON_TYPE_KATANA int32 = 5 // 武士刀 + WEAPON_TYPE_SHURIKEN int32 = 6 // 手里剑 + WEAPON_TYPE_STICK int32 = 7 // 棍 + WEAPON_TYPE_SPEAR int32 = 8 // 矛 + WEAPON_TYPE_SHIELD_SMALL int32 = 9 // 小盾牌 + WEAPON_TYPE_CATALYST int32 = 10 // 法器 + WEAPON_TYPE_CLAYMORE int32 = 11 // 双手剑 + WEAPON_TYPE_BOW int32 = 12 // 弓 + WEAPON_TYPE_POLE int32 = 13 // 长枪 +) diff --git a/fight/app/app.go b/fight/app/app.go index fbd0a9c8..d5d4f2ae 100644 --- a/fight/app/app.go +++ b/fight/app/app.go @@ -9,7 +9,6 @@ import ( "time" "hk4e/common/config" - "hk4e/common/constant" "hk4e/common/mq" "hk4e/common/rpc" "hk4e/fight/engine" @@ -59,8 +58,6 @@ func Run(ctx context.Context, configFile string) error { logger.InitLogger("fight_" + APPID) logger.Warn("fight start, appid: %v", APPID) - constant.InitConstant() - messageQueue := mq.NewMessageQueue(api.FIGHT, APPID, client) defer messageQueue.Close() diff --git a/fight/engine/fight_engine.go b/fight/engine/fight_engine.go index baacdb85..0d32d610 100644 --- a/fight/engine/fight_engine.go +++ b/fight/engine/fight_engine.go @@ -201,8 +201,8 @@ func (f *FightRoutine) onTickSecond(now int64) { if entity.uid == 0 { continue } - entity.fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_ATTACK)] = 1000000 - entity.fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CRITICAL)] = 1.0 + entity.fightPropMap[uint32(constant.FIGHT_PROP_CUR_ATTACK)] = 1000000 + entity.fightPropMap[uint32(constant.FIGHT_PROP_CRITICAL)] = 1.0 avatarFightPropNotify := &proto.AvatarFightPropNotify{ AvatarGuid: entity.avatarGuid, FightPropMap: entity.fightPropMap, @@ -262,17 +262,17 @@ func (f *FightRoutine) attackHandle(gameMsg *mq.GameMsg) { _ = attackerId currHp := float32(0) if target.fightPropMap != nil { - currHp = target.fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)] + currHp = target.fightPropMap[uint32(constant.FIGHT_PROP_CUR_HP)] currHp -= damage if currHp < 0 { currHp = 0 } - target.fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)] = currHp + target.fightPropMap[uint32(constant.FIGHT_PROP_CUR_HP)] = currHp } entityFightPropUpdateNotify := new(proto.EntityFightPropUpdateNotify) entityFightPropUpdateNotify.EntityId = target.entityId entityFightPropUpdateNotify.FightPropMap = make(map[uint32]float32) - entityFightPropUpdateNotify.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)] = currHp + entityFightPropUpdateNotify.FightPropMap[uint32(constant.FIGHT_PROP_CUR_HP)] = currHp for _, uid := range f.getAllPlayer(f.entityMap) { SendMsg(f.messageQueue, cmd.EntityFightPropUpdateNotify, uid, f.gateAppId, entityFightPropUpdateNotify) } diff --git a/gdconf/avatar_data.go b/gdconf/avatar_data.go index bc40b974..ad40d729 100644 --- a/gdconf/avatar_data.go +++ b/gdconf/avatar_data.go @@ -2,18 +2,18 @@ package gdconf import ( "fmt" - "hk4e/pkg/endec" - "hk4e/pkg/logger" "os" "strconv" "strings" + "hk4e/pkg/endec" + "hk4e/pkg/logger" + "github.com/hjson/hjson-go/v4" "github.com/jszwec/csvutil" ) -// 角色配置表 - +// AvatarData 角色配置表 type AvatarData struct { AvatarId int32 `csv:"AvatarId"` // ID HpBase float64 `csv:"HpBase,omitempty"` // 基础生命值 @@ -97,6 +97,14 @@ func (g *GameDataConfig) loadAvatarData() { logger.Info("AvatarData count: %v", len(g.AvatarDataMap)) } +func GetAvatarDataById(avatarId int32) *AvatarData { + return CONF.AvatarDataMap[avatarId] +} + +func GetAvatarDataMap() map[int32]*AvatarData { + return CONF.AvatarDataMap +} + // TODO 成长属性要读表 func (a *AvatarData) GetBaseHpByLevel(level uint8) float64 { diff --git a/gdconf/avatar_level_data.go b/gdconf/avatar_level_data.go index 519f2f06..e36ac35b 100644 --- a/gdconf/avatar_level_data.go +++ b/gdconf/avatar_level_data.go @@ -2,13 +2,13 @@ package gdconf import ( "fmt" + "hk4e/pkg/logger" "github.com/jszwec/csvutil" ) -// 角色等级配置表 - +// AvatarLevelData 角色等级配置表 type AvatarLevelData struct { Level int32 `csv:"Level"` // 等级 Exp int32 `csv:"Exp,omitempty"` // 升到下一级所需经验 @@ -29,3 +29,11 @@ func (g *GameDataConfig) loadAvatarLevelData() { } logger.Info("AvatarLevelData count: %v", len(g.AvatarLevelDataMap)) } + +func GetAvatarLevelDataByLevel(level int32) *AvatarLevelData { + return CONF.AvatarLevelDataMap[level] +} + +func GetAvatarLevelDataMap() map[int32]*AvatarLevelData { + return CONF.AvatarLevelDataMap +} diff --git a/gdconf/avatar_promote_data.go b/gdconf/avatar_promote_data.go index 4a751abb..bc5c4061 100644 --- a/gdconf/avatar_promote_data.go +++ b/gdconf/avatar_promote_data.go @@ -2,13 +2,13 @@ package gdconf import ( "fmt" + "hk4e/pkg/logger" "github.com/jszwec/csvutil" ) -// 角色突破配置表 - +// AvatarPromoteData 角色突破配置表 type AvatarPromoteData struct { PromoteId int32 `csv:"PromoteId"` // 角色突破ID PromoteLevel int32 `csv:"PromoteLevel,omitempty"` // 突破等级 @@ -59,3 +59,11 @@ func (g *GameDataConfig) loadAvatarPromoteData() { } logger.Info("AvatarPromoteData count: %v", len(g.AvatarPromoteDataMap)) } + +func GetAvatarPromoteDataByIdAndLevel(promoteId int32, promoteLevel int32) *AvatarPromoteData { + value, exist := CONF.AvatarPromoteDataMap[promoteId] + if !exist { + return nil + } + return value[promoteLevel] +} diff --git a/gdconf/avatar_skill_data.go b/gdconf/avatar_skill_data.go index 6f993f9a..773c0b3f 100644 --- a/gdconf/avatar_skill_data.go +++ b/gdconf/avatar_skill_data.go @@ -8,8 +8,7 @@ import ( "github.com/jszwec/csvutil" ) -// 角色技能配置表 - +// AvatarSkillData 角色技能配置表 type AvatarSkillData struct { AvatarSkillId int32 `csv:"AvatarSkillId"` // ID AbilityName string `csv:"AbilityName,omitempty"` // Ability名称 @@ -34,3 +33,11 @@ func (g *GameDataConfig) loadAvatarSkillData() { } logger.Info("AvatarSkillData count: %v", len(g.AvatarSkillDataMap)) } + +func GetAvatarSkillDataById(avatarSkillId int32) *AvatarSkillData { + return CONF.AvatarSkillDataMap[avatarSkillId] +} + +func GetAvatarSkillDataMap() map[int32]*AvatarSkillData { + return CONF.AvatarSkillDataMap +} diff --git a/gdconf/avatar_skill_depot_data.go b/gdconf/avatar_skill_depot_data.go index e8e4150a..fe754f63 100644 --- a/gdconf/avatar_skill_depot_data.go +++ b/gdconf/avatar_skill_depot_data.go @@ -11,8 +11,7 @@ import ( "github.com/jszwec/csvutil" ) -// 角色技能库配置表 - +// AvatarSkillDepotData 角色技能库配置表 type AvatarSkillDepotData struct { AvatarSkillDepotId int32 `csv:"AvatarSkillDepotId"` // ID EnergySkill int32 `csv:"EnergySkill,omitempty"` // 充能技能 @@ -127,7 +126,15 @@ func (g *GameDataConfig) loadAvatarSkillDepotData() { logger.Info("AvatarSkillDepotData count: %v", len(g.AvatarSkillDepotDataMap)) } -func (g *GameDataConfig) GetAvatarEnergySkillConfig(avatarId uint32) *AvatarSkillData { +func GetAvatarSkillDepotDataById(avatarSkillDepotId int32) *AvatarSkillDepotData { + return CONF.AvatarSkillDepotDataMap[avatarSkillDepotId] +} + +func GetAvatarSkillDepotDataMap() map[int32]*AvatarSkillDepotData { + return CONF.AvatarSkillDepotDataMap +} + +func GetAvatarEnergySkillConfig(avatarId uint32) *AvatarSkillData { if avatarId == 10000005 || avatarId == 10000007 { return nil } diff --git a/gdconf/fetter_data.go b/gdconf/fetter_data.go index cf43f268..0d6a1f3b 100644 --- a/gdconf/fetter_data.go +++ b/gdconf/fetter_data.go @@ -8,6 +8,7 @@ import ( "github.com/jszwec/csvutil" ) +// FetterData 角色资料解锁配置表 type FetterData struct { FetterId int32 `csv:"FetterId"` // ID AvatarId int32 `csv:"AvatarId"` // 角色ID @@ -38,3 +39,15 @@ func (g *GameDataConfig) loadFetterData() { } logger.Info("FetterData count: %v", len(g.FetterDataMap)) } + +func GetFetterDataByFetterId(fetterId int32) *FetterData { + return CONF.FetterDataMap[fetterId] +} + +func GetFetterIdListByAvatarId(avatarId int32) []int32 { + return CONF.FetterDataAvatarIdMap[avatarId] +} + +func GetFetterDataMap() map[int32]*FetterData { + return CONF.FetterDataMap +} diff --git a/gdconf/game_data_config.go b/gdconf/game_data_config.go index dd54c1c7..3d3b8331 100644 --- a/gdconf/game_data_config.go +++ b/gdconf/game_data_config.go @@ -32,8 +32,8 @@ type GameDataConfig struct { GCGSkillDataMap map[int32]*GCGSkillData // 卡牌技能 SceneDataMap map[int32]*SceneData // 场景 ScenePointMap map[int32]*ScenePoint // 场景传送点 - SceneTagDataMap map[int32]*SceneTagData // 场景地图图标 - SceneMap map[int32]*Scene // 场景详情 + SceneTagDataMap map[int32]*SceneTagData // 场景标签 + SceneDetailMap map[int32]*SceneDetail // 场景详情LUA配置数据 WorldAreaDataMap map[int32]*WorldAreaData // 世界区域 GatherDataMap map[int32]*GatherData // 采集物 GatherDataPointTypeMap map[int32]*GatherData // 采集物场景节点索引 diff --git a/gdconf/game_data_config_test.go b/gdconf/game_data_config_test.go index c8770727..29373508 100644 --- a/gdconf/game_data_config_test.go +++ b/gdconf/game_data_config_test.go @@ -147,7 +147,7 @@ func TestSceneBlock(t *testing.T) { config.InitConfig("./bin/application.toml") logger.InitLogger("SceneBlock") InitGameDataConfig() - scene, exist := CONF.SceneMap[3] + scene, exist := CONF.SceneDetailMap[3] if !exist { panic("scene 3 not exist") } diff --git a/gdconf/gather_data.go b/gdconf/gather_data.go index 53a929a1..a9f51097 100644 --- a/gdconf/gather_data.go +++ b/gdconf/gather_data.go @@ -8,6 +8,7 @@ import ( "github.com/jszwec/csvutil" ) +// GatherData 采集物配置表 type GatherData struct { PointType int32 `csv:"PointType"` // 挂节点类型 GatherId int32 `csv:"GatherId"` // ID @@ -32,3 +33,15 @@ func (g *GameDataConfig) loadGatherData() { } logger.Info("GatherData count: %v", len(g.GatherDataMap)) } + +func GetGatherDataById(gatherId int32) *GatherData { + return CONF.GatherDataMap[gatherId] +} + +func GetGatherDataByPointType(pointType int32) *GatherData { + return CONF.GatherDataPointTypeMap[pointType] +} + +func GetGatherDataMap() map[int32]*GatherData { + return CONF.GatherDataMap +} diff --git a/gdconf/gcg_char_data.go b/gdconf/gcg_char_data.go index b8f2184f..90804ff8 100644 --- a/gdconf/gcg_char_data.go +++ b/gdconf/gcg_char_data.go @@ -10,8 +10,7 @@ import ( "github.com/jszwec/csvutil" ) -// 角色卡牌配置表 - +// GCGCharData 角色卡牌配置表 type GCGCharData struct { CharId int32 `csv:"CharId"` // ID TagId1 int32 `csv:"TagId1,omitempty"` // 卡牌标签列表1 @@ -64,3 +63,11 @@ func (g *GameDataConfig) loadGCGCharData() { } logger.Info("GCGCharData count: %v", len(g.GCGCharDataMap)) } + +func GetGCGCharDataById(charId int32) *GCGCharData { + return CONF.GCGCharDataMap[charId] +} + +func GetGCGCharDataMap() map[int32]*GCGCharData { + return CONF.GCGCharDataMap +} diff --git a/gdconf/gcg_skill_data.go b/gdconf/gcg_skill_data.go index 8070e6c7..889f7aa2 100644 --- a/gdconf/gcg_skill_data.go +++ b/gdconf/gcg_skill_data.go @@ -2,16 +2,16 @@ package gdconf import ( "fmt" - "hk4e/pkg/logger" "os" + "hk4e/pkg/logger" + "github.com/hjson/hjson-go/v4" "github.com/jszwec/csvutil" ) -// 卡牌技能配置表 - +// GCGSkillData 卡牌技能配置表 type GCGSkillData struct { SkillId int32 `csv:"SkillId"` // ID ConfigJson string `csv:"ConfigJson,omitempty"` // 效果config @@ -109,3 +109,11 @@ func (g *GameDataConfig) loadGCGSkillData() { } logger.Info("GCGSkillData count: %v", len(g.GCGSkillDataMap)) } + +func GetGCGSkillDataById(skillId int32) *GCGSkillData { + return CONF.GCGSkillDataMap[skillId] +} + +func GetGCGSkillDataMap() map[int32]*GCGSkillData { + return CONF.GCGSkillDataMap +} diff --git a/gdconf/item_data.go b/gdconf/item_data.go index b340fb25..91ca1fb5 100644 --- a/gdconf/item_data.go +++ b/gdconf/item_data.go @@ -2,14 +2,16 @@ package gdconf import ( "fmt" - "hk4e/common/constant" - "hk4e/pkg/logger" "strconv" "strings" + "hk4e/common/constant" + "hk4e/pkg/logger" + "github.com/jszwec/csvutil" ) +// ItemData 统一道具配置表 type ItemData struct { // 公共字段 ItemId int32 `csv:"ItemId"` // ID @@ -57,7 +59,7 @@ func (g *GameDataConfig) loadItemData() { itemData.SkillAffix = append(itemData.SkillAffix, itemData.SkillAffix2) } // 武器精炼摩拉消耗列表读取转换 - if itemData.Type == int32(constant.ItemTypeConst.ITEM_WEAPON) && itemData.AwakenCoinCostStr != "" { + if itemData.Type == int32(constant.ITEM_TYPE_WEAPON) && itemData.AwakenCoinCostStr != "" { tempCostList := strings.Split(strings.ReplaceAll(itemData.AwakenCoinCostStr, " ", ""), "#") itemData.AwakenCoinCostList = make([]uint32, 0, len(tempCostList)) for _, s := range tempCostList { @@ -74,3 +76,11 @@ func (g *GameDataConfig) loadItemData() { } logger.Info("ItemData count: %v", len(g.ItemDataMap)) } + +func GetItemDataById(itemId int32) *ItemData { + return CONF.ItemDataMap[itemId] +} + +func GetItemDataMap() map[int32]*ItemData { + return CONF.ItemDataMap +} diff --git a/gdconf/player_level_data.go b/gdconf/player_level_data.go index d51ac708..5958960c 100644 --- a/gdconf/player_level_data.go +++ b/gdconf/player_level_data.go @@ -2,13 +2,13 @@ package gdconf import ( "fmt" + "hk4e/pkg/logger" "github.com/jszwec/csvutil" ) -// 玩家等级配置表 - +// PlayerLevelData 玩家等级配置表 type PlayerLevelData struct { Level int32 `csv:"Level"` // 等级 Exp int32 `csv:"Exp,omitempty"` // 升到下一级所需经验 @@ -29,3 +29,11 @@ func (g *GameDataConfig) loadPlayerLevelData() { } logger.Info("PlayerLevelData count: %v", len(g.PlayerLevelDataMap)) } + +func GetPlayerLevelDataById(level int32) *PlayerLevelData { + return CONF.PlayerLevelDataMap[level] +} + +func GetPlayerLevelDataMap() map[int32]*PlayerLevelData { + return CONF.PlayerLevelDataMap +} diff --git a/gdconf/reward_data.go b/gdconf/reward_data.go index 7a3272c4..b67852e4 100644 --- a/gdconf/reward_data.go +++ b/gdconf/reward_data.go @@ -2,13 +2,13 @@ package gdconf import ( "fmt" + "hk4e/pkg/logger" "github.com/jszwec/csvutil" ) -// 奖励配置表 - +// RewardData 奖励配置表 type RewardData struct { RewardID int32 `csv:"RewardID"` // 奖励ID RewardItem1ID int32 `csv:"RewardItem1ID,omitempty"` // Reward道具1ID @@ -66,3 +66,11 @@ func (g *GameDataConfig) loadRewardData() { } logger.Info("RewardData count: %v", len(g.RewardDataMap)) } + +func GetRewardDataById(rewardID int32) *RewardData { + return CONF.RewardDataMap[rewardID] +} + +func GetRewardDataMap() map[int32]*RewardData { + return CONF.RewardDataMap +} diff --git a/gdconf/scene_data.go b/gdconf/scene_data.go index b1633efa..299696d7 100644 --- a/gdconf/scene_data.go +++ b/gdconf/scene_data.go @@ -8,6 +8,7 @@ import ( "github.com/jszwec/csvutil" ) +// SceneData 场景配置表 type SceneData struct { SceneId int32 `csv:"SceneId"` // ID SceneType int32 `csv:"SceneType,omitempty"` // 类型 @@ -28,3 +29,11 @@ func (g *GameDataConfig) loadSceneData() { } logger.Info("SceneData count: %v", len(g.SceneDataMap)) } + +func GetSceneDataById(sceneId int32) *SceneData { + return CONF.SceneDataMap[sceneId] +} + +func GetSceneDataMap() map[int32]*SceneData { + return CONF.SceneDataMap +} diff --git a/gdconf/scene_data_config.go b/gdconf/scene_detail.go similarity index 90% rename from gdconf/scene_data_config.go rename to gdconf/scene_detail.go index 136dfe0f..a8c949ef 100644 --- a/gdconf/scene_data_config.go +++ b/gdconf/scene_detail.go @@ -8,11 +8,13 @@ import ( "hk4e/pkg/logger" ) +// 场景详情配置数据 + const ( SceneGroupLoaderLimit = 4 // 加载文件的并发数 此操作很耗内存 调大之前请确保你的机器内存足够 ) -type Scene struct { +type SceneDetail struct { Id int32 SceneConfig *SceneConfig // 地图配置 BlockMap map[int32]*Block // 所有的区块 @@ -130,7 +132,7 @@ func (g *GameDataConfig) loadGroup(group *Group, block *Block, sceneId int32, bl } func (g *GameDataConfig) loadScene() { - g.SceneMap = make(map[int32]*Scene) + g.SceneDetailMap = make(map[int32]*SceneDetail) sceneLuaPrefix := g.luaPrefix + "scene/" for _, sceneData := range g.SceneDataMap { sceneId := sceneData.SceneId @@ -141,17 +143,17 @@ func (g *GameDataConfig) loadScene() { continue } luaState := fixLuaState(string(mainLuaData)) - scene := new(Scene) - scene.Id = sceneId + sceneDetail := new(SceneDetail) + sceneDetail.Id = sceneId // scene_config - scene.SceneConfig = new(SceneConfig) - ok := parseLuaTableToObject[*SceneConfig](luaState, "scene_config", scene.SceneConfig) + sceneDetail.SceneConfig = new(SceneConfig) + ok := parseLuaTableToObject[*SceneConfig](luaState, "scene_config", sceneDetail.SceneConfig) if !ok { logger.Error("get scene_config object error, sceneId: %v", sceneId) luaState.Close() continue } - scene.BlockMap = make(map[int32]*Block) + sceneDetail.BlockMap = make(map[int32]*Block) // blocks blockIdList := make([]int32, 0) ok = parseLuaTableToObject[*[]int32](luaState, "blocks", &blockIdList) @@ -205,9 +207,9 @@ func (g *GameDataConfig) loadScene() { }() } wg.Wait() - scene.BlockMap[block.Id] = block + sceneDetail.BlockMap[block.Id] = block } - g.SceneMap[sceneId] = scene + g.SceneDetailMap[sceneId] = sceneDetail } sceneCount := 0 blockCount := 0 @@ -215,7 +217,7 @@ func (g *GameDataConfig) loadScene() { monsterCount := 0 npcCount := 0 gadgetCount := 0 - for _, scene := range g.SceneMap { + for _, scene := range g.SceneDetailMap { for _, block := range scene.BlockMap { for _, group := range block.GroupMap { monsterCount += len(group.MonsterList) @@ -231,11 +233,19 @@ func (g *GameDataConfig) loadScene() { sceneCount, blockCount, groupCount, monsterCount, npcCount, gadgetCount) } -func (g *GameDataConfig) GetSceneBlockConfig(sceneId int32, blockId int32) ([]*Monster, []*Npc, []*Gadget, bool) { +func GetSceneDetailById(sceneId int32) *SceneDetail { + return CONF.SceneDetailMap[sceneId] +} + +func GetSceneDetailMap() map[int32]*SceneDetail { + return CONF.SceneDetailMap +} + +func GetSceneBlockConfig(sceneId int32, blockId int32) ([]*Monster, []*Npc, []*Gadget, bool) { monsterList := make([]*Monster, 0) npcList := make([]*Npc, 0) gadgetList := make([]*Gadget, 0) - sceneConfig, exist := g.SceneMap[sceneId] + sceneConfig, exist := CONF.SceneDetailMap[sceneId] if !exist { return nil, nil, nil, false } diff --git a/gdconf/scene_point.go b/gdconf/scene_point.go index 00596a03..25193a03 100644 --- a/gdconf/scene_point.go +++ b/gdconf/scene_point.go @@ -8,6 +8,8 @@ import ( "hk4e/pkg/logger" ) +// 场景传送点配置数据 + // 传送点类型 const ( PointTypeStrTransPointNormal = "TransPointNormal" @@ -126,3 +128,19 @@ func (g *GameDataConfig) loadScenePoint() { } logger.Info("ScenePoint count: %v", scenePointCount) } + +func GetScenePointBySceneIdAndPointId(sceneId int32, pointId int32) *PointData { + value, exist := CONF.ScenePointMap[sceneId] + if !exist { + return nil + } + return value.PointMap[pointId] +} + +func GetScenePointMapBySceneId(sceneId int32) map[int32]*PointData { + value, exist := CONF.ScenePointMap[sceneId] + if !exist { + return nil + } + return value.PointMap +} diff --git a/gdconf/scene_tag_data.go b/gdconf/scene_tag_data.go index a691069d..1b8eaa6c 100644 --- a/gdconf/scene_tag_data.go +++ b/gdconf/scene_tag_data.go @@ -8,6 +8,7 @@ import ( "github.com/jszwec/csvutil" ) +// SceneTagData 场景标签配置表 type SceneTagData struct { SceneTagId int32 `csv:"SceneTagId"` // ID SceneId int32 `csv:"SceneId,omitempty"` // 场景ID @@ -28,3 +29,11 @@ func (g *GameDataConfig) loadSceneTagData() { } logger.Info("SceneTagData count: %v", len(g.SceneTagDataMap)) } + +func GetSceneTagDataById(sceneTagId int32) *SceneTagData { + return CONF.SceneTagDataMap[sceneTagId] +} + +func GetSceneTagDataMap() map[int32]*SceneTagData { + return CONF.SceneTagDataMap +} diff --git a/gdconf/weapon_level_data.go b/gdconf/weapon_level_data.go index f4d71816..fc52deec 100644 --- a/gdconf/weapon_level_data.go +++ b/gdconf/weapon_level_data.go @@ -2,13 +2,13 @@ package gdconf import ( "fmt" + "hk4e/pkg/logger" "github.com/jszwec/csvutil" ) -// 武器等级配置表 - +// WeaponLevelData 武器等级配置表 type WeaponLevelData struct { Level int32 `csv:"Level"` // 等级 ExpByStar1 int32 `csv:"ExpByStar1,omitempty"` // 武器升级经验1 @@ -42,3 +42,11 @@ func (g *GameDataConfig) loadWeaponLevelData() { } logger.Info("WeaponLevelData count: %v", len(g.WeaponLevelDataMap)) } + +func GetWeaponLevelDataByLevel(level int32) *WeaponLevelData { + return CONF.WeaponLevelDataMap[level] +} + +func GetWeaponLevelDataMap() map[int32]*WeaponLevelData { + return CONF.WeaponLevelDataMap +} diff --git a/gdconf/weapon_promote_data.go b/gdconf/weapon_promote_data.go index 5257996a..cb31dd43 100644 --- a/gdconf/weapon_promote_data.go +++ b/gdconf/weapon_promote_data.go @@ -2,13 +2,13 @@ package gdconf import ( "fmt" + "hk4e/pkg/logger" "github.com/jszwec/csvutil" ) -// 武器突破配置表 - +// WeaponPromoteData 武器突破配置表 type WeaponPromoteData struct { PromoteId int32 `csv:"PromoteId"` // 武器突破ID PromoteLevel int32 `csv:"PromoteLevel,omitempty"` // 突破等级 @@ -56,3 +56,11 @@ func (g *GameDataConfig) loadWeaponPromoteData() { } logger.Info("WeaponPromoteData count: %v", len(g.WeaponPromoteDataMap)) } + +func GetWeaponPromoteDataByIdAndLevel(promoteId int32, promoteLevel int32) *WeaponPromoteData { + value, exist := CONF.WeaponPromoteDataMap[promoteId] + if !exist { + return nil + } + return value[promoteLevel] +} diff --git a/gdconf/world_area_data.go b/gdconf/world_area_data.go index 3f67a077..559ca7be 100644 --- a/gdconf/world_area_data.go +++ b/gdconf/world_area_data.go @@ -8,6 +8,7 @@ import ( "github.com/jszwec/csvutil" ) +// WorldAreaData 世界区域配置表 type WorldAreaData struct { WorldAreaId int32 `csv:"WorldAreaId"` // 条目ID SceneId int32 `csv:"SceneId,omitempty"` // 场景ID @@ -30,3 +31,11 @@ func (g *GameDataConfig) loadWorldAreaData() { } logger.Info("WorldAreaData count: %v", len(g.WorldAreaDataMap)) } + +func GetWorldAreaDataById(worldAreaId int32) *WorldAreaData { + return CONF.WorldAreaDataMap[worldAreaId] +} + +func GetWorldAreaDataMap() map[int32]*WorldAreaData { + return CONF.WorldAreaDataMap +} diff --git a/gs/app/app.go b/gs/app/app.go index 5fc342bc..d343c7ad 100644 --- a/gs/app/app.go +++ b/gs/app/app.go @@ -10,7 +10,6 @@ import ( "time" "hk4e/common/config" - "hk4e/common/constant" "hk4e/common/mq" "hk4e/common/rpc" "hk4e/gdconf" @@ -72,7 +71,6 @@ func Run(ctx context.Context, configFile string) error { logger.InitLogger("gs_" + APPID) logger.Warn("gs start, appid: %v, gsid: %v", APPID, GSID) - constant.InitConstant() gdconf.InitGameDataConfig() db, err := dao.NewDao() diff --git a/gs/game/command_gm.go b/gs/game/command_gm.go index 336e07aa..62d9df7c 100644 --- a/gs/game/command_gm.go +++ b/gs/game/command_gm.go @@ -13,7 +13,7 @@ func (c *CommandManager) GMTeleportPlayer(userId, sceneId uint32, posX, posY, po logger.Error("player is nil, uid: %v", userId) return } - GAME_MANAGER.TeleportPlayer(player, constant.EnterReasonConst.Gm, sceneId, &model.Vector{ + GAME_MANAGER.TeleportPlayer(player, constant.EnterReasonGm, sceneId, &model.Vector{ X: posX, Y: posY, Z: posZ, diff --git a/gs/game/game_manager.go b/gs/game/game_manager.go index ac68b8b1..16cc4aa6 100644 --- a/gs/game/game_manager.go +++ b/gs/game/game_manager.go @@ -100,7 +100,7 @@ func NewGameManager(dao *dao.Dao, messageQueue *mq.MessageQueue, gsId uint32, gs for i := 1; i < 3; i++ { uid := 1000000 + uint32(i) avatarId := uint32(0) - for _, avatarData := range gdconf.CONF.AvatarDataMap { + for _, avatarData := range gdconf.GetAvatarDataMap() { avatarId = uint32(avatarData.AvatarId) break } @@ -175,7 +175,7 @@ func (g *GameManager) gameMainLoop() { motherfuckerPlayerInfo, _ := json.Marshal(SELF) logger.Error("the motherfucker player info: %v", string(motherfuckerPlayerInfo)) if SELF != nil { - GAME_MANAGER.DisconnectPlayer(SELF.PlayerID, kcp.EnetServerKick) + GAME_MANAGER.KickPlayer(SELF.PlayerID, kcp.EnetServerKick) } } }() @@ -260,7 +260,7 @@ func (g *GameManager) Close() { // 单纯的告诉网关下线玩家 userList := USER_MANAGER.GetAllOnlineUserList() for _, player := range userList { - g.DisconnectPlayer(player.PlayerID, kcp.EnetServerShutdown) + g.KickPlayer(player.PlayerID, kcp.EnetServerShutdown) } time.Sleep(time.Second) } @@ -374,11 +374,11 @@ func (g *GameManager) SendToWorldH(world *World, cmdId uint16, seq uint32, msg p GAME_MANAGER.SendMsg(cmdId, world.GetOwner().PlayerID, seq, msg) } -func (g *GameManager) ReconnectPlayer(userId uint32) { +func (g *GameManager) ReLoginPlayer(userId uint32) { g.SendMsg(cmd.ClientReconnectNotify, userId, 0, new(proto.ClientReconnectNotify)) } -func (g *GameManager) DisconnectPlayer(userId uint32, reason uint32) { +func (g *GameManager) KickPlayer(userId uint32, reason uint32) { player := USER_MANAGER.GetOnlineUser(userId) if player == nil { return @@ -391,7 +391,6 @@ func (g *GameManager) DisconnectPlayer(userId uint32, reason uint32) { KickReason: reason, }, }) - // g.SendMsg(cmd.ServerDisconnectClientNotify, userId, 0, new(proto.ServerDisconnectClientNotify)) } func (g *GameManager) GetClientProtoObjByName(protoObjName string) pb.Message { diff --git a/gs/game/gcg_manager.go b/gs/game/gcg_manager.go index 192df81f..efc8ff27 100644 --- a/gs/game/gcg_manager.go +++ b/gs/game/gcg_manager.go @@ -357,8 +357,8 @@ func (g *GCGGame) InitDeckCard(controller *GCGController, cardIdList ...uint32) // GiveCharCard 给予操控者角色卡牌 func (g *GCGGame) GiveCharCard(controller *GCGController, charId uint32) { // 读取角色卡牌配置表 - gcgCharConfig, ok := gdconf.CONF.GCGCharDataMap[int32(charId)] - if !ok { + gcgCharConfig := gdconf.GetGCGCharDataById(int32(charId)) + if gcgCharConfig == nil { logger.Error("gcg char config error, charId: %v", charId) return } @@ -372,10 +372,10 @@ func (g *GCGGame) GiveCharCard(controller *GCGController, charId uint32) { faceType: 0, // 1为金卡 tagList: gcgCharConfig.TagList, tokenMap: map[uint32]uint32{ - constant.GCGTokenConst.TOKEN_CUR_HEALTH: uint32(gcgCharConfig.HPBase), // 血量 - constant.GCGTokenConst.TOKEN_MAX_HEALTH: uint32(gcgCharConfig.HPBase), // 最大血量(不确定) - constant.GCGTokenConst.TOKEN_CUR_ELEM: 0, // 充能 - constant.GCGTokenConst.TOKEN_MAX_ELEM: uint32(gcgCharConfig.MaxElemVal), // 充能条 + constant.GCG_TOKEN_TYPE_CUR_HEALTH: uint32(gcgCharConfig.HPBase), // 血量 + constant.GCG_TOKEN_TYPE_MAX_HEALTH: uint32(gcgCharConfig.HPBase), // 最大血量(不确定) + constant.GCG_TOKEN_TYPE_CUR_ELEM: 0, // 充能 + constant.GCG_TOKEN_TYPE_MAX_ELEM: uint32(gcgCharConfig.MaxElemVal), // 充能条 }, skillList: make([]*GCGSkillInfo, 0, len(gcgCharConfig.SkillList)), skillLimitList: []uint32{}, @@ -571,13 +571,13 @@ func (g *GCGGame) ControllerUseSkill(controller *GCGController, skillId uint32, msgList = append(msgList, g.GCGMsgUseSkill(controller.selectedCharCardGuid, skillId)) msgList = append(msgList, g.GCGMsgTokenChange(targetSelectedCharCard.guid, proto.GCGReason_GCG_REASON_EFFECT, 11, 1)) - msgList = append(msgList, g.GCGMsgTokenChange(targetSelectedCharCard.guid, proto.GCGReason_GCG_REASON_EFFECT_DAMAGE, constant.GCGTokenConst.TOKEN_CUR_HEALTH, 6)) + msgList = append(msgList, g.GCGMsgTokenChange(targetSelectedCharCard.guid, proto.GCGReason_GCG_REASON_EFFECT_DAMAGE, constant.GCG_TOKEN_TYPE_CUR_HEALTH, 6)) msgList = append(msgList, g.GCGMsgSkillResult(targetSelectedCharCard.guid, skillId)) msgList = append(msgList, g.GCGMsgUseSkillEnd(controller.selectedCharCardGuid, skillId)) // 因为使用技能自身充能+1 - msgList = append(msgList, g.GCGMsgTokenChange(controller.selectedCharCardGuid, proto.GCGReason_GCG_REASON_ATTACK, constant.GCGTokenConst.TOKEN_CUR_ELEM, 3)) + msgList = append(msgList, g.GCGMsgTokenChange(controller.selectedCharCardGuid, proto.GCGReason_GCG_REASON_ATTACK, constant.GCG_TOKEN_TYPE_CUR_ELEM, 3)) g.AddAllMsgPack(controller.controllerId, proto.GCGActionType_GCG_ACTION_ATTACK, msgList...) g.ChangePhase(proto.GCGPhaseType_GCG_PHASE_MAIN) } @@ -949,8 +949,8 @@ func (g *GCGGame) GCGMsgCostRevise(controller *GCGController) *proto.GCGMessage // AttackCostList for _, skillInfo := range selectedCharCard.skillList { // 读取卡牌技能配置表 - gcgSkillConfig, ok := gdconf.CONF.GCGSkillDataMap[int32(skillInfo.skillId)] - if !ok { + gcgSkillConfig := gdconf.GetGCGSkillDataById(int32(skillInfo.skillId)) + if gcgSkillConfig == nil { logger.Error("gcg skill config error, skillId: %v", skillInfo.skillId) return new(proto.GCGMessage) } @@ -1048,8 +1048,8 @@ func (g *GCGGame) GCGMsgTokenChange(cardGuid uint32, reason proto.GCGReason, tok // GCGMsgSkillResult GCG消息技能结果 func (g *GCGGame) GCGMsgSkillResult(selectedCharCardGuid uint32, skillId uint32) *proto.GCGMessage { // 读取卡牌技能配置表 - gcgSkillConfig, ok := gdconf.CONF.GCGSkillDataMap[int32(skillId)] - if !ok { + gcgSkillConfig := gdconf.GetGCGSkillDataById(int32(skillId)) + if gcgSkillConfig == nil { logger.Error("gcg skill config error, skillId: %v", skillId) return new(proto.GCGMessage) } diff --git a/gs/game/player_avatar.go b/gs/game/player_avatar.go index 24d94b2d..c45d21ce 100644 --- a/gs/game/player_avatar.go +++ b/gs/game/player_avatar.go @@ -16,7 +16,7 @@ import ( func (g *GameManager) GetAllAvatarDataConfig() map[int32]*gdconf.AvatarData { allAvatarDataConfig := make(map[int32]*gdconf.AvatarData) - for avatarId, avatarData := range gdconf.CONF.AvatarDataMap { + for avatarId, avatarData := range gdconf.GetAvatarDataMap() { if avatarId < 10000002 || avatarId >= 11000000 { // 跳过无效角色 continue @@ -49,8 +49,8 @@ func (g *GameManager) AddUserAvatar(userId uint32, avatarId uint32) { player.AddAvatar(avatarId) // 添加初始武器 - avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(avatarId)] - if !ok { + avatarDataConfig := gdconf.GetAvatarDataById(int32(avatarId)) + if avatarDataConfig == nil { logger.Error("config is nil, itemId: %v", avatarId) return } @@ -80,8 +80,8 @@ func (g *GameManager) AvatarPromoteGetRewardReq(player *model.Player, payloadMsg return } // 获取角色配置表 - avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(avatar.AvatarId)] - if !ok { + avatarDataConfig := gdconf.GetAvatarDataById(int32(avatar.AvatarId)) + if avatarDataConfig == nil { logger.Error("avatar config error, avatarId: %v", avatar.AvatarId) g.SendError(cmd.AvatarPromoteGetRewardRsp, player, &proto.AvatarPromoteGetRewardRsp{}) return @@ -93,8 +93,8 @@ func (g *GameManager) AvatarPromoteGetRewardReq(player *model.Player, payloadMsg return } // 获取奖励配置表 - rewardConfig, ok := gdconf.CONF.RewardDataMap[int32(avatarDataConfig.PromoteRewardMap[req.PromoteLevel])] - if !ok { + rewardConfig := gdconf.GetRewardDataById(int32(avatarDataConfig.PromoteRewardMap[req.PromoteLevel])) + if rewardConfig == nil { logger.Error("reward config error, rewardId: %v", avatarDataConfig.PromoteRewardMap[req.PromoteLevel]) g.SendError(cmd.AvatarPromoteGetRewardRsp, player, &proto.AvatarPromoteGetRewardRsp{}) return @@ -131,22 +131,15 @@ func (g *GameManager) AvatarPromoteReq(player *model.Player, payloadMsg pb.Messa return } // 获取角色配置表 - avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(avatar.AvatarId)] - if !ok { + avatarDataConfig := gdconf.GetAvatarDataById(int32(avatar.AvatarId)) + if avatarDataConfig == nil { logger.Error("avatar config error, avatarId: %v", avatar.AvatarId) g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{}) return } // 获取角色突破配置表 - avatarPromoteDataMap, ok := gdconf.CONF.AvatarPromoteDataMap[avatarDataConfig.PromoteId] - if !ok { - logger.Error("avatar promote config error, promoteId: %v", avatarDataConfig.PromoteId) - g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{}) - return - } - // 获取角色突破等级的配置表 - avatarPromoteConfig, ok := avatarPromoteDataMap[int32(avatar.Promote)] - if !ok { + avatarPromoteConfig := gdconf.GetAvatarPromoteDataByIdAndLevel(avatarDataConfig.PromoteId, int32(avatar.Promote)) + if avatarPromoteConfig == nil { logger.Error("avatar promote config error, promoteLevel: %v", avatar.Promote) g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{}) return @@ -158,8 +151,8 @@ func (g *GameManager) AvatarPromoteReq(player *model.Player, payloadMsg pb.Messa return } // 获取角色突破下一级的配置表 - avatarPromoteConfig, ok = avatarPromoteDataMap[int32(avatar.Promote+1)] - if !ok { + avatarPromoteConfig = gdconf.GetAvatarPromoteDataByIdAndLevel(avatarDataConfig.PromoteId, int32(avatar.Promote+1)) + if avatarPromoteConfig == nil { logger.Error("avatar promote config error, next promoteLevel: %v", avatar.Promote+1) g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{}, proto.Retcode_RET_AVATAR_ON_MAX_BREAK_LEVEL) return @@ -175,7 +168,7 @@ func (g *GameManager) AvatarPromoteReq(player *model.Player, payloadMsg pb.Messa } // 消耗列表添加摩拉的消耗 costItemList = append(costItemList, &UserItem{ - ItemId: constant.ItemConstantConst.SCOIN, + ItemId: constant.ITEM_ID_SCOIN, ChangeCount: uint32(avatarPromoteConfig.CostCoin), }) // 突破材料以及摩拉是否足够 @@ -183,7 +176,7 @@ func (g *GameManager) AvatarPromoteReq(player *model.Player, payloadMsg pb.Messa if player.GetItemCount(item.ItemId) < item.ChangeCount { logger.Error("item count not enough, itemId: %v", item.ItemId) // 摩拉的错误提示与材料不同 - if item.ItemId == constant.ItemConstantConst.SCOIN { + if item.ItemId == constant.ITEM_ID_SCOIN { g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{}, proto.Retcode_RET_SCOIN_NOT_ENOUGH) } g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{}, proto.Retcode_RET_ITEM_COUNT_NOT_ENOUGH) @@ -191,8 +184,8 @@ func (g *GameManager) AvatarPromoteReq(player *model.Player, payloadMsg pb.Messa } } // 冒险等级是否符合要求 - if player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL] < uint32(avatarPromoteConfig.MinPlayerLevel) { - logger.Error("player level not enough, level: %v", player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL]) + if player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL] < uint32(avatarPromoteConfig.MinPlayerLevel) { + logger.Error("player level not enough, level: %v", player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL]) g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{}, proto.Retcode_RET_PLAYER_LEVEL_LESS_THAN) return } @@ -230,9 +223,9 @@ func (g *GameManager) AvatarUpgradeReq(player *model.Player, payloadMsg pb.Messa return } // 获取经验书物品配置表 - itemDataConfig, ok := gdconf.CONF.ItemDataMap[int32(req.ItemId)] - if !ok { - logger.Error("item data config error, itemId: %v", constant.ItemConstantConst.SCOIN) + itemDataConfig := gdconf.GetItemDataById(int32(req.ItemId)) + if itemDataConfig == nil { + logger.Error("item data config error, itemId: %v", constant.ITEM_ID_SCOIN) g.SendError(cmd.AvatarUpgradeRsp, player, &proto.AvatarUpgradeRsp{}, proto.Retcode_RET_ITEM_NOT_EXIST) return } @@ -246,28 +239,21 @@ func (g *GameManager) AvatarUpgradeReq(player *model.Player, payloadMsg pb.Messa // 角色获得的经验 expCount := uint32(itemParam) * req.Count // 摩拉数量是否足够 - if player.GetItemCount(constant.ItemConstantConst.SCOIN) < expCount/5 { - logger.Error("item count not enough, itemId: %v", constant.ItemConstantConst.SCOIN) + if player.GetItemCount(constant.ITEM_ID_SCOIN) < expCount/5 { + logger.Error("item count not enough, itemId: %v", constant.ITEM_ID_SCOIN) g.SendError(cmd.AvatarUpgradeRsp, player, &proto.AvatarUpgradeRsp{}, proto.Retcode_RET_SCOIN_NOT_ENOUGH) return } // 获取角色配置表 - avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(avatar.AvatarId)] - if !ok { + avatarDataConfig := gdconf.GetAvatarDataById(int32(avatar.AvatarId)) + if avatarDataConfig == nil { logger.Error("avatar config error, avatarId: %v", avatar.AvatarId) g.SendError(cmd.AvatarUpgradeRsp, player, &proto.AvatarUpgradeRsp{}) return } // 获取角色突破配置表 - avatarPromoteDataMap, ok := gdconf.CONF.AvatarPromoteDataMap[avatarDataConfig.PromoteId] - if !ok { - logger.Error("avatar promote config error, promoteId: %v", avatarDataConfig.PromoteId) - g.SendError(cmd.AvatarUpgradeRsp, player, &proto.AvatarUpgradeRsp{}) - return - } - // 获取角色突破等级对应的配置表 - avatarPromoteConfig, ok := avatarPromoteDataMap[int32(avatar.Promote)] - if !ok { + avatarPromoteConfig := gdconf.GetAvatarPromoteDataByIdAndLevel(avatarDataConfig.PromoteId, int32(avatar.Promote)) + if avatarPromoteConfig == nil { logger.Error("avatar promote config error, promoteLevel: %v", avatar.Promote) g.SendError(cmd.AvatarUpgradeRsp, player, &proto.AvatarUpgradeRsp{}) return @@ -285,7 +271,7 @@ func (g *GameManager) AvatarUpgradeReq(player *model.Player, payloadMsg pb.Messa ChangeCount: req.Count, }, { - ItemId: constant.ItemConstantConst.SCOIN, + ItemId: constant.ITEM_ID_SCOIN, ChangeCount: expCount / 5, }, }) @@ -312,20 +298,14 @@ func (g *GameManager) AvatarUpgradeReq(player *model.Player, payloadMsg pb.Messa // UpgradePlayerAvatar 玩家角色升级 func (g *GameManager) UpgradePlayerAvatar(player *model.Player, avatar *model.Avatar, expCount uint32) { // 获取角色配置表 - avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(avatar.AvatarId)] - if !ok { + avatarDataConfig := gdconf.GetAvatarDataById(int32(avatar.AvatarId)) + if avatarDataConfig == nil { logger.Error("avatar config error, avatarId: %v", avatar.AvatarId) return } // 获取角色突破配置表 - avatarPromoteDataMap, ok := gdconf.CONF.AvatarPromoteDataMap[avatarDataConfig.PromoteId] - if !ok { - logger.Error("avatar promote config error, promoteId: %v", avatarDataConfig.PromoteId) - return - } - // 获取角色突破等级对应的配置表 - avatarPromoteConfig, ok := avatarPromoteDataMap[int32(avatar.Promote)] - if !ok { + avatarPromoteConfig := gdconf.GetAvatarPromoteDataByIdAndLevel(avatarDataConfig.PromoteId, int32(avatar.Promote)) + if avatarPromoteConfig == nil { logger.Error("avatar promote config error, promoteLevel: %v", avatar.Promote) return } @@ -334,8 +314,8 @@ func (g *GameManager) UpgradePlayerAvatar(player *model.Player, avatar *model.Av // 角色升级 for { // 获取角色等级配置表 - avatarLevelConfig, ok := gdconf.CONF.AvatarLevelDataMap[int32(avatar.Level)] - if !ok { + avatarLevelConfig := gdconf.GetAvatarLevelDataByLevel(int32(avatar.Level)) + if avatarLevelConfig == nil { // 获取不到代表已经到达最大等级 break } @@ -366,15 +346,15 @@ func (g *GameManager) PacketAvatarPropNotify(avatar *model.Avatar) *proto.Avatar AvatarGuid: avatar.Guid, } // 角色等级 - avatarPropNotify.PropMap[uint32(constant.PlayerPropertyConst.PROP_LEVEL)] = int64(avatar.Level) + avatarPropNotify.PropMap[uint32(constant.PLAYER_PROP_LEVEL)] = int64(avatar.Level) // 角色经验 - avatarPropNotify.PropMap[uint32(constant.PlayerPropertyConst.PROP_EXP)] = int64(avatar.Exp) + avatarPropNotify.PropMap[uint32(constant.PLAYER_PROP_EXP)] = int64(avatar.Exp) // 角色突破等级 - avatarPropNotify.PropMap[uint32(constant.PlayerPropertyConst.PROP_BREAK_LEVEL)] = int64(avatar.Promote) + avatarPropNotify.PropMap[uint32(constant.PLAYER_PROP_BREAK_LEVEL)] = int64(avatar.Promote) // 角色饱食度 - avatarPropNotify.PropMap[uint32(constant.PlayerPropertyConst.PROP_SATIATION_VAL)] = int64(avatar.Satiation) + avatarPropNotify.PropMap[uint32(constant.PLAYER_PROP_SATIATION_VAL)] = int64(avatar.Satiation) // 角色饱食度溢出 - avatarPropNotify.PropMap[uint32(constant.PlayerPropertyConst.PROP_SATIATION_PENALTY_TIME)] = int64(avatar.SatiationPenalty) + avatarPropNotify.PropMap[uint32(constant.PLAYER_PROP_SATIATION_PENALTY_TIME)] = int64(avatar.SatiationPenalty) return avatarPropNotify } @@ -536,8 +516,8 @@ 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 { + itemDataConfig := gdconf.GetItemDataById(int32(weapon.ItemId)) + if itemDataConfig == nil { logger.Error("item data config error, itemId: %v", weapon.ItemId) return new(proto.AvatarEquipChangeNotify) } @@ -547,9 +527,9 @@ func (g *GameManager) PacketAvatarEquipChangeNotify(avatar *model.Avatar, weapon 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): + case int32(constant.ITEM_TYPE_WEAPON): + avatarEquipChangeNotify.EquipType = uint32(constant.EQUIP_TYPE_WEAPON) + case int32(constant.ITEM_TYPE_RELIQUARY): avatarEquipChangeNotify.EquipType = uint32(itemDataConfig.ReliquaryType) } avatarEquipChangeNotify.Weapon = &proto.SceneWeaponInfo{ @@ -567,8 +547,8 @@ func (g *GameManager) PacketAvatarEquipTakeOffNotify(avatar *model.Avatar, weapo avatarEquipChangeNotify := &proto.AvatarEquipChangeNotify{ AvatarGuid: avatar.Guid, } - itemDataConfig, exist := gdconf.CONF.ItemDataMap[int32(weapon.ItemId)] - if exist { + itemDataConfig := gdconf.GetItemDataById(int32(weapon.ItemId)) + if itemDataConfig != nil { avatarEquipChangeNotify.EquipType = uint32(itemDataConfig.Type) } return avatarEquipChangeNotify @@ -605,28 +585,28 @@ func (g *GameManager) PacketAvatarInfo(avatar *model.Avatar) *proto.AvatarInfo { AvatarId: avatar.AvatarId, Guid: avatar.Guid, PropMap: map[uint32]*proto.PropValue{ - uint32(constant.PlayerPropertyConst.PROP_LEVEL): { - Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL), + uint32(constant.PLAYER_PROP_LEVEL): { + Type: uint32(constant.PLAYER_PROP_LEVEL), Val: int64(avatar.Level), Value: &proto.PropValue_Ival{Ival: int64(avatar.Level)}, }, - uint32(constant.PlayerPropertyConst.PROP_EXP): { - Type: uint32(constant.PlayerPropertyConst.PROP_EXP), + uint32(constant.PLAYER_PROP_EXP): { + Type: uint32(constant.PLAYER_PROP_EXP), Val: int64(avatar.Exp), Value: &proto.PropValue_Ival{Ival: int64(avatar.Exp)}, }, - uint32(constant.PlayerPropertyConst.PROP_BREAK_LEVEL): { - Type: uint32(constant.PlayerPropertyConst.PROP_BREAK_LEVEL), + uint32(constant.PLAYER_PROP_BREAK_LEVEL): { + Type: uint32(constant.PLAYER_PROP_BREAK_LEVEL), Val: int64(avatar.Promote), Value: &proto.PropValue_Ival{Ival: int64(avatar.Promote)}, }, - uint32(constant.PlayerPropertyConst.PROP_SATIATION_VAL): { - Type: uint32(constant.PlayerPropertyConst.PROP_SATIATION_VAL), + uint32(constant.PLAYER_PROP_SATIATION_VAL): { + Type: uint32(constant.PLAYER_PROP_SATIATION_VAL), Val: int64(avatar.Satiation), Value: &proto.PropValue_Ival{Ival: int64(avatar.Satiation)}, }, - uint32(constant.PlayerPropertyConst.PROP_SATIATION_PENALTY_TIME): { - Type: uint32(constant.PlayerPropertyConst.PROP_SATIATION_PENALTY_TIME), + uint32(constant.PLAYER_PROP_SATIATION_PENALTY_TIME): { + Type: uint32(constant.PLAYER_PROP_SATIATION_PENALTY_TIME), Val: int64(avatar.SatiationPenalty), Value: &proto.PropValue_Ival{Ival: int64(avatar.SatiationPenalty)}, }, @@ -651,14 +631,14 @@ func (g *GameManager) PacketAvatarInfo(avatar *model.Avatar) *proto.AvatarInfo { for _, v := range avatar.FetterList { pbAvatar.FetterInfo.FetterList = append(pbAvatar.FetterInfo.FetterList, &proto.FetterData{ FetterId: v, - FetterState: uint32(constant.FetterStateConst.FINISH), + FetterState: uint32(constant.FETTER_STATE_FINISH), }) } // 解锁全部资料 - for _, v := range gdconf.CONF.FetterDataAvatarIdMap[int32(avatar.AvatarId)] { + for _, v := range gdconf.GetFetterIdListByAvatarId(int32(avatar.AvatarId)) { pbAvatar.FetterInfo.FetterList = append(pbAvatar.FetterInfo.FetterList, &proto.FetterData{ FetterId: uint32(v), - FetterState: uint32(constant.FetterStateConst.FINISH), + FetterState: uint32(constant.FETTER_STATE_FINISH), }) } // 突破等级奖励 diff --git a/gs/game/player_base.go b/gs/game/player_base.go index 54533b22..bf306567 100644 --- a/gs/game/player_base.go +++ b/gs/game/player_base.go @@ -16,40 +16,40 @@ func (g *GameManager) AddUserPlayerExp(userId uint32, expCount uint32) { return } // 玩家增加冒险阅历 - player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_EXP] += expCount + player.PropertiesMap[constant.PLAYER_PROP_PLAYER_EXP] += expCount // 玩家升级 for { - playerLevel := player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL] + playerLevel := player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL] // 读取玩家等级配置表 - playerLevelConfig, ok := gdconf.CONF.PlayerLevelDataMap[int32(playerLevel)] - if !ok { + playerLevelConfig := gdconf.GetPlayerLevelDataById(int32(playerLevel)) + if playerLevelConfig == nil { // 获取不到代表已经到达最大等级 break } // 玩家冒险阅历不足则跳出循环 - if player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_EXP] < uint32(playerLevelConfig.Exp) { + if player.PropertiesMap[constant.PLAYER_PROP_PLAYER_EXP] < uint32(playerLevelConfig.Exp) { break } // 玩家增加冒险等阶 - player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL]++ - player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_EXP] -= uint32(playerLevelConfig.Exp) + player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL]++ + player.PropertiesMap[constant.PLAYER_PROP_PLAYER_EXP] -= uint32(playerLevelConfig.Exp) // 更新玩家属性 playerPropNotify := &proto.PlayerPropNotify{ PropMap: make(map[uint32]*proto.PropValue), } - playerPropNotify.PropMap[uint32(constant.PlayerPropertyConst.PROP_PLAYER_LEVEL)] = &proto.PropValue{ - Type: uint32(constant.PlayerPropertyConst.PROP_PLAYER_LEVEL), - Val: int64(player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL]), + playerPropNotify.PropMap[uint32(constant.PLAYER_PROP_PLAYER_LEVEL)] = &proto.PropValue{ + Type: uint32(constant.PLAYER_PROP_PLAYER_LEVEL), + Val: int64(player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL]), Value: &proto.PropValue_Ival{ - Ival: int64(player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL]), + Ival: int64(player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL]), }, } - playerPropNotify.PropMap[uint32(constant.PlayerPropertyConst.PROP_PLAYER_EXP)] = &proto.PropValue{ - Type: uint32(constant.PlayerPropertyConst.PROP_PLAYER_EXP), - Val: int64(player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_EXP]), + playerPropNotify.PropMap[uint32(constant.PLAYER_PROP_PLAYER_EXP)] = &proto.PropValue{ + Type: uint32(constant.PLAYER_PROP_PLAYER_EXP), + Val: int64(player.PropertiesMap[constant.PLAYER_PROP_PLAYER_EXP]), Value: &proto.PropValue_Ival{ - Ival: int64(player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_EXP]), + Ival: int64(player.PropertiesMap[constant.PLAYER_PROP_PLAYER_EXP]), }, } g.SendMsg(cmd.PlayerPropNotify, userId, player.ClientSeq, playerPropNotify) diff --git a/gs/game/player_fight_sync.go b/gs/game/player_fight_sync.go index 93df6e35..a21ee31d 100644 --- a/gs/game/player_fight_sync.go +++ b/gs/game/player_fight_sync.go @@ -139,12 +139,12 @@ func (g *GameManager) CombatInvocationsNotify(player *model.Player, payloadMsg p currHp := float32(0) fightProp := target.GetFightProp() if fightProp != nil { - currHp = fightProp[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)] + currHp = fightProp[uint32(constant.FIGHT_PROP_CUR_HP)] currHp -= damage if currHp < 0 { currHp = 0 } - fightProp[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)] = currHp + fightProp[uint32(constant.FIGHT_PROP_CUR_HP)] = currHp } entityFightPropUpdateNotify := &proto.EntityFightPropUpdateNotify{ FightPropMap: fightProp, @@ -152,7 +152,7 @@ func (g *GameManager) CombatInvocationsNotify(player *model.Player, payloadMsg p } g.SendToWorldA(world, cmd.EntityFightPropUpdateNotify, player.ClientSeq, entityFightPropUpdateNotify) if currHp == 0 && target.GetAvatarEntity() == nil { - scene.SetEntityLifeState(target, constant.LifeStateConst.LIFE_DEAD, proto.PlayerDieType_PLAYER_DIE_GM) + scene.SetEntityLifeState(target, constant.LIFE_STATE_DEAD, proto.PlayerDieType_PLAYER_DIE_GM) } combatData, err := pb.Marshal(hitInfo) if err != nil { diff --git a/gs/game/player_gcg.go b/gs/game/player_gcg.go index c0da2d35..afa445e9 100644 --- a/gs/game/player_gcg.go +++ b/gs/game/player_gcg.go @@ -63,7 +63,7 @@ func (g *GameManager) GCGStartChallenge(player *model.Player) { g.PacketGCGGameBriefDataNotify(player, proto.GCGGameBusinessType_GCG_GAME_GUIDE_GROUP, game)) // 玩家进入GCG界面 - g.TeleportPlayer(player, constant.EnterReasonConst.DungeonEnter, 79999, new(model.Vector), new(model.Vector), 2162) + g.TeleportPlayer(player, constant.EnterReasonDungeonEnter, 79999, new(model.Vector), new(model.Vector), 2162) } // GCGAskDuelReq GCG决斗请求 @@ -392,8 +392,8 @@ func (g *GameManager) PacketGCGSkillPreviewNotify(game *GCGGame, controller *GCG // SkillPreviewList for _, skillInfo := range selectedCharCard.skillList { // 读取卡牌技能配置表 - gcgSkillConfig, ok := gdconf.CONF.GCGSkillDataMap[int32(skillInfo.skillId)] - if !ok { + gcgSkillConfig := gdconf.GetGCGSkillDataById(int32(skillInfo.skillId)) + if gcgSkillConfig == nil { logger.Error("gcg skill config error, skillId: %v", skillInfo.skillId) return new(proto.GCGSkillPreviewNotify) } @@ -421,10 +421,10 @@ func (g *GameManager) PacketGCGSkillPreviewNotify(game *GCGGame, controller *GCG TokenChangeList: []*proto.GCGSkillPreviewTokenInfo{ { // Token类型 - TokenType: constant.GCGTokenConst.TOKEN_CUR_ELEM, + TokenType: constant.GCG_TOKEN_TYPE_CUR_ELEM, BeforeValue: 0, // 更改为的值 - AfterValue: selectedCharCard.tokenMap[constant.GCGTokenConst.TOKEN_CUR_ELEM] + 1, + AfterValue: selectedCharCard.tokenMap[constant.GCG_TOKEN_TYPE_CUR_ELEM] + 1, }, }, } diff --git a/gs/game/player_item.go b/gs/game/player_item.go index 7286d868..a7511f21 100644 --- a/gs/game/player_item.go +++ b/gs/game/player_item.go @@ -15,12 +15,12 @@ type UserItem struct { func (g *GameManager) GetAllItemDataConfig() map[int32]*gdconf.ItemData { allItemDataConfig := make(map[int32]*gdconf.ItemData) - for itemId, itemData := range gdconf.CONF.ItemDataMap { - if uint16(itemData.Type) == constant.ItemTypeConst.ITEM_WEAPON { + for itemId, itemData := range gdconf.GetItemDataMap() { + if uint16(itemData.Type) == constant.ITEM_TYPE_WEAPON { // 排除武器 continue } - if uint16(itemData.Type) == constant.ItemTypeConst.ITEM_RELIQUARY { + if uint16(itemData.Type) == constant.ITEM_TYPE_RELIQUARY { // 排除圣遗物 continue } @@ -61,10 +61,10 @@ func (g *GameManager) AddUserItem(userId uint32, itemList []*UserItem, isHint bo for _, userItem := range itemList { // 物品为虚拟物品则另外处理 switch userItem.ItemId { - case constant.ItemConstantConst.RESIN, constant.ItemConstantConst.LEGENDARY_KEY, constant.ItemConstantConst.HCOIN, - constant.ItemConstantConst.SCOIN, constant.ItemConstantConst.MCOIN, constant.ItemConstantConst.HOME_COIN: + case constant.ITEM_ID_RESIN, constant.ITEM_ID_LEGENDARY_KEY, constant.ITEM_ID_HCOIN, constant.ITEM_ID_SCOIN, + constant.ITEM_ID_MCOIN, constant.ITEM_ID_HOME_COIN: // 树脂 传说任务钥匙 原石 摩拉 创世结晶 洞天宝钱 - prop, ok := constant.ItemConstantConst.VIRTUAL_ITEM_PROP[userItem.ItemId] + prop, ok := constant.VIRTUAL_ITEM_PROP[userItem.ItemId] if !ok { continue } @@ -78,7 +78,7 @@ func (g *GameManager) AddUserItem(userId uint32, itemList []*UserItem, isHint bo Ival: int64(player.PropertiesMap[prop]), }, } - case constant.ItemConstantConst.PLAYER_EXP: + case constant.ITEM_ID_PLAYER_EXP: // 冒险阅历 g.AddUserPlayerExp(userId, userItem.ChangeCount) default: @@ -110,7 +110,7 @@ func (g *GameManager) AddUserItem(userId uint32, itemList []*UserItem, isHint bo if isHint { if hintReason == 0 { - hintReason = constant.ActionReasonConst.SubfieldDrop + hintReason = constant.ActionReasonSubfieldDrop } itemAddHintNotify := &proto.ItemAddHintNotify{ Reason: uint32(hintReason), @@ -139,10 +139,10 @@ func (g *GameManager) CostUserItem(userId uint32, itemList []*UserItem) { for _, userItem := range itemList { // 物品为虚拟物品则另外处理 switch userItem.ItemId { - case constant.ItemConstantConst.RESIN, constant.ItemConstantConst.LEGENDARY_KEY, constant.ItemConstantConst.HCOIN, - constant.ItemConstantConst.SCOIN, constant.ItemConstantConst.MCOIN, constant.ItemConstantConst.HOME_COIN: + case constant.ITEM_ID_RESIN, constant.ITEM_ID_LEGENDARY_KEY, constant.ITEM_ID_HCOIN, constant.ITEM_ID_SCOIN, + constant.ITEM_ID_MCOIN, constant.ITEM_ID_HOME_COIN: // 树脂 传说任务钥匙 原石 摩拉 创世结晶 洞天宝钱 - prop, ok := constant.ItemConstantConst.VIRTUAL_ITEM_PROP[userItem.ItemId] + prop, ok := constant.VIRTUAL_ITEM_PROP[userItem.ItemId] if !ok { continue } @@ -160,7 +160,7 @@ func (g *GameManager) CostUserItem(userId uint32, itemList []*UserItem) { Ival: int64(player.PropertiesMap[prop]), }, } - case constant.ItemConstantConst.PLAYER_EXP: + case constant.ITEM_ID_PLAYER_EXP: // 冒险阅历应该也没人会去扣吧? default: // 普通物品直接扣除 diff --git a/gs/game/player_login.go b/gs/game/player_login.go index 32e7a310..0bfb1f3e 100644 --- a/gs/game/player_login.go +++ b/gs/game/player_login.go @@ -9,7 +9,6 @@ import ( "hk4e/gdconf" "hk4e/gs/model" "hk4e/pkg/logger" - "hk4e/pkg/reflection" "hk4e/protocol/cmd" "hk4e/protocol/proto" @@ -198,19 +197,18 @@ func (g *GameManager) PacketPlayerStoreNotify(player *model.Player) *proto.Playe StoreType: proto.StoreType_STORE_PACK, WeightLimit: 30000, } - itemDataMapConfig := gdconf.CONF.ItemDataMap for _, weapon := range player.WeaponMap { pbItem := &proto.Item{ ItemId: weapon.ItemId, Guid: weapon.Guid, Detail: nil, } - itemData, ok := itemDataMapConfig[int32(weapon.ItemId)] - if !ok { - logger.Error("config is nil, itemId: %v", weapon.ItemId) - return nil + itemDataConfig := gdconf.GetItemDataById(int32(weapon.ItemId)) + if itemDataConfig == nil { + logger.Error("get item data config is nil, itemId: %v", weapon.ItemId) + continue } - if uint16(itemData.Type) != constant.ItemTypeConst.ITEM_WEAPON { + if uint16(itemDataConfig.Type) != constant.ITEM_TYPE_WEAPON { continue } affixMap := make(map[uint32]uint32) @@ -238,7 +236,12 @@ func (g *GameManager) PacketPlayerStoreNotify(player *model.Player) *proto.Playe Guid: reliquary.Guid, Detail: nil, } - if uint16(itemDataMapConfig[int32(reliquary.ItemId)].Type) != constant.ItemTypeConst.ITEM_RELIQUARY { + itemDataConfig := gdconf.GetItemDataById(int32(reliquary.ItemId)) + if itemDataConfig == nil { + logger.Error("get item data config is nil, itemId: %v", reliquary.ItemId) + continue + } + if uint16(itemDataConfig.Type) != constant.ITEM_TYPE_RELIQUARY { continue } pbItem.Detail = &proto.Item_Equip{ @@ -263,8 +266,12 @@ func (g *GameManager) PacketPlayerStoreNotify(player *model.Player) *proto.Playe Guid: item.Guid, Detail: nil, } - itemDataConfig := itemDataMapConfig[int32(item.ItemId)] - if itemDataConfig != nil && uint16(itemDataConfig.Type) == constant.ItemTypeConst.ITEM_FURNITURE { + itemDataConfig := gdconf.GetItemDataById(int32(item.ItemId)) + if itemDataConfig == nil { + logger.Error("get item data config is nil, itemId: %v", item.ItemId) + continue + } + if itemDataConfig != nil && uint16(itemDataConfig.Type) == constant.ITEM_TYPE_FURNITURE { pbItem.Detail = &proto.Item_Furniture{ Furniture: &proto.Furniture{ Count: item.Count, @@ -315,10 +322,9 @@ func (g *GameManager) PacketOpenStateUpdateNotify() *proto.OpenStateUpdateNotify openStateUpdateNotify := &proto.OpenStateUpdateNotify{ OpenStateMap: make(map[uint32]uint32), } - openStateConstMap := reflection.ConvStructToMap(constant.OpenStateConst) // 先暂时开放全部功能模块 - for _, v := range openStateConstMap { - openStateUpdateNotify.OpenStateMap[uint32(v.(uint16))] = 1 + for _, v := range constant.ALL_OPEN_STATE { + openStateUpdateNotify.OpenStateMap[uint32(v)] = 1 } return openStateUpdateNotify } @@ -342,31 +348,17 @@ func (g *GameManager) CreatePlayer(userId uint32, nickName string, mainCharAvata player.SceneId = 3 player.PropertiesMap = make(map[uint16]uint32) - // 初始化所有属性 - propList := reflection.ConvStructToMap(constant.PlayerPropertyConst) - for fieldName, fieldValue := range propList { - // 排除角色相关的属性 - if fieldName == "PROP_EXP" || - fieldName == "PROP_BREAK_LEVEL" || - fieldName == "PROP_SATIATION_VAL" || - fieldName == "PROP_SATIATION_PENALTY_TIME" || - fieldName == "PROP_LEVEL" { - continue - } - value := fieldValue.(uint16) - player.PropertiesMap[value] = 0 - } - player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL] = 1 - player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL] = 0 - player.PropertiesMap[constant.PlayerPropertyConst.PROP_IS_SPRING_AUTO_USE] = 1 - player.PropertiesMap[constant.PlayerPropertyConst.PROP_SPRING_AUTO_USE_PERCENT] = 100 - player.PropertiesMap[constant.PlayerPropertyConst.PROP_IS_FLYABLE] = 1 - player.PropertiesMap[constant.PlayerPropertyConst.PROP_IS_TRANSFERABLE] = 1 - player.PropertiesMap[constant.PlayerPropertyConst.PROP_MAX_STAMINA] = 24000 - player.PropertiesMap[constant.PlayerPropertyConst.PROP_CUR_PERSIST_STAMINA] = 24000 - player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_RESIN] = 160 - player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE] = 2 - player.PropertiesMap[constant.PlayerPropertyConst.PROP_IS_MP_MODE_AVAILABLE] = 1 + player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL] = 1 + player.PropertiesMap[constant.PLAYER_PROP_PLAYER_WORLD_LEVEL] = 0 + player.PropertiesMap[constant.PLAYER_PROP_IS_SPRING_AUTO_USE] = 1 + player.PropertiesMap[constant.PLAYER_PROP_SPRING_AUTO_USE_PERCENT] = 100 + player.PropertiesMap[constant.PLAYER_PROP_IS_FLYABLE] = 1 + player.PropertiesMap[constant.PLAYER_PROP_IS_TRANSFERABLE] = 1 + player.PropertiesMap[constant.PLAYER_PROP_MAX_STAMINA] = 24000 + player.PropertiesMap[constant.PLAYER_PROP_CUR_PERSIST_STAMINA] = 24000 + player.PropertiesMap[constant.PLAYER_PROP_PLAYER_RESIN] = 160 + player.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE] = 2 + player.PropertiesMap[constant.PLAYER_PROP_IS_MP_MODE_AVAILABLE] = 1 player.FlyCloakList = make([]uint32, 0) player.FlyCloakList = append(player.FlyCloakList, 140001) @@ -411,8 +403,8 @@ func (g *GameManager) CreatePlayer(userId uint32, nickName string, mainCharAvata // 添加选定的主角 player.AddAvatar(mainCharAvatarId) // 添加初始武器 - avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(mainCharAvatarId)] - if !ok { + avatarDataConfig := gdconf.GetAvatarDataById(int32(mainCharAvatarId)) + if avatarDataConfig == nil { logger.Error("config is nil, mainCharAvatarId: %v", mainCharAvatarId) return nil } diff --git a/gs/game/player_map.go b/gs/game/player_map.go index 89c63c6c..624989fd 100644 --- a/gs/game/player_map.go +++ b/gs/game/player_map.go @@ -17,27 +17,22 @@ func (g *GameManager) SceneTransToPointReq(player *model.Player, payloadMsg pb.M logger.Debug("user get scene trans to point, uid: %v", player.PlayerID) req := payloadMsg.(*proto.SceneTransToPointReq) - scenePointConfig, exist := gdconf.CONF.ScenePointMap[int32(req.SceneId)] - if !exist { - g.SendError(cmd.SceneTransToPointRsp, player, &proto.SceneTransToPointRsp{}) - return - } - pointConfig, exist := scenePointConfig.PointMap[int32(req.PointId)] - if !exist { + pointDataConfig := gdconf.GetScenePointBySceneIdAndPointId(int32(req.SceneId), int32(req.PointId)) + if pointDataConfig == nil { g.SendError(cmd.SceneTransToPointRsp, player, &proto.SceneTransToPointRsp{}) return } // 传送玩家 sceneId := req.SceneId - g.TeleportPlayer(player, constant.EnterReasonConst.TransPoint, sceneId, &model.Vector{ - X: pointConfig.TranPos.X, - Y: pointConfig.TranPos.Y, - Z: pointConfig.TranPos.Z, + g.TeleportPlayer(player, constant.EnterReasonTransPoint, sceneId, &model.Vector{ + X: pointDataConfig.TranPos.X, + Y: pointDataConfig.TranPos.Y, + Z: pointDataConfig.TranPos.Z, }, &model.Vector{ - X: pointConfig.TranRot.X, - Y: pointConfig.TranRot.Y, - Z: pointConfig.TranRot.Z, + X: pointDataConfig.TranRot.X, + Y: pointDataConfig.TranRot.Y, + Z: pointDataConfig.TranRot.Z, }, 0) sceneTransToPointRsp := &proto.SceneTransToPointRsp{ @@ -60,7 +55,7 @@ func (g *GameManager) MarkMapReq(player *model.Player, payloadMsg pb.Message) { posYInt = 300 } // 传送玩家 - g.TeleportPlayer(player, constant.EnterReasonConst.Gm, req.Mark.SceneId, &model.Vector{ + g.TeleportPlayer(player, constant.EnterReasonGm, req.Mark.SceneId, &model.Vector{ X: float64(req.Mark.Pos.X), Y: float64(posYInt), Z: float64(req.Mark.Pos.Z), @@ -107,7 +102,7 @@ func (g *GameManager) TeleportPlayer(player *model.Player, enterReason uint16, s var enterType proto.EnterType switch enterReason { - case constant.EnterReasonConst.DungeonEnter: + case constant.EnterReasonDungeonEnter: logger.Debug("player dungeon scene, scene: %v, pos: %v", player.SceneId, player.Pos) enterType = proto.EnterType_ENTER_DUNGEON default: @@ -127,8 +122,8 @@ func (g *GameManager) GetScenePointReq(player *model.Player, payloadMsg pb.Messa logger.Debug("user get scene point, uid: %v", player.PlayerID) req := payloadMsg.(*proto.GetScenePointReq) - scenePointConfig, exist := gdconf.CONF.ScenePointMap[int32(req.SceneId)] - if !exist { + scenePointMapConfig := gdconf.GetScenePointMapBySceneId(int32(req.SceneId)) + if scenePointMapConfig == nil { return } @@ -136,7 +131,7 @@ func (g *GameManager) GetScenePointReq(player *model.Player, payloadMsg pb.Messa SceneId: req.SceneId, } areaIdMap := make(map[uint32]bool) - for _, worldAreaData := range gdconf.CONF.WorldAreaDataMap { + for _, worldAreaData := range gdconf.GetWorldAreaDataMap() { if uint32(worldAreaData.SceneId) == req.SceneId { areaIdMap[uint32(worldAreaData.AreaId1)] = true } @@ -146,7 +141,7 @@ func (g *GameManager) GetScenePointReq(player *model.Player, payloadMsg pb.Messa areaList = append(areaList, areaId) } getScenePointRsp.UnlockAreaList = areaList - for _, pointData := range scenePointConfig.PointMap { + for _, pointData := range scenePointMapConfig { if pointData.PointType == gdconf.PointTypeOther { continue } @@ -163,7 +158,7 @@ func (g *GameManager) GetSceneAreaReq(player *model.Player, payloadMsg pb.Messag SceneId: req.SceneId, } areaIdMap := make(map[uint32]bool) - for _, worldAreaData := range gdconf.CONF.WorldAreaDataMap { + for _, worldAreaData := range gdconf.GetWorldAreaDataMap() { if uint32(worldAreaData.SceneId) == req.SceneId { areaIdMap[uint32(worldAreaData.AreaId1)] = true } diff --git a/gs/game/player_multiplayer.go b/gs/game/player_multiplayer.go index dc67307c..6cb048ec 100644 --- a/gs/game/player_multiplayer.go +++ b/gs/game/player_multiplayer.go @@ -212,8 +212,8 @@ func (g *GameManager) UserApplyEnterWorld(player *model.Player, targetUid uint32 ApplyPlayerOnlineInfo: &mq.UserBaseInfo{ UserId: player.PlayerID, Nickname: player.NickName, - PlayerLevel: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL], - MpSettingType: uint8(player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]), + PlayerLevel: player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL], + MpSettingType: uint8(player.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]), NameCardId: player.NameCard, Signature: player.Signature, HeadImageId: player.HeadImage, @@ -235,7 +235,7 @@ func (g *GameManager) UserApplyEnterWorld(player *model.Player, targetUid uint32 applyFailNotify(proto.PlayerApplyEnterMpResultNotify_PLAYER_NOT_IN_PLAYER_WORLD) return } - mpSetting := targetPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE] + mpSetting := targetPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE] if mpSetting == 0 { // 房主玩家没开权限 applyFailNotify(proto.PlayerApplyEnterMpResultNotify_SCENE_CANNOT_ENTER) @@ -340,7 +340,7 @@ func (g *GameManager) HostEnterMpWorld(hostPlayer *model.Player, otherUid uint32 hostPlayer, hostPlayer, proto.EnterType_ENTER_GOTO, - uint32(constant.EnterReasonConst.HostFromSingleToMp), + uint32(constant.EnterReasonHostFromSingleToMp), hostPlayer.SceneId, hostPlayer.Pos, 0, @@ -368,7 +368,7 @@ func (g *GameManager) UserLeaveWorld(player *model.Player) bool { return false } } - g.ReconnectPlayer(player.PlayerID) + g.ReLoginPlayer(player.PlayerID) return true } @@ -458,8 +458,8 @@ func (g *GameManager) UpdateWorldPlayerInfo(hostWorld *World, excludePlayer *mod onlinePlayerInfo := &proto.OnlinePlayerInfo{ Uid: subWorldPlayer.PlayerID, Nickname: subWorldPlayer.NickName, - PlayerLevel: subWorldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL], - MpSettingType: proto.MpSettingType(subWorldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]), + PlayerLevel: subWorldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL], + MpSettingType: proto.MpSettingType(subWorldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]), NameCardId: subWorldPlayer.NameCard, Signature: subWorldPlayer.Signature, ProfilePicture: &proto.ProfilePicture{AvatarId: subWorldPlayer.HeadImage}, @@ -483,8 +483,8 @@ func (g *GameManager) UpdateWorldPlayerInfo(hostWorld *World, excludePlayer *mod onlinePlayerInfo := &proto.OnlinePlayerInfo{ Uid: worldPlayer.PlayerID, Nickname: worldPlayer.NickName, - PlayerLevel: worldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL], - MpSettingType: proto.MpSettingType(worldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]), + PlayerLevel: worldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL], + MpSettingType: proto.MpSettingType(worldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]), NameCardId: worldPlayer.NameCard, Signature: worldPlayer.Signature, ProfilePicture: &proto.ProfilePicture{AvatarId: worldPlayer.HeadImage}, @@ -565,7 +565,7 @@ func (g *GameManager) ServerUserMpReq(userMpInfo *mq.UserMpInfo, gsAppId string) applyFailNotify(proto.PlayerApplyEnterMpResultNotify_PLAYER_NOT_IN_PLAYER_WORLD) return } - mpSetting := hostPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE] + mpSetting := hostPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE] if mpSetting == 0 { // 房主玩家没开权限 applyFailNotify(proto.PlayerApplyEnterMpResultNotify_SCENE_CANNOT_ENTER) diff --git a/gs/game/player_scene.go b/gs/game/player_scene.go index 692ab354..adfa85c4 100644 --- a/gs/game/player_scene.go +++ b/gs/game/player_scene.go @@ -58,8 +58,8 @@ func (g *GameManager) SceneInitFinishReq(player *model.Player, payloadMsg pb.Mes onlinePlayerInfo := &proto.OnlinePlayerInfo{ Uid: worldPlayer.PlayerID, Nickname: worldPlayer.NickName, - PlayerLevel: worldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL], - MpSettingType: proto.MpSettingType(worldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]), + PlayerLevel: worldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL], + MpSettingType: proto.MpSettingType(worldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]), NameCardId: worldPlayer.NameCard, Signature: worldPlayer.Signature, ProfilePicture: &proto.ProfilePicture{AvatarId: worldPlayer.HeadImage}, @@ -99,7 +99,7 @@ func (g *GameManager) SceneInitFinishReq(player *model.Player, payloadMsg pb.Mes }, } for _, info := range playerWorldSceneInfoListNotify.InfoList { - for _, sceneTagDataConfig := range gdconf.CONF.SceneTagDataMap { + for _, sceneTagDataConfig := range gdconf.GetSceneTagDataMap() { if uint32(sceneTagDataConfig.SceneId) == info.SceneId { info.SceneTagIdList = append(info.SceneTagIdList, uint32(sceneTagDataConfig.SceneTagId)) } @@ -167,7 +167,7 @@ func (g *GameManager) SceneInitFinishReq(player *model.Player, payloadMsg pb.Mes sceneAreaWeatherNotify := &proto.SceneAreaWeatherNotify{ WeatherAreaId: 0, - ClimateType: uint32(constant.ClimateTypeConst.CLIMATE_SUNNY), + ClimateType: uint32(constant.CLIMATE_TYPE_SUNNY), } g.SendMsg(cmd.SceneAreaWeatherNotify, player.PlayerID, player.ClientSeq, sceneAreaWeatherNotify) } @@ -179,8 +179,8 @@ func (g *GameManager) SceneInitFinishReq(player *model.Player, payloadMsg pb.Mes onlinePlayerInfo := &proto.OnlinePlayerInfo{ Uid: worldPlayer.PlayerID, Nickname: worldPlayer.NickName, - PlayerLevel: worldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL], - MpSettingType: proto.MpSettingType(worldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]), + PlayerLevel: worldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL], + MpSettingType: proto.MpSettingType(worldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]), NameCardId: worldPlayer.NameCard, Signature: worldPlayer.Signature, ProfilePicture: &proto.ProfilePicture{AvatarId: worldPlayer.HeadImage}, @@ -284,7 +284,7 @@ func (g *GameManager) EnterSceneDoneReq(player *model.Player, payloadMsg pb.Mess sceneAreaWeatherNotify := &proto.SceneAreaWeatherNotify{ WeatherAreaId: 0, - ClimateType: uint32(constant.ClimateTypeConst.CLIMATE_SUNNY), + ClimateType: uint32(constant.CLIMATE_TYPE_SUNNY), } g.SendMsg(cmd.SceneAreaWeatherNotify, player.PlayerID, player.ClientSeq, sceneAreaWeatherNotify) @@ -380,8 +380,8 @@ func (g *GameManager) CreateConfigEntity(scene *Scene, objectId int64, entityCon gadget := entityConfig.(*gdconf.Gadget) // 70500000并不是实际的装置id 根据节点类型对应采集物配置表 if gadget.PointType != 0 && gadget.GadgetId == 70500000 { - gatherDataConfig, exist := gdconf.CONF.GatherDataPointTypeMap[gadget.PointType] - if !exist { + gatherDataConfig := gdconf.GetGatherDataByPointType(gadget.PointType) + if gatherDataConfig == nil { return 0 } return scene.CreateEntityGadgetGather(&model.Vector{ @@ -420,8 +420,8 @@ func (g *GameManager) PacketPlayerEnterSceneNotifyLogin(player *model.Player, en Type: enterType, TargetUid: player.PlayerID, EnterSceneToken: player.EnterSceneToken, - WorldLevel: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL], - EnterReason: uint32(constant.EnterReasonConst.Login), + WorldLevel: player.PropertiesMap[constant.PLAYER_PROP_PLAYER_WORLD_LEVEL], + EnterReason: uint32(constant.EnterReasonLogin), IsFirstLoginEnterScene: true, WorldType: 1, SceneTagIdList: make([]uint32, 0), @@ -430,7 +430,7 @@ func (g *GameManager) PacketPlayerEnterSceneNotifyLogin(player *model.Player, en strconv.Itoa(int(player.PlayerID)) + "-" + strconv.Itoa(int(time.Now().Unix())) + "-" + "296359" - for _, sceneTagDataConfig := range gdconf.CONF.SceneTagDataMap { + for _, sceneTagDataConfig := range gdconf.GetSceneTagDataMap() { if uint32(sceneTagDataConfig.SceneId) == player.SceneId { playerEnterSceneNotify.SceneTagIdList = append(playerEnterSceneNotify.SceneTagIdList, uint32(sceneTagDataConfig.SceneTagId)) } @@ -470,7 +470,7 @@ func (g *GameManager) PacketPlayerEnterSceneNotifyMp( Type: enterType, TargetUid: targetPlayer.PlayerID, EnterSceneToken: player.EnterSceneToken, - WorldLevel: targetPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL], + WorldLevel: targetPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_WORLD_LEVEL], EnterReason: enterReason, WorldType: 1, DungeonId: dungeonId, @@ -480,7 +480,7 @@ func (g *GameManager) PacketPlayerEnterSceneNotifyMp( strconv.Itoa(int(targetPlayer.PlayerID)) + "-" + strconv.Itoa(int(time.Now().Unix())) + "-" + "296359" - for _, sceneTagDataConfig := range gdconf.CONF.SceneTagDataMap { + for _, sceneTagDataConfig := range gdconf.GetSceneTagDataMap() { if uint32(sceneTagDataConfig.SceneId) == player.SceneId { playerEnterSceneNotify.SceneTagIdList = append(playerEnterSceneNotify.SceneTagIdList, uint32(sceneTagDataConfig.SceneTagId)) } @@ -591,56 +591,28 @@ func (g *GameManager) AddSceneEntityNotify(player *model.Player, visionType prot func (g *GameManager) EntityFightPropUpdateNotifyBroadcast(scene *Scene, entity *Entity, fightPropId uint32) { for _, player := range scene.GetAllPlayer() { - // PacketEntityFightPropUpdateNotify - g.SendMsg(cmd.EntityFightPropUpdateNotify, player.PlayerID, player.ClientSeq, &proto.EntityFightPropUpdateNotify{ - FightPropMap: entity.GetFightProp(), + fightProp := entity.GetFightProp() + ntf := &proto.EntityFightPropUpdateNotify{ + FightPropMap: make(map[uint32]float32), EntityId: entity.GetId(), - }) + } + ntf.FightPropMap[fightPropId] = fightProp[fightPropId] + g.SendMsg(cmd.EntityFightPropUpdateNotify, player.PlayerID, player.ClientSeq, ntf) } } func (g *GameManager) PacketFightPropMapToPbFightPropList(fightPropMap map[uint32]float32) []*proto.FightPropPair { fightPropList := []*proto.FightPropPair{ - { - PropType: uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_HP), - PropValue: fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_HP)], - }, - { - PropType: uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_ATTACK), - PropValue: fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_ATTACK)], - }, - { - PropType: uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_DEFENSE), - PropValue: fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_DEFENSE)], - }, - { - PropType: uint32(constant.FightPropertyConst.FIGHT_PROP_CRITICAL), - PropValue: fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CRITICAL)], - }, - { - PropType: uint32(constant.FightPropertyConst.FIGHT_PROP_CRITICAL_HURT), - PropValue: fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CRITICAL_HURT)], - }, - { - PropType: uint32(constant.FightPropertyConst.FIGHT_PROP_CHARGE_EFFICIENCY), - PropValue: fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CHARGE_EFFICIENCY)], - }, - { - PropType: uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP), - PropValue: fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)], - }, - { - PropType: uint32(constant.FightPropertyConst.FIGHT_PROP_MAX_HP), - PropValue: fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_MAX_HP)], - }, - { - PropType: uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_ATTACK), - PropValue: fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_ATTACK)], - }, - { - PropType: uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_DEFENSE), - PropValue: fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_DEFENSE)], - }, + {PropType: uint32(constant.FIGHT_PROP_BASE_HP), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_BASE_HP)]}, + {PropType: uint32(constant.FIGHT_PROP_BASE_ATTACK), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_BASE_ATTACK)]}, + {PropType: uint32(constant.FIGHT_PROP_BASE_DEFENSE), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_BASE_DEFENSE)]}, + {PropType: uint32(constant.FIGHT_PROP_CRITICAL), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_CRITICAL)]}, + {PropType: uint32(constant.FIGHT_PROP_CRITICAL_HURT), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_CRITICAL_HURT)]}, + {PropType: uint32(constant.FIGHT_PROP_CHARGE_EFFICIENCY), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_CHARGE_EFFICIENCY)]}, + {PropType: uint32(constant.FIGHT_PROP_CUR_HP), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_CUR_HP)]}, + {PropType: uint32(constant.FIGHT_PROP_MAX_HP), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_MAX_HP)]}, + {PropType: uint32(constant.FIGHT_PROP_CUR_ATTACK), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_CUR_ATTACK)]}, + {PropType: uint32(constant.FIGHT_PROP_CUR_DEFENSE), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_CUR_DEFENSE)]}, } return fightPropList } @@ -676,37 +648,37 @@ func (g *GameManager) PacketSceneEntityInfoAvatar(scene *Scene, player *model.Pl }, PropList: []*proto.PropPair{ { - Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL), + Type: uint32(constant.PLAYER_PROP_LEVEL), PropValue: &proto.PropValue{ - Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL), + Type: uint32(constant.PLAYER_PROP_LEVEL), Value: &proto.PropValue_Ival{Ival: int64(avatar.Level)}, Val: int64(avatar.Level)}, }, { - Type: uint32(constant.PlayerPropertyConst.PROP_EXP), + Type: uint32(constant.PLAYER_PROP_EXP), PropValue: &proto.PropValue{ - Type: uint32(constant.PlayerPropertyConst.PROP_EXP), + Type: uint32(constant.PLAYER_PROP_EXP), Value: &proto.PropValue_Ival{Ival: int64(avatar.Exp)}, Val: int64(avatar.Exp)}, }, { - Type: uint32(constant.PlayerPropertyConst.PROP_BREAK_LEVEL), + Type: uint32(constant.PLAYER_PROP_BREAK_LEVEL), PropValue: &proto.PropValue{ - Type: uint32(constant.PlayerPropertyConst.PROP_BREAK_LEVEL), + Type: uint32(constant.PLAYER_PROP_BREAK_LEVEL), Value: &proto.PropValue_Ival{Ival: int64(avatar.Promote)}, Val: int64(avatar.Promote)}, }, { - Type: uint32(constant.PlayerPropertyConst.PROP_SATIATION_VAL), + Type: uint32(constant.PLAYER_PROP_SATIATION_VAL), PropValue: &proto.PropValue{ - Type: uint32(constant.PlayerPropertyConst.PROP_SATIATION_VAL), + Type: uint32(constant.PLAYER_PROP_SATIATION_VAL), Value: &proto.PropValue_Ival{Ival: int64(avatar.Satiation)}, Val: int64(avatar.Satiation)}, }, { - Type: uint32(constant.PlayerPropertyConst.PROP_SATIATION_PENALTY_TIME), + Type: uint32(constant.PLAYER_PROP_SATIATION_PENALTY_TIME), PropValue: &proto.PropValue{ - Type: uint32(constant.PlayerPropertyConst.PROP_SATIATION_PENALTY_TIME), + Type: uint32(constant.PLAYER_PROP_SATIATION_PENALTY_TIME), Value: &proto.PropValue_Ival{Ival: int64(avatar.SatiationPenalty)}, Val: int64(avatar.SatiationPenalty)}, }, @@ -763,8 +735,8 @@ func (g *GameManager) PacketSceneEntityInfoMonster(scene *Scene, entityId uint32 Speed: &proto.Vector{}, State: proto.MotionState(entity.GetMoveState()), }, - PropList: []*proto.PropPair{{Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL), PropValue: &proto.PropValue{ - Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL), + PropList: []*proto.PropPair{{Type: uint32(constant.PLAYER_PROP_LEVEL), PropValue: &proto.PropValue{ + Type: uint32(constant.PLAYER_PROP_LEVEL), Value: &proto.PropValue_Ival{Ival: int64(entity.GetLevel())}, Val: int64(entity.GetLevel()), }}}, @@ -811,8 +783,8 @@ func (g *GameManager) PacketSceneEntityInfoNpc(scene *Scene, entityId uint32) *p Speed: &proto.Vector{}, State: proto.MotionState(entity.GetMoveState()), }, - PropList: []*proto.PropPair{{Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL), PropValue: &proto.PropValue{ - Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL), + PropList: []*proto.PropPair{{Type: uint32(constant.PLAYER_PROP_LEVEL), PropValue: &proto.PropValue{ + Type: uint32(constant.PLAYER_PROP_LEVEL), Value: &proto.PropValue_Ival{Ival: int64(entity.GetLevel())}, Val: int64(entity.GetLevel()), }}}, @@ -859,8 +831,8 @@ func (g *GameManager) PacketSceneEntityInfoGadget(scene *Scene, entityId uint32) Speed: &proto.Vector{}, State: proto.MotionState(entity.GetMoveState()), }, - PropList: []*proto.PropPair{{Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL), PropValue: &proto.PropValue{ - Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL), + PropList: []*proto.PropPair{{Type: uint32(constant.PLAYER_PROP_LEVEL), PropValue: &proto.PropValue{ + Type: uint32(constant.PLAYER_PROP_LEVEL), Value: &proto.PropValue_Ival{Ival: int64(1)}, Val: int64(1), }}}, @@ -917,7 +889,7 @@ func (g *GameManager) PacketSceneAvatarInfo(scene *Scene, player *model.Player, SkillDepotId: player.AvatarMap[avatarId].SkillDepotId, Weapon: &proto.SceneWeaponInfo{ EntityId: scene.GetWorld().GetPlayerWorldAvatarWeaponEntityId(player, avatarId), - GadgetId: uint32(gdconf.CONF.ItemDataMap[int32(weapon.ItemId)].GadgetId), + GadgetId: uint32(gdconf.GetItemDataById(int32(weapon.ItemId)).GadgetId), ItemId: weapon.ItemId, Guid: weapon.Guid, Level: uint32(weapon.Level), @@ -974,8 +946,8 @@ func (g *GameManager) PacketSceneGadgetInfoNormal(entity *Entity) *proto.SceneGa func (g *GameManager) PacketSceneGadgetInfoGather(entity *Entity) *proto.SceneGadgetInfo { gadgetEntity := entity.GetGadgetEntity() gatherEntity := gadgetEntity.GetGadgetGatherEntity() - gather, ok := gdconf.CONF.GatherDataMap[int32(gatherEntity.GetGatherId())] - if !ok { + gatherDataConfig := gdconf.GetGatherDataById(int32(gatherEntity.GetGatherId())) + if gatherDataConfig == nil { logger.Error("gather data error, gatherId: %v", gatherEntity.GetGatherId()) return new(proto.SceneGadgetInfo) } @@ -988,7 +960,7 @@ func (g *GameManager) PacketSceneGadgetInfoGather(entity *Entity) *proto.SceneGa AuthorityPeerId: 1, Content: &proto.SceneGadgetInfo_GatherGadget{ GatherGadget: &proto.GatherGadgetInfo{ - ItemId: uint32(gather.ItemId), + ItemId: uint32(gatherDataConfig.ItemId), IsForbidGuest: false, }, }, @@ -1041,21 +1013,21 @@ func (g *GameManager) PacketDelTeamEntityNotify(scene *Scene, player *model.Play func (g *GameManager) GetTempFightPropMap() map[uint32]float32 { fpm := map[uint32]float32{ - uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP): float32(72.91699), - uint32(constant.FightPropertyConst.FIGHT_PROP_PHYSICAL_SUB_HURT): float32(0.1), - uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_DEFENSE): float32(505.0), - uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_ATTACK): float32(45.679916), - uint32(constant.FightPropertyConst.FIGHT_PROP_ICE_SUB_HURT): float32(0.1), - uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_ATTACK): float32(45.679916), - uint32(constant.FightPropertyConst.FIGHT_PROP_MAX_HP): float32(72.91699), - uint32(constant.FightPropertyConst.FIGHT_PROP_FIRE_SUB_HURT): float32(0.1), - uint32(constant.FightPropertyConst.FIGHT_PROP_ELEC_SUB_HURT): float32(0.1), - uint32(constant.FightPropertyConst.FIGHT_PROP_WIND_SUB_HURT): float32(0.1), - uint32(constant.FightPropertyConst.FIGHT_PROP_ROCK_SUB_HURT): float32(0.1), - uint32(constant.FightPropertyConst.FIGHT_PROP_GRASS_SUB_HURT): float32(0.1), - uint32(constant.FightPropertyConst.FIGHT_PROP_WATER_SUB_HURT): float32(0.1), - uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_HP): float32(72.91699), - uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_DEFENSE): float32(505.0), + uint32(constant.FIGHT_PROP_CUR_HP): float32(72.91699), + uint32(constant.FIGHT_PROP_PHYSICAL_SUB_HURT): float32(0.1), + uint32(constant.FIGHT_PROP_CUR_DEFENSE): float32(505.0), + uint32(constant.FIGHT_PROP_CUR_ATTACK): float32(45.679916), + uint32(constant.FIGHT_PROP_ICE_SUB_HURT): float32(0.1), + uint32(constant.FIGHT_PROP_BASE_ATTACK): float32(45.679916), + uint32(constant.FIGHT_PROP_MAX_HP): float32(72.91699), + uint32(constant.FIGHT_PROP_FIRE_SUB_HURT): float32(0.1), + uint32(constant.FIGHT_PROP_ELEC_SUB_HURT): float32(0.1), + uint32(constant.FIGHT_PROP_WIND_SUB_HURT): float32(0.1), + uint32(constant.FIGHT_PROP_ROCK_SUB_HURT): float32(0.1), + uint32(constant.FIGHT_PROP_GRASS_SUB_HURT): float32(0.1), + uint32(constant.FIGHT_PROP_WATER_SUB_HURT): float32(0.1), + uint32(constant.FIGHT_PROP_BASE_HP): float32(72.91699), + uint32(constant.FIGHT_PROP_BASE_DEFENSE): float32(505.0), } return fpm } diff --git a/gs/game/player_shop.go b/gs/game/player_shop.go index 0f952c6e..0a3b30a5 100644 --- a/gs/game/player_shop.go +++ b/gs/game/player_shop.go @@ -91,7 +91,7 @@ func (g *GameManager) BuyGoodsReq(player *model.Player, payloadMsg pb.Message) { g.AddUserItem(player.PlayerID, []*UserItem{{ ItemId: buyItemId, ChangeCount: buyItemCount, - }}, true, constant.ActionReasonConst.Shop) + }}, true, constant.ActionReasonShop) req.Goods.BoughtNum = player.GetItemCount(buyItemId) buyGoodsRsp := &proto.BuyGoodsRsp{ diff --git a/gs/game/player_social.go b/gs/game/player_social.go index a8c2cd2c..30e57cc8 100644 --- a/gs/game/player_social.go +++ b/gs/game/player_social.go @@ -32,9 +32,9 @@ func (g *GameManager) GetPlayerSocialDetailReq(player *model.Player, payloadMsg ProfilePicture: &proto.ProfilePicture{AvatarId: targetPlayer.HeadImage}, Nickname: targetPlayer.NickName, Signature: targetPlayer.Signature, - Level: targetPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL], + Level: targetPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL], Birthday: &proto.Birthday{Month: uint32(targetPlayer.Birthday[0]), Day: uint32(targetPlayer.Birthday[1])}, - WorldLevel: targetPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL], + WorldLevel: targetPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_WORLD_LEVEL], NameCardId: targetPlayer.NameCard, IsShowAvatar: false, FinishAchievementNum: 0, @@ -174,9 +174,9 @@ func (g *GameManager) GetPlayerFriendListReq(player *model.Player, payloadMsg pb friendBrief := &proto.FriendBrief{ Uid: friendPlayer.PlayerID, Nickname: friendPlayer.NickName, - Level: friendPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL], + Level: friendPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL], ProfilePicture: &proto.ProfilePicture{AvatarId: friendPlayer.HeadImage}, - WorldLevel: friendPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL], + WorldLevel: friendPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_WORLD_LEVEL], Signature: friendPlayer.Signature, OnlineState: onlineState, IsMpModeAvailable: true, @@ -212,9 +212,9 @@ func (g *GameManager) GetPlayerAskFriendListReq(player *model.Player, payloadMsg friendBrief := &proto.FriendBrief{ Uid: friendPlayer.PlayerID, Nickname: friendPlayer.NickName, - Level: friendPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL], + Level: friendPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL], ProfilePicture: &proto.ProfilePicture{AvatarId: friendPlayer.HeadImage}, - WorldLevel: friendPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL], + WorldLevel: friendPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_WORLD_LEVEL], Signature: friendPlayer.Signature, OnlineState: onlineState, IsMpModeAvailable: true, @@ -258,11 +258,11 @@ func (g *GameManager) AskAddFriendReq(player *model.Player, payloadMsg pb.Messag ApplyPlayerOnlineInfo: &mq.UserBaseInfo{ UserId: player.PlayerID, Nickname: player.NickName, - PlayerLevel: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL], + PlayerLevel: player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL], NameCardId: player.NameCard, Signature: player.Signature, HeadImageId: player.HeadImage, - WorldLevel: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL], + WorldLevel: player.PropertiesMap[constant.PLAYER_PROP_PLAYER_WORLD_LEVEL], }, }, }, @@ -301,9 +301,9 @@ func (g *GameManager) AskAddFriendReq(player *model.Player, payloadMsg pb.Messag askAddFriendNotify.TargetFriendBrief = &proto.FriendBrief{ Uid: player.PlayerID, Nickname: player.NickName, - Level: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL], + Level: player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL], ProfilePicture: &proto.ProfilePicture{AvatarId: player.HeadImage}, - WorldLevel: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL], + WorldLevel: player.PropertiesMap[constant.PLAYER_PROP_PLAYER_WORLD_LEVEL], Signature: player.Signature, OnlineState: proto.FriendOnlineState_FRIEND_ONLINE, IsMpModeAvailable: true, @@ -460,8 +460,8 @@ func (g *GameManager) PacketOnlinePlayerInfo(player *model.Player) *proto.Online onlinePlayerInfo := &proto.OnlinePlayerInfo{ Uid: player.PlayerID, Nickname: player.NickName, - PlayerLevel: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL], - MpSettingType: proto.MpSettingType(player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]), + PlayerLevel: player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL], + MpSettingType: proto.MpSettingType(player.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]), NameCardId: player.NameCard, Signature: player.Signature, ProfilePicture: &proto.ProfilePicture{AvatarId: player.HeadImage}, diff --git a/gs/game/player_stamina.go b/gs/game/player_stamina.go index d37a8d9b..ffbd0b98 100644 --- a/gs/game/player_stamina.go +++ b/gs/game/player_stamina.go @@ -63,7 +63,7 @@ func (g *GameManager) HandleAbilityStamina(player *model.Player, entry *proto.Ab } // 根据ability name查找到对应的技能表里的技能配置 var avatarAbility *gdconf.AvatarSkillData = nil - for _, avatarSkillData := range gdconf.CONF.AvatarSkillDataMap { + for _, avatarSkillData := range gdconf.GetAvatarSkillDataMap() { hashCode := endec.Hk4eAbilityHashCode(avatarSkillData.AbilityName) if uint32(hashCode) == abilityNameHashCode { avatarAbility = avatarSkillData @@ -121,11 +121,11 @@ func (g *GameManager) SceneAvatarStaminaStepReq(player *model.Player, payloadMsg // 倒三角 非常消耗体力 costRevise = -(angleRevise * 2) + 10 } - logger.Debug("stamina climbing, rotX: %v, costRevise: %v, cost: %v", req.Rot.X, costRevise, constant.StaminaCostConst.CLIMBING_BASE-costRevise) - g.UpdatePlayerStamina(player, constant.StaminaCostConst.CLIMBING_BASE-costRevise) + logger.Debug("stamina climbing, rotX: %v, costRevise: %v, cost: %v", req.Rot.X, costRevise, constant.STAMINA_COST_CLIMBING_BASE-costRevise) + g.UpdatePlayerStamina(player, constant.STAMINA_COST_CLIMBING_BASE-costRevise) case proto.MotionState_MOTION_SWIM_MOVE: // 缓慢游泳 - g.UpdatePlayerStamina(player, constant.StaminaCostConst.SWIMMING) + g.UpdatePlayerStamina(player, constant.STAMINA_COST_SWIMMING) } // PacketSceneAvatarStaminaStepRsp @@ -159,16 +159,16 @@ func (g *GameManager) ImmediateStamina(player *model.Player, motionState proto.M switch motionState { case proto.MotionState_MOTION_CLIMB: // 攀爬开始 - g.UpdatePlayerStamina(player, constant.StaminaCostConst.CLIMB_START) + g.UpdatePlayerStamina(player, constant.STAMINA_COST_CLIMB_START) case proto.MotionState_MOTION_DASH_BEFORE_SHAKE: // 冲刺 - g.UpdatePlayerStamina(player, constant.StaminaCostConst.SPRINT) + g.UpdatePlayerStamina(player, constant.STAMINA_COST_SPRINT) case proto.MotionState_MOTION_CLIMB_JUMP: // 攀爬跳跃 - g.UpdatePlayerStamina(player, constant.StaminaCostConst.CLIMB_JUMP) + g.UpdatePlayerStamina(player, constant.STAMINA_COST_CLIMB_JUMP) case proto.MotionState_MOTION_SWIM_DASH: // 快速游泳开始 - g.UpdatePlayerStamina(player, constant.StaminaCostConst.SWIM_DASH_START) + g.UpdatePlayerStamina(player, constant.STAMINA_COST_SWIM_DASH_START) } } @@ -178,8 +178,8 @@ func (g *GameManager) SkillSustainStamina(player *model.Player, isSwim bool) { skillId := staminaInfo.LastSkillId // 读取技能配置表 - avatarSkillConfig, ok := gdconf.CONF.AvatarSkillDataMap[int32(skillId)] - if !ok { + avatarSkillConfig := gdconf.GetAvatarSkillDataById(int32(skillId)) + if avatarSkillConfig == nil { logger.Error("avatarSkillConfig error, skillId: %v", skillId) return } @@ -191,8 +191,8 @@ func (g *GameManager) SkillSustainStamina(player *model.Player, isSwim bool) { return } // 获取现行角色的配置表 - avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(worldAvatar.GetAvatarId())] - if !ok { + avatarDataConfig := gdconf.GetAvatarDataById(int32(worldAvatar.GetAvatarId())) + if avatarDataConfig == nil { logger.Error("avatarDataConfig error, avatarId: %v", worldAvatar.GetAvatarId()) return } @@ -203,8 +203,8 @@ func (g *GameManager) SkillSustainStamina(player *model.Player, isSwim bool) { // 如果为0代表使用默认值 if avatarSkillConfig.CostStamina == 0 { // 大剑持续耐力消耗默认值 - if avatarDataConfig.WeaponType == constant.WeaponTypeConst.WEAPON_CLAYMORE { - costStamina = constant.StaminaCostConst.FIGHT_CLAYMORE_PER + if avatarDataConfig.WeaponType == constant.WEAPON_TYPE_CLAYMORE { + costStamina = constant.STAMINA_COST_FIGHT_CLAYMORE_PER } } else { costStamina = -(avatarSkillConfig.CostStamina * 100) @@ -230,8 +230,8 @@ func (g *GameManager) ChargedAttackStamina(player *model.Player, worldAvatar *Wo return } // 获取现行角色的配置表 - avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(worldAvatar.GetAvatarId())] - if !ok { + avatarDataConfig := gdconf.GetAvatarDataById(int32(worldAvatar.GetAvatarId())) + if avatarDataConfig == nil { logger.Error("avatarDataConfig error, avatarId: %v", worldAvatar.GetAvatarId()) return } @@ -244,15 +244,15 @@ func (g *GameManager) ChargedAttackStamina(player *model.Player, worldAvatar *Wo // 使用武器对应默认耐力消耗 // 双手剑为持续耐力消耗不在这里处理 switch avatarDataConfig.WeaponType { - case constant.WeaponTypeConst.WEAPON_SWORD_ONE_HAND: + case constant.WEAPON_TYPE_SWORD_ONE_HAND: // 单手剑 - costStamina = constant.StaminaCostConst.FIGHT_SWORD_ONE_HAND - case constant.WeaponTypeConst.WEAPON_POLE: + costStamina = constant.STAMINA_COST_FIGHT_SWORD_ONE_HAND + case constant.WEAPON_TYPE_POLE: // 长枪 - costStamina = constant.StaminaCostConst.FIGHT_POLE - case constant.WeaponTypeConst.WEAPON_CATALYST: + costStamina = constant.STAMINA_COST_FIGHT_POLE + case constant.WEAPON_TYPE_CATALYST: // 法器 - costStamina = constant.StaminaCostConst.FIGHT_CATALYST + costStamina = constant.STAMINA_COST_FIGHT_CATALYST } } else { costStamina = -(skillData.CostStamina * 100) @@ -268,17 +268,17 @@ func (g *GameManager) SkillStartStamina(player *model.Player, casterId uint32, s staminaInfo := player.StaminaInfo // 获取该技能开始时所需消耗的耐力 - costStamina, ok := constant.StaminaCostConst.SKILL_START[skillId] + avatarSkillDataConfig := gdconf.GetAvatarSkillDataById(int32(skillId)) // 配置表确保存在技能开始对应的耐力消耗 - if ok { + if avatarSkillDataConfig != nil { // 距离上次处理技能开始耐力消耗过去的时间 pastTime := time.Now().UnixMilli() - staminaInfo.LastSkillStartTime // 上次触发的技能相同则每400ms触发一次消耗 if staminaInfo.LastSkillId != skillId || pastTime > 400 { - logger.Debug("skill start stamina, skillId: %v, cost: %v", skillId, costStamina) + logger.Debug("skill start stamina, skillId: %v, cost: %v", skillId, avatarSkillDataConfig.CostStamina) // 根据配置消耗耐力 - g.UpdatePlayerStamina(player, costStamina) + g.UpdatePlayerStamina(player, avatarSkillDataConfig.CostStamina) staminaInfo.LastSkillStartTime = time.Now().UnixMilli() } } else { @@ -314,10 +314,10 @@ func (g *GameManager) VehicleRestoreStaminaHandler(player *model.Player) { // 判断玩家处于载具中 if g.IsPlayerInVehicle(player, gadgetEntity.GetGadgetVehicleEntity()) { // 角色回复耐力 - g.UpdatePlayerStamina(player, constant.StaminaCostConst.IN_SKIFF) + g.UpdatePlayerStamina(player, constant.STAMINA_COST_IN_SKIFF) } else { // 载具回复耐力 - g.UpdateVehicleStamina(player, entity, constant.StaminaCostConst.SKIFF_NOBODY) + g.UpdateVehicleStamina(player, entity, constant.STAMINA_COST_SKIFF_NOBODY) } } @@ -422,9 +422,9 @@ func (g *GameManager) UpdatePlayerStamina(player *model.Player, staminaCost int3 } // 最大耐力值 - maxStamina := int32(player.PropertiesMap[constant.PlayerPropertyConst.PROP_MAX_STAMINA]) + maxStamina := int32(player.PropertiesMap[constant.PLAYER_PROP_MAX_STAMINA]) // 现行耐力值 - curStamina := int32(player.PropertiesMap[constant.PlayerPropertyConst.PROP_CUR_PERSIST_STAMINA]) + curStamina := int32(player.PropertiesMap[constant.PLAYER_PROP_CUR_PERSIST_STAMINA]) // 将被变更的耐力 stamina := g.GetChangeStamina(curStamina, maxStamina, staminaCost) @@ -471,12 +471,12 @@ func (g *GameManager) DrownBackHandler(player *model.Player) { // 先传送玩家再设置角色存活否则同时设置会传送前显示角色实体 if player.StaminaInfo.DrownBackDelay > 20 && player.SceneLoadState == model.SceneEnterDone { // 设置角色存活 - scene.SetEntityLifeState(avatarEntity, constant.LifeStateConst.LIFE_REVIVE, proto.PlayerDieType_PLAYER_DIE_NONE) + scene.SetEntityLifeState(avatarEntity, constant.LIFE_STATE_REVIVE, proto.PlayerDieType_PLAYER_DIE_NONE) // 重置溺水返回时间 player.StaminaInfo.DrownBackDelay = 0 } else if player.StaminaInfo.DrownBackDelay == 20 { // TODO 队伍扣血 - maxStamina := player.PropertiesMap[constant.PlayerPropertyConst.PROP_MAX_STAMINA] + maxStamina := player.PropertiesMap[constant.PLAYER_PROP_MAX_STAMINA] // 设置玩家耐力为一半 g.SetPlayerStamina(player, maxStamina/2) // 如果玩家的位置比锚点距离近则优先使用玩家位置 @@ -502,7 +502,7 @@ func (g *GameManager) DrownBackHandler(player *model.Player) { // } // } // 传送玩家至安全位置 - g.TeleportPlayer(player, constant.EnterReasonConst.Revival, player.SceneId, pos, new(model.Vector), 0) + g.TeleportPlayer(player, constant.EnterReasonRevival, player.SceneId, pos, new(model.Vector), 0) } // 防止重置后又被修改 if player.StaminaInfo.DrownBackDelay != 0 { @@ -530,7 +530,7 @@ func (g *GameManager) HandleDrown(player *model.Player, stamina uint32) { if player.StaminaInfo.State == proto.MotionState_MOTION_SWIM_MOVE || player.StaminaInfo.State == proto.MotionState_MOTION_SWIM_DASH { logger.Debug("player drown, curStamina: %v, state: %v", stamina, player.StaminaInfo.State) // 设置角色为死亡 - scene.SetEntityLifeState(avatarEntity, constant.LifeStateConst.LIFE_DEAD, proto.PlayerDieType_PLAYER_DIE_DRAWN) + scene.SetEntityLifeState(avatarEntity, constant.LIFE_STATE_DEAD, proto.PlayerDieType_PLAYER_DIE_DRAWN) // 溺水返回安全点 计时开始 player.StaminaInfo.DrownBackDelay = 1 } @@ -553,7 +553,7 @@ func (g *GameManager) SetVehicleStamina(player *model.Player, vehicleEntity *Ent // SetPlayerStamina 设置玩家耐力 func (g *GameManager) SetPlayerStamina(player *model.Player, stamina uint32) { // 设置玩家的耐力 - prop := constant.PlayerPropertyConst.PROP_CUR_PERSIST_STAMINA + prop := constant.PLAYER_PROP_CUR_PERSIST_STAMINA player.PropertiesMap[prop] = stamina // logger.Debug("player stamina set, stamina: %v", stamina) diff --git a/gs/game/player_team.go b/gs/game/player_team.go index 47a5f86a..ba6833c4 100644 --- a/gs/game/player_team.go +++ b/gs/game/player_team.go @@ -244,28 +244,28 @@ func (g *GameManager) PacketSceneTeamUpdateNotify(world *World) *proto.SceneTeam sceneTeamAvatar.SceneAvatarInfo = g.PacketSceneAvatarInfo(worldPlayerScene, worldPlayer, worldAvatar.GetAvatarId()) } // add AbilityControlBlock - avatarDataConfig := gdconf.CONF.AvatarDataMap[int32(worldAvatar.GetAvatarId())] acb := sceneTeamAvatar.AbilityControlBlock embryoId := 0 // add avatar abilities + avatarDataConfig := gdconf.GetAvatarDataById(int32(worldAvatar.GetAvatarId())) if avatarDataConfig != nil { for _, abilityId := range avatarDataConfig.AbilityHashCodeList { embryoId++ emb := &proto.AbilityEmbryo{ AbilityId: uint32(embryoId), AbilityNameHash: uint32(abilityId), - AbilityOverrideNameHash: uint32(constant.GameConstantConst.DEFAULT_ABILITY_NAME), + AbilityOverrideNameHash: uint32(constant.DEFAULT_ABILITY_NAME), } acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb) } } // add default abilities - for _, abilityId := range constant.GameConstantConst.DEFAULT_ABILITY_HASHES { + for _, abilityId := range constant.DEFAULT_ABILITY_HASHES { embryoId++ emb := &proto.AbilityEmbryo{ AbilityId: uint32(embryoId), AbilityNameHash: uint32(abilityId), - AbilityOverrideNameHash: uint32(constant.GameConstantConst.DEFAULT_ABILITY_NAME), + AbilityOverrideNameHash: uint32(constant.DEFAULT_ABILITY_NAME), } acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb) } @@ -280,14 +280,14 @@ func (g *GameManager) PacketSceneTeamUpdateNotify(world *World) *proto.SceneTeam // acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb) // } // add skill depot abilities - skillDepot := gdconf.CONF.AvatarSkillDepotDataMap[int32(worldPlayerAvatar.SkillDepotId)] + skillDepot := gdconf.GetAvatarSkillDepotDataById(int32(worldPlayerAvatar.SkillDepotId)) if skillDepot != nil && len(skillDepot.AbilityHashCodeList) != 0 { for _, id := range skillDepot.AbilityHashCodeList { embryoId++ emb := &proto.AbilityEmbryo{ AbilityId: uint32(embryoId), AbilityNameHash: uint32(id), - AbilityOverrideNameHash: uint32(constant.GameConstantConst.DEFAULT_ABILITY_NAME), + AbilityOverrideNameHash: uint32(constant.DEFAULT_ABILITY_NAME), } acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb) } @@ -298,7 +298,7 @@ func (g *GameManager) PacketSceneTeamUpdateNotify(world *World) *proto.SceneTeam emb := &proto.AbilityEmbryo{ AbilityId: uint32(embryoId), AbilityNameHash: uint32(endec.Hk4eAbilityHashCode(skill)), - AbilityOverrideNameHash: uint32(constant.GameConstantConst.DEFAULT_ABILITY_NAME), + AbilityOverrideNameHash: uint32(constant.DEFAULT_ABILITY_NAME), } acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb) } diff --git a/gs/game/player_weapon.go b/gs/game/player_weapon.go index 214b0814..9936f1eb 100644 --- a/gs/game/player_weapon.go +++ b/gs/game/player_weapon.go @@ -16,8 +16,8 @@ import ( func (g *GameManager) GetAllWeaponDataConfig() map[int32]*gdconf.ItemData { allWeaponDataConfig := make(map[int32]*gdconf.ItemData) - for itemId, itemData := range gdconf.CONF.ItemDataMap { - if uint16(itemData.Type) != constant.ItemTypeConst.ITEM_WEAPON { + for itemId, itemData := range gdconf.GetItemDataMap() { + if uint16(itemData.Type) != constant.ITEM_TYPE_WEAPON { continue } if (itemId >= 10000 && itemId <= 10008) || @@ -130,15 +130,15 @@ func (g *GameManager) WeaponAwakenReq(player *model.Player, payloadMsg pb.Messag return } // 获取武器物品配置表 - weaponConfig, ok := gdconf.CONF.ItemDataMap[int32(weapon.ItemId)] - if !ok { + weaponConfig := gdconf.GetItemDataById(int32(weapon.ItemId)) + if weaponConfig == nil { logger.Error("weapon config error, itemId: %v", weapon.ItemId) g.SendError(cmd.WeaponAwakenRsp, player, &proto.WeaponAwakenRsp{}, proto.Retcode_RET_ITEM_NOT_EXIST) return } // 摩拉数量是否足够 - if player.GetItemCount(constant.ItemConstantConst.SCOIN) < weaponConfig.AwakenCoinCostList[weapon.Refinement] { - logger.Error("item count not enough, itemId: %v", constant.ItemConstantConst.SCOIN) + if player.GetItemCount(constant.ITEM_ID_SCOIN) < weaponConfig.AwakenCoinCostList[weapon.Refinement] { + logger.Error("item count not enough, itemId: %v", constant.ITEM_ID_SCOIN) g.SendError(cmd.WeaponAwakenRsp, player, &proto.WeaponAwakenRsp{}, proto.Retcode_RET_SCOIN_NOT_ENOUGH) return } @@ -151,15 +151,15 @@ func (g *GameManager) WeaponAwakenReq(player *model.Player, payloadMsg pb.Messag } // 获取精炼材料物品配置表 // 精炼的材料可能是武器也可能是物品 - itemDataConfig, ok := gdconf.CONF.ItemDataMap[int32(player.GetItemIdByItemAndWeaponGuid(req.ItemGuid))] - if !ok { + itemDataConfig := gdconf.GetItemDataById(int32(player.GetItemIdByItemAndWeaponGuid(req.ItemGuid))) + if itemDataConfig == nil { logger.Error("item data config error, itemGuid: %v", req.ItemGuid) g.SendError(cmd.WeaponAwakenRsp, player, &proto.WeaponAwakenRsp{}, proto.Retcode_RET_ITEM_NOT_EXIST) return } // 根据精炼材料的类型做不同操作 switch itemDataConfig.Type { - case int32(constant.ItemTypeConst.ITEM_WEAPON): + case int32(constant.ITEM_TYPE_WEAPON): // 精炼材料为武器 // 是否拥有将被用于精炼的武器 foodWeapon, ok := player.WeaponMap[player.GetWeaponIdByGuid(req.ItemGuid)] @@ -176,7 +176,7 @@ func (g *GameManager) WeaponAwakenReq(player *model.Player, payloadMsg pb.Messag } // 消耗作为精炼材料的武器 g.CostUserWeapon(player.PlayerID, []uint64{foodWeapon.WeaponId}) - case int32(constant.ItemTypeConst.ITEM_MATERIAL): + case int32(constant.ITEM_TYPE_MATERIAL): // 精炼材料为道具 // 是否拥有将被用于精炼的道具 item, ok := player.ItemMap[player.GetItemIdByGuid(req.ItemGuid)] @@ -206,7 +206,7 @@ func (g *GameManager) WeaponAwakenReq(player *model.Player, payloadMsg pb.Messag // 消耗摩拉 g.CostUserItem(player.PlayerID, []*UserItem{ { - ItemId: constant.ItemConstantConst.SCOIN, + ItemId: constant.ITEM_ID_SCOIN, ChangeCount: weaponConfig.AwakenCoinCostList[weapon.Refinement], }, }) @@ -256,22 +256,15 @@ func (g *GameManager) WeaponPromoteReq(player *model.Player, payloadMsg pb.Messa return } // 获取武器配置表 - weaponConfig, ok := gdconf.CONF.ItemDataMap[int32(weapon.ItemId)] - if !ok { + weaponConfig := gdconf.GetItemDataById(int32(weapon.ItemId)) + if weaponConfig == nil { logger.Error("weapon config error, itemId: %v", weapon.ItemId) g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{}) return } // 获取武器突破配置表 - weaponPromoteDataMap, ok := gdconf.CONF.WeaponPromoteDataMap[weaponConfig.PromoteId] - if !ok { - logger.Error("weapon promote config error, promoteId: %v", weaponConfig.PromoteId) - g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{}) - return - } - // 获取武器突破等级的配置表 - weaponPromoteConfig, ok := weaponPromoteDataMap[int32(weapon.Promote)] - if !ok { + weaponPromoteConfig := gdconf.GetWeaponPromoteDataByIdAndLevel(weaponConfig.PromoteId, int32(weapon.Promote)) + if weaponPromoteConfig == nil { logger.Error("weapon promote config error, promoteLevel: %v", weapon.Promote) g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{}) return @@ -283,8 +276,8 @@ func (g *GameManager) WeaponPromoteReq(player *model.Player, payloadMsg pb.Messa return } // 获取武器突破下一级的配置表 - weaponPromoteConfig, ok = weaponPromoteDataMap[int32(weapon.Promote+1)] - if !ok { + weaponPromoteConfig = gdconf.GetWeaponPromoteDataByIdAndLevel(weaponConfig.PromoteId, int32(weapon.Promote+1)) + if weaponPromoteConfig == nil { logger.Error("weapon promote config error, next promoteLevel: %v", weapon.Promote+1) g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{}, proto.Retcode_RET_WEAPON_PROMOTE_LEVEL_EXCEED_LIMIT) return @@ -300,7 +293,7 @@ func (g *GameManager) WeaponPromoteReq(player *model.Player, payloadMsg pb.Messa } // 消耗列表添加摩拉的消耗 costItemList = append(costItemList, &UserItem{ - ItemId: constant.ItemConstantConst.SCOIN, + ItemId: constant.ITEM_ID_SCOIN, ChangeCount: uint32(weaponPromoteConfig.CostCoin), }) // 突破材料以及摩拉是否足够 @@ -308,7 +301,7 @@ func (g *GameManager) WeaponPromoteReq(player *model.Player, payloadMsg pb.Messa if player.GetItemCount(item.ItemId) < item.ChangeCount { logger.Error("item count not enough, itemId: %v", item.ItemId) // 摩拉的错误提示与材料不同 - if item.ItemId == constant.ItemConstantConst.SCOIN { + if item.ItemId == constant.ITEM_ID_SCOIN { g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{}, proto.Retcode_RET_SCOIN_NOT_ENOUGH) } g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{}, proto.Retcode_RET_ITEM_COUNT_NOT_ENOUGH) @@ -316,8 +309,8 @@ func (g *GameManager) WeaponPromoteReq(player *model.Player, payloadMsg pb.Messa } } // 冒险等级是否符合要求 - if player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL] < uint32(weaponPromoteConfig.MinPlayerLevel) { - logger.Error("player level not enough, level: %v", player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL]) + if player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL] < uint32(weaponPromoteConfig.MinPlayerLevel) { + logger.Error("player level not enough, level: %v", player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL]) g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{}, proto.Retcode_RET_PLAYER_LEVEL_LESS_THAN) return } @@ -356,12 +349,12 @@ func (g *GameManager) GetWeaponUpgradeReturnMaterial(overflowExp uint32) (return Exp uint32 } // 武器强化返还材料的经验列表 - materialExpList := make([]*materialExpData, 0, len(constant.ItemConstantConst.WEAPON_UPGRADE_MATERIAL)) - for _, itemId := range constant.ItemConstantConst.WEAPON_UPGRADE_MATERIAL { + materialExpList := make([]*materialExpData, 0, len(constant.WEAPON_UPGRADE_MATERIAL)) + for _, itemId := range constant.WEAPON_UPGRADE_MATERIAL { // 获取物品配置表 - itemDataConfig, ok := gdconf.CONF.ItemDataMap[int32(itemId)] - if !ok { - logger.Error("item data config error, itemId: %v", constant.ItemConstantConst.SCOIN) + itemDataConfig := gdconf.GetItemDataById(int32(itemId)) + if itemDataConfig == nil { + logger.Error("item data config error, itemId: %v", constant.ITEM_ID_SCOIN) return } // 材料将给予的经验数 @@ -411,8 +404,8 @@ func (g *GameManager) CalcWeaponUpgradeExpAndCoin(player *model.Player, itemPara return } // 获取武器配置表 - weaponConfig, ok := gdconf.CONF.ItemDataMap[int32(foodWeapon.ItemId)] - if !ok { + weaponConfig := gdconf.GetItemDataById(int32(foodWeapon.ItemId)) + if weaponConfig == nil { logger.Error("weapon config error, itemId: %v", foodWeapon.ItemId) return } @@ -421,8 +414,8 @@ func (g *GameManager) CalcWeaponUpgradeExpAndCoin(player *model.Player, itemPara // 计算从1级到武器当前等级所需消耗的经验 for i := int32(1); i < int32(foodWeapon.Level); i++ { // 获取武器等级配置表 - weaponLevelConfig, ok := gdconf.CONF.WeaponLevelDataMap[i] - if !ok { + weaponLevelConfig := gdconf.GetWeaponLevelDataByLevel(i) + if weaponLevelConfig == nil { logger.Error("weapon level config error, level: %v", i) return } @@ -445,9 +438,9 @@ func (g *GameManager) CalcWeaponUpgradeExpAndCoin(player *model.Player, itemPara // 材料经验计算 for _, param := range itemParamList { // 获取物品配置表 - itemDataConfig, ok := gdconf.CONF.ItemDataMap[int32(param.ItemId)] - if !ok { - logger.Error("item data config error, itemId: %v", constant.ItemConstantConst.SCOIN) + itemDataConfig := gdconf.GetItemDataById(int32(param.ItemId)) + if itemDataConfig == nil { + logger.Error("item data config error, itemId: %v", constant.ITEM_ID_SCOIN) return } // 材料将给予的经验数 @@ -471,20 +464,14 @@ func (g *GameManager) CalcWeaponUpgradeExpAndCoin(player *model.Player, itemPara // CalcWeaponUpgrade 计算使用材料给武器强化后的等级经验以及返回的矿石 func (g *GameManager) CalcWeaponUpgrade(weapon *model.Weapon, expCount uint32) (weaponLevel uint8, weaponExp uint32, returnItemList []*proto.ItemParam, success bool) { // 获取武器配置表 - weaponConfig, ok := gdconf.CONF.ItemDataMap[int32(weapon.ItemId)] - if !ok { + weaponConfig := gdconf.GetItemDataById(int32(weapon.ItemId)) + if weaponConfig == nil { logger.Error("weapon config error, itemId: %v", weapon.ItemId) return } // 获取武器突破配置表 - weaponPromoteDataMap, ok := gdconf.CONF.WeaponPromoteDataMap[weaponConfig.PromoteId] - if !ok { - logger.Error("weapon promote config error, promoteId: %v", weaponConfig.PromoteId) - return - } - // 获取武器突破等级对应的配置表 - weaponPromoteConfig, ok := weaponPromoteDataMap[int32(weapon.Promote)] - if !ok { + weaponPromoteConfig := gdconf.GetWeaponPromoteDataByIdAndLevel(weaponConfig.PromoteId, int32(weapon.Promote)) + if weaponPromoteConfig == nil { logger.Error("weapon promote config error, promoteLevel: %v", weapon.Promote) return } @@ -493,8 +480,8 @@ func (g *GameManager) CalcWeaponUpgrade(weapon *model.Weapon, expCount uint32) ( weaponExp = weapon.Exp + expCount for { // 获取武器等级配置表 - weaponLevelConfig, ok := gdconf.CONF.WeaponLevelDataMap[int32(weaponLevel)] - if !ok { + weaponLevelConfig := gdconf.GetWeaponLevelDataByLevel(int32(weaponLevel)) + if weaponLevelConfig == nil { // 获取不到代表已经到达最大等级 break } @@ -537,22 +524,15 @@ func (g *GameManager) WeaponUpgradeReq(player *model.Player, payloadMsg pb.Messa return } // 获取武器配置表 - weaponConfig, ok := gdconf.CONF.ItemDataMap[int32(weapon.ItemId)] - if !ok { + weaponConfig := gdconf.GetItemDataById(int32(weapon.ItemId)) + if weaponConfig == nil { logger.Error("weapon config error, itemId: %v", weapon.ItemId) g.SendError(cmd.WeaponUpgradeRsp, player, &proto.WeaponUpgradeRsp{}) return } // 获取武器突破配置表 - weaponPromoteDataMap, ok := gdconf.CONF.WeaponPromoteDataMap[weaponConfig.PromoteId] - if !ok { - logger.Error("weapon promote config error, promoteId: %v", weaponConfig.PromoteId) - g.SendError(cmd.WeaponUpgradeRsp, player, &proto.WeaponUpgradeRsp{}) - return - } - // 获取武器突破等级对应的配置表 - weaponPromoteConfig, ok := weaponPromoteDataMap[int32(weapon.Promote)] - if !ok { + weaponPromoteConfig := gdconf.GetWeaponPromoteDataByIdAndLevel(weaponConfig.PromoteId, int32(weapon.Promote)) + if weaponPromoteConfig == nil { logger.Error("weapon promote config error, promoteLevel: %v", weapon.Promote) g.SendError(cmd.WeaponUpgradeRsp, player, &proto.WeaponUpgradeRsp{}) return @@ -581,7 +561,7 @@ func (g *GameManager) WeaponUpgradeReq(player *model.Player, payloadMsg pb.Messa } // 消耗列表添加摩拉的消耗 costItemList = append(costItemList, &UserItem{ - ItemId: constant.ItemConstantConst.SCOIN, + ItemId: constant.ITEM_ID_SCOIN, ChangeCount: coinCost, }) // 校验物品是否足够 @@ -589,7 +569,7 @@ func (g *GameManager) WeaponUpgradeReq(player *model.Player, payloadMsg pb.Messa if player.GetItemCount(item.ItemId) < item.ChangeCount { logger.Error("item count not enough, itemId: %v", item.ItemId) // 摩拉的错误提示与材料不同 - if item.ItemId == constant.ItemConstantConst.SCOIN { + if item.ItemId == constant.ITEM_ID_SCOIN { g.SendError(cmd.WeaponUpgradeRsp, player, &proto.WeaponUpgradeRsp{}, proto.Retcode_RET_SCOIN_NOT_ENOUGH) } g.SendError(cmd.WeaponUpgradeRsp, player, &proto.WeaponUpgradeRsp{}, proto.Retcode_RET_ITEM_COUNT_NOT_ENOUGH) diff --git a/gs/game/route_manager.go b/gs/game/route_manager.go index 136f82b4..679bfe83 100644 --- a/gs/game/route_manager.go +++ b/gs/game/route_manager.go @@ -40,7 +40,7 @@ func (r *RouteManager) doRoute(cmdId uint16, userId uint32, clientSeq uint32, pa player := USER_MANAGER.GetOnlineUser(userId) if player == nil { logger.Error("player is nil, uid: %v", userId) - GAME_MANAGER.DisconnectPlayer(userId, kcp.EnetNotFoundSession) + GAME_MANAGER.KickPlayer(userId, kcp.EnetNotFoundSession) return } if !player.Online { diff --git a/gs/game/tick_manager.go b/gs/game/tick_manager.go index 1677ec74..acc38b3f 100644 --- a/gs/game/tick_manager.go +++ b/gs/game/tick_manager.go @@ -188,7 +188,7 @@ func (t *TickManager) onTickMinute(now int64) { return } // TODO 3.0.0REL版本中 发送某些无效家具 可能会导致客户端背包家具界面卡死 - if uint16(itemDataConfig.Type) == constant.ItemTypeConst.ITEM_FURNITURE { + if uint16(itemDataConfig.Type) == constant.ITEM_TYPE_FURNITURE { continue } num := random.GetRandomInt32(1, 9) @@ -298,7 +298,7 @@ func (t *TickManager) onTick5Second(now int64) { Z: float32(entity.rot.Z), }, EntityId: entity.id, - CurHp: entity.fightProp[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)], + CurHp: entity.fightProp[uint32(constant.FIGHT_PROP_CUR_HP)], OwnerUid: entity.gadgetEntity.gadgetVehicleEntity.owner.PlayerID, Pos: &proto.Vector{ X: float32(entity.pos.X), @@ -307,7 +307,7 @@ func (t *TickManager) onTick5Second(now int64) { }, UidList: make([]uint32, 0, len(entity.gadgetEntity.gadgetVehicleEntity.memberMap)), GadgetId: entity.gadgetEntity.gadgetVehicleEntity.vehicleId, - MaxHp: entity.fightProp[uint32(constant.FightPropertyConst.FIGHT_PROP_MAX_HP)], + MaxHp: entity.fightProp[uint32(constant.FIGHT_PROP_MAX_HP)], } for _, p := range entity.gadgetEntity.gadgetVehicleEntity.memberMap { vehicleLocationInfo.UidList = append(vehicleLocationInfo.UidList, p.PlayerID) diff --git a/gs/game/world_manager.go b/gs/game/world_manager.go index 36ede511..695a336a 100644 --- a/gs/game/world_manager.go +++ b/gs/game/world_manager.go @@ -1,16 +1,13 @@ package game import ( - "math" "time" "hk4e/common/constant" - "hk4e/common/mq" "hk4e/gdconf" "hk4e/gs/model" "hk4e/pkg/alg" "hk4e/pkg/logger" - "hk4e/protocol/cmd" "hk4e/protocol/proto" ) @@ -35,7 +32,7 @@ func NewWorldManager(snowflake *alg.SnowflakeWorker) (r *WorldManager) { r.worldMap = make(map[uint32]*World) r.snowflake = snowflake r.sceneBlockAoiMap = make(map[uint32]*alg.AoiManager) - for _, sceneConfig := range gdconf.CONF.SceneMap { + for _, sceneConfig := range gdconf.GetSceneDetailMap() { minX := int16(0) maxX := int16(0) minZ := int16(0) @@ -172,7 +169,7 @@ func (w *WorldManager) CreateWorld(owner *model.Player) *World { multiplayerTeam: CreateMultiplayerTeam(), peerList: make([]*model.Player, 0), } - world.mpLevelEntityId = world.GetNextWorldEntityId(constant.EntityIdTypeConst.MPLEVEL) + world.mpLevelEntityId = world.GetNextWorldEntityId(constant.ENTITY_ID_TYPE_MPLEVEL) w.worldMap[worldId] = world return world } @@ -221,8 +218,7 @@ func (w *WorldManager) GetMultiplayerWorldNum() uint32 { return w.multiplayerWorldNum } -// 世界数据结构 - +// World 世界数据结构 type World struct { id uint32 owner *model.Player @@ -482,7 +478,7 @@ func (w *World) GetPlayerTeamEntityId(player *model.Player) uint32 { // InitPlayerTeamEntityId 初始化某玩家的本地队伍实体id func (w *World) InitPlayerTeamEntityId(player *model.Player) { - w.multiplayerTeam.localTeamEntityMap[player.PlayerID] = w.GetNextWorldEntityId(constant.EntityIdTypeConst.TEAM) + w.multiplayerTeam.localTeamEntityMap[player.PlayerID] = w.GetNextWorldEntityId(constant.ENTITY_ID_TYPE_TEAM) } // GetPlayerWorldAvatarEntityId 获取某玩家在世界队伍中的某角色的实体id @@ -749,670 +745,3 @@ func (w *World) GetSceneById(sceneId uint32) *Scene { } return scene } - -// 场景数据结构 - -type Scene struct { - id uint32 - world *World - playerMap map[uint32]*model.Player - entityMap map[uint32]*Entity - objectIdEntityMap map[int64]*Entity // 用于标识配置档里的唯一实体是否已被创建 - gameTime uint32 // 游戏内提瓦特大陆的时间 - createTime int64 // 场景创建时间 - meeoIndex uint32 // 客户端风元素染色同步协议的计数器 -} - -func (s *Scene) GetId() uint32 { - return s.id -} - -func (s *Scene) GetWorld() *World { - return s.world -} - -func (s *Scene) GetAllPlayer() map[uint32]*model.Player { - return s.playerMap -} - -func (s *Scene) GetAllEntity() map[uint32]*Entity { - return s.entityMap -} - -func (s *Scene) GetGameTime() uint32 { - return s.gameTime -} - -func (s *Scene) GetMeeoIndex() uint32 { - return s.meeoIndex -} - -func (s *Scene) SetMeeoIndex(meeoIndex uint32) { - s.meeoIndex = meeoIndex -} - -type AvatarEntity struct { - uid uint32 - avatarId uint32 -} - -func (a *AvatarEntity) GetUid() uint32 { - return a.uid -} - -func (a *AvatarEntity) GetAvatarId() uint32 { - return a.avatarId -} - -type MonsterEntity struct { - monsterId uint32 -} - -func (m *MonsterEntity) GetMonsterId() uint32 { - return m.monsterId -} - -type NpcEntity struct { - NpcId uint32 - RoomId uint32 - ParentQuestId uint32 - BlockId uint32 -} - -const ( - GADGET_TYPE_NORMAL = iota - GADGET_TYPE_GATHER - GADGET_TYPE_CLIENT - GADGET_TYPE_VEHICLE // 载具 -) - -type GadgetClientEntity struct { - configId uint32 - campId uint32 - campType uint32 - ownerEntityId uint32 - targetEntityId uint32 - propOwnerEntityId uint32 -} - -func (g *GadgetClientEntity) GetConfigId() uint32 { - return g.configId -} - -func (g *GadgetClientEntity) GetCampId() uint32 { - return g.campId -} - -func (g *GadgetClientEntity) GetCampType() uint32 { - return g.campType -} - -func (g *GadgetClientEntity) GetOwnerEntityId() uint32 { - return g.ownerEntityId -} - -func (g *GadgetClientEntity) GetTargetEntityId() uint32 { - return g.targetEntityId -} - -func (g *GadgetClientEntity) GetPropOwnerEntityId() uint32 { - return g.propOwnerEntityId -} - -type GadgetGatherEntity struct { - gatherId uint32 -} - -func (g *GadgetGatherEntity) GetGatherId() uint32 { - return g.gatherId -} - -type GadgetVehicleEntity struct { - vehicleId uint32 - owner *model.Player - maxStamina float32 - curStamina float32 - memberMap map[uint32]*model.Player // uint32 = pos -} - -func (g *GadgetVehicleEntity) GetVehicleId() uint32 { - return g.vehicleId -} - -func (g *GadgetVehicleEntity) GetOwner() *model.Player { - return g.owner -} - -func (g *GadgetVehicleEntity) GetMaxStamina() float32 { - return g.maxStamina -} - -func (g *GadgetVehicleEntity) GetCurStamina() float32 { - return g.curStamina -} - -func (g *GadgetVehicleEntity) SetCurStamina(curStamina float32) { - g.curStamina = curStamina -} - -func (g *GadgetVehicleEntity) GetMemberMap() map[uint32]*model.Player { - return g.memberMap -} - -type GadgetEntity struct { - gadgetType int - gadgetId uint32 - gadgetClientEntity *GadgetClientEntity - gadgetGatherEntity *GadgetGatherEntity - gadgetVehicleEntity *GadgetVehicleEntity -} - -func (g *GadgetEntity) GetGadgetType() int { - return g.gadgetType -} - -func (g *GadgetEntity) GetGadgetId() uint32 { - return g.gadgetId -} - -func (g *GadgetEntity) GetGadgetClientEntity() *GadgetClientEntity { - return g.gadgetClientEntity -} - -func (g *GadgetEntity) GetGadgetGatherEntity() *GadgetGatherEntity { - return g.gadgetGatherEntity -} - -func (g *GadgetEntity) GetGadgetVehicleEntity() *GadgetVehicleEntity { - return g.gadgetVehicleEntity -} - -// 场景实体数据结构 - -type Entity struct { - id uint32 - scene *Scene - lifeState uint16 - pos *model.Vector - rot *model.Vector - moveState uint16 - lastMoveSceneTimeMs uint32 - lastMoveReliableSeq uint32 - fightProp map[uint32]float32 - entityType uint32 - level uint8 - avatarEntity *AvatarEntity - monsterEntity *MonsterEntity - npcEntity *NpcEntity - gadgetEntity *GadgetEntity - configId uint32 - objectId int64 -} - -func (e *Entity) GetId() uint32 { - return e.id -} - -func (e *Entity) GetLifeState() uint16 { - return e.lifeState -} - -func (e *Entity) GetPos() *model.Vector { - return e.pos -} - -func (e *Entity) GetRot() *model.Vector { - return e.rot -} - -func (e *Entity) GetMoveState() uint16 { - return e.moveState -} - -func (e *Entity) SetMoveState(moveState uint16) { - e.moveState = moveState -} - -func (e *Entity) GetLastMoveSceneTimeMs() uint32 { - return e.lastMoveSceneTimeMs -} - -func (e *Entity) SetLastMoveSceneTimeMs(lastMoveSceneTimeMs uint32) { - e.lastMoveSceneTimeMs = lastMoveSceneTimeMs -} - -func (e *Entity) GetLastMoveReliableSeq() uint32 { - return e.lastMoveReliableSeq -} - -func (e *Entity) SetLastMoveReliableSeq(lastMoveReliableSeq uint32) { - e.lastMoveReliableSeq = lastMoveReliableSeq -} - -func (e *Entity) GetFightProp() map[uint32]float32 { - return e.fightProp -} - -func (e *Entity) GetEntityType() uint32 { - return e.entityType -} - -func (e *Entity) GetLevel() uint8 { - return e.level -} - -func (e *Entity) GetAvatarEntity() *AvatarEntity { - return e.avatarEntity -} - -func (e *Entity) GetMonsterEntity() *MonsterEntity { - return e.monsterEntity -} - -func (e *Entity) GetNpcEntity() *NpcEntity { - return e.npcEntity -} - -func (e *Entity) GetGadgetEntity() *GadgetEntity { - return e.gadgetEntity -} - -func (e *Entity) GetConfigId() uint32 { - return e.configId -} - -type Attack struct { - combatInvokeEntry *proto.CombatInvokeEntry - uid uint32 -} - -func (s *Scene) ChangeGameTime(time uint32) { - s.gameTime = time % 1440 -} - -func (s *Scene) GetSceneCreateTime() int64 { - return s.createTime -} - -func (s *Scene) GetSceneTime() int64 { - now := time.Now().UnixMilli() - return now - s.createTime -} - -func (s *Scene) AddPlayer(player *model.Player) { - s.playerMap[player.PlayerID] = player - s.world.InitPlayerWorldAvatar(player) -} - -func (s *Scene) RemovePlayer(player *model.Player) { - delete(s.playerMap, player.PlayerID) - worldAvatarList := s.world.GetPlayerWorldAvatarList(player) - for _, worldAvatar := range worldAvatarList { - s.DestroyEntity(worldAvatar.avatarEntityId) - s.DestroyEntity(worldAvatar.weaponEntityId) - } -} - -func (s *Scene) SetEntityLifeState(entity *Entity, lifeState uint16, dieType proto.PlayerDieType) { - if entity.avatarEntity != nil { - // 获取玩家对象 - player := USER_MANAGER.GetOnlineUser(entity.avatarEntity.uid) - if player == nil { - logger.Error("player is nil, uid: %v", entity.avatarEntity.uid) - return - } - // 获取角色 - avatar, ok := player.AvatarMap[entity.avatarEntity.avatarId] - if !ok { - logger.Error("avatar is nil, avatarId: %v", avatar) - return - } - // 设置角色存活状态 - if lifeState == constant.LifeStateConst.LIFE_REVIVE { - avatar.LifeState = constant.LifeStateConst.LIFE_ALIVE - // 设置血量 - entity.fightProp[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)] = 110 - GAME_MANAGER.EntityFightPropUpdateNotifyBroadcast(s, entity, uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)) - } - - // PacketAvatarLifeStateChangeNotify - avatarLifeStateChangeNotify := &proto.AvatarLifeStateChangeNotify{ - LifeState: uint32(lifeState), - AttackTag: "", - DieType: dieType, - ServerBuffList: nil, - MoveReliableSeq: entity.lastMoveReliableSeq, - SourceEntityId: 0, - AvatarGuid: avatar.Guid, - } - for _, p := range s.playerMap { - GAME_MANAGER.SendMsg(cmd.AvatarLifeStateChangeNotify, p.PlayerID, p.ClientSeq, avatarLifeStateChangeNotify) - } - } else { - // 设置存活状态 - entity.lifeState = lifeState - - if lifeState == constant.LifeStateConst.LIFE_DEAD { - // 设置血量 - entity.fightProp[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)] = 0 - GAME_MANAGER.EntityFightPropUpdateNotifyBroadcast(s, entity, uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)) - } - - // PacketLifeStateChangeNotify - lifeStateChangeNotify := &proto.LifeStateChangeNotify{ - EntityId: entity.id, - AttackTag: "", - MoveReliableSeq: entity.lastMoveReliableSeq, - DieType: dieType, - LifeState: uint32(lifeState), - SourceEntityId: 0, - } - for _, p := range s.playerMap { - GAME_MANAGER.SendMsg(cmd.LifeStateChangeNotify, p.PlayerID, p.ClientSeq, lifeStateChangeNotify) - } - - // 删除实体 - s.DestroyEntity(entity.id) - GAME_MANAGER.RemoveSceneEntityNotifyBroadcast(s, proto.VisionType_VISION_DIE, []uint32{entity.id}) - } -} - -func (s *Scene) CreateEntityAvatar(player *model.Player, avatarId uint32) uint32 { - entityId := s.world.GetNextWorldEntityId(constant.EntityIdTypeConst.AVATAR) - avatar, ok := player.AvatarMap[avatarId] - if !ok { - logger.Error("avatar error, avatarId: %v", avatar) - return 0 - } - entity := &Entity{ - id: entityId, - scene: s, - lifeState: avatar.LifeState, - pos: player.Pos, - rot: player.Rot, - moveState: uint16(proto.MotionState_MOTION_NONE), - lastMoveSceneTimeMs: 0, - lastMoveReliableSeq: 0, - // fightProp: player.AvatarMap[avatarId].FightPropMap, // 使用角色结构的数据 - entityType: uint32(proto.ProtEntityType_PROT_ENTITY_AVATAR), - // level: 0, // 使用角色结构的数据 - avatarEntity: &AvatarEntity{ - uid: player.PlayerID, - avatarId: avatarId, - }, - } - s.CreateEntity(entity, 0) - MESSAGE_QUEUE.SendToFight(s.world.owner.FightAppId, &mq.NetMsg{ - MsgType: mq.MsgTypeFight, - EventId: mq.FightRoutineAddEntity, - FightMsg: &mq.FightMsg{ - FightRoutineId: s.world.id, - EntityId: entity.id, - FightPropMap: entity.fightProp, - Uid: entity.avatarEntity.uid, - AvatarGuid: player.AvatarMap[avatarId].Guid, - }, - }) - return entity.id -} - -func (s *Scene) CreateEntityWeapon() uint32 { - entityId := s.world.GetNextWorldEntityId(constant.EntityIdTypeConst.WEAPON) - entity := &Entity{ - id: entityId, - scene: s, - lifeState: constant.LifeStateConst.LIFE_ALIVE, - pos: new(model.Vector), - rot: new(model.Vector), - moveState: uint16(proto.MotionState_MOTION_NONE), - lastMoveSceneTimeMs: 0, - lastMoveReliableSeq: 0, - fightProp: nil, - entityType: uint32(proto.ProtEntityType_PROT_ENTITY_WEAPON), - } - s.CreateEntity(entity, 0) - return entity.id -} - -func (s *Scene) CreateEntityMonster(pos, rot *model.Vector, monsterId uint32, level uint8, fightProp map[uint32]float32, configId uint32, objectId int64) uint32 { - _, exist := s.objectIdEntityMap[objectId] - if exist { - return 0 - } - entityId := s.world.GetNextWorldEntityId(constant.EntityIdTypeConst.MONSTER) - entity := &Entity{ - id: entityId, - scene: s, - lifeState: constant.LifeStateConst.LIFE_ALIVE, - pos: pos, - rot: rot, - moveState: uint16(proto.MotionState_MOTION_NONE), - lastMoveSceneTimeMs: 0, - lastMoveReliableSeq: 0, - fightProp: fightProp, - entityType: uint32(proto.ProtEntityType_PROT_ENTITY_MONSTER), - level: level, - monsterEntity: &MonsterEntity{ - monsterId: monsterId, - }, - configId: configId, - objectId: objectId, - } - s.CreateEntity(entity, objectId) - MESSAGE_QUEUE.SendToFight(s.world.owner.FightAppId, &mq.NetMsg{ - MsgType: mq.MsgTypeFight, - EventId: mq.FightRoutineAddEntity, - FightMsg: &mq.FightMsg{ - FightRoutineId: s.world.id, - EntityId: entity.id, - FightPropMap: entity.fightProp, - }, - }) - return entity.id -} - -func (s *Scene) CreateEntityNpc(pos, rot *model.Vector, npcId, roomId, parentQuestId, blockId, configId uint32, objectId int64) uint32 { - _, exist := s.objectIdEntityMap[objectId] - if exist { - return 0 - } - entityId := s.world.GetNextWorldEntityId(constant.EntityIdTypeConst.NPC) - entity := &Entity{ - id: entityId, - scene: s, - lifeState: constant.LifeStateConst.LIFE_ALIVE, - pos: pos, - rot: rot, - moveState: uint16(proto.MotionState_MOTION_NONE), - lastMoveSceneTimeMs: 0, - lastMoveReliableSeq: 0, - fightProp: map[uint32]float32{ - uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP): math.MaxFloat32, - uint32(constant.FightPropertyConst.FIGHT_PROP_MAX_HP): math.MaxFloat32, - uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_HP): float32(1), - }, - entityType: uint32(proto.ProtEntityType_PROT_ENTITY_NPC), - npcEntity: &NpcEntity{ - NpcId: npcId, - RoomId: roomId, - ParentQuestId: parentQuestId, - BlockId: blockId, - }, - configId: configId, - objectId: objectId, - } - s.CreateEntity(entity, objectId) - return entity.id -} - -func (s *Scene) CreateEntityGadgetNormal(pos, rot *model.Vector, gadgetId uint32, configId uint32, objectId int64) uint32 { - _, exist := s.objectIdEntityMap[objectId] - if exist { - return 0 - } - entityId := s.world.GetNextWorldEntityId(constant.EntityIdTypeConst.GADGET) - entity := &Entity{ - id: entityId, - scene: s, - lifeState: constant.LifeStateConst.LIFE_ALIVE, - pos: pos, - rot: rot, - moveState: uint16(proto.MotionState_MOTION_NONE), - lastMoveSceneTimeMs: 0, - lastMoveReliableSeq: 0, - fightProp: map[uint32]float32{ - uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP): math.MaxFloat32, - uint32(constant.FightPropertyConst.FIGHT_PROP_MAX_HP): math.MaxFloat32, - uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_HP): float32(1), - }, - entityType: uint32(proto.ProtEntityType_PROT_ENTITY_GADGET), - gadgetEntity: &GadgetEntity{ - gadgetId: gadgetId, - gadgetType: GADGET_TYPE_NORMAL, - }, - configId: configId, - objectId: objectId, - } - s.CreateEntity(entity, objectId) - return entity.id -} - -func (s *Scene) CreateEntityGadgetGather(pos, rot *model.Vector, gadgetId uint32, gatherId uint32, configId uint32, objectId int64) uint32 { - _, exist := s.objectIdEntityMap[objectId] - if exist { - return 0 - } - entityId := s.world.GetNextWorldEntityId(constant.EntityIdTypeConst.GADGET) - entity := &Entity{ - id: entityId, - scene: s, - lifeState: constant.LifeStateConst.LIFE_ALIVE, - pos: pos, - rot: rot, - moveState: uint16(proto.MotionState_MOTION_NONE), - lastMoveSceneTimeMs: 0, - lastMoveReliableSeq: 0, - fightProp: map[uint32]float32{ - uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP): math.MaxFloat32, - uint32(constant.FightPropertyConst.FIGHT_PROP_MAX_HP): math.MaxFloat32, - uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_HP): float32(1), - }, - entityType: uint32(proto.ProtEntityType_PROT_ENTITY_GADGET), - gadgetEntity: &GadgetEntity{ - gadgetId: gadgetId, - gadgetType: GADGET_TYPE_GATHER, - gadgetGatherEntity: &GadgetGatherEntity{ - gatherId: gatherId, - }, - }, - configId: configId, - objectId: objectId, - } - s.CreateEntity(entity, objectId) - return entity.id -} - -func (s *Scene) CreateEntityGadgetClient(pos, rot *model.Vector, entityId uint32, configId, campId, campType, ownerEntityId, targetEntityId, propOwnerEntityId uint32) { - entity := &Entity{ - id: entityId, - scene: s, - lifeState: constant.LifeStateConst.LIFE_ALIVE, - pos: pos, - rot: rot, - moveState: uint16(proto.MotionState_MOTION_NONE), - lastMoveSceneTimeMs: 0, - lastMoveReliableSeq: 0, - fightProp: map[uint32]float32{ - uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP): math.MaxFloat32, - uint32(constant.FightPropertyConst.FIGHT_PROP_MAX_HP): math.MaxFloat32, - uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_HP): float32(1), - }, - entityType: uint32(proto.ProtEntityType_PROT_ENTITY_GADGET), - gadgetEntity: &GadgetEntity{ - gadgetType: GADGET_TYPE_CLIENT, - gadgetClientEntity: &GadgetClientEntity{ - configId: configId, - campId: campId, - campType: campType, - ownerEntityId: ownerEntityId, - targetEntityId: targetEntityId, - propOwnerEntityId: propOwnerEntityId, - }, - }, - } - s.CreateEntity(entity, 0) -} - -func (s *Scene) CreateEntityGadgetVehicle(uid uint32, pos, rot *model.Vector, vehicleId uint32) uint32 { - player := USER_MANAGER.GetOnlineUser(uid) - if player == nil { - logger.Error("player is nil, uid: %v", uid) - return 0 - } - entityId := s.world.GetNextWorldEntityId(constant.EntityIdTypeConst.GADGET) - entity := &Entity{ - id: entityId, - scene: s, - lifeState: constant.LifeStateConst.LIFE_ALIVE, - pos: pos, - rot: rot, - moveState: uint16(proto.MotionState_MOTION_NONE), - lastMoveSceneTimeMs: 0, - lastMoveReliableSeq: 0, - fightProp: map[uint32]float32{ - // TODO 以后使用配置表 - uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP): 114514, - uint32(constant.FightPropertyConst.FIGHT_PROP_MAX_HP): 114514, - uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_HP): float32(1), - }, - entityType: uint32(proto.ProtEntityType_PROT_ENTITY_GADGET), - gadgetEntity: &GadgetEntity{ - gadgetType: GADGET_TYPE_VEHICLE, - gadgetVehicleEntity: &GadgetVehicleEntity{ - vehicleId: vehicleId, - owner: player, - maxStamina: 240, // TODO 应该也能在配置表找到 - curStamina: 240, // TODO 与maxStamina一致 - memberMap: make(map[uint32]*model.Player), - }, - }, - } - s.CreateEntity(entity, 0) - return entity.id -} - -func (s *Scene) CreateEntity(entity *Entity, objectId int64) { - if len(s.entityMap) >= ENTITY_MAX_SEND_NUM && !ENTITY_NUM_UNLIMIT { - logger.Error("above max scene entity num limit: %v, id: %v, pos: %v", ENTITY_MAX_SEND_NUM, entity.id, entity.pos) - return - } - if objectId != 0 { - s.objectIdEntityMap[objectId] = entity - } - s.entityMap[entity.id] = entity -} - -func (s *Scene) DestroyEntity(entityId uint32) { - entity := s.GetEntity(entityId) - if entity == nil { - return - } - delete(s.entityMap, entity.id) - delete(s.objectIdEntityMap, entity.objectId) - MESSAGE_QUEUE.SendToFight(s.world.owner.FightAppId, &mq.NetMsg{ - MsgType: mq.MsgTypeFight, - EventId: mq.FightRoutineDelEntity, - FightMsg: &mq.FightMsg{ - FightRoutineId: s.world.id, - EntityId: entity.id, - }, - }) -} - -func (s *Scene) GetEntity(entityId uint32) *Entity { - return s.entityMap[entityId] -} - -func (s *Scene) GetEntityByObjectId(objectId int64) *Entity { - return s.objectIdEntityMap[objectId] -} diff --git a/gs/game/world_scene.go b/gs/game/world_scene.go new file mode 100644 index 00000000..0b799f80 --- /dev/null +++ b/gs/game/world_scene.go @@ -0,0 +1,673 @@ +package game + +import ( + "math" + "time" + + "hk4e/common/constant" + "hk4e/common/mq" + "hk4e/gs/model" + "hk4e/pkg/logger" + "hk4e/protocol/cmd" + "hk4e/protocol/proto" +) + +// Scene 场景数据结构 +type Scene struct { + id uint32 + world *World + playerMap map[uint32]*model.Player + entityMap map[uint32]*Entity + objectIdEntityMap map[int64]*Entity // 用于标识配置档里的唯一实体是否已被创建 + gameTime uint32 // 游戏内提瓦特大陆的时间 + createTime int64 // 场景创建时间 + meeoIndex uint32 // 客户端风元素染色同步协议的计数器 +} + +func (s *Scene) GetId() uint32 { + return s.id +} + +func (s *Scene) GetWorld() *World { + return s.world +} + +func (s *Scene) GetAllPlayer() map[uint32]*model.Player { + return s.playerMap +} + +func (s *Scene) GetAllEntity() map[uint32]*Entity { + return s.entityMap +} + +func (s *Scene) GetGameTime() uint32 { + return s.gameTime +} + +func (s *Scene) GetMeeoIndex() uint32 { + return s.meeoIndex +} + +func (s *Scene) SetMeeoIndex(meeoIndex uint32) { + s.meeoIndex = meeoIndex +} + +func (s *Scene) ChangeGameTime(time uint32) { + s.gameTime = time % 1440 +} + +func (s *Scene) GetSceneCreateTime() int64 { + return s.createTime +} + +func (s *Scene) GetSceneTime() int64 { + now := time.Now().UnixMilli() + return now - s.createTime +} + +func (s *Scene) AddPlayer(player *model.Player) { + s.playerMap[player.PlayerID] = player + s.world.InitPlayerWorldAvatar(player) +} + +func (s *Scene) RemovePlayer(player *model.Player) { + delete(s.playerMap, player.PlayerID) + worldAvatarList := s.world.GetPlayerWorldAvatarList(player) + for _, worldAvatar := range worldAvatarList { + s.DestroyEntity(worldAvatar.avatarEntityId) + s.DestroyEntity(worldAvatar.weaponEntityId) + } +} + +func (s *Scene) SetEntityLifeState(entity *Entity, lifeState uint16, dieType proto.PlayerDieType) { + if entity.avatarEntity != nil { + // 获取玩家对象 + player := USER_MANAGER.GetOnlineUser(entity.avatarEntity.uid) + if player == nil { + logger.Error("player is nil, uid: %v", entity.avatarEntity.uid) + return + } + // 获取角色 + avatar, ok := player.AvatarMap[entity.avatarEntity.avatarId] + if !ok { + logger.Error("avatar is nil, avatarId: %v", avatar) + return + } + // 设置角色存活状态 + if lifeState == constant.LIFE_STATE_REVIVE { + avatar.LifeState = constant.LIFE_STATE_ALIVE + // 设置血量 + entity.fightProp[uint32(constant.FIGHT_PROP_CUR_HP)] = 110 + GAME_MANAGER.EntityFightPropUpdateNotifyBroadcast(s, entity, uint32(constant.FIGHT_PROP_CUR_HP)) + } + + // PacketAvatarLifeStateChangeNotify + avatarLifeStateChangeNotify := &proto.AvatarLifeStateChangeNotify{ + LifeState: uint32(lifeState), + AttackTag: "", + DieType: dieType, + ServerBuffList: nil, + MoveReliableSeq: entity.lastMoveReliableSeq, + SourceEntityId: 0, + AvatarGuid: avatar.Guid, + } + for _, p := range s.playerMap { + GAME_MANAGER.SendMsg(cmd.AvatarLifeStateChangeNotify, p.PlayerID, p.ClientSeq, avatarLifeStateChangeNotify) + } + } else { + // 设置存活状态 + entity.lifeState = lifeState + + if lifeState == constant.LIFE_STATE_DEAD { + // 设置血量 + entity.fightProp[uint32(constant.FIGHT_PROP_CUR_HP)] = 0 + GAME_MANAGER.EntityFightPropUpdateNotifyBroadcast(s, entity, uint32(constant.FIGHT_PROP_CUR_HP)) + } + + // PacketLifeStateChangeNotify + lifeStateChangeNotify := &proto.LifeStateChangeNotify{ + EntityId: entity.id, + AttackTag: "", + MoveReliableSeq: entity.lastMoveReliableSeq, + DieType: dieType, + LifeState: uint32(lifeState), + SourceEntityId: 0, + } + for _, p := range s.playerMap { + GAME_MANAGER.SendMsg(cmd.LifeStateChangeNotify, p.PlayerID, p.ClientSeq, lifeStateChangeNotify) + } + + // 删除实体 + s.DestroyEntity(entity.id) + GAME_MANAGER.RemoveSceneEntityNotifyBroadcast(s, proto.VisionType_VISION_DIE, []uint32{entity.id}) + } +} + +func (s *Scene) CreateEntityAvatar(player *model.Player, avatarId uint32) uint32 { + entityId := s.world.GetNextWorldEntityId(constant.ENTITY_ID_TYPE_AVATAR) + avatar, ok := player.AvatarMap[avatarId] + if !ok { + logger.Error("avatar error, avatarId: %v", avatar) + return 0 + } + entity := &Entity{ + id: entityId, + scene: s, + lifeState: avatar.LifeState, + pos: player.Pos, + rot: player.Rot, + moveState: uint16(proto.MotionState_MOTION_NONE), + lastMoveSceneTimeMs: 0, + lastMoveReliableSeq: 0, + // fightProp: player.AvatarMap[avatarId].FightPropMap, // 使用角色结构的数据 + entityType: uint32(proto.ProtEntityType_PROT_ENTITY_AVATAR), + // level: 0, // 使用角色结构的数据 + avatarEntity: &AvatarEntity{ + uid: player.PlayerID, + avatarId: avatarId, + }, + } + s.CreateEntity(entity, 0) + MESSAGE_QUEUE.SendToFight(s.world.owner.FightAppId, &mq.NetMsg{ + MsgType: mq.MsgTypeFight, + EventId: mq.FightRoutineAddEntity, + FightMsg: &mq.FightMsg{ + FightRoutineId: s.world.id, + EntityId: entity.id, + FightPropMap: entity.fightProp, + Uid: entity.avatarEntity.uid, + AvatarGuid: player.AvatarMap[avatarId].Guid, + }, + }) + return entity.id +} + +func (s *Scene) CreateEntityWeapon() uint32 { + entityId := s.world.GetNextWorldEntityId(constant.ENTITY_ID_TYPE_WEAPON) + entity := &Entity{ + id: entityId, + scene: s, + lifeState: constant.LIFE_STATE_ALIVE, + pos: new(model.Vector), + rot: new(model.Vector), + moveState: uint16(proto.MotionState_MOTION_NONE), + lastMoveSceneTimeMs: 0, + lastMoveReliableSeq: 0, + fightProp: nil, + entityType: uint32(proto.ProtEntityType_PROT_ENTITY_WEAPON), + } + s.CreateEntity(entity, 0) + return entity.id +} + +func (s *Scene) CreateEntityMonster(pos, rot *model.Vector, monsterId uint32, level uint8, fightProp map[uint32]float32, configId uint32, objectId int64) uint32 { + _, exist := s.objectIdEntityMap[objectId] + if exist { + return 0 + } + entityId := s.world.GetNextWorldEntityId(constant.ENTITY_ID_TYPE_MONSTER) + entity := &Entity{ + id: entityId, + scene: s, + lifeState: constant.LIFE_STATE_ALIVE, + pos: pos, + rot: rot, + moveState: uint16(proto.MotionState_MOTION_NONE), + lastMoveSceneTimeMs: 0, + lastMoveReliableSeq: 0, + fightProp: fightProp, + entityType: uint32(proto.ProtEntityType_PROT_ENTITY_MONSTER), + level: level, + monsterEntity: &MonsterEntity{ + monsterId: monsterId, + }, + configId: configId, + objectId: objectId, + } + s.CreateEntity(entity, objectId) + MESSAGE_QUEUE.SendToFight(s.world.owner.FightAppId, &mq.NetMsg{ + MsgType: mq.MsgTypeFight, + EventId: mq.FightRoutineAddEntity, + FightMsg: &mq.FightMsg{ + FightRoutineId: s.world.id, + EntityId: entity.id, + FightPropMap: entity.fightProp, + }, + }) + return entity.id +} + +func (s *Scene) CreateEntityNpc(pos, rot *model.Vector, npcId, roomId, parentQuestId, blockId, configId uint32, objectId int64) uint32 { + _, exist := s.objectIdEntityMap[objectId] + if exist { + return 0 + } + entityId := s.world.GetNextWorldEntityId(constant.ENTITY_ID_TYPE_NPC) + entity := &Entity{ + id: entityId, + scene: s, + lifeState: constant.LIFE_STATE_ALIVE, + pos: pos, + rot: rot, + moveState: uint16(proto.MotionState_MOTION_NONE), + lastMoveSceneTimeMs: 0, + lastMoveReliableSeq: 0, + fightProp: map[uint32]float32{ + uint32(constant.FIGHT_PROP_CUR_HP): math.MaxFloat32, + uint32(constant.FIGHT_PROP_MAX_HP): math.MaxFloat32, + uint32(constant.FIGHT_PROP_BASE_HP): float32(1), + }, + entityType: uint32(proto.ProtEntityType_PROT_ENTITY_NPC), + npcEntity: &NpcEntity{ + NpcId: npcId, + RoomId: roomId, + ParentQuestId: parentQuestId, + BlockId: blockId, + }, + configId: configId, + objectId: objectId, + } + s.CreateEntity(entity, objectId) + return entity.id +} + +func (s *Scene) CreateEntityGadgetNormal(pos, rot *model.Vector, gadgetId uint32, configId uint32, objectId int64) uint32 { + _, exist := s.objectIdEntityMap[objectId] + if exist { + return 0 + } + entityId := s.world.GetNextWorldEntityId(constant.ENTITY_ID_TYPE_GADGET) + entity := &Entity{ + id: entityId, + scene: s, + lifeState: constant.LIFE_STATE_ALIVE, + pos: pos, + rot: rot, + moveState: uint16(proto.MotionState_MOTION_NONE), + lastMoveSceneTimeMs: 0, + lastMoveReliableSeq: 0, + fightProp: map[uint32]float32{ + uint32(constant.FIGHT_PROP_CUR_HP): math.MaxFloat32, + uint32(constant.FIGHT_PROP_MAX_HP): math.MaxFloat32, + uint32(constant.FIGHT_PROP_BASE_HP): float32(1), + }, + entityType: uint32(proto.ProtEntityType_PROT_ENTITY_GADGET), + gadgetEntity: &GadgetEntity{ + gadgetId: gadgetId, + gadgetType: GADGET_TYPE_NORMAL, + }, + configId: configId, + objectId: objectId, + } + s.CreateEntity(entity, objectId) + return entity.id +} + +func (s *Scene) CreateEntityGadgetGather(pos, rot *model.Vector, gadgetId uint32, gatherId uint32, configId uint32, objectId int64) uint32 { + _, exist := s.objectIdEntityMap[objectId] + if exist { + return 0 + } + entityId := s.world.GetNextWorldEntityId(constant.ENTITY_ID_TYPE_GADGET) + entity := &Entity{ + id: entityId, + scene: s, + lifeState: constant.LIFE_STATE_ALIVE, + pos: pos, + rot: rot, + moveState: uint16(proto.MotionState_MOTION_NONE), + lastMoveSceneTimeMs: 0, + lastMoveReliableSeq: 0, + fightProp: map[uint32]float32{ + uint32(constant.FIGHT_PROP_CUR_HP): math.MaxFloat32, + uint32(constant.FIGHT_PROP_MAX_HP): math.MaxFloat32, + uint32(constant.FIGHT_PROP_BASE_HP): float32(1), + }, + entityType: uint32(proto.ProtEntityType_PROT_ENTITY_GADGET), + gadgetEntity: &GadgetEntity{ + gadgetId: gadgetId, + gadgetType: GADGET_TYPE_GATHER, + gadgetGatherEntity: &GadgetGatherEntity{ + gatherId: gatherId, + }, + }, + configId: configId, + objectId: objectId, + } + s.CreateEntity(entity, objectId) + return entity.id +} + +func (s *Scene) CreateEntityGadgetClient(pos, rot *model.Vector, entityId uint32, configId, campId, campType, ownerEntityId, targetEntityId, propOwnerEntityId uint32) { + entity := &Entity{ + id: entityId, + scene: s, + lifeState: constant.LIFE_STATE_ALIVE, + pos: pos, + rot: rot, + moveState: uint16(proto.MotionState_MOTION_NONE), + lastMoveSceneTimeMs: 0, + lastMoveReliableSeq: 0, + fightProp: map[uint32]float32{ + uint32(constant.FIGHT_PROP_CUR_HP): math.MaxFloat32, + uint32(constant.FIGHT_PROP_MAX_HP): math.MaxFloat32, + uint32(constant.FIGHT_PROP_BASE_HP): float32(1), + }, + entityType: uint32(proto.ProtEntityType_PROT_ENTITY_GADGET), + gadgetEntity: &GadgetEntity{ + gadgetType: GADGET_TYPE_CLIENT, + gadgetClientEntity: &GadgetClientEntity{ + configId: configId, + campId: campId, + campType: campType, + ownerEntityId: ownerEntityId, + targetEntityId: targetEntityId, + propOwnerEntityId: propOwnerEntityId, + }, + }, + } + s.CreateEntity(entity, 0) +} + +func (s *Scene) CreateEntityGadgetVehicle(uid uint32, pos, rot *model.Vector, vehicleId uint32) uint32 { + player := USER_MANAGER.GetOnlineUser(uid) + if player == nil { + logger.Error("player is nil, uid: %v", uid) + return 0 + } + entityId := s.world.GetNextWorldEntityId(constant.ENTITY_ID_TYPE_GADGET) + entity := &Entity{ + id: entityId, + scene: s, + lifeState: constant.LIFE_STATE_ALIVE, + pos: pos, + rot: rot, + moveState: uint16(proto.MotionState_MOTION_NONE), + lastMoveSceneTimeMs: 0, + lastMoveReliableSeq: 0, + fightProp: map[uint32]float32{ + // TODO 以后使用配置表 + uint32(constant.FIGHT_PROP_CUR_HP): 114514, + uint32(constant.FIGHT_PROP_MAX_HP): 114514, + uint32(constant.FIGHT_PROP_BASE_HP): float32(1), + }, + entityType: uint32(proto.ProtEntityType_PROT_ENTITY_GADGET), + gadgetEntity: &GadgetEntity{ + gadgetType: GADGET_TYPE_VEHICLE, + gadgetVehicleEntity: &GadgetVehicleEntity{ + vehicleId: vehicleId, + owner: player, + maxStamina: 240, // TODO 应该也能在配置表找到 + curStamina: 240, // TODO 与maxStamina一致 + memberMap: make(map[uint32]*model.Player), + }, + }, + } + s.CreateEntity(entity, 0) + return entity.id +} + +func (s *Scene) CreateEntity(entity *Entity, objectId int64) { + if len(s.entityMap) >= ENTITY_MAX_SEND_NUM && !ENTITY_NUM_UNLIMIT { + logger.Error("above max scene entity num limit: %v, id: %v, pos: %v", ENTITY_MAX_SEND_NUM, entity.id, entity.pos) + return + } + if objectId != 0 { + s.objectIdEntityMap[objectId] = entity + } + s.entityMap[entity.id] = entity +} + +func (s *Scene) DestroyEntity(entityId uint32) { + entity := s.GetEntity(entityId) + if entity == nil { + return + } + delete(s.entityMap, entity.id) + delete(s.objectIdEntityMap, entity.objectId) + MESSAGE_QUEUE.SendToFight(s.world.owner.FightAppId, &mq.NetMsg{ + MsgType: mq.MsgTypeFight, + EventId: mq.FightRoutineDelEntity, + FightMsg: &mq.FightMsg{ + FightRoutineId: s.world.id, + EntityId: entity.id, + }, + }) +} + +func (s *Scene) GetEntity(entityId uint32) *Entity { + return s.entityMap[entityId] +} + +func (s *Scene) GetEntityByObjectId(objectId int64) *Entity { + return s.objectIdEntityMap[objectId] +} + +// Entity 场景实体数据结构 +type Entity struct { + id uint32 + scene *Scene + lifeState uint16 + pos *model.Vector + rot *model.Vector + moveState uint16 + lastMoveSceneTimeMs uint32 + lastMoveReliableSeq uint32 + fightProp map[uint32]float32 + entityType uint32 + level uint8 + avatarEntity *AvatarEntity + monsterEntity *MonsterEntity + npcEntity *NpcEntity + gadgetEntity *GadgetEntity + configId uint32 + objectId int64 +} + +func (e *Entity) GetId() uint32 { + return e.id +} + +func (e *Entity) GetLifeState() uint16 { + return e.lifeState +} + +func (e *Entity) GetPos() *model.Vector { + return e.pos +} + +func (e *Entity) GetRot() *model.Vector { + return e.rot +} + +func (e *Entity) GetMoveState() uint16 { + return e.moveState +} + +func (e *Entity) SetMoveState(moveState uint16) { + e.moveState = moveState +} + +func (e *Entity) GetLastMoveSceneTimeMs() uint32 { + return e.lastMoveSceneTimeMs +} + +func (e *Entity) SetLastMoveSceneTimeMs(lastMoveSceneTimeMs uint32) { + e.lastMoveSceneTimeMs = lastMoveSceneTimeMs +} + +func (e *Entity) GetLastMoveReliableSeq() uint32 { + return e.lastMoveReliableSeq +} + +func (e *Entity) SetLastMoveReliableSeq(lastMoveReliableSeq uint32) { + e.lastMoveReliableSeq = lastMoveReliableSeq +} + +func (e *Entity) GetFightProp() map[uint32]float32 { + return e.fightProp +} + +func (e *Entity) GetEntityType() uint32 { + return e.entityType +} + +func (e *Entity) GetLevel() uint8 { + return e.level +} + +func (e *Entity) GetAvatarEntity() *AvatarEntity { + return e.avatarEntity +} + +func (e *Entity) GetMonsterEntity() *MonsterEntity { + return e.monsterEntity +} + +func (e *Entity) GetNpcEntity() *NpcEntity { + return e.npcEntity +} + +func (e *Entity) GetGadgetEntity() *GadgetEntity { + return e.gadgetEntity +} + +func (e *Entity) GetConfigId() uint32 { + return e.configId +} + +type AvatarEntity struct { + uid uint32 + avatarId uint32 +} + +func (a *AvatarEntity) GetUid() uint32 { + return a.uid +} + +func (a *AvatarEntity) GetAvatarId() uint32 { + return a.avatarId +} + +type MonsterEntity struct { + monsterId uint32 +} + +func (m *MonsterEntity) GetMonsterId() uint32 { + return m.monsterId +} + +type NpcEntity struct { + NpcId uint32 + RoomId uint32 + ParentQuestId uint32 + BlockId uint32 +} + +type GadgetEntity struct { + gadgetType int + gadgetId uint32 + gadgetClientEntity *GadgetClientEntity + gadgetGatherEntity *GadgetGatherEntity + gadgetVehicleEntity *GadgetVehicleEntity +} + +func (g *GadgetEntity) GetGadgetType() int { + return g.gadgetType +} + +func (g *GadgetEntity) GetGadgetId() uint32 { + return g.gadgetId +} + +func (g *GadgetEntity) GetGadgetClientEntity() *GadgetClientEntity { + return g.gadgetClientEntity +} + +func (g *GadgetEntity) GetGadgetGatherEntity() *GadgetGatherEntity { + return g.gadgetGatherEntity +} + +func (g *GadgetEntity) GetGadgetVehicleEntity() *GadgetVehicleEntity { + return g.gadgetVehicleEntity +} + +const ( + GADGET_TYPE_NORMAL = iota + GADGET_TYPE_GATHER + GADGET_TYPE_CLIENT + GADGET_TYPE_VEHICLE // 载具 +) + +type GadgetClientEntity struct { + configId uint32 + campId uint32 + campType uint32 + ownerEntityId uint32 + targetEntityId uint32 + propOwnerEntityId uint32 +} + +func (g *GadgetClientEntity) GetConfigId() uint32 { + return g.configId +} + +func (g *GadgetClientEntity) GetCampId() uint32 { + return g.campId +} + +func (g *GadgetClientEntity) GetCampType() uint32 { + return g.campType +} + +func (g *GadgetClientEntity) GetOwnerEntityId() uint32 { + return g.ownerEntityId +} + +func (g *GadgetClientEntity) GetTargetEntityId() uint32 { + return g.targetEntityId +} + +func (g *GadgetClientEntity) GetPropOwnerEntityId() uint32 { + return g.propOwnerEntityId +} + +type GadgetGatherEntity struct { + gatherId uint32 +} + +func (g *GadgetGatherEntity) GetGatherId() uint32 { + return g.gatherId +} + +type GadgetVehicleEntity struct { + vehicleId uint32 + owner *model.Player + maxStamina float32 + curStamina float32 + memberMap map[uint32]*model.Player // uint32 = pos +} + +func (g *GadgetVehicleEntity) GetVehicleId() uint32 { + return g.vehicleId +} + +func (g *GadgetVehicleEntity) GetOwner() *model.Player { + return g.owner +} + +func (g *GadgetVehicleEntity) GetMaxStamina() float32 { + return g.maxStamina +} + +func (g *GadgetVehicleEntity) GetCurStamina() float32 { + return g.curStamina +} + +func (g *GadgetVehicleEntity) SetCurStamina(curStamina float32) { + g.curStamina = curStamina +} + +func (g *GadgetVehicleEntity) GetMemberMap() map[uint32]*model.Player { + return g.memberMap +} diff --git a/gs/model/avatar.go b/gs/model/avatar.go index 7c2f5daf..f28946fb 100644 --- a/gs/model/avatar.go +++ b/gs/model/avatar.go @@ -54,28 +54,28 @@ func (p *Player) InitAvatar(avatar *Avatar) { // InitAvatarFightProp 初始化角色面板 func (p *Player) InitAvatarFightProp(avatar *Avatar) { - avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(avatar.AvatarId)] - if !ok { + avatarDataConfig := gdconf.GetAvatarDataById(int32(avatar.AvatarId)) + if avatarDataConfig == nil { logger.Error("avatarDataConfig error, avatarId: %v", avatar.AvatarId) return } avatar.FightPropMap = make(map[uint32]float32) - avatar.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_NONE)] = 0.0 + avatar.FightPropMap[uint32(constant.FIGHT_PROP_NONE)] = 0.0 // 白字攻防血 - avatar.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_ATTACK)] = float32(avatarDataConfig.GetBaseAttackByLevel(avatar.Level)) - avatar.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_DEFENSE)] = float32(avatarDataConfig.GetBaseDefenseByLevel(avatar.Level)) - avatar.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_HP)] = float32(avatarDataConfig.GetBaseHpByLevel(avatar.Level)) + avatar.FightPropMap[uint32(constant.FIGHT_PROP_BASE_ATTACK)] = float32(avatarDataConfig.GetBaseAttackByLevel(avatar.Level)) + avatar.FightPropMap[uint32(constant.FIGHT_PROP_BASE_DEFENSE)] = float32(avatarDataConfig.GetBaseDefenseByLevel(avatar.Level)) + avatar.FightPropMap[uint32(constant.FIGHT_PROP_BASE_HP)] = float32(avatarDataConfig.GetBaseHpByLevel(avatar.Level)) // 白字+绿字攻防血 - avatar.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_ATTACK)] = float32(avatarDataConfig.GetBaseAttackByLevel(avatar.Level)) - avatar.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_DEFENSE)] = float32(avatarDataConfig.GetBaseDefenseByLevel(avatar.Level)) - avatar.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_MAX_HP)] = float32(avatarDataConfig.GetBaseHpByLevel(avatar.Level)) + avatar.FightPropMap[uint32(constant.FIGHT_PROP_CUR_ATTACK)] = float32(avatarDataConfig.GetBaseAttackByLevel(avatar.Level)) + avatar.FightPropMap[uint32(constant.FIGHT_PROP_CUR_DEFENSE)] = float32(avatarDataConfig.GetBaseDefenseByLevel(avatar.Level)) + avatar.FightPropMap[uint32(constant.FIGHT_PROP_MAX_HP)] = float32(avatarDataConfig.GetBaseHpByLevel(avatar.Level)) // 当前血量 - avatar.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)] = float32(avatar.CurrHP) + avatar.FightPropMap[uint32(constant.FIGHT_PROP_CUR_HP)] = float32(avatar.CurrHP) // 双暴 - avatar.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CRITICAL)] = float32(avatarDataConfig.Critical) - avatar.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CRITICAL_HURT)] = float32(avatarDataConfig.CriticalHurt) + avatar.FightPropMap[uint32(constant.FIGHT_PROP_CRITICAL)] = float32(avatarDataConfig.Critical) + avatar.FightPropMap[uint32(constant.FIGHT_PROP_CRITICAL_HURT)] = float32(avatarDataConfig.CriticalHurt) // 元素充能 - avatar.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CHARGE_EFFICIENCY)] = 1.0 + avatar.FightPropMap[uint32(constant.FIGHT_PROP_CHARGE_EFFICIENCY)] = 1.0 p.SetCurrEnergy(avatar, avatar.CurrEnergy, true) } @@ -89,8 +89,8 @@ func (p *Player) GetAvatarIdByGuid(guid uint64) uint32 { } func (p *Player) AddAvatar(avatarId uint32) { - avatarDataConfig, exist := gdconf.CONF.AvatarDataMap[int32(avatarId)] - if !exist { + avatarDataConfig := gdconf.GetAvatarDataById(int32(avatarId)) + if avatarDataConfig == nil { logger.Error("avatar data config is nil, avatarId: %v", avatarId) return } @@ -103,14 +103,14 @@ func (p *Player) AddAvatar(avatarId uint32) { } else { skillDepotId = avatarDataConfig.SkillDepotId } - avatarSkillDepotDataConfig, exist := gdconf.CONF.AvatarSkillDepotDataMap[skillDepotId] - if !exist { + avatarSkillDepotDataConfig := gdconf.GetAvatarSkillDepotDataById(skillDepotId) + if avatarSkillDepotDataConfig == nil { logger.Error("avatar skill depot data config is nil, skillDepotId: %v", skillDepotId) return } avatar := &Avatar{ AvatarId: avatarId, - LifeState: constant.LifeStateConst.LIFE_ALIVE, + LifeState: constant.LIFE_STATE_ALIVE, Level: 1, Exp: 0, Promote: 0, @@ -155,16 +155,16 @@ func (p *Player) AddAvatar(avatarId uint32) { func (p *Player) SetCurrEnergy(avatar *Avatar, value float64, max bool) { var avatarSkillDataConfig *gdconf.AvatarSkillData = nil if avatar.AvatarId == 10000005 || avatar.AvatarId == 10000007 { - avatarSkillDepotDataConfig, exist := gdconf.CONF.AvatarSkillDepotDataMap[int32(avatar.SkillDepotId)] - if !exist { + avatarSkillDepotDataConfig := gdconf.GetAvatarSkillDepotDataById(int32(avatar.SkillDepotId)) + if avatarSkillDepotDataConfig == nil { return } - avatarSkillDataConfig, exist = gdconf.CONF.AvatarSkillDataMap[avatarSkillDepotDataConfig.EnergySkill] - if !exist { + avatarSkillDataConfig = gdconf.GetAvatarSkillDataById(avatarSkillDepotDataConfig.EnergySkill) + if avatarSkillDataConfig == nil { return } } else { - avatarSkillDataConfig = gdconf.CONF.GetAvatarEnergySkillConfig(avatar.AvatarId) + avatarSkillDataConfig = gdconf.GetAvatarEnergySkillConfig(avatar.AvatarId) } if avatarSkillDataConfig == nil { logger.Error("get avatar energy skill is nil, avatarId: %v", avatar.AvatarId) diff --git a/gs/model/item.go b/gs/model/item.go index 9dec9685..f73c6467 100644 --- a/gs/model/item.go +++ b/gs/model/item.go @@ -46,7 +46,7 @@ func (p *Player) GetItemIdByItemAndWeaponGuid(guid uint64) uint32 { } func (p *Player) GetItemCount(itemId uint32) uint32 { - prop, ok := constant.ItemConstantConst.VIRTUAL_ITEM_PROP[itemId] + prop, ok := constant.VIRTUAL_ITEM_PROP[itemId] if ok { value := p.PropertiesMap[prop] return value diff --git a/gs/model/reliquary.go b/gs/model/reliquary.go index be44b077..49ec1efe 100644 --- a/gs/model/reliquary.go +++ b/gs/model/reliquary.go @@ -48,8 +48,8 @@ func (p *Player) AddReliquary(itemId uint32, reliquaryId uint64, mainPropId uint AvatarId: 0, Guid: 0, } - itemDataConfig, exist := gdconf.CONF.ItemDataMap[int32(itemId)] - if !exist { + itemDataConfig := gdconf.GetItemDataById(int32(itemId)) + if itemDataConfig == nil { logger.Error("reliquary config is nil, itemId: %v", itemId) return } diff --git a/gs/model/stamina.go b/gs/model/stamina.go index 6c89a607..e2125c79 100644 --- a/gs/model/stamina.go +++ b/gs/model/stamina.go @@ -26,35 +26,35 @@ func (s *StaminaInfo) SetStaminaCost(state proto.MotionState) { // 消耗耐力 case proto.MotionState_MOTION_DASH: // 快速跑步 - s.CostStamina = constant.StaminaCostConst.DASH + s.CostStamina = constant.STAMINA_COST_DASH case proto.MotionState_MOTION_FLY, proto.MotionState_MOTION_FLY_FAST, proto.MotionState_MOTION_FLY_SLOW: // 滑翔 - s.CostStamina = constant.StaminaCostConst.FLY + s.CostStamina = constant.STAMINA_COST_FLY case proto.MotionState_MOTION_SWIM_DASH: // 快速游泳 - s.CostStamina = constant.StaminaCostConst.SWIM_DASH + s.CostStamina = constant.STAMINA_COST_SWIM_DASH case proto.MotionState_MOTION_SKIFF_DASH: // 浪船加速 - s.CostStamina = constant.StaminaCostConst.SKIFF_DASH + s.CostStamina = constant.STAMINA_COST_SKIFF_DASH // 恢复耐力 case proto.MotionState_MOTION_DANGER_RUN, proto.MotionState_MOTION_RUN: // 正常跑步 - s.CostStamina = constant.StaminaCostConst.RUN + s.CostStamina = constant.STAMINA_COST_RUN case proto.MotionState_MOTION_DANGER_STANDBY_MOVE, proto.MotionState_MOTION_DANGER_STANDBY, proto.MotionState_MOTION_LADDER_TO_STANDBY, proto.MotionState_MOTION_STANDBY_MOVE, proto.MotionState_MOTION_STANDBY: // 站立 - s.CostStamina = constant.StaminaCostConst.STANDBY + s.CostStamina = constant.STAMINA_COST_STANDBY case proto.MotionState_MOTION_DANGER_WALK, proto.MotionState_MOTION_WALK: // 走路 - s.CostStamina = constant.StaminaCostConst.WALK + s.CostStamina = constant.STAMINA_COST_WALK case proto.MotionState_MOTION_SKIFF_BOARDING, proto.MotionState_MOTION_SKIFF_NORMAL: // 浪船正常移动或停下 - s.CostStamina = constant.StaminaCostConst.SKIFF_NORMAL + s.CostStamina = constant.STAMINA_COST_SKIFF_NORMAL case proto.MotionState_MOTION_POWERED_FLY: // 滑翔加速 (风圈等) - s.CostStamina = constant.StaminaCostConst.POWERED_FLY + s.CostStamina = constant.STAMINA_COST_POWERED_FLY case proto.MotionState_MOTION_SKIFF_POWERED_DASH: // 浪船加速 (风圈等) - s.CostStamina = constant.StaminaCostConst.POWERED_SKIFF + s.CostStamina = constant.STAMINA_COST_POWERED_SKIFF // 缓慢动作将在客户端发送消息后消耗 case proto.MotionState_MOTION_CLIMB, proto.MotionState_MOTION_SWIM_MOVE: // 缓慢攀爬 或 缓慢游泳 diff --git a/gs/model/team.go b/gs/model/team.go index 7d169d6f..6d70dcb7 100644 --- a/gs/model/team.go +++ b/gs/model/team.go @@ -61,7 +61,7 @@ func (t *TeamInfo) UpdateTeam() { t.TeamResonancesConfig = make(map[int32]bool) teamElementTypeCountMap := make(map[uint16]uint8) for _, avatarId := range activeTeam.GetAvatarIdList() { - avatarSkillDataConfig := gdconf.CONF.GetAvatarEnergySkillConfig(avatarId) + avatarSkillDataConfig := gdconf.GetAvatarEnergySkillConfig(avatarId) if avatarSkillDataConfig == nil { logger.Error("get avatar energy skill is nil, avatarId: %v", avatarId) continue diff --git a/gs/model/weapon.go b/gs/model/weapon.go index c2a21f3e..ac51a5c3 100644 --- a/gs/model/weapon.go +++ b/gs/model/weapon.go @@ -68,8 +68,8 @@ func (p *Player) AddWeapon(itemId uint32, weaponId uint64) { Refinement: 0, Guid: 0, } - itemDataConfig, exist := gdconf.CONF.ItemDataMap[int32(itemId)] - if !exist { + itemDataConfig := gdconf.GetItemDataById(int32(itemId)) + if itemDataConfig == nil { logger.Error("weapon config is nil, itemId: %v", itemId) return }