mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 12:52:31 +08:00
配置表访问接口化,简化常量访问
This commit is contained in:
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
26
common/constant/default_ability.go
Normal file
26
common/constant/default_ability.go
Normal file
@@ -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")
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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 // 捉迷藏也就是风行迷宗
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
@@ -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 // 最大充能(充能条长度)
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 // 暂存的洞天宝钱 暂不确定
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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 // 双手剑 (每秒消耗)
|
||||
)
|
||||
|
||||
@@ -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 // 长枪
|
||||
)
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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]
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 // 采集物场景节点索引
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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]
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
})
|
||||
}
|
||||
// 突破等级奖励
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
// 普通物品直接扣除
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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},
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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]
|
||||
}
|
||||
|
||||
673
gs/game/world_scene.go
Normal file
673
gs/game/world_scene.go
Normal file
@@ -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
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
// 缓慢攀爬 或 缓慢游泳
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user