mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 16:02:26 +08:00
配置表访问接口化,简化常量访问
This commit is contained in:
@@ -1,357 +1,177 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var ActionReasonConst *ActionReason
|
const (
|
||||||
|
ActionReasonNone uint16 = 0
|
||||||
type ActionReason struct {
|
ActionReasonQuestItem uint16 = 1
|
||||||
None uint16
|
ActionReasonQuestReward uint16 = 2
|
||||||
QuestItem uint16
|
ActionReasonTrifle uint16 = 3
|
||||||
QuestReward uint16
|
ActionReasonShop uint16 = 4
|
||||||
Trifle uint16
|
ActionReasonPlayerUpgradeReward uint16 = 5
|
||||||
Shop uint16
|
ActionReasonAddAvatar uint16 = 6
|
||||||
PlayerUpgradeReward uint16
|
ActionReasonGadgetEnvAnimal uint16 = 7
|
||||||
AddAvatar uint16
|
ActionReasonMonsterEnvAnimal uint16 = 8
|
||||||
GadgetEnvAnimal uint16
|
ActionReasonCompound uint16 = 9
|
||||||
MonsterEnvAnimal uint16
|
ActionReasonCook uint16 = 10
|
||||||
Compound uint16
|
ActionReasonGather uint16 = 11
|
||||||
Cook uint16
|
ActionReasonMailAttachment uint16 = 12
|
||||||
Gather uint16
|
ActionReasonCityLevelupReturn uint16 = 15
|
||||||
MailAttachment uint16
|
ActionReasonCityLevelupReward uint16 = 17
|
||||||
CityLevelupReturn uint16
|
ActionReasonAreaExploreReward uint16 = 18
|
||||||
CityLevelupReward uint16
|
ActionReasonUnlockPointReward uint16 = 19
|
||||||
AreaExploreReward uint16
|
ActionReasonDungeonFirstPass uint16 = 20
|
||||||
UnlockPointReward uint16
|
ActionReasonDungeonPass uint16 = 21
|
||||||
DungeonFirstPass uint16
|
ActionReasonChangeElemType uint16 = 23
|
||||||
DungeonPass uint16
|
ActionReasonFetterOpen uint16 = 25
|
||||||
ChangeElemType uint16
|
ActionReasonDailyTaskScore uint16 = 26
|
||||||
FetterOpen uint16
|
ActionReasonDailyTaskHost uint16 = 27
|
||||||
DailyTaskScore uint16
|
ActionReasonRandTaskHost uint16 = 28
|
||||||
DailyTaskHost uint16
|
ActionReasonExpedition uint16 = 29
|
||||||
RandTaskHost uint16
|
ActionReasonGacha uint16 = 30
|
||||||
Expedition uint16
|
ActionReasonCombine uint16 = 31
|
||||||
Gacha uint16
|
ActionReasonRandTaskGuest uint16 = 32
|
||||||
Combine uint16
|
ActionReasonDailyTaskGuest uint16 = 33
|
||||||
RandTaskGuest uint16
|
ActionReasonForgeOutput uint16 = 34
|
||||||
DailyTaskGuest uint16
|
ActionReasonForgeReturn uint16 = 35
|
||||||
ForgeOutput uint16
|
ActionReasonInitAvatar uint16 = 36
|
||||||
ForgeReturn uint16
|
ActionReasonMonsterDie uint16 = 37
|
||||||
InitAvatar uint16
|
ActionReasonGm uint16 = 38
|
||||||
MonsterDie uint16
|
ActionReasonOpenChest uint16 = 39
|
||||||
Gm uint16
|
ActionReasonGadgetDie uint16 = 40
|
||||||
OpenChest uint16
|
ActionReasonMonsterChangeHp uint16 = 41
|
||||||
GadgetDie uint16
|
ActionReasonSubfieldDrop uint16 = 42
|
||||||
MonsterChangeHp uint16
|
ActionReasonPushTipsReward uint16 = 43
|
||||||
SubfieldDrop uint16
|
ActionReasonActivityMonsterDrop uint16 = 44
|
||||||
PushTipsReward uint16
|
ActionReasonActivityGather uint16 = 45
|
||||||
ActivityMonsterDrop uint16
|
ActionReasonActivitySubfieldDrop uint16 = 46
|
||||||
ActivityGather uint16
|
ActionReasonTowerScheduleReward uint16 = 47
|
||||||
ActivitySubfieldDrop uint16
|
ActionReasonTowerFloorStarReward uint16 = 48
|
||||||
TowerScheduleReward uint16
|
ActionReasonTowerFirstPassReward uint16 = 49
|
||||||
TowerFloorStarReward uint16
|
ActionReasonTowerDailyReward uint16 = 50
|
||||||
TowerFirstPassReward uint16
|
ActionReasonHitClientTrivialEntity uint16 = 51
|
||||||
TowerDailyReward uint16
|
ActionReasonOpenWorldBossChest uint16 = 52
|
||||||
HitClientTrivialEntity uint16
|
ActionReasonMaterialDeleteReturn uint16 = 53
|
||||||
OpenWorldBossChest uint16
|
ActionReasonSignInReward uint16 = 54
|
||||||
MaterialDeleteReturn uint16
|
ActionReasonOpenBlossomChest uint16 = 55
|
||||||
SignInReward uint16
|
ActionReasonRecharge uint16 = 56
|
||||||
OpenBlossomChest uint16
|
ActionReasonBonusActivityReward uint16 = 57
|
||||||
Recharge uint16
|
ActionReasonTowerCommemorativeReward uint16 = 58
|
||||||
BonusActivityReward uint16
|
ActionReasonTowerSkipFloorReward uint16 = 59
|
||||||
TowerCommemorativeReward uint16
|
ActionReasonRechargeBonus uint16 = 60
|
||||||
TowerSkipFloorReward uint16
|
ActionReasonRechargeCard uint16 = 61
|
||||||
RechargeBonus uint16
|
ActionReasonRechargeCardDaily uint16 = 62
|
||||||
RechargeCard uint16
|
ActionReasonRechargeCardReplace uint16 = 63
|
||||||
RechargeCardDaily uint16
|
ActionReasonRechargeCardReplaceFree uint16 = 64
|
||||||
RechargeCardReplace uint16
|
ActionReasonRechargePlayReplace uint16 = 65
|
||||||
RechargeCardReplaceFree uint16
|
ActionReasonMpPlayTakeReward uint16 = 66
|
||||||
RechargePlayReplace uint16
|
ActionReasonActivityWatcher uint16 = 67
|
||||||
MpPlayTakeReward uint16
|
ActionReasonSalesmanDeliverItem uint16 = 68
|
||||||
ActivityWatcher uint16
|
ActionReasonSalesmanReward uint16 = 69
|
||||||
SalesmanDeliverItem uint16
|
ActionReasonRebate uint16 = 70
|
||||||
SalesmanReward uint16
|
ActionReasonMcoinExchangeHcoin uint16 = 71
|
||||||
Rebate uint16
|
ActionReasonDailyTaskExchangeLegendaryKey uint16 = 72
|
||||||
McoinExchangeHcoin uint16
|
ActionReasonUnlockPersonLine uint16 = 73
|
||||||
DailyTaskExchangeLegendaryKey uint16
|
ActionReasonFetterLevelReward uint16 = 74
|
||||||
UnlockPersonLine uint16
|
ActionReasonBuyResin uint16 = 75
|
||||||
FetterLevelReward uint16
|
ActionReasonRechargePackage uint16 = 76
|
||||||
BuyResin uint16
|
ActionReasonDeliveryDailyReward uint16 = 77
|
||||||
RechargePackage uint16
|
ActionReasonCityReputationLevel uint16 = 78
|
||||||
DeliveryDailyReward uint16
|
ActionReasonCityReputationQuest uint16 = 79
|
||||||
CityReputationLevel uint16
|
ActionReasonCityReputationRequest uint16 = 80
|
||||||
CityReputationQuest uint16
|
ActionReasonCityReputationExplore uint16 = 81
|
||||||
CityReputationRequest uint16
|
ActionReasonOffergingLevel uint16 = 82
|
||||||
CityReputationExplore uint16
|
ActionReasonRoutineHost uint16 = 83
|
||||||
OffergingLevel uint16
|
ActionReasonRoutineGuest uint16 = 84
|
||||||
RoutineHost uint16
|
ActionReasonTreasureMapSpotToken uint16 = 89
|
||||||
RoutineGuest uint16
|
ActionReasonTreasureMapBonusLevelReward uint16 = 90
|
||||||
TreasureMapSpotToken uint16
|
ActionReasonTreasureMapMpReward uint16 = 91
|
||||||
TreasureMapBonusLevelReward uint16
|
ActionReasonConvert uint16 = 92
|
||||||
TreasureMapMpReward uint16
|
ActionReasonOverflowTransform uint16 = 93
|
||||||
Convert uint16
|
ActionReasonActivityAvatarSelectionReward uint16 = 96
|
||||||
OverflowTransform uint16
|
ActionReasonActivityWatcherBatch uint16 = 97
|
||||||
ActivityAvatarSelectionReward uint16
|
ActionReasonHitTreeDrop uint16 = 98
|
||||||
ActivityWatcherBatch uint16
|
ActionReasonGetHomeLevelupReward uint16 = 99
|
||||||
HitTreeDrop uint16
|
ActionReasonHomeDefaultFurniture uint16 = 100
|
||||||
GetHomeLevelupReward uint16
|
ActionReasonActivityCond uint16 = 101
|
||||||
HomeDefaultFurniture uint16
|
ActionReasonBattlePassNotify uint16 = 102
|
||||||
ActivityCond uint16
|
ActionReasonPlayerUseItem uint16 = 1001
|
||||||
BattlePassNotify uint16
|
ActionReasonDropItem uint16 = 1002
|
||||||
PlayerUseItem uint16
|
ActionReasonWeaponUpgrade uint16 = 1011
|
||||||
DropItem uint16
|
ActionReasonWeaponPromote uint16 = 1012
|
||||||
WeaponUpgrade uint16
|
ActionReasonWeaponAwaken uint16 = 1013
|
||||||
WeaponPromote uint16
|
ActionReasonRelicUpgrade uint16 = 1014
|
||||||
WeaponAwaken uint16
|
ActionReasonAbility uint16 = 1015
|
||||||
RelicUpgrade uint16
|
ActionReasonDungeonStatueDrop uint16 = 1016
|
||||||
Ability uint16
|
ActionReasonOfflineMsg uint16 = 1017
|
||||||
DungeonStatueDrop uint16
|
ActionReasonAvatarUpgrade uint16 = 1018
|
||||||
OfflineMsg uint16
|
ActionReasonAvatarPromote uint16 = 1019
|
||||||
AvatarUpgrade uint16
|
ActionReasonQuestAction uint16 = 1021
|
||||||
AvatarPromote uint16
|
ActionReasonCityLevelup uint16 = 1022
|
||||||
QuestAction uint16
|
ActionReasonUpgradeSkill uint16 = 1024
|
||||||
CityLevelup uint16
|
ActionReasonUnlockTalent uint16 = 1025
|
||||||
UpgradeSkill uint16
|
ActionReasonUpgradeProudSkill uint16 = 1026
|
||||||
UnlockTalent uint16
|
ActionReasonPlayerLevelLimitUp uint16 = 1027
|
||||||
UpgradeProudSkill uint16
|
ActionReasonDungeonDaily uint16 = 1028
|
||||||
PlayerLevelLimitUp uint16
|
ActionReasonItemGiving uint16 = 1030
|
||||||
DungeonDaily uint16
|
ActionReasonForgeCost uint16 = 1031
|
||||||
ItemGiving uint16
|
ActionReasonInvestigationReward uint16 = 1032
|
||||||
ForgeCost uint16
|
ActionReasonInvestigationTargetReward uint16 = 1033
|
||||||
InvestigationReward uint16
|
ActionReasonGadgetInteract uint16 = 1034
|
||||||
InvestigationTargetReward uint16
|
ActionReasonSeaLampCiMaterial uint16 = 1036
|
||||||
GadgetInteract uint16
|
ActionReasonSeaLampContributionReward uint16 = 1037
|
||||||
SeaLampCiMaterial uint16
|
ActionReasonSeaLampPhaseReward uint16 = 1038
|
||||||
SeaLampContributionReward uint16
|
ActionReasonSeaLampFlyLamp uint16 = 1039
|
||||||
SeaLampPhaseReward uint16
|
ActionReasonAutoRecover uint16 = 1040
|
||||||
SeaLampFlyLamp uint16
|
ActionReasonActivityExpireItem uint16 = 1041
|
||||||
AutoRecover uint16
|
ActionReasonSubCoinNegative uint16 = 1042
|
||||||
ActivityExpireItem uint16
|
ActionReasonBargainDeduct uint16 = 1043
|
||||||
SubCoinNegative uint16
|
ActionReasonBattlePassPaidReward uint16 = 1044
|
||||||
BargainDeduct uint16
|
ActionReasonBattlePassLevelReward uint16 = 1045
|
||||||
BattlePassPaidReward uint16
|
ActionReasonTrialAvatarActivityFirstPassReward uint16 = 1046
|
||||||
BattlePassLevelReward uint16
|
ActionReasonBuyBattlePassLevel uint16 = 1047
|
||||||
TrialAvatarActivityFirstPassReward uint16
|
ActionReasonGrantBirthdayBenefit uint16 = 1048
|
||||||
BuyBattlePassLevel uint16
|
ActionReasonAchievementReward uint16 = 1049
|
||||||
GrantBirthdayBenefit uint16
|
ActionReasonAchievementGoalReward uint16 = 1050
|
||||||
AchievementReward uint16
|
ActionReasonFirstShareToSocialNetwork uint16 = 1051
|
||||||
AchievementGoalReward uint16
|
ActionReasonDestroyMaterial uint16 = 1052
|
||||||
FirstShareToSocialNetwork uint16
|
ActionReasonCodexLevelupReward uint16 = 1053
|
||||||
DestroyMaterial uint16
|
ActionReasonHuntingOfferReward uint16 = 1054
|
||||||
CodexLevelupReward uint16
|
ActionReasonUseWidgetAnchorPoint uint16 = 1055
|
||||||
HuntingOfferReward uint16
|
ActionReasonUseWidgetBonfire uint16 = 1056
|
||||||
UseWidgetAnchorPoint uint16
|
ActionReasonUngradeWeaponReturnMaterial uint16 = 1057
|
||||||
UseWidgetBonfire uint16
|
ActionReasonUseWidgetOneoffGatherPointDetector uint16 = 1058
|
||||||
UngradeWeaponReturnMaterial uint16
|
ActionReasonUseWidgetClientCollector uint16 = 1059
|
||||||
UseWidgetOneoffGatherPointDetector uint16
|
ActionReasonUseWidgetClientDetector uint16 = 1060
|
||||||
UseWidgetClientCollector uint16
|
ActionReasonTakeGeneralReward uint16 = 1061
|
||||||
UseWidgetClientDetector uint16
|
ActionReasonAsterTakeSpecialReward uint16 = 1062
|
||||||
TakeGeneralReward uint16
|
ActionReasonRemoveCodexBook uint16 = 1063
|
||||||
AsterTakeSpecialReward uint16
|
ActionReasonOfferingItem uint16 = 1064
|
||||||
RemoveCodexBook uint16
|
ActionReasonUseWidgetGadgetBuilder uint16 = 1065
|
||||||
OfferingItem uint16
|
ActionReasonEffigyFirstPassReward uint16 = 1066
|
||||||
UseWidgetGadgetBuilder uint16
|
ActionReasonEffigyReward uint16 = 1067
|
||||||
EffigyFirstPassReward uint16
|
ActionReasonReunionFirstGiftReward uint16 = 1068
|
||||||
EffigyReward uint16
|
ActionReasonReunionSignInReward uint16 = 1069
|
||||||
ReunionFirstGiftReward uint16
|
ActionReasonReunionWatcherReward uint16 = 1070
|
||||||
ReunionSignInReward uint16
|
ActionReasonSalesmanMpReward uint16 = 1071
|
||||||
ReunionWatcherReward uint16
|
ActionReasonActionReasionAvatarPromoteReward uint16 = 1072
|
||||||
SalesmanMpReward uint16
|
ActionReasonBlessingRedeemReward uint16 = 1073
|
||||||
ActionReasionAvatarPromoteReward uint16
|
ActionReasonActionMiracleRingReward uint16 = 1074
|
||||||
BlessingRedeemReward uint16
|
ActionReasonExpeditionReward uint16 = 1075
|
||||||
ActionMiracleRingReward uint16
|
ActionReasonTreasureMapRemoveDetector uint16 = 1076
|
||||||
ExpeditionReward uint16
|
ActionReasonMechanicusDungeonTicket uint16 = 1077
|
||||||
TreasureMapRemoveDetector uint16
|
ActionReasonMechanicusLevelupGear uint16 = 1078
|
||||||
MechanicusDungeonTicket uint16
|
ActionReasonMechanicusBattleSettle uint16 = 1079
|
||||||
MechanicusLevelupGear uint16
|
ActionReasonRegionSearchReward uint16 = 1080
|
||||||
MechanicusBattleSettle uint16
|
ActionReasonUnlockCoopChapter uint16 = 1081
|
||||||
RegionSearchReward uint16
|
ActionReasonTakeCoopReward uint16 = 1082
|
||||||
UnlockCoopChapter uint16
|
ActionReasonFleurFairDungeonReward uint16 = 1083
|
||||||
TakeCoopReward uint16
|
ActionReasonActivityScore uint16 = 1084
|
||||||
FleurFairDungeonReward uint16
|
ActionReasonChannellerSlabOneoffDungeonReward uint16 = 1085
|
||||||
ActivityScore uint16
|
ActionReasonFurnitureMakeStart uint16 = 1086
|
||||||
ChannellerSlabOneoffDungeonReward uint16
|
ActionReasonFurnitureMakeTake uint16 = 1087
|
||||||
FurnitureMakeStart uint16
|
ActionReasonFurnitureMakeCancel uint16 = 1088
|
||||||
FurnitureMakeTake uint16
|
ActionReasonFurnitureMakeFastFinish uint16 = 1089
|
||||||
FurnitureMakeCancel uint16
|
ActionReasonChannellerSlabLoopDungeonFirstPassReward uint16 = 1090
|
||||||
FurnitureMakeFastFinish uint16
|
ActionReasonChannellerSlabLoopDungeonScoreReward uint16 = 1091
|
||||||
ChannellerSlabLoopDungeonFirstPassReward uint16
|
ActionReasonHomeLimitedShopBuy uint16 = 1092
|
||||||
ChannellerSlabLoopDungeonScoreReward uint16
|
ActionReasonHomeCoinCollect uint16 = 1093
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,25 +1,11 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var ClimateTypeConst *ClimateType
|
const (
|
||||||
|
CLIMATE_TYPE_NONE uint16 = 0
|
||||||
type ClimateType struct {
|
CLIMATE_TYPE_SUNNY uint16 = 1
|
||||||
CLIMATE_NONE uint16
|
CLIMATE_TYPE_CLOUDY uint16 = 2
|
||||||
CLIMATE_SUNNY uint16
|
CLIMATE_TYPE_RAIN uint16 = 3
|
||||||
CLIMATE_CLOUDY uint16
|
CLIMATE_TYPE_THUNDERSTORM uint16 = 4
|
||||||
CLIMATE_RAIN uint16
|
CLIMATE_TYPE_SNOW uint16 = 5
|
||||||
CLIMATE_THUNDERSTORM uint16
|
CLIMATE_TYPE_MIST uint16 = 6
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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 {
|
type ElementType struct {
|
||||||
None *ElementTypeValue
|
None *ElementTypeValue
|
||||||
Fire *ElementTypeValue
|
Fire *ElementTypeValue
|
||||||
Water *ElementTypeValue
|
Water *ElementTypeValue
|
||||||
Grass *ElementTypeValue
|
Grass *ElementTypeValue
|
||||||
Electric *ElementTypeValue
|
Electric *ElementTypeValue
|
||||||
Ice *ElementTypeValue
|
Ice *ElementTypeValue
|
||||||
Frozen *ElementTypeValue
|
Frozen *ElementTypeValue
|
||||||
Wind *ElementTypeValue
|
Wind *ElementTypeValue
|
||||||
Rock *ElementTypeValue
|
Rock *ElementTypeValue
|
||||||
AntiFire *ElementTypeValue
|
AntiFire *ElementTypeValue
|
||||||
Default *ElementTypeValue
|
Default *ElementTypeValue
|
||||||
STRING_MAP map[string]*ElementTypeValue
|
VALUE_MAP map[uint16]*ElementTypeValue
|
||||||
VALUE_MAP map[uint16]*ElementTypeValue
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitElementTypeConst() {
|
func init() {
|
||||||
ElementTypeConst = new(ElementType)
|
ElementTypeConst = new(ElementType)
|
||||||
|
|
||||||
ElementTypeConst.None = &ElementTypeValue{
|
ElementTypeConst.None = &ElementTypeValue{
|
||||||
0,
|
0,
|
||||||
FightPropertyConst.FIGHT_PROP_CUR_FIRE_ENERGY,
|
FIGHT_PROP_CUR_FIRE_ENERGY,
|
||||||
FightPropertyConst.FIGHT_PROP_MAX_FIRE_ENERGY,
|
FIGHT_PROP_MAX_FIRE_ENERGY,
|
||||||
0,
|
0,
|
||||||
"",
|
"",
|
||||||
endec.Hk4eAbilityHashCode(""),
|
endec.Hk4eAbilityHashCode(""),
|
||||||
}
|
}
|
||||||
ElementTypeConst.Fire = &ElementTypeValue{
|
ElementTypeConst.Fire = &ElementTypeValue{
|
||||||
1,
|
1,
|
||||||
FightPropertyConst.FIGHT_PROP_CUR_FIRE_ENERGY,
|
FIGHT_PROP_CUR_FIRE_ENERGY,
|
||||||
FightPropertyConst.FIGHT_PROP_MAX_FIRE_ENERGY,
|
FIGHT_PROP_MAX_FIRE_ENERGY,
|
||||||
10101,
|
10101,
|
||||||
"TeamResonance_Fire_Lv2",
|
"TeamResonance_Fire_Lv2",
|
||||||
endec.Hk4eAbilityHashCode("TeamResonance_Fire_Lv2"),
|
endec.Hk4eAbilityHashCode("TeamResonance_Fire_Lv2"),
|
||||||
}
|
}
|
||||||
ElementTypeConst.Water = &ElementTypeValue{
|
ElementTypeConst.Water = &ElementTypeValue{
|
||||||
2,
|
2,
|
||||||
FightPropertyConst.FIGHT_PROP_CUR_WATER_ENERGY,
|
FIGHT_PROP_CUR_WATER_ENERGY,
|
||||||
FightPropertyConst.FIGHT_PROP_MAX_WATER_ENERGY,
|
FIGHT_PROP_MAX_WATER_ENERGY,
|
||||||
10201,
|
10201,
|
||||||
"TeamResonance_Water_Lv2",
|
"TeamResonance_Water_Lv2",
|
||||||
endec.Hk4eAbilityHashCode("TeamResonance_Water_Lv2"),
|
endec.Hk4eAbilityHashCode("TeamResonance_Water_Lv2"),
|
||||||
}
|
}
|
||||||
ElementTypeConst.Grass = &ElementTypeValue{
|
ElementTypeConst.Grass = &ElementTypeValue{
|
||||||
3,
|
3,
|
||||||
FightPropertyConst.FIGHT_PROP_CUR_GRASS_ENERGY,
|
FIGHT_PROP_CUR_GRASS_ENERGY,
|
||||||
FightPropertyConst.FIGHT_PROP_MAX_GRASS_ENERGY,
|
FIGHT_PROP_MAX_GRASS_ENERGY,
|
||||||
0,
|
0,
|
||||||
"",
|
"",
|
||||||
endec.Hk4eAbilityHashCode(""),
|
endec.Hk4eAbilityHashCode(""),
|
||||||
}
|
}
|
||||||
ElementTypeConst.Electric = &ElementTypeValue{
|
ElementTypeConst.Electric = &ElementTypeValue{
|
||||||
4,
|
4,
|
||||||
FightPropertyConst.FIGHT_PROP_CUR_ELEC_ENERGY,
|
FIGHT_PROP_CUR_ELEC_ENERGY,
|
||||||
FightPropertyConst.FIGHT_PROP_MAX_ELEC_ENERGY,
|
FIGHT_PROP_MAX_ELEC_ENERGY,
|
||||||
10401,
|
10401,
|
||||||
"TeamResonance_Electric_Lv2",
|
"TeamResonance_Electric_Lv2",
|
||||||
endec.Hk4eAbilityHashCode("TeamResonance_Electric_Lv2"),
|
endec.Hk4eAbilityHashCode("TeamResonance_Electric_Lv2"),
|
||||||
}
|
}
|
||||||
ElementTypeConst.Ice = &ElementTypeValue{
|
ElementTypeConst.Ice = &ElementTypeValue{
|
||||||
5,
|
5,
|
||||||
FightPropertyConst.FIGHT_PROP_CUR_ICE_ENERGY,
|
FIGHT_PROP_CUR_ICE_ENERGY,
|
||||||
FightPropertyConst.FIGHT_PROP_MAX_ICE_ENERGY,
|
FIGHT_PROP_MAX_ICE_ENERGY,
|
||||||
10601,
|
10601,
|
||||||
"TeamResonance_Ice_Lv2",
|
"TeamResonance_Ice_Lv2",
|
||||||
endec.Hk4eAbilityHashCode("TeamResonance_Ice_Lv2"),
|
endec.Hk4eAbilityHashCode("TeamResonance_Ice_Lv2"),
|
||||||
}
|
}
|
||||||
ElementTypeConst.Frozen = &ElementTypeValue{
|
ElementTypeConst.Frozen = &ElementTypeValue{
|
||||||
6,
|
6,
|
||||||
FightPropertyConst.FIGHT_PROP_CUR_ICE_ENERGY,
|
FIGHT_PROP_CUR_ICE_ENERGY,
|
||||||
FightPropertyConst.FIGHT_PROP_MAX_ICE_ENERGY,
|
FIGHT_PROP_MAX_ICE_ENERGY,
|
||||||
0,
|
0,
|
||||||
"",
|
"",
|
||||||
endec.Hk4eAbilityHashCode(""),
|
endec.Hk4eAbilityHashCode(""),
|
||||||
}
|
}
|
||||||
ElementTypeConst.Wind = &ElementTypeValue{
|
ElementTypeConst.Wind = &ElementTypeValue{
|
||||||
7,
|
7,
|
||||||
FightPropertyConst.FIGHT_PROP_CUR_WIND_ENERGY,
|
FIGHT_PROP_CUR_WIND_ENERGY,
|
||||||
FightPropertyConst.FIGHT_PROP_MAX_WIND_ENERGY,
|
FIGHT_PROP_MAX_WIND_ENERGY,
|
||||||
10301,
|
10301,
|
||||||
"TeamResonance_Wind_Lv2",
|
"TeamResonance_Wind_Lv2",
|
||||||
endec.Hk4eAbilityHashCode("TeamResonance_Wind_Lv2"),
|
endec.Hk4eAbilityHashCode("TeamResonance_Wind_Lv2"),
|
||||||
}
|
}
|
||||||
ElementTypeConst.Rock = &ElementTypeValue{
|
ElementTypeConst.Rock = &ElementTypeValue{
|
||||||
8,
|
8,
|
||||||
FightPropertyConst.FIGHT_PROP_CUR_ROCK_ENERGY,
|
FIGHT_PROP_CUR_ROCK_ENERGY,
|
||||||
FightPropertyConst.FIGHT_PROP_MAX_ROCK_ENERGY,
|
FIGHT_PROP_MAX_ROCK_ENERGY,
|
||||||
10701,
|
10701,
|
||||||
"TeamResonance_Rock_Lv2",
|
"TeamResonance_Rock_Lv2",
|
||||||
endec.Hk4eAbilityHashCode("TeamResonance_Rock_Lv2"),
|
endec.Hk4eAbilityHashCode("TeamResonance_Rock_Lv2"),
|
||||||
}
|
}
|
||||||
ElementTypeConst.AntiFire = &ElementTypeValue{
|
ElementTypeConst.AntiFire = &ElementTypeValue{
|
||||||
9,
|
9,
|
||||||
FightPropertyConst.FIGHT_PROP_CUR_FIRE_ENERGY,
|
FIGHT_PROP_CUR_FIRE_ENERGY,
|
||||||
FightPropertyConst.FIGHT_PROP_MAX_FIRE_ENERGY,
|
FIGHT_PROP_MAX_FIRE_ENERGY,
|
||||||
0,
|
0,
|
||||||
"",
|
"",
|
||||||
endec.Hk4eAbilityHashCode(""),
|
endec.Hk4eAbilityHashCode(""),
|
||||||
}
|
}
|
||||||
ElementTypeConst.Default = &ElementTypeValue{
|
ElementTypeConst.Default = &ElementTypeValue{
|
||||||
255,
|
255,
|
||||||
FightPropertyConst.FIGHT_PROP_CUR_FIRE_ENERGY,
|
FIGHT_PROP_CUR_FIRE_ENERGY,
|
||||||
FightPropertyConst.FIGHT_PROP_MAX_FIRE_ENERGY,
|
FIGHT_PROP_MAX_FIRE_ENERGY,
|
||||||
10801,
|
10801,
|
||||||
"TeamResonance_AllDifferent",
|
"TeamResonance_AllDifferent",
|
||||||
endec.Hk4eAbilityHashCode("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 = make(map[uint16]*ElementTypeValue)
|
||||||
|
|
||||||
ElementTypeConst.VALUE_MAP[0] = ElementTypeConst.None
|
ElementTypeConst.VALUE_MAP[0] = ElementTypeConst.None
|
||||||
ElementTypeConst.VALUE_MAP[1] = ElementTypeConst.Fire
|
ElementTypeConst.VALUE_MAP[1] = ElementTypeConst.Fire
|
||||||
ElementTypeConst.VALUE_MAP[2] = ElementTypeConst.Water
|
ElementTypeConst.VALUE_MAP[2] = ElementTypeConst.Water
|
||||||
|
|||||||
@@ -1,75 +1,36 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var EnterReasonConst *EnterReason
|
const (
|
||||||
|
EnterReasonNone uint16 = 0
|
||||||
type EnterReason struct {
|
EnterReasonLogin uint16 = 1 // 登录
|
||||||
None uint16
|
EnterReasonDungeonReplay uint16 = 11 // 秘境重新挑战
|
||||||
Login uint16 // 登录
|
EnterReasonDungeonReviveOnWaypoint uint16 = 12 // 秘境重生
|
||||||
DungeonReplay uint16 // 秘境重新挑战
|
EnterReasonDungeonEnter uint16 = 13 // 秘境进入
|
||||||
DungeonReviveOnWaypoint uint16 // 秘境重生
|
EnterReasonDungeonQuit uint16 = 14 // 秘境离开
|
||||||
DungeonEnter uint16 // 秘境进入
|
EnterReasonGm uint16 = 21 // 管理员
|
||||||
DungeonQuit uint16 // 秘境离开
|
EnterReasonQuestRollback uint16 = 31 // 任务回滚
|
||||||
Gm uint16 // 管理员
|
EnterReasonRevival uint16 = 32 // 重生
|
||||||
QuestRollback uint16 // 任务回滚
|
EnterReasonPersonalScene uint16 = 41 // 个人场景
|
||||||
Revival uint16 // 重生
|
EnterReasonTransPoint uint16 = 42 // 传送点
|
||||||
PersonalScene uint16 // 个人场景
|
EnterReasonClientTransmit uint16 = 43 // 客户端传送
|
||||||
TransPoint uint16 // 传送点
|
EnterReasonForceDragBack uint16 = 44 // 强制后退
|
||||||
ClientTransmit uint16 // 客户端传送
|
EnterReasonTeamKick uint16 = 51 // 队伍踢出
|
||||||
ForceDragBack uint16 // 强制后退
|
EnterReasonTeamJoin uint16 = 52 // 队伍加入
|
||||||
TeamKick uint16 // 队伍踢出
|
EnterReasonTeamBack uint16 = 53 // 队伍返回
|
||||||
TeamJoin uint16 // 队伍加入
|
EnterReasonMuip uint16 = 54 // 与原神项目组的某个服务器组件相关
|
||||||
TeamBack uint16 // 队伍返回
|
EnterReasonDungeonInviteAccept uint16 = 55 // 秘境邀请接受
|
||||||
Muip uint16 // ??
|
EnterReasonLua uint16 = 56 // 脚本
|
||||||
DungeonInviteAccept uint16 // 秘境邀请接受
|
EnterReasonActivityLoadTerrain uint16 = 57 // 活动加载地形
|
||||||
Lua uint16 // 脚本
|
EnterReasonHostFromSingleToMp uint16 = 58 // 房主从单人到多人
|
||||||
ActivityLoadTerrain uint16 // 活动加载地形
|
EnterReasonMpPlay uint16 = 59 // 多人游戏
|
||||||
HostFromSingleToMp uint16 // 房主从单人到多人
|
EnterReasonAnchorPoint uint16 = 60 // 迷你锚点
|
||||||
MpPlay uint16 // 多人游戏
|
EnterReasonLuaSkipUi uint16 = 61 // 脚本跳过UI
|
||||||
AnchorPoint uint16 // 迷你锚点
|
EnterReasonReloadTerrain uint16 = 62 // 重载地形
|
||||||
LuaSkipUi uint16 // 脚本跳过UI
|
EnterReasonDraftTransfer uint16 = 63 // 某个东西传送 ??
|
||||||
ReloadTerrain uint16 // 重载地形
|
EnterReasonEnterHome uint16 = 64 // 进入尘歌壶
|
||||||
DraftTransfer uint16 // 某个东西传送 ??
|
EnterReasonExitHome uint16 = 65 // 离开尘歌壶
|
||||||
EnterHome uint16 // 进入尘歌壶
|
EnterReasonChangeHomeModule uint16 = 66 // 更改尘歌壶模块
|
||||||
ExitHome uint16 // 离开尘歌壶
|
EnterReasonGallery uint16 = 67 // ??
|
||||||
ChangeHomeModule uint16 // 更改尘歌壶模块
|
EnterReasonHomeSceneJump uint16 = 68 // 尘歌壶场景跳转
|
||||||
Gallery uint16 // ??
|
EnterReasonHideAndSeek uint16 = 69 // 捉迷藏也就是风行迷宗
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,25 +1,11 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var EntityIdTypeConst *EntityIdType
|
const (
|
||||||
|
ENTITY_ID_TYPE_AVATAR uint16 = 0x01
|
||||||
type EntityIdType struct {
|
ENTITY_ID_TYPE_MONSTER uint16 = 0x02
|
||||||
AVATAR uint16
|
ENTITY_ID_TYPE_NPC uint16 = 0x03
|
||||||
MONSTER uint16
|
ENTITY_ID_TYPE_GADGET uint16 = 0x04
|
||||||
NPC uint16
|
ENTITY_ID_TYPE_WEAPON uint16 = 0x06
|
||||||
GADGET uint16
|
ENTITY_ID_TYPE_TEAM uint16 = 0x09
|
||||||
WEAPON uint16
|
ENTITY_ID_TYPE_MPLEVEL uint16 = 0x0b
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,180 +1,59 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var EntityTypeConst *EntityType
|
const (
|
||||||
|
EntityTypeNone uint16 = 0
|
||||||
type EntityType struct {
|
EntityTypeAvatar uint16 = 1
|
||||||
None uint16
|
EntityTypeMonster uint16 = 2
|
||||||
Avatar uint16
|
EntityTypeBullet uint16 = 3
|
||||||
Monster uint16
|
EntityTypeAttackPhyisicalUnit uint16 = 4
|
||||||
Bullet uint16
|
EntityTypeAOE uint16 = 5
|
||||||
AttackPhyisicalUnit uint16
|
EntityTypeCamera uint16 = 6
|
||||||
AOE uint16
|
EntityTypeEnviroArea uint16 = 7
|
||||||
Camera uint16
|
EntityTypeEquip uint16 = 8
|
||||||
EnviroArea uint16
|
EntityTypeMonsterEquip uint16 = 9
|
||||||
Equip uint16
|
EntityTypeGrass uint16 = 10
|
||||||
MonsterEquip uint16
|
EntityTypeLevel uint16 = 11
|
||||||
Grass uint16
|
EntityTypeNPC uint16 = 12
|
||||||
Level uint16
|
EntityTypeTransPointFirst uint16 = 13
|
||||||
NPC uint16
|
EntityTypeTransPointFirstGadget uint16 = 14
|
||||||
TransPointFirst uint16
|
EntityTypeTransPointSecond uint16 = 15
|
||||||
TransPointFirstGadget uint16
|
EntityTypeTransPointSecondGadget uint16 = 16
|
||||||
TransPointSecond uint16
|
EntityTypeDropItem uint16 = 17
|
||||||
TransPointSecondGadget uint16
|
EntityTypeField uint16 = 18
|
||||||
DropItem uint16
|
EntityTypeGadget uint16 = 19
|
||||||
Field uint16
|
EntityTypeWater uint16 = 20
|
||||||
Gadget uint16
|
EntityTypeGatherPoint uint16 = 21
|
||||||
Water uint16
|
EntityTypeGatherObject uint16 = 22
|
||||||
GatherPoint uint16
|
EntityTypeAirflowField uint16 = 23
|
||||||
GatherObject uint16
|
EntityTypeSpeedupField uint16 = 24
|
||||||
AirflowField uint16
|
EntityTypeGear uint16 = 25
|
||||||
SpeedupField uint16
|
EntityTypeChest uint16 = 26
|
||||||
Gear uint16
|
EntityTypeEnergyBall uint16 = 27
|
||||||
Chest uint16
|
EntityTypeElemCrystal uint16 = 28
|
||||||
EnergyBall uint16
|
EntityTypeTimeline uint16 = 29
|
||||||
ElemCrystal uint16
|
EntityTypeWorktop uint16 = 30
|
||||||
Timeline uint16
|
EntityTypeTeam uint16 = 31
|
||||||
Worktop uint16
|
EntityTypePlatform uint16 = 32
|
||||||
Team uint16
|
EntityTypeAmberWind uint16 = 33
|
||||||
Platform uint16
|
EntityTypeEnvAnimal uint16 = 34
|
||||||
AmberWind uint16
|
EntityTypeSealGadget uint16 = 35
|
||||||
EnvAnimal uint16
|
EntityTypeTree uint16 = 36
|
||||||
SealGadget uint16
|
EntityTypeBush uint16 = 37
|
||||||
Tree uint16
|
EntityTypeQuestGadget uint16 = 38
|
||||||
Bush uint16
|
EntityTypeLightning uint16 = 39
|
||||||
QuestGadget uint16
|
EntityTypeRewardPoint uint16 = 40
|
||||||
Lightning uint16
|
EntityTypeRewardStatue uint16 = 41
|
||||||
RewardPoint uint16
|
EntityTypeMPLevel uint16 = 42
|
||||||
RewardStatue uint16
|
EntityTypeWindSeed uint16 = 43
|
||||||
MPLevel uint16
|
EntityTypeMpPlayRewardPoint uint16 = 44
|
||||||
WindSeed uint16
|
EntityTypeViewPoint uint16 = 45
|
||||||
MpPlayRewardPoint uint16
|
EntityTypeRemoteAvatar uint16 = 46
|
||||||
ViewPoint uint16
|
EntityTypeGeneralRewardPoint uint16 = 47
|
||||||
RemoteAvatar uint16
|
EntityTypePlayTeam uint16 = 48
|
||||||
GeneralRewardPoint uint16
|
EntityTypeOfferingGadget uint16 = 49
|
||||||
PlayTeam uint16
|
EntityTypeEyePoint uint16 = 50
|
||||||
OfferingGadget uint16
|
EntityTypeMiracleRing uint16 = 51
|
||||||
EyePoint uint16
|
EntityTypeFoundation uint16 = 52
|
||||||
MiracleRing uint16
|
EntityTypeWidgetGadget uint16 = 53
|
||||||
Foundation uint16
|
EntityTypePlaceHolder uint16 = 99
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,36 +1,11 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var EquipTypeConst *EquipType
|
const (
|
||||||
|
EQUIP_TYPE_NONE uint16 = 0
|
||||||
type EquipType struct {
|
EQUIP_TYPE_BRACER uint16 = 1
|
||||||
EQUIP_NONE uint16
|
EQUIP_TYPE_NECKLACE uint16 = 2
|
||||||
EQUIP_BRACER uint16
|
EQUIP_TYPE_SHOES uint16 = 3
|
||||||
EQUIP_NECKLACE uint16
|
EQUIP_TYPE_RING uint16 = 4
|
||||||
EQUIP_SHOES uint16
|
EQUIP_TYPE_DRESS uint16 = 5
|
||||||
EQUIP_RING uint16
|
EQUIP_TYPE_WEAPON uint16 = 6
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,19 +1,8 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var FetterStateConst *FetterState
|
const (
|
||||||
|
FETTER_STATE_NONE uint16 = 0
|
||||||
type FetterState struct {
|
FETTER_STATE_NOT_OPEN uint16 = 1
|
||||||
NONE uint16
|
FETTER_STATE_OPEN uint16 = 1
|
||||||
NOT_OPEN uint16
|
FETTER_STATE_FINISH uint16 = 3
|
||||||
OPEN uint16
|
)
|
||||||
FINISH uint16
|
|
||||||
}
|
|
||||||
|
|
||||||
func InitFetterStateConst() {
|
|
||||||
FetterStateConst = new(FetterState)
|
|
||||||
|
|
||||||
FetterStateConst.NONE = 0
|
|
||||||
FetterStateConst.NOT_OPEN = 1
|
|
||||||
FetterStateConst.OPEN = 1
|
|
||||||
FetterStateConst.FINISH = 3
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,303 +1,100 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var FightPropertyConst *FightProperty
|
const (
|
||||||
|
FIGHT_PROP_NONE uint16 = 0
|
||||||
type FightProperty struct {
|
FIGHT_PROP_BASE_HP uint16 = 1
|
||||||
FIGHT_PROP_NONE uint16
|
FIGHT_PROP_HP uint16 = 2
|
||||||
FIGHT_PROP_BASE_HP uint16
|
FIGHT_PROP_HP_PERCENT uint16 = 3
|
||||||
FIGHT_PROP_HP uint16
|
FIGHT_PROP_BASE_ATTACK uint16 = 4
|
||||||
FIGHT_PROP_HP_PERCENT uint16
|
FIGHT_PROP_ATTACK uint16 = 5
|
||||||
FIGHT_PROP_BASE_ATTACK uint16
|
FIGHT_PROP_ATTACK_PERCENT uint16 = 6
|
||||||
FIGHT_PROP_ATTACK uint16
|
FIGHT_PROP_BASE_DEFENSE uint16 = 7
|
||||||
FIGHT_PROP_ATTACK_PERCENT uint16
|
FIGHT_PROP_DEFENSE uint16 = 8
|
||||||
FIGHT_PROP_BASE_DEFENSE uint16
|
FIGHT_PROP_DEFENSE_PERCENT uint16 = 9
|
||||||
FIGHT_PROP_DEFENSE uint16
|
FIGHT_PROP_BASE_SPEED uint16 = 10
|
||||||
FIGHT_PROP_DEFENSE_PERCENT uint16
|
FIGHT_PROP_SPEED_PERCENT uint16 = 11
|
||||||
FIGHT_PROP_BASE_SPEED uint16
|
FIGHT_PROP_HP_MP_PERCENT uint16 = 12
|
||||||
FIGHT_PROP_SPEED_PERCENT uint16
|
FIGHT_PROP_ATTACK_MP_PERCENT uint16 = 13
|
||||||
FIGHT_PROP_HP_MP_PERCENT uint16
|
FIGHT_PROP_CRITICAL uint16 = 20
|
||||||
FIGHT_PROP_ATTACK_MP_PERCENT uint16
|
FIGHT_PROP_ANTI_CRITICAL uint16 = 21
|
||||||
FIGHT_PROP_CRITICAL uint16
|
FIGHT_PROP_CRITICAL_HURT uint16 = 22
|
||||||
FIGHT_PROP_ANTI_CRITICAL uint16
|
FIGHT_PROP_CHARGE_EFFICIENCY uint16 = 23
|
||||||
FIGHT_PROP_CRITICAL_HURT uint16
|
FIGHT_PROP_ADD_HURT uint16 = 24
|
||||||
FIGHT_PROP_CHARGE_EFFICIENCY uint16
|
FIGHT_PROP_SUB_HURT uint16 = 25
|
||||||
FIGHT_PROP_ADD_HURT uint16
|
FIGHT_PROP_HEAL_ADD uint16 = 26
|
||||||
FIGHT_PROP_SUB_HURT uint16
|
FIGHT_PROP_HEALED_ADD uint16 = 27
|
||||||
FIGHT_PROP_HEAL_ADD uint16
|
FIGHT_PROP_ELEMENT_MASTERY uint16 = 28
|
||||||
FIGHT_PROP_HEALED_ADD uint16
|
FIGHT_PROP_PHYSICAL_SUB_HURT uint16 = 29
|
||||||
FIGHT_PROP_ELEMENT_MASTERY uint16
|
FIGHT_PROP_PHYSICAL_ADD_HURT uint16 = 30
|
||||||
FIGHT_PROP_PHYSICAL_SUB_HURT uint16
|
FIGHT_PROP_DEFENCE_IGNORE_RATIO uint16 = 31
|
||||||
FIGHT_PROP_PHYSICAL_ADD_HURT uint16
|
FIGHT_PROP_DEFENCE_IGNORE_DELTA uint16 = 32
|
||||||
FIGHT_PROP_DEFENCE_IGNORE_RATIO uint16
|
FIGHT_PROP_FIRE_ADD_HURT uint16 = 40
|
||||||
FIGHT_PROP_DEFENCE_IGNORE_DELTA uint16
|
FIGHT_PROP_ELEC_ADD_HURT uint16 = 41
|
||||||
FIGHT_PROP_FIRE_ADD_HURT uint16
|
FIGHT_PROP_WATER_ADD_HURT uint16 = 42
|
||||||
FIGHT_PROP_ELEC_ADD_HURT uint16
|
FIGHT_PROP_GRASS_ADD_HURT uint16 = 43
|
||||||
FIGHT_PROP_WATER_ADD_HURT uint16
|
FIGHT_PROP_WIND_ADD_HURT uint16 = 44
|
||||||
FIGHT_PROP_GRASS_ADD_HURT uint16
|
FIGHT_PROP_ROCK_ADD_HURT uint16 = 45
|
||||||
FIGHT_PROP_WIND_ADD_HURT uint16
|
FIGHT_PROP_ICE_ADD_HURT uint16 = 46
|
||||||
FIGHT_PROP_ROCK_ADD_HURT uint16
|
FIGHT_PROP_HIT_HEAD_ADD_HURT uint16 = 47
|
||||||
FIGHT_PROP_ICE_ADD_HURT uint16
|
FIGHT_PROP_FIRE_SUB_HURT uint16 = 50
|
||||||
FIGHT_PROP_HIT_HEAD_ADD_HURT uint16
|
FIGHT_PROP_ELEC_SUB_HURT uint16 = 51
|
||||||
FIGHT_PROP_FIRE_SUB_HURT uint16
|
FIGHT_PROP_WATER_SUB_HURT uint16 = 52
|
||||||
FIGHT_PROP_ELEC_SUB_HURT uint16
|
FIGHT_PROP_GRASS_SUB_HURT uint16 = 53
|
||||||
FIGHT_PROP_WATER_SUB_HURT uint16
|
FIGHT_PROP_WIND_SUB_HURT uint16 = 54
|
||||||
FIGHT_PROP_GRASS_SUB_HURT uint16
|
FIGHT_PROP_ROCK_SUB_HURT uint16 = 55
|
||||||
FIGHT_PROP_WIND_SUB_HURT uint16
|
FIGHT_PROP_ICE_SUB_HURT uint16 = 56
|
||||||
FIGHT_PROP_ROCK_SUB_HURT uint16
|
FIGHT_PROP_EFFECT_HIT uint16 = 60
|
||||||
FIGHT_PROP_ICE_SUB_HURT uint16
|
FIGHT_PROP_EFFECT_RESIST uint16 = 61
|
||||||
FIGHT_PROP_EFFECT_HIT uint16
|
FIGHT_PROP_FREEZE_RESIST uint16 = 62
|
||||||
FIGHT_PROP_EFFECT_RESIST uint16
|
FIGHT_PROP_TORPOR_RESIST uint16 = 63
|
||||||
FIGHT_PROP_FREEZE_RESIST uint16
|
FIGHT_PROP_DIZZY_RESIST uint16 = 64
|
||||||
FIGHT_PROP_TORPOR_RESIST uint16
|
FIGHT_PROP_FREEZE_SHORTEN uint16 = 65
|
||||||
FIGHT_PROP_DIZZY_RESIST uint16
|
FIGHT_PROP_TORPOR_SHORTEN uint16 = 66
|
||||||
FIGHT_PROP_FREEZE_SHORTEN uint16
|
FIGHT_PROP_DIZZY_SHORTEN uint16 = 67
|
||||||
FIGHT_PROP_TORPOR_SHORTEN uint16
|
FIGHT_PROP_MAX_FIRE_ENERGY uint16 = 70
|
||||||
FIGHT_PROP_DIZZY_SHORTEN uint16
|
FIGHT_PROP_MAX_ELEC_ENERGY uint16 = 71
|
||||||
FIGHT_PROP_MAX_FIRE_ENERGY uint16
|
FIGHT_PROP_MAX_WATER_ENERGY uint16 = 72
|
||||||
FIGHT_PROP_MAX_ELEC_ENERGY uint16
|
FIGHT_PROP_MAX_GRASS_ENERGY uint16 = 73
|
||||||
FIGHT_PROP_MAX_WATER_ENERGY uint16
|
FIGHT_PROP_MAX_WIND_ENERGY uint16 = 74
|
||||||
FIGHT_PROP_MAX_GRASS_ENERGY uint16
|
FIGHT_PROP_MAX_ICE_ENERGY uint16 = 75
|
||||||
FIGHT_PROP_MAX_WIND_ENERGY uint16
|
FIGHT_PROP_MAX_ROCK_ENERGY uint16 = 76
|
||||||
FIGHT_PROP_MAX_ICE_ENERGY uint16
|
FIGHT_PROP_SKILL_CD_MINUS_RATIO uint16 = 80
|
||||||
FIGHT_PROP_MAX_ROCK_ENERGY uint16
|
FIGHT_PROP_SHIELD_COST_MINUS_RATIO uint16 = 81
|
||||||
FIGHT_PROP_SKILL_CD_MINUS_RATIO uint16
|
FIGHT_PROP_CUR_FIRE_ENERGY uint16 = 1000
|
||||||
FIGHT_PROP_SHIELD_COST_MINUS_RATIO uint16
|
FIGHT_PROP_CUR_ELEC_ENERGY uint16 = 1001
|
||||||
FIGHT_PROP_CUR_FIRE_ENERGY uint16
|
FIGHT_PROP_CUR_WATER_ENERGY uint16 = 1002
|
||||||
FIGHT_PROP_CUR_ELEC_ENERGY uint16
|
FIGHT_PROP_CUR_GRASS_ENERGY uint16 = 1003
|
||||||
FIGHT_PROP_CUR_WATER_ENERGY uint16
|
FIGHT_PROP_CUR_WIND_ENERGY uint16 = 1004
|
||||||
FIGHT_PROP_CUR_GRASS_ENERGY uint16
|
FIGHT_PROP_CUR_ICE_ENERGY uint16 = 1005
|
||||||
FIGHT_PROP_CUR_WIND_ENERGY uint16
|
FIGHT_PROP_CUR_ROCK_ENERGY uint16 = 1006
|
||||||
FIGHT_PROP_CUR_ICE_ENERGY uint16
|
FIGHT_PROP_CUR_HP uint16 = 1010
|
||||||
FIGHT_PROP_CUR_ROCK_ENERGY uint16
|
FIGHT_PROP_MAX_HP uint16 = 2000
|
||||||
FIGHT_PROP_CUR_HP uint16
|
FIGHT_PROP_CUR_ATTACK uint16 = 2001
|
||||||
FIGHT_PROP_MAX_HP uint16
|
FIGHT_PROP_CUR_DEFENSE uint16 = 2002
|
||||||
FIGHT_PROP_CUR_ATTACK uint16
|
FIGHT_PROP_CUR_SPEED uint16 = 2003
|
||||||
FIGHT_PROP_CUR_DEFENSE uint16
|
FIGHT_PROP_NONEXTRA_ATTACK uint16 = 3000
|
||||||
FIGHT_PROP_CUR_SPEED uint16
|
FIGHT_PROP_NONEXTRA_DEFENSE uint16 = 3001
|
||||||
FIGHT_PROP_NONEXTRA_ATTACK uint16
|
FIGHT_PROP_NONEXTRA_CRITICAL uint16 = 3002
|
||||||
FIGHT_PROP_NONEXTRA_DEFENSE uint16
|
FIGHT_PROP_NONEXTRA_ANTI_CRITICAL uint16 = 3003
|
||||||
FIGHT_PROP_NONEXTRA_CRITICAL uint16
|
FIGHT_PROP_NONEXTRA_CRITICAL_HURT uint16 = 3004
|
||||||
FIGHT_PROP_NONEXTRA_ANTI_CRITICAL uint16
|
FIGHT_PROP_NONEXTRA_CHARGE_EFFICIENCY uint16 = 3005
|
||||||
FIGHT_PROP_NONEXTRA_CRITICAL_HURT uint16
|
FIGHT_PROP_NONEXTRA_ELEMENT_MASTERY uint16 = 3006
|
||||||
FIGHT_PROP_NONEXTRA_CHARGE_EFFICIENCY uint16
|
FIGHT_PROP_NONEXTRA_PHYSICAL_SUB_HURT uint16 = 3007
|
||||||
FIGHT_PROP_NONEXTRA_ELEMENT_MASTERY uint16
|
FIGHT_PROP_NONEXTRA_FIRE_ADD_HURT uint16 = 3008
|
||||||
FIGHT_PROP_NONEXTRA_PHYSICAL_SUB_HURT uint16
|
FIGHT_PROP_NONEXTRA_ELEC_ADD_HURT uint16 = 3009
|
||||||
FIGHT_PROP_NONEXTRA_FIRE_ADD_HURT uint16
|
FIGHT_PROP_NONEXTRA_WATER_ADD_HURT uint16 = 3010
|
||||||
FIGHT_PROP_NONEXTRA_ELEC_ADD_HURT uint16
|
FIGHT_PROP_NONEXTRA_GRASS_ADD_HURT uint16 = 3011
|
||||||
FIGHT_PROP_NONEXTRA_WATER_ADD_HURT uint16
|
FIGHT_PROP_NONEXTRA_WIND_ADD_HURT uint16 = 3012
|
||||||
FIGHT_PROP_NONEXTRA_GRASS_ADD_HURT uint16
|
FIGHT_PROP_NONEXTRA_ROCK_ADD_HURT uint16 = 3013
|
||||||
FIGHT_PROP_NONEXTRA_WIND_ADD_HURT uint16
|
FIGHT_PROP_NONEXTRA_ICE_ADD_HURT uint16 = 3014
|
||||||
FIGHT_PROP_NONEXTRA_ROCK_ADD_HURT uint16
|
FIGHT_PROP_NONEXTRA_FIRE_SUB_HURT uint16 = 3015
|
||||||
FIGHT_PROP_NONEXTRA_ICE_ADD_HURT uint16
|
FIGHT_PROP_NONEXTRA_ELEC_SUB_HURT uint16 = 3016
|
||||||
FIGHT_PROP_NONEXTRA_FIRE_SUB_HURT uint16
|
FIGHT_PROP_NONEXTRA_WATER_SUB_HURT uint16 = 3017
|
||||||
FIGHT_PROP_NONEXTRA_ELEC_SUB_HURT uint16
|
FIGHT_PROP_NONEXTRA_GRASS_SUB_HURT uint16 = 3018
|
||||||
FIGHT_PROP_NONEXTRA_WATER_SUB_HURT uint16
|
FIGHT_PROP_NONEXTRA_WIND_SUB_HURT uint16 = 3019
|
||||||
FIGHT_PROP_NONEXTRA_GRASS_SUB_HURT uint16
|
FIGHT_PROP_NONEXTRA_ROCK_SUB_HURT uint16 = 3020
|
||||||
FIGHT_PROP_NONEXTRA_WIND_SUB_HURT uint16
|
FIGHT_PROP_NONEXTRA_ICE_SUB_HURT uint16 = 3021
|
||||||
FIGHT_PROP_NONEXTRA_ROCK_SUB_HURT uint16
|
FIGHT_PROP_NONEXTRA_SKILL_CD_MINUS_RATIO uint16 = 3022
|
||||||
FIGHT_PROP_NONEXTRA_ICE_SUB_HURT uint16
|
FIGHT_PROP_NONEXTRA_SHIELD_COST_MINUS_RATIO uint16 = 3023
|
||||||
FIGHT_PROP_NONEXTRA_SKILL_CD_MINUS_RATIO uint16
|
FIGHT_PROP_NONEXTRA_PHYSICAL_ADD_HURT uint16 = 3024
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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
|
package constant
|
||||||
|
|
||||||
var GCGTokenConst *GCGTokenType
|
const (
|
||||||
|
GCG_TOKEN_TYPE_CUR_HEALTH uint32 = 1 // 现行血量
|
||||||
type GCGTokenType struct {
|
GCG_TOKEN_TYPE_MAX_HEALTH uint32 = 2 // 最大血量(不确定)
|
||||||
TOKEN_CUR_HEALTH uint32 // 现行血量
|
GCG_TOKEN_TYPE_CUR_ELEM uint32 = 4 // 现行充能
|
||||||
TOKEN_MAX_HEALTH uint32 // 最大血量(不确定)
|
GCG_TOKEN_TYPE_MAX_ELEM uint32 = 5 // 最大充能(充能条长度)
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,131 +1,64 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var GrowCurveConst *GrowCurve
|
const (
|
||||||
|
GROW_CURVE_NONE uint16 = 0
|
||||||
type GrowCurve struct {
|
GROW_CURVE_HP uint16 = 1
|
||||||
GROW_CURVE_NONE uint16
|
GROW_CURVE_ATTACK uint16 = 2
|
||||||
GROW_CURVE_HP uint16
|
GROW_CURVE_STAMINA uint16 = 3
|
||||||
GROW_CURVE_ATTACK uint16
|
GROW_CURVE_STRIKE uint16 = 4
|
||||||
GROW_CURVE_STAMINA uint16
|
GROW_CURVE_ANTI_STRIKE uint16 = 5
|
||||||
GROW_CURVE_STRIKE uint16
|
GROW_CURVE_ANTI_STRIKE1 uint16 = 6
|
||||||
GROW_CURVE_ANTI_STRIKE uint16
|
GROW_CURVE_ANTI_STRIKE2 uint16 = 7
|
||||||
GROW_CURVE_ANTI_STRIKE1 uint16
|
GROW_CURVE_ANTI_STRIKE3 uint16 = 8
|
||||||
GROW_CURVE_ANTI_STRIKE2 uint16
|
GROW_CURVE_STRIKE_HURT uint16 = 9
|
||||||
GROW_CURVE_ANTI_STRIKE3 uint16
|
GROW_CURVE_ELEMENT uint16 = 10
|
||||||
GROW_CURVE_STRIKE_HURT uint16
|
GROW_CURVE_KILL_EXP uint16 = 11
|
||||||
GROW_CURVE_ELEMENT uint16
|
GROW_CURVE_DEFENSE uint16 = 12
|
||||||
GROW_CURVE_KILL_EXP uint16
|
GROW_CURVE_ATTACK_BOMB uint16 = 13
|
||||||
GROW_CURVE_DEFENSE uint16
|
GROW_CURVE_HP_LITTLEMONSTER uint16 = 14
|
||||||
GROW_CURVE_ATTACK_BOMB uint16
|
GROW_CURVE_ELEMENT_MASTERY uint16 = 15
|
||||||
GROW_CURVE_HP_LITTLEMONSTER uint16
|
GROW_CURVE_PROGRESSION uint16 = 16
|
||||||
GROW_CURVE_ELEMENT_MASTERY uint16
|
GROW_CURVE_DEFENDING uint16 = 17
|
||||||
GROW_CURVE_PROGRESSION uint16
|
GROW_CURVE_MHP uint16 = 18
|
||||||
GROW_CURVE_DEFENDING uint16
|
GROW_CURVE_MATK uint16 = 19
|
||||||
GROW_CURVE_MHP uint16
|
GROW_CURVE_TOWERATK uint16 = 20
|
||||||
GROW_CURVE_MATK uint16
|
GROW_CURVE_HP_S5 uint16 = 21
|
||||||
GROW_CURVE_TOWERATK uint16
|
GROW_CURVE_HP_S4 uint16 = 22
|
||||||
GROW_CURVE_HP_S5 uint16
|
GROW_CURVE_HP_2 uint16 = 23
|
||||||
GROW_CURVE_HP_S4 uint16
|
GROW_CURVE_ATTACK_S5 uint16 = 31
|
||||||
GROW_CURVE_HP_2 uint16
|
GROW_CURVE_ATTACK_S4 uint16 = 32
|
||||||
GROW_CURVE_ATTACK_S5 uint16
|
GROW_CURVE_ATTACK_S3 uint16 = 33
|
||||||
GROW_CURVE_ATTACK_S4 uint16
|
GROW_CURVE_STRIKE_S5 uint16 = 34
|
||||||
GROW_CURVE_ATTACK_S3 uint16
|
GROW_CURVE_DEFENSE_S5 uint16 = 41
|
||||||
GROW_CURVE_STRIKE_S5 uint16
|
GROW_CURVE_DEFENSE_S4 uint16 = 42
|
||||||
GROW_CURVE_DEFENSE_S5 uint16
|
GROW_CURVE_ATTACK_101 uint16 = 1101
|
||||||
GROW_CURVE_DEFENSE_S4 uint16
|
GROW_CURVE_ATTACK_102 uint16 = 1102
|
||||||
GROW_CURVE_ATTACK_101 uint16
|
GROW_CURVE_ATTACK_103 uint16 = 1103
|
||||||
GROW_CURVE_ATTACK_102 uint16
|
GROW_CURVE_ATTACK_104 uint16 = 1104
|
||||||
GROW_CURVE_ATTACK_103 uint16
|
GROW_CURVE_ATTACK_105 uint16 = 1105
|
||||||
GROW_CURVE_ATTACK_104 uint16
|
GROW_CURVE_ATTACK_201 uint16 = 1201
|
||||||
GROW_CURVE_ATTACK_105 uint16
|
GROW_CURVE_ATTACK_202 uint16 = 1202
|
||||||
GROW_CURVE_ATTACK_201 uint16
|
GROW_CURVE_ATTACK_203 uint16 = 1203
|
||||||
GROW_CURVE_ATTACK_202 uint16
|
GROW_CURVE_ATTACK_204 uint16 = 1204
|
||||||
GROW_CURVE_ATTACK_203 uint16
|
GROW_CURVE_ATTACK_205 uint16 = 1205
|
||||||
GROW_CURVE_ATTACK_204 uint16
|
GROW_CURVE_ATTACK_301 uint16 = 1301
|
||||||
GROW_CURVE_ATTACK_205 uint16
|
GROW_CURVE_ATTACK_302 uint16 = 1302
|
||||||
GROW_CURVE_ATTACK_301 uint16
|
GROW_CURVE_ATTACK_303 uint16 = 1303
|
||||||
GROW_CURVE_ATTACK_302 uint16
|
GROW_CURVE_ATTACK_304 uint16 = 1304
|
||||||
GROW_CURVE_ATTACK_303 uint16
|
GROW_CURVE_ATTACK_305 uint16 = 1305
|
||||||
GROW_CURVE_ATTACK_304 uint16
|
GROW_CURVE_CRITICAL_101 uint16 = 2101
|
||||||
GROW_CURVE_ATTACK_305 uint16
|
GROW_CURVE_CRITICAL_102 uint16 = 2102
|
||||||
GROW_CURVE_CRITICAL_101 uint16
|
GROW_CURVE_CRITICAL_103 uint16 = 2103
|
||||||
GROW_CURVE_CRITICAL_102 uint16
|
GROW_CURVE_CRITICAL_104 uint16 = 2104
|
||||||
GROW_CURVE_CRITICAL_103 uint16
|
GROW_CURVE_CRITICAL_105 uint16 = 2105
|
||||||
GROW_CURVE_CRITICAL_104 uint16
|
GROW_CURVE_CRITICAL_201 uint16 = 2201
|
||||||
GROW_CURVE_CRITICAL_105 uint16
|
GROW_CURVE_CRITICAL_202 uint16 = 2202
|
||||||
GROW_CURVE_CRITICAL_201 uint16
|
GROW_CURVE_CRITICAL_203 uint16 = 2203
|
||||||
GROW_CURVE_CRITICAL_202 uint16
|
GROW_CURVE_CRITICAL_204 uint16 = 2204
|
||||||
GROW_CURVE_CRITICAL_203 uint16
|
GROW_CURVE_CRITICAL_205 uint16 = 2205
|
||||||
GROW_CURVE_CRITICAL_204 uint16
|
GROW_CURVE_CRITICAL_301 uint16 = 2301
|
||||||
GROW_CURVE_CRITICAL_205 uint16
|
GROW_CURVE_CRITICAL_302 uint16 = 2302
|
||||||
GROW_CURVE_CRITICAL_301 uint16
|
GROW_CURVE_CRITICAL_303 uint16 = 2303
|
||||||
GROW_CURVE_CRITICAL_302 uint16
|
GROW_CURVE_CRITICAL_304 uint16 = 2304
|
||||||
GROW_CURVE_CRITICAL_303 uint16
|
GROW_CURVE_CRITICAL_305 uint16 = 2305
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,49 +1,39 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var ItemConstantConst *ItemConstant
|
const (
|
||||||
|
|
||||||
type ItemConstant struct {
|
|
||||||
// 虚拟物品
|
// 虚拟物品
|
||||||
HCOIN uint32 // 原石 201
|
ITEM_ID_HCOIN uint32 = 201 // 原石
|
||||||
SCOIN uint32 // 摩拉 202
|
ITEM_ID_SCOIN uint32 = 202 // 摩拉
|
||||||
MCOIN uint32 // 创世结晶 203
|
ITEM_ID_MCOIN uint32 = 203 // 创世结晶
|
||||||
RESIN uint32 // 树脂 106
|
ITEM_ID_RESIN uint32 = 106 // 树脂
|
||||||
LEGENDARY_KEY uint32 // 传说任务钥匙 107
|
ITEM_ID_LEGENDARY_KEY uint32 = 207 // 传说任务钥匙
|
||||||
HOME_COIN uint32 // 洞天宝钱 204
|
ITEM_ID_HOME_COIN uint32 = 204 // 洞天宝钱
|
||||||
PLAYER_EXP uint32 // 冒险阅历 102
|
ITEM_ID_PLAYER_EXP uint32 = 102 // 冒险阅历
|
||||||
VIRTUAL_ITEM_PROP map[uint32]uint16 // 虚拟物品对应玩家的属性
|
|
||||||
// 武器强化物品
|
// 武器强化物品
|
||||||
WEAPON_UPGRADE_MAGIC uint32 // 精锻用魔矿 104013
|
ITEM_ID_WEAPON_UPGRADE_MAGIC uint32 = 104013 // 精锻用魔矿
|
||||||
WEAPON_UPGRADE_GOOD uint32 // 精锻用良矿 104012
|
ITEM_ID_WEAPON_UPGRADE_GOOD uint32 = 104012 // 精锻用良矿
|
||||||
WEAPON_UPGRADE_MOTLEY uint32 // 精锻用杂矿 104011
|
ITEM_ID_WEAPON_UPGRADE_MOTLEY uint32 = 104011 // 精锻用杂矿
|
||||||
WEAPON_UPGRADE_MATERIAL []uint32 // 武器强化返还材料列表
|
)
|
||||||
}
|
|
||||||
|
|
||||||
func InitItemConstantConst() {
|
// 虚拟物品对应玩家的属性
|
||||||
ItemConstantConst = new(ItemConstant)
|
var VIRTUAL_ITEM_PROP map[uint32]uint16
|
||||||
|
|
||||||
ItemConstantConst.HCOIN = 201
|
// 武器强化返还材料列表
|
||||||
ItemConstantConst.SCOIN = 202
|
var WEAPON_UPGRADE_MATERIAL []uint32
|
||||||
ItemConstantConst.MCOIN = 203
|
|
||||||
ItemConstantConst.RESIN = 106
|
func init() {
|
||||||
ItemConstantConst.LEGENDARY_KEY = 207
|
VIRTUAL_ITEM_PROP = map[uint32]uint16{
|
||||||
ItemConstantConst.HOME_COIN = 204
|
ITEM_ID_HCOIN: PLAYER_PROP_PLAYER_HCOIN,
|
||||||
ItemConstantConst.PLAYER_EXP = 102
|
ITEM_ID_SCOIN: PLAYER_PROP_PLAYER_SCOIN,
|
||||||
ItemConstantConst.VIRTUAL_ITEM_PROP = map[uint32]uint16{
|
ITEM_ID_MCOIN: PLAYER_PROP_PLAYER_MCOIN,
|
||||||
ItemConstantConst.HCOIN: PlayerPropertyConst.PROP_PLAYER_HCOIN,
|
ITEM_ID_RESIN: PLAYER_PROP_PLAYER_RESIN,
|
||||||
ItemConstantConst.SCOIN: PlayerPropertyConst.PROP_PLAYER_SCOIN,
|
ITEM_ID_LEGENDARY_KEY: PLAYER_PROP_PLAYER_LEGENDARY_KEY,
|
||||||
ItemConstantConst.MCOIN: PlayerPropertyConst.PROP_PLAYER_MCOIN,
|
ITEM_ID_HOME_COIN: PLAYER_PROP_PLAYER_HOME_COIN,
|
||||||
ItemConstantConst.RESIN: PlayerPropertyConst.PROP_PLAYER_RESIN,
|
ITEM_ID_PLAYER_EXP: PLAYER_PROP_PLAYER_EXP,
|
||||||
ItemConstantConst.LEGENDARY_KEY: PlayerPropertyConst.PROP_PLAYER_LEGENDARY_KEY,
|
|
||||||
ItemConstantConst.HOME_COIN: PlayerPropertyConst.PROP_PLAYER_HOME_COIN,
|
|
||||||
ItemConstantConst.PLAYER_EXP: PlayerPropertyConst.PROP_PLAYER_EXP,
|
|
||||||
}
|
}
|
||||||
ItemConstantConst.WEAPON_UPGRADE_MAGIC = 104013
|
WEAPON_UPGRADE_MATERIAL = []uint32{
|
||||||
ItemConstantConst.WEAPON_UPGRADE_GOOD = 104012
|
ITEM_ID_WEAPON_UPGRADE_MAGIC,
|
||||||
ItemConstantConst.WEAPON_UPGRADE_MOTLEY = 104011
|
ITEM_ID_WEAPON_UPGRADE_GOOD,
|
||||||
ItemConstantConst.WEAPON_UPGRADE_MATERIAL = []uint32{
|
ITEM_ID_WEAPON_UPGRADE_MOTLEY,
|
||||||
ItemConstantConst.WEAPON_UPGRADE_MAGIC,
|
|
||||||
ItemConstantConst.WEAPON_UPGRADE_GOOD,
|
|
||||||
ItemConstantConst.WEAPON_UPGRADE_MOTLEY,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,36 +1,11 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var ItemTypeConst *ItemType
|
const (
|
||||||
|
ITEM_TYPE_NONE uint16 = 0
|
||||||
type ItemType struct {
|
ITEM_TYPE_VIRTUAL uint16 = 1
|
||||||
ITEM_NONE uint16
|
ITEM_TYPE_MATERIAL uint16 = 2
|
||||||
ITEM_VIRTUAL uint16
|
ITEM_TYPE_RELIQUARY uint16 = 3
|
||||||
ITEM_MATERIAL uint16
|
ITEM_TYPE_WEAPON uint16 = 4
|
||||||
ITEM_RELIQUARY uint16
|
ITEM_TYPE_DISPLAY uint16 = 5
|
||||||
ITEM_WEAPON uint16
|
ITEM_TYPE_FURNITURE uint16 = 6
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,19 +1,8 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var LifeStateConst *LifeState
|
const (
|
||||||
|
LIFE_STATE_NONE uint16 = 0
|
||||||
type LifeState struct {
|
LIFE_STATE_ALIVE uint16 = 1
|
||||||
LIFE_NONE uint16
|
LIFE_STATE_DEAD uint16 = 2
|
||||||
LIFE_ALIVE uint16
|
LIFE_STATE_REVIVE uint16 = 3
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,102 +1,33 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var MaterialTypeConst *MaterialType
|
const (
|
||||||
|
MATERIAL_TYPE_NONE uint16 = 0
|
||||||
type MaterialType struct {
|
MATERIAL_TYPE_FOOD uint16 = 1
|
||||||
MATERIAL_NONE uint16
|
MATERIAL_TYPE_QUEST uint16 = 2
|
||||||
MATERIAL_FOOD uint16
|
MATERIAL_TYPE_EXCHANGE uint16 = 4
|
||||||
MATERIAL_QUEST uint16
|
MATERIAL_TYPE_CONSUME uint16 = 5
|
||||||
MATERIAL_EXCHANGE uint16
|
MATERIAL_TYPE_EXP_FRUIT uint16 = 6
|
||||||
MATERIAL_CONSUME uint16
|
MATERIAL_TYPE_AVATAR uint16 = 7
|
||||||
MATERIAL_EXP_FRUIT uint16
|
MATERIAL_TYPE_ADSORBATE uint16 = 8
|
||||||
MATERIAL_AVATAR uint16
|
MATERIAL_TYPE_CRICKET uint16 = 9
|
||||||
MATERIAL_ADSORBATE uint16
|
MATERIAL_TYPE_ELEM_CRYSTAL uint16 = 10
|
||||||
MATERIAL_CRICKET uint16
|
MATERIAL_TYPE_WEAPON_EXP_STONE uint16 = 11
|
||||||
MATERIAL_ELEM_CRYSTAL uint16
|
MATERIAL_TYPE_CHEST uint16 = 12
|
||||||
MATERIAL_WEAPON_EXP_STONE uint16
|
MATERIAL_TYPE_RELIQUARY_MATERIAL uint16 = 13
|
||||||
MATERIAL_CHEST uint16
|
MATERIAL_TYPE_AVATAR_MATERIAL uint16 = 14
|
||||||
MATERIAL_RELIQUARY_MATERIAL uint16
|
MATERIAL_TYPE_NOTICE_ADD_HP uint16 = 15
|
||||||
MATERIAL_AVATAR_MATERIAL uint16
|
MATERIAL_TYPE_SEA_LAMP uint16 = 16
|
||||||
MATERIAL_NOTICE_ADD_HP uint16
|
MATERIAL_TYPE_SELECTABLE_CHEST uint16 = 17
|
||||||
MATERIAL_SEA_LAMP uint16
|
MATERIAL_TYPE_FLYCLOAK uint16 = 18
|
||||||
MATERIAL_SELECTABLE_CHEST uint16
|
MATERIAL_TYPE_NAMECARD uint16 = 19
|
||||||
MATERIAL_FLYCLOAK uint16
|
MATERIAL_TYPE_TALENT uint16 = 20
|
||||||
MATERIAL_NAMECARD uint16
|
MATERIAL_TYPE_WIDGET uint16 = 21
|
||||||
MATERIAL_TALENT uint16
|
MATERIAL_TYPE_CHEST_BATCH_USE uint16 = 22
|
||||||
MATERIAL_WIDGET uint16
|
MATERIAL_TYPE_FAKE_ABSORBATE uint16 = 23
|
||||||
MATERIAL_CHEST_BATCH_USE uint16
|
MATERIAL_TYPE_CONSUME_BATCH_USE uint16 = 24
|
||||||
MATERIAL_FAKE_ABSORBATE uint16
|
MATERIAL_TYPE_WOOD uint16 = 25
|
||||||
MATERIAL_CONSUME_BATCH_USE uint16
|
MATERIAL_TYPE_FURNITURE_FORMULA uint16 = 27
|
||||||
MATERIAL_WOOD uint16
|
MATERIAL_TYPE_CHANNELLER_SLAB_BUFF uint16 = 28
|
||||||
MATERIAL_FURNITURE_FORMULA uint16
|
MATERIAL_TYPE_FURNITURE_SUITE_FORMULA uint16 = 29
|
||||||
MATERIAL_CHANNELLER_SLAB_BUFF uint16
|
MATERIAL_TYPE_COSTUME uint16 = 30
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,343 +1,343 @@
|
|||||||
package constant
|
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 {
|
var ALL_OPEN_STATE []uint16
|
||||||
OPEN_STATE_NONE uint16
|
|
||||||
OPEN_STATE_PAIMON uint16
|
func init() {
|
||||||
OPEN_STATE_PAIMON_NAVIGATION uint16
|
ALL_OPEN_STATE = []uint16{
|
||||||
OPEN_STATE_AVATAR_PROMOTE uint16
|
OPEN_STATE_NONE,
|
||||||
OPEN_STATE_AVATAR_TALENT uint16
|
OPEN_STATE_PAIMON,
|
||||||
OPEN_STATE_WEAPON_PROMOTE uint16
|
OPEN_STATE_PAIMON_NAVIGATION,
|
||||||
OPEN_STATE_WEAPON_AWAKEN uint16
|
OPEN_STATE_AVATAR_PROMOTE,
|
||||||
OPEN_STATE_QUEST_REMIND uint16
|
OPEN_STATE_AVATAR_TALENT,
|
||||||
OPEN_STATE_GAME_GUIDE uint16
|
OPEN_STATE_WEAPON_PROMOTE,
|
||||||
OPEN_STATE_COOK uint16
|
OPEN_STATE_WEAPON_AWAKEN,
|
||||||
OPEN_STATE_WEAPON_UPGRADE uint16
|
OPEN_STATE_QUEST_REMIND,
|
||||||
OPEN_STATE_RELIQUARY_UPGRADE uint16
|
OPEN_STATE_GAME_GUIDE,
|
||||||
OPEN_STATE_RELIQUARY_PROMOTE uint16
|
OPEN_STATE_COOK,
|
||||||
OPEN_STATE_WEAPON_PROMOTE_GUIDE uint16
|
OPEN_STATE_WEAPON_UPGRADE,
|
||||||
OPEN_STATE_WEAPON_CHANGE_GUIDE uint16
|
OPEN_STATE_RELIQUARY_UPGRADE,
|
||||||
OPEN_STATE_PLAYER_LVUP_GUIDE uint16
|
OPEN_STATE_RELIQUARY_PROMOTE,
|
||||||
OPEN_STATE_FRESHMAN_GUIDE uint16
|
OPEN_STATE_WEAPON_PROMOTE_GUIDE,
|
||||||
OPEN_STATE_SKIP_FRESHMAN_GUIDE uint16
|
OPEN_STATE_WEAPON_CHANGE_GUIDE,
|
||||||
OPEN_STATE_GUIDE_MOVE_CAMERA uint16
|
OPEN_STATE_PLAYER_LVUP_GUIDE,
|
||||||
OPEN_STATE_GUIDE_SCALE_CAMERA uint16
|
OPEN_STATE_FRESHMAN_GUIDE,
|
||||||
OPEN_STATE_GUIDE_KEYBOARD uint16
|
OPEN_STATE_SKIP_FRESHMAN_GUIDE,
|
||||||
OPEN_STATE_GUIDE_MOVE uint16
|
OPEN_STATE_GUIDE_MOVE_CAMERA,
|
||||||
OPEN_STATE_GUIDE_JUMP uint16
|
OPEN_STATE_GUIDE_SCALE_CAMERA,
|
||||||
OPEN_STATE_GUIDE_SPRINT uint16
|
OPEN_STATE_GUIDE_KEYBOARD,
|
||||||
OPEN_STATE_GUIDE_MAP uint16
|
OPEN_STATE_GUIDE_MOVE,
|
||||||
OPEN_STATE_GUIDE_ATTACK uint16
|
OPEN_STATE_GUIDE_JUMP,
|
||||||
OPEN_STATE_GUIDE_FLY uint16
|
OPEN_STATE_GUIDE_SPRINT,
|
||||||
OPEN_STATE_GUIDE_TALENT uint16
|
OPEN_STATE_GUIDE_MAP,
|
||||||
OPEN_STATE_GUIDE_RELIC uint16
|
OPEN_STATE_GUIDE_ATTACK,
|
||||||
OPEN_STATE_GUIDE_RELIC_PROM uint16
|
OPEN_STATE_GUIDE_FLY,
|
||||||
OPEN_STATE_COMBINE uint16
|
OPEN_STATE_GUIDE_TALENT,
|
||||||
OPEN_STATE_GACHA uint16
|
OPEN_STATE_GUIDE_RELIC,
|
||||||
OPEN_STATE_GUIDE_GACHA uint16
|
OPEN_STATE_GUIDE_RELIC_PROM,
|
||||||
OPEN_STATE_GUIDE_TEAM uint16
|
OPEN_STATE_COMBINE,
|
||||||
OPEN_STATE_GUIDE_PROUD uint16
|
OPEN_STATE_GACHA,
|
||||||
OPEN_STATE_GUIDE_AVATAR_PROMOTE uint16
|
OPEN_STATE_GUIDE_GACHA,
|
||||||
OPEN_STATE_GUIDE_ADVENTURE_CARD uint16
|
OPEN_STATE_GUIDE_TEAM,
|
||||||
OPEN_STATE_FORGE uint16
|
OPEN_STATE_GUIDE_PROUD,
|
||||||
OPEN_STATE_GUIDE_BAG uint16
|
OPEN_STATE_GUIDE_AVATAR_PROMOTE,
|
||||||
OPEN_STATE_EXPEDITION uint16
|
OPEN_STATE_GUIDE_ADVENTURE_CARD,
|
||||||
OPEN_STATE_GUIDE_ADVENTURE_DAILYTASK uint16
|
OPEN_STATE_FORGE,
|
||||||
OPEN_STATE_GUIDE_ADVENTURE_DUNGEON uint16
|
OPEN_STATE_GUIDE_BAG,
|
||||||
OPEN_STATE_TOWER uint16
|
OPEN_STATE_EXPEDITION,
|
||||||
OPEN_STATE_WORLD_STAMINA uint16
|
OPEN_STATE_GUIDE_ADVENTURE_DAILYTASK,
|
||||||
OPEN_STATE_TOWER_FIRST_ENTER uint16
|
OPEN_STATE_GUIDE_ADVENTURE_DUNGEON,
|
||||||
OPEN_STATE_RESIN uint16
|
OPEN_STATE_TOWER,
|
||||||
OPEN_STATE_LIMIT_REGION_FRESHMEAT uint16
|
OPEN_STATE_WORLD_STAMINA,
|
||||||
OPEN_STATE_LIMIT_REGION_GLOBAL uint16
|
OPEN_STATE_TOWER_FIRST_ENTER,
|
||||||
OPEN_STATE_MULTIPLAYER uint16
|
OPEN_STATE_RESIN,
|
||||||
OPEN_STATE_GUIDE_MOUSEPC uint16
|
OPEN_STATE_LIMIT_REGION_FRESHMEAT,
|
||||||
OPEN_STATE_GUIDE_MULTIPLAYER uint16
|
OPEN_STATE_LIMIT_REGION_GLOBAL,
|
||||||
OPEN_STATE_GUIDE_DUNGEONREWARD uint16
|
OPEN_STATE_MULTIPLAYER,
|
||||||
OPEN_STATE_GUIDE_BLOSSOM uint16
|
OPEN_STATE_GUIDE_MOUSEPC,
|
||||||
OPEN_STATE_AVATAR_FASHION uint16
|
OPEN_STATE_GUIDE_MULTIPLAYER,
|
||||||
OPEN_STATE_PHOTOGRAPH uint16
|
OPEN_STATE_GUIDE_DUNGEONREWARD,
|
||||||
OPEN_STATE_GUIDE_KSLQUEST uint16
|
OPEN_STATE_GUIDE_BLOSSOM,
|
||||||
OPEN_STATE_PERSONAL_LINE uint16
|
OPEN_STATE_AVATAR_FASHION,
|
||||||
OPEN_STATE_GUIDE_PERSONAL_LINE uint16
|
OPEN_STATE_PHOTOGRAPH,
|
||||||
OPEN_STATE_GUIDE_APPEARANCE uint16
|
OPEN_STATE_GUIDE_KSLQUEST,
|
||||||
OPEN_STATE_GUIDE_PROCESS uint16
|
OPEN_STATE_PERSONAL_LINE,
|
||||||
OPEN_STATE_GUIDE_PERSONAL_LINE_KEY uint16
|
OPEN_STATE_GUIDE_PERSONAL_LINE,
|
||||||
OPEN_STATE_GUIDE_WIDGET uint16
|
OPEN_STATE_GUIDE_APPEARANCE,
|
||||||
OPEN_STATE_GUIDE_ACTIVITY_SKILL_ASTER uint16
|
OPEN_STATE_GUIDE_PROCESS,
|
||||||
OPEN_STATE_GUIDE_COLDCLIMATE uint16
|
OPEN_STATE_GUIDE_PERSONAL_LINE_KEY,
|
||||||
OPEN_STATE_DERIVATIVE_MALL uint16
|
OPEN_STATE_GUIDE_WIDGET,
|
||||||
OPEN_STATE_GUIDE_EXITMULTIPLAYER uint16
|
OPEN_STATE_GUIDE_ACTIVITY_SKILL_ASTER,
|
||||||
OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD uint16
|
OPEN_STATE_GUIDE_COLDCLIMATE,
|
||||||
OPEN_STATE_GUIDE_THEATREMACHANICUS_REBUILD uint16
|
OPEN_STATE_DERIVATIVE_MALL,
|
||||||
OPEN_STATE_GUIDE_THEATREMACHANICUS_CARD uint16
|
OPEN_STATE_GUIDE_EXITMULTIPLAYER,
|
||||||
OPEN_STATE_GUIDE_THEATREMACHANICUS_MONSTER uint16
|
OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD,
|
||||||
OPEN_STATE_GUIDE_THEATREMACHANICUS_MISSION_CHECK uint16
|
OPEN_STATE_GUIDE_THEATREMACHANICUS_REBUILD,
|
||||||
OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD_SELECT uint16
|
OPEN_STATE_GUIDE_THEATREMACHANICUS_CARD,
|
||||||
OPEN_STATE_GUIDE_THEATREMACHANICUS_CHALLENGE_START uint16
|
OPEN_STATE_GUIDE_THEATREMACHANICUS_MONSTER,
|
||||||
OPEN_STATE_GUIDE_CONVERT uint16
|
OPEN_STATE_GUIDE_THEATREMACHANICUS_MISSION_CHECK,
|
||||||
OPEN_STATE_GUIDE_THEATREMACHANICUS_MULTIPLAYER uint16
|
OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD_SELECT,
|
||||||
OPEN_STATE_GUIDE_COOP_TASK uint16
|
OPEN_STATE_GUIDE_THEATREMACHANICUS_CHALLENGE_START,
|
||||||
OPEN_STATE_GUIDE_HOMEWORLD_ADEPTIABODE uint16
|
OPEN_STATE_GUIDE_CONVERT,
|
||||||
OPEN_STATE_GUIDE_HOMEWORLD_DEPLOY uint16
|
OPEN_STATE_GUIDE_THEATREMACHANICUS_MULTIPLAYER,
|
||||||
OPEN_STATE_GUIDE_CHANNELLERSLAB_EQUIP uint16
|
OPEN_STATE_GUIDE_COOP_TASK,
|
||||||
OPEN_STATE_GUIDE_CHANNELLERSLAB_MP_SOLUTION uint16
|
OPEN_STATE_GUIDE_HOMEWORLD_ADEPTIABODE,
|
||||||
OPEN_STATE_GUIDE_CHANNELLERSLAB_POWER uint16
|
OPEN_STATE_GUIDE_HOMEWORLD_DEPLOY,
|
||||||
OPEN_STATE_GUIDE_HIDEANDSEEK_SKILL uint16
|
OPEN_STATE_GUIDE_CHANNELLERSLAB_EQUIP,
|
||||||
OPEN_STATE_GUIDE_HOMEWORLD_MAPLIST uint16
|
OPEN_STATE_GUIDE_CHANNELLERSLAB_MP_SOLUTION,
|
||||||
OPEN_STATE_GUIDE_RELICRESOLVE uint16
|
OPEN_STATE_GUIDE_CHANNELLERSLAB_POWER,
|
||||||
OPEN_STATE_GUIDE_GGUIDE uint16
|
OPEN_STATE_GUIDE_HIDEANDSEEK_SKILL,
|
||||||
OPEN_STATE_GUIDE_GGUIDE_HINT uint16
|
OPEN_STATE_GUIDE_HOMEWORLD_MAPLIST,
|
||||||
OPEN_STATE_CITY_REPUATION_MENGDE uint16
|
OPEN_STATE_GUIDE_RELICRESOLVE,
|
||||||
OPEN_STATE_CITY_REPUATION_LIYUE uint16
|
OPEN_STATE_GUIDE_GGUIDE,
|
||||||
OPEN_STATE_CITY_REPUATION_UI_HINT uint16
|
OPEN_STATE_GUIDE_GGUIDE_HINT,
|
||||||
OPEN_STATE_CITY_REPUATION_INAZUMA uint16
|
OPEN_STATE_CITY_REPUATION_MENGDE,
|
||||||
OPEN_STATE_SHOP_TYPE_MALL uint16
|
OPEN_STATE_CITY_REPUATION_LIYUE,
|
||||||
OPEN_STATE_SHOP_TYPE_RECOMMANDED uint16
|
OPEN_STATE_CITY_REPUATION_UI_HINT,
|
||||||
OPEN_STATE_SHOP_TYPE_GENESISCRYSTAL uint16
|
OPEN_STATE_CITY_REPUATION_INAZUMA,
|
||||||
OPEN_STATE_SHOP_TYPE_GIFTPACKAGE uint16
|
OPEN_STATE_SHOP_TYPE_MALL,
|
||||||
OPEN_STATE_SHOP_TYPE_PAIMON uint16
|
OPEN_STATE_SHOP_TYPE_RECOMMANDED,
|
||||||
OPEN_STATE_SHOP_TYPE_CITY uint16
|
OPEN_STATE_SHOP_TYPE_GENESISCRYSTAL,
|
||||||
OPEN_STATE_SHOP_TYPE_BLACKSMITH uint16
|
OPEN_STATE_SHOP_TYPE_GIFTPACKAGE,
|
||||||
OPEN_STATE_SHOP_TYPE_GROCERY uint16
|
OPEN_STATE_SHOP_TYPE_PAIMON,
|
||||||
OPEN_STATE_SHOP_TYPE_FOOD uint16
|
OPEN_STATE_SHOP_TYPE_CITY,
|
||||||
OPEN_STATE_SHOP_TYPE_SEA_LAMP uint16
|
OPEN_STATE_SHOP_TYPE_BLACKSMITH,
|
||||||
OPEN_STATE_SHOP_TYPE_VIRTUAL_SHOP uint16
|
OPEN_STATE_SHOP_TYPE_GROCERY,
|
||||||
OPEN_STATE_SHOP_TYPE_LIYUE_GROCERY uint16
|
OPEN_STATE_SHOP_TYPE_FOOD,
|
||||||
OPEN_STATE_SHOP_TYPE_LIYUE_SOUVENIR uint16
|
OPEN_STATE_SHOP_TYPE_SEA_LAMP,
|
||||||
OPEN_STATE_SHOP_TYPE_LIYUE_RESTAURANT uint16
|
OPEN_STATE_SHOP_TYPE_VIRTUAL_SHOP,
|
||||||
OPEN_STATE_SHOP_TYPE_INAZUMA_SOUVENIR uint16
|
OPEN_STATE_SHOP_TYPE_LIYUE_GROCERY,
|
||||||
OPEN_STATE_SHOP_TYPE_NPC_TOMOKI uint16
|
OPEN_STATE_SHOP_TYPE_LIYUE_SOUVENIR,
|
||||||
OPEN_ADVENTURE_MANUAL uint16
|
OPEN_STATE_SHOP_TYPE_LIYUE_RESTAURANT,
|
||||||
OPEN_ADVENTURE_MANUAL_CITY_MENGDE uint16
|
OPEN_STATE_SHOP_TYPE_INAZUMA_SOUVENIR,
|
||||||
OPEN_ADVENTURE_MANUAL_CITY_LIYUE uint16
|
OPEN_STATE_SHOP_TYPE_NPC_TOMOKI,
|
||||||
OPEN_ADVENTURE_MANUAL_MONSTER uint16
|
OPEN_ADVENTURE_MANUAL,
|
||||||
OPEN_ADVENTURE_MANUAL_BOSS_DUNGEON uint16
|
OPEN_ADVENTURE_MANUAL_CITY_MENGDE,
|
||||||
OPEN_STATE_ACTIVITY_SEALAMP uint16
|
OPEN_ADVENTURE_MANUAL_CITY_LIYUE,
|
||||||
OPEN_STATE_ACTIVITY_SEALAMP_TAB2 uint16
|
OPEN_ADVENTURE_MANUAL_MONSTER,
|
||||||
OPEN_STATE_ACTIVITY_SEALAMP_TAB3 uint16
|
OPEN_ADVENTURE_MANUAL_BOSS_DUNGEON,
|
||||||
OPEN_STATE_BATTLE_PASS uint16
|
OPEN_STATE_ACTIVITY_SEALAMP,
|
||||||
OPEN_STATE_BATTLE_PASS_ENTRY uint16
|
OPEN_STATE_ACTIVITY_SEALAMP_TAB2,
|
||||||
OPEN_STATE_ACTIVITY_CRUCIBLE uint16
|
OPEN_STATE_ACTIVITY_SEALAMP_TAB3,
|
||||||
OPEN_STATE_ACTIVITY_NEWBEEBOUNS_OPEN uint16
|
OPEN_STATE_BATTLE_PASS,
|
||||||
OPEN_STATE_ACTIVITY_NEWBEEBOUNS_CLOSE uint16
|
OPEN_STATE_BATTLE_PASS_ENTRY,
|
||||||
OPEN_STATE_ACTIVITY_ENTRY_OPEN uint16
|
OPEN_STATE_ACTIVITY_CRUCIBLE,
|
||||||
OPEN_STATE_MENGDE_INFUSEDCRYSTAL uint16
|
OPEN_STATE_ACTIVITY_NEWBEEBOUNS_OPEN,
|
||||||
OPEN_STATE_LIYUE_INFUSEDCRYSTAL uint16
|
OPEN_STATE_ACTIVITY_NEWBEEBOUNS_CLOSE,
|
||||||
OPEN_STATE_SNOW_MOUNTAIN_ELDER_TREE uint16
|
OPEN_STATE_ACTIVITY_ENTRY_OPEN,
|
||||||
OPEN_STATE_MIRACLE_RING uint16
|
OPEN_STATE_MENGDE_INFUSEDCRYSTAL,
|
||||||
OPEN_STATE_COOP_LINE uint16
|
OPEN_STATE_LIYUE_INFUSEDCRYSTAL,
|
||||||
OPEN_STATE_INAZUMA_INFUSEDCRYSTAL uint16
|
OPEN_STATE_SNOW_MOUNTAIN_ELDER_TREE,
|
||||||
OPEN_STATE_FISH uint16
|
OPEN_STATE_MIRACLE_RING,
|
||||||
OPEN_STATE_GUIDE_SUMO_TEAM_SKILL uint16
|
OPEN_STATE_COOP_LINE,
|
||||||
OPEN_STATE_GUIDE_FISH_RECIPE uint16
|
OPEN_STATE_INAZUMA_INFUSEDCRYSTAL,
|
||||||
OPEN_STATE_HOME uint16
|
OPEN_STATE_FISH,
|
||||||
OPEN_STATE_ACTIVITY_HOMEWORLD uint16
|
OPEN_STATE_GUIDE_SUMO_TEAM_SKILL,
|
||||||
OPEN_STATE_ADEPTIABODE uint16
|
OPEN_STATE_GUIDE_FISH_RECIPE,
|
||||||
OPEN_STATE_HOME_AVATAR uint16
|
OPEN_STATE_HOME,
|
||||||
OPEN_STATE_HOME_EDIT uint16
|
OPEN_STATE_ACTIVITY_HOMEWORLD,
|
||||||
OPEN_STATE_HOME_EDIT_TIPS uint16
|
OPEN_STATE_ADEPTIABODE,
|
||||||
OPEN_STATE_RELIQUARY_DECOMPOSE uint16
|
OPEN_STATE_HOME_AVATAR,
|
||||||
OPEN_STATE_ACTIVITY_H5 uint16
|
OPEN_STATE_HOME_EDIT,
|
||||||
OPEN_STATE_ORAIONOKAMI uint16
|
OPEN_STATE_HOME_EDIT_TIPS,
|
||||||
OPEN_STATE_GUIDE_CHESS_MISSION_CHECK uint16
|
OPEN_STATE_RELIQUARY_DECOMPOSE,
|
||||||
OPEN_STATE_GUIDE_CHESS_BUILD uint16
|
OPEN_STATE_ACTIVITY_H5,
|
||||||
OPEN_STATE_GUIDE_CHESS_WIND_TOWER_CIRCLE uint16
|
OPEN_STATE_ORAIONOKAMI,
|
||||||
OPEN_STATE_GUIDE_CHESS_CARD_SELECT uint16
|
OPEN_STATE_GUIDE_CHESS_MISSION_CHECK,
|
||||||
OPEN_STATE_INAZUMA_MAINQUEST_FINISHED uint16
|
OPEN_STATE_GUIDE_CHESS_BUILD,
|
||||||
OPEN_STATE_PAIMON_LVINFO uint16
|
OPEN_STATE_GUIDE_CHESS_WIND_TOWER_CIRCLE,
|
||||||
OPEN_STATE_TELEPORT_HUD uint16
|
OPEN_STATE_GUIDE_CHESS_CARD_SELECT,
|
||||||
OPEN_STATE_GUIDE_MAP_UNLOCK uint16
|
OPEN_STATE_INAZUMA_MAINQUEST_FINISHED,
|
||||||
OPEN_STATE_GUIDE_PAIMON_LVINFO uint16
|
OPEN_STATE_PAIMON_LVINFO,
|
||||||
OPEN_STATE_GUIDE_AMBORTRANSPORT uint16
|
OPEN_STATE_TELEPORT_HUD,
|
||||||
OPEN_STATE_GUIDE_FLY_SECOND uint16
|
OPEN_STATE_GUIDE_MAP_UNLOCK,
|
||||||
OPEN_STATE_GUIDE_KAEYA_CLUE uint16
|
OPEN_STATE_GUIDE_PAIMON_LVINFO,
|
||||||
OPEN_STATE_CAPTURE_CODEX uint16
|
OPEN_STATE_GUIDE_AMBORTRANSPORT,
|
||||||
OPEN_STATE_ACTIVITY_FISH_OPEN uint16
|
OPEN_STATE_GUIDE_FLY_SECOND,
|
||||||
OPEN_STATE_ACTIVITY_FISH_CLOSE uint16
|
OPEN_STATE_GUIDE_KAEYA_CLUE,
|
||||||
OPEN_STATE_GUIDE_ROGUE_MAP uint16
|
OPEN_STATE_CAPTURE_CODEX,
|
||||||
OPEN_STATE_GUIDE_ROGUE_RUNE uint16
|
OPEN_STATE_ACTIVITY_FISH_OPEN,
|
||||||
OPEN_STATE_GUIDE_BARTENDER_FORMULA uint16
|
OPEN_STATE_ACTIVITY_FISH_CLOSE,
|
||||||
OPEN_STATE_GUIDE_BARTENDER_MIX uint16
|
OPEN_STATE_GUIDE_ROGUE_MAP,
|
||||||
OPEN_STATE_GUIDE_BARTENDER_CUP uint16
|
OPEN_STATE_GUIDE_ROGUE_RUNE,
|
||||||
OPEN_STATE_GUIDE_MAIL_FAVORITES uint16
|
OPEN_STATE_GUIDE_BARTENDER_FORMULA,
|
||||||
OPEN_STATE_GUIDE_POTION_CONFIGURE uint16
|
OPEN_STATE_GUIDE_BARTENDER_MIX,
|
||||||
OPEN_STATE_GUIDE_LANV2_FIREWORK uint16
|
OPEN_STATE_GUIDE_BARTENDER_CUP,
|
||||||
OPEN_STATE_LOADINGTIPS_ENKANOMIYA uint16
|
OPEN_STATE_GUIDE_MAIL_FAVORITES,
|
||||||
OPEN_STATE_MICHIAE_CASKET uint16
|
OPEN_STATE_GUIDE_POTION_CONFIGURE,
|
||||||
OPEN_STATE_MAIL_COLLECT_UNLOCK_RED_POINT uint16
|
OPEN_STATE_GUIDE_LANV2_FIREWORK,
|
||||||
OPEN_STATE_LUMEN_STONE uint16
|
OPEN_STATE_LOADINGTIPS_ENKANOMIYA,
|
||||||
OPEN_STATE_GUIDE_CRYSTALLINK_BUFF uint16
|
OPEN_STATE_MICHIAE_CASKET,
|
||||||
}
|
OPEN_STATE_MAIL_COLLECT_UNLOCK_RED_POINT,
|
||||||
|
OPEN_STATE_LUMEN_STONE,
|
||||||
func InitOpenStateConst() {
|
OPEN_STATE_GUIDE_CRYSTALLINK_BUFF,
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,95 +1,46 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var PlayerPropertyConst *PlayerProperty
|
const (
|
||||||
|
PLAYER_PROP_EXP uint16 = 1001 // 角色经验
|
||||||
type PlayerProperty struct {
|
PLAYER_PROP_BREAK_LEVEL uint16 = 1002 // 角色突破等阶
|
||||||
PROP_EXP uint16 // 角色经验
|
PLAYER_PROP_SATIATION_VAL uint16 = 1003 // 角色饱食度
|
||||||
PROP_BREAK_LEVEL uint16 // 角色突破等阶
|
PLAYER_PROP_SATIATION_PENALTY_TIME uint16 = 1004 // 角色饱食度溢出
|
||||||
PROP_SATIATION_VAL uint16 // 角色饱食度
|
PLAYER_PROP_LEVEL uint16 = 4001 // 角色等级
|
||||||
PROP_SATIATION_PENALTY_TIME uint16 // 角色饱食度溢出
|
PLAYER_PROP_LAST_CHANGE_AVATAR_TIME uint16 = 10001 // 上一次改变角色的时间 暂不确定
|
||||||
PROP_LEVEL uint16 // 角色等级
|
PLAYER_PROP_MAX_SPRING_VOLUME uint16 = 10002 // 七天神像最大恢复血量 0-8500000
|
||||||
PROP_LAST_CHANGE_AVATAR_TIME uint16 // 上一次改变角色的时间 暂不确定
|
PLAYER_PROP_CUR_SPRING_VOLUME uint16 = 10003 // 七天神像当前血量 0-PROP_MAX_SPRING_VOLUME
|
||||||
PROP_MAX_SPRING_VOLUME uint16 // 七天神像最大恢复血量 0-8500000
|
PLAYER_PROP_IS_SPRING_AUTO_USE uint16 = 10004 // 是否开启靠近自动回血 0 1
|
||||||
PROP_CUR_SPRING_VOLUME uint16 // 七天神像当前血量 0-PROP_MAX_SPRING_VOLUME
|
PLAYER_PROP_SPRING_AUTO_USE_PERCENT uint16 = 10005 // 自动回血百分比 0-100
|
||||||
PROP_IS_SPRING_AUTO_USE uint16 // 是否开启靠近自动回血 0 1
|
PLAYER_PROP_IS_FLYABLE uint16 = 10006 // 禁止使用风之翼 0 1
|
||||||
PROP_SPRING_AUTO_USE_PERCENT uint16 // 自动回血百分比 0-100
|
PLAYER_PROP_IS_WEATHER_LOCKED uint16 = 10007 // 游戏内天气锁定
|
||||||
PROP_IS_FLYABLE uint16 // 禁止使用风之翼 0 1
|
PLAYER_PROP_IS_GAME_TIME_LOCKED uint16 = 10008 // 游戏内时间锁定
|
||||||
PROP_IS_WEATHER_LOCKED uint16 // 游戏内天气锁定
|
PLAYER_PROP_IS_TRANSFERABLE uint16 = 10009 // 是否禁止传送 0 1
|
||||||
PROP_IS_GAME_TIME_LOCKED uint16 // 游戏内时间锁定
|
PLAYER_PROP_MAX_STAMINA uint16 = 10010 // 最大体力 0-24000
|
||||||
PROP_IS_TRANSFERABLE uint16 // 是否禁止传送 0 1
|
PLAYER_PROP_CUR_PERSIST_STAMINA uint16 = 10011 // 当前体力 0-PROP_MAX_STAMINA
|
||||||
PROP_MAX_STAMINA uint16 // 最大体力 0-24000
|
PLAYER_PROP_CUR_TEMPORARY_STAMINA uint16 = 10012 // 当前临时体力 暂不确定
|
||||||
PROP_CUR_PERSIST_STAMINA uint16 // 当前体力 0-PROP_MAX_STAMINA
|
PLAYER_PROP_PLAYER_LEVEL uint16 = 10013 // 冒险等级
|
||||||
PROP_CUR_TEMPORARY_STAMINA uint16 // 当前临时体力 暂不确定
|
PLAYER_PROP_PLAYER_EXP uint16 = 10014 // 冒险经验
|
||||||
PROP_PLAYER_LEVEL uint16 // 冒险等级
|
PLAYER_PROP_PLAYER_HCOIN uint16 = 10015 // 原石 可以为负数
|
||||||
PROP_PLAYER_EXP uint16 // 冒险经验
|
PLAYER_PROP_PLAYER_SCOIN uint16 = 10016 // 摩拉
|
||||||
PROP_PLAYER_HCOIN uint16 // 原石 可以为负数
|
PLAYER_PROP_PLAYER_MP_SETTING_TYPE uint16 = 10017 // 多人游戏世界权限 0禁止加入 1直接加入 2需要申请
|
||||||
PROP_PLAYER_SCOIN uint16 // 摩拉
|
PLAYER_PROP_IS_MP_MODE_AVAILABLE uint16 = 10018 // 玩家当前的世界是否可加入 0 1 例如任务中就不可加入
|
||||||
PROP_PLAYER_MP_SETTING_TYPE uint16 // 多人游戏世界权限 0禁止加入 1直接加入 2需要申请
|
PLAYER_PROP_PLAYER_WORLD_LEVEL uint16 = 10019 // 世界等级 0-8
|
||||||
PROP_IS_MP_MODE_AVAILABLE uint16 // 玩家当前的世界是否可加入 0 1 例如任务中就不可加入
|
PLAYER_PROP_PLAYER_RESIN uint16 = 10020 // 树脂 0-2000
|
||||||
PROP_PLAYER_WORLD_LEVEL uint16 // 世界等级 0-8
|
PLAYER_PROP_PLAYER_WAIT_SUB_HCOIN uint16 = 10022 // 暂存的原石 暂不确定
|
||||||
PROP_PLAYER_RESIN uint16 // 树脂 0-2000
|
PLAYER_PROP_PLAYER_WAIT_SUB_SCOIN uint16 = 10023 // 暂存的摩拉 暂不确定
|
||||||
PROP_PLAYER_WAIT_SUB_HCOIN uint16 // 暂存的原石 暂不确定
|
PLAYER_PROP_IS_ONLY_MP_WITH_PS_PLAYER uint16 = 10024 // 当前玩家多人世界里是否有PS主机玩家 0 1
|
||||||
PROP_PLAYER_WAIT_SUB_SCOIN uint16 // 暂存的摩拉 暂不确定
|
PLAYER_PROP_PLAYER_MCOIN uint16 = 10025 // 创世结晶 可以为负数
|
||||||
PROP_IS_ONLY_MP_WITH_PS_PLAYER uint16 // 当前玩家多人世界里是否有PS主机玩家 0 1
|
PLAYER_PROP_PLAYER_WAIT_SUB_MCOIN uint16 = 10026 // 暂存的创世结晶 暂不确定
|
||||||
PROP_PLAYER_MCOIN uint16 // 创世结晶 可以为负数
|
PLAYER_PROP_PLAYER_LEGENDARY_KEY uint16 = 10027 // 传说任务钥匙
|
||||||
PROP_PLAYER_WAIT_SUB_MCOIN uint16 // 暂存的创世结晶 暂不确定
|
PLAYER_PROP_IS_HAS_FIRST_SHARE uint16 = 10028 // 是否拥有抽卡结果首次分享奖励 暂不确定
|
||||||
PROP_PLAYER_LEGENDARY_KEY uint16 // 传说任务钥匙
|
PLAYER_PROP_PLAYER_FORGE_POINT uint16 = 10029 // 锻造相关
|
||||||
PROP_IS_HAS_FIRST_SHARE uint16 // 是否拥有抽卡结果首次分享奖励 暂不确定
|
PLAYER_PROP_CUR_CLIMATE_METER uint16 = 10035 // 天气相关
|
||||||
PROP_PLAYER_FORGE_POINT uint16 // 锻造相关
|
PLAYER_PROP_CUR_CLIMATE_TYPE uint16 = 10036 // 天气相关
|
||||||
PROP_CUR_CLIMATE_METER uint16 // 天气相关
|
PLAYER_PROP_CUR_CLIMATE_AREA_ID uint16 = 10037 // 天气相关
|
||||||
PROP_CUR_CLIMATE_TYPE uint16 // 天气相关
|
PLAYER_PROP_CUR_CLIMATE_AREA_CLIMATE_TYPE uint16 = 10038 // 天气相关
|
||||||
PROP_CUR_CLIMATE_AREA_ID uint16 // 天气相关
|
PLAYER_PROP_PLAYER_WORLD_LEVEL_LIMIT uint16 = 10039 // 降低世界等级到此等级 暂不确定
|
||||||
PROP_CUR_CLIMATE_AREA_CLIMATE_TYPE uint16 // 天气相关
|
PLAYER_PROP_PLAYER_WORLD_LEVEL_ADJUST_CD uint16 = 10040 // 降低世界等级的CD
|
||||||
PROP_PLAYER_WORLD_LEVEL_LIMIT uint16 // 降低世界等级到此等级 暂不确定
|
PLAYER_PROP_PLAYER_LEGENDARY_DAILY_TASK_NUM uint16 = 10041 // 传说每日任务数量 暂不确定
|
||||||
PROP_PLAYER_WORLD_LEVEL_ADJUST_CD uint16 // 降低世界等级的CD
|
PLAYER_PROP_PLAYER_HOME_COIN uint16 = 10042 // 洞天宝钱
|
||||||
PROP_PLAYER_LEGENDARY_DAILY_TASK_NUM uint16 // 传说每日任务数量 暂不确定
|
PLAYER_PROP_PLAYER_WAIT_SUB_HOME_COIN uint16 = 10043 // 暂存的洞天宝钱 暂不确定
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,25 +1,11 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var SceneTypeConst *SceneType
|
const (
|
||||||
|
SCENE_TYPE_NONE uint16 = 0
|
||||||
type SceneType struct {
|
SCENE_TYPE_WORLD uint16 = 1
|
||||||
SCENE_NONE uint16
|
SCENE_TYPE_DUNGEON uint16 = 2
|
||||||
SCENE_WORLD uint16
|
SCENE_TYPE_ROOM uint16 = 3
|
||||||
SCENE_DUNGEON uint16
|
SCENE_TYPE_HOME_WORLD uint16 = 4
|
||||||
SCENE_ROOM uint16
|
SCENE_TYPE_HOME_ROOM uint16 = 5
|
||||||
SCENE_HOME_WORLD uint16
|
SCENE_TYPE_ACTIVITY uint16 = 6
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,65 +1,30 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var StaminaCostConst *StaminaCost
|
const (
|
||||||
|
|
||||||
type StaminaCost struct {
|
|
||||||
// 消耗耐力
|
// 消耗耐力
|
||||||
CLIMBING_BASE int32 // 缓慢攀爬基数
|
STAMINA_COST_CLIMBING_BASE int32 = -100 // 缓慢攀爬基数
|
||||||
CLIMB_START int32 // 攀爬开始
|
STAMINA_COST_CLIMB_START int32 = -500 // 攀爬开始
|
||||||
CLIMB_JUMP int32 // 攀爬跳跃
|
STAMINA_COST_CLIMB_JUMP int32 = -2500 // 攀爬跳跃
|
||||||
DASH int32 // 快速跑步
|
STAMINA_COST_DASH int32 = -360 // 快速跑步
|
||||||
FLY int32 // 滑翔
|
STAMINA_COST_FLY int32 = -60 // 滑翔
|
||||||
SPRINT int32 // 冲刺
|
STAMINA_COST_SPRINT int32 = -1800 // 冲刺
|
||||||
SWIM_DASH_START int32 // 快速游泳开始
|
STAMINA_COST_SWIM_DASH_START int32 = -200 // 快速游泳开始
|
||||||
SWIM_DASH int32 // 快速游泳
|
STAMINA_COST_SWIM_DASH int32 = -204 // 快速游泳
|
||||||
SWIMMING int32 // 缓慢游泳
|
STAMINA_COST_SWIMMING int32 = -400 // 缓慢游泳
|
||||||
// 恢复耐力
|
// 恢复耐力
|
||||||
POWERED_FLY int32 // 滑翔加速(风圈等)
|
STAMINA_COST_POWERED_FLY int32 = 500 // 滑翔加速(风圈等)
|
||||||
RUN int32 // 正常跑步
|
STAMINA_COST_RUN int32 = 500 // 正常跑步
|
||||||
STANDBY int32 // 站立
|
STAMINA_COST_STANDBY int32 = 500 // 站立
|
||||||
WALK int32 // 走路
|
STAMINA_COST_WALK int32 = 500 // 走路
|
||||||
// 载具浪船
|
// 载具浪船
|
||||||
SKIFF_DASH int32 // 浪船加速
|
STAMINA_COST_SKIFF_DASH int32 = -204 // 浪船加速
|
||||||
SKIFF_NORMAL int32 // 浪船正常移动 (回复耐力)
|
STAMINA_COST_SKIFF_NORMAL int32 = 500 // 浪船正常移动 (回复耐力)
|
||||||
POWERED_SKIFF int32 // 浪船加速(风圈等) (回复耐力)
|
STAMINA_COST_POWERED_SKIFF int32 = 500 // 浪船加速(风圈等) (回复耐力)
|
||||||
IN_SKIFF int32 // 处于浪船中回复角色耐力 (回复耐力)
|
STAMINA_COST_IN_SKIFF int32 = 500 // 处于浪船中回复角色耐力 (回复耐力)
|
||||||
SKIFF_NOBODY int32 // 浪船无人时回复载具耐力 (回复耐力)
|
STAMINA_COST_SKIFF_NOBODY int32 = 500 // 浪船无人时回复载具耐力 (回复耐力)
|
||||||
// 武器消耗默认值
|
// 武器消耗默认值
|
||||||
FIGHT_SWORD_ONE_HAND int32 // 单手剑
|
STAMINA_COST_FIGHT_SWORD_ONE_HAND int32 = -2000 // 单手剑
|
||||||
FIGHT_POLE int32 // 长枪
|
STAMINA_COST_FIGHT_POLE int32 = -2500 // 长枪
|
||||||
FIGHT_CATALYST int32 // 法器
|
STAMINA_COST_FIGHT_CATALYST int32 = -5000 // 法器
|
||||||
FIGHT_CLAYMORE_PER int32 // 双手剑 (每秒消耗)
|
STAMINA_COST_FIGHT_CLAYMORE_PER int32 = -4000 // 双手剑 (每秒消耗)
|
||||||
// 技能开始消耗 (目前仅发现绫华与莫娜的冲刺会有开始消耗)
|
)
|
||||||
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, // 莫娜冲刺(虚实流动)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,39 +1,18 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var WeaponTypeConst *WeaponType
|
const (
|
||||||
|
WEAPON_TYPE_NONE int32 = 0
|
||||||
type WeaponType struct {
|
WEAPON_TYPE_SWORD_ONE_HAND int32 = 1 // 单手剑
|
||||||
WEAPON_NONE int32
|
WEAPON_TYPE_CROSSBOW int32 = 2 // 弩
|
||||||
WEAPON_SWORD_ONE_HAND int32 // 单手剑
|
WEAPON_TYPE_STAFF int32 = 3 // 权杖
|
||||||
WEAPON_CROSSBOW int32 // 弩
|
WEAPON_TYPE_DOUBLE_DAGGER int32 = 4 // 双刀
|
||||||
WEAPON_STAFF int32 // 权杖
|
WEAPON_TYPE_KATANA int32 = 5 // 武士刀
|
||||||
WEAPON_DOUBLE_DAGGER int32 // 双刀
|
WEAPON_TYPE_SHURIKEN int32 = 6 // 手里剑
|
||||||
WEAPON_KATANA int32 // 武士刀
|
WEAPON_TYPE_STICK int32 = 7 // 棍
|
||||||
WEAPON_SHURIKEN int32 // 手里剑
|
WEAPON_TYPE_SPEAR int32 = 8 // 矛
|
||||||
WEAPON_STICK int32 // 棍
|
WEAPON_TYPE_SHIELD_SMALL int32 = 9 // 小盾牌
|
||||||
WEAPON_SPEAR int32 // 矛
|
WEAPON_TYPE_CATALYST int32 = 10 // 法器
|
||||||
WEAPON_SHIELD_SMALL int32 // 小盾牌
|
WEAPON_TYPE_CLAYMORE int32 = 11 // 双手剑
|
||||||
WEAPON_CATALYST int32 // 法器
|
WEAPON_TYPE_BOW int32 = 12 // 弓
|
||||||
WEAPON_CLAYMORE int32 // 双手剑
|
WEAPON_TYPE_POLE int32 = 13 // 长枪
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"hk4e/common/config"
|
"hk4e/common/config"
|
||||||
"hk4e/common/constant"
|
|
||||||
"hk4e/common/mq"
|
"hk4e/common/mq"
|
||||||
"hk4e/common/rpc"
|
"hk4e/common/rpc"
|
||||||
"hk4e/fight/engine"
|
"hk4e/fight/engine"
|
||||||
@@ -59,8 +58,6 @@ func Run(ctx context.Context, configFile string) error {
|
|||||||
logger.InitLogger("fight_" + APPID)
|
logger.InitLogger("fight_" + APPID)
|
||||||
logger.Warn("fight start, appid: %v", APPID)
|
logger.Warn("fight start, appid: %v", APPID)
|
||||||
|
|
||||||
constant.InitConstant()
|
|
||||||
|
|
||||||
messageQueue := mq.NewMessageQueue(api.FIGHT, APPID, client)
|
messageQueue := mq.NewMessageQueue(api.FIGHT, APPID, client)
|
||||||
defer messageQueue.Close()
|
defer messageQueue.Close()
|
||||||
|
|
||||||
|
|||||||
@@ -201,8 +201,8 @@ func (f *FightRoutine) onTickSecond(now int64) {
|
|||||||
if entity.uid == 0 {
|
if entity.uid == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
entity.fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_ATTACK)] = 1000000
|
entity.fightPropMap[uint32(constant.FIGHT_PROP_CUR_ATTACK)] = 1000000
|
||||||
entity.fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CRITICAL)] = 1.0
|
entity.fightPropMap[uint32(constant.FIGHT_PROP_CRITICAL)] = 1.0
|
||||||
avatarFightPropNotify := &proto.AvatarFightPropNotify{
|
avatarFightPropNotify := &proto.AvatarFightPropNotify{
|
||||||
AvatarGuid: entity.avatarGuid,
|
AvatarGuid: entity.avatarGuid,
|
||||||
FightPropMap: entity.fightPropMap,
|
FightPropMap: entity.fightPropMap,
|
||||||
@@ -262,17 +262,17 @@ func (f *FightRoutine) attackHandle(gameMsg *mq.GameMsg) {
|
|||||||
_ = attackerId
|
_ = attackerId
|
||||||
currHp := float32(0)
|
currHp := float32(0)
|
||||||
if target.fightPropMap != nil {
|
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
|
currHp -= damage
|
||||||
if currHp < 0 {
|
if currHp < 0 {
|
||||||
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 := new(proto.EntityFightPropUpdateNotify)
|
||||||
entityFightPropUpdateNotify.EntityId = target.entityId
|
entityFightPropUpdateNotify.EntityId = target.entityId
|
||||||
entityFightPropUpdateNotify.FightPropMap = make(map[uint32]float32)
|
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) {
|
for _, uid := range f.getAllPlayer(f.entityMap) {
|
||||||
SendMsg(f.messageQueue, cmd.EntityFightPropUpdateNotify, uid, f.gateAppId, entityFightPropUpdateNotify)
|
SendMsg(f.messageQueue, cmd.EntityFightPropUpdateNotify, uid, f.gateAppId, entityFightPropUpdateNotify)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,18 +2,18 @@ package gdconf
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"hk4e/pkg/endec"
|
|
||||||
"hk4e/pkg/logger"
|
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"hk4e/pkg/endec"
|
||||||
|
"hk4e/pkg/logger"
|
||||||
|
|
||||||
"github.com/hjson/hjson-go/v4"
|
"github.com/hjson/hjson-go/v4"
|
||||||
"github.com/jszwec/csvutil"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 角色配置表
|
// AvatarData 角色配置表
|
||||||
|
|
||||||
type AvatarData struct {
|
type AvatarData struct {
|
||||||
AvatarId int32 `csv:"AvatarId"` // ID
|
AvatarId int32 `csv:"AvatarId"` // ID
|
||||||
HpBase float64 `csv:"HpBase,omitempty"` // 基础生命值
|
HpBase float64 `csv:"HpBase,omitempty"` // 基础生命值
|
||||||
@@ -97,6 +97,14 @@ func (g *GameDataConfig) loadAvatarData() {
|
|||||||
logger.Info("AvatarData count: %v", len(g.AvatarDataMap))
|
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 成长属性要读表
|
// TODO 成长属性要读表
|
||||||
|
|
||||||
func (a *AvatarData) GetBaseHpByLevel(level uint8) float64 {
|
func (a *AvatarData) GetBaseHpByLevel(level uint8) float64 {
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ package gdconf
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"hk4e/pkg/logger"
|
"hk4e/pkg/logger"
|
||||||
|
|
||||||
"github.com/jszwec/csvutil"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 角色等级配置表
|
// AvatarLevelData 角色等级配置表
|
||||||
|
|
||||||
type AvatarLevelData struct {
|
type AvatarLevelData struct {
|
||||||
Level int32 `csv:"Level"` // 等级
|
Level int32 `csv:"Level"` // 等级
|
||||||
Exp int32 `csv:"Exp,omitempty"` // 升到下一级所需经验
|
Exp int32 `csv:"Exp,omitempty"` // 升到下一级所需经验
|
||||||
@@ -29,3 +29,11 @@ func (g *GameDataConfig) loadAvatarLevelData() {
|
|||||||
}
|
}
|
||||||
logger.Info("AvatarLevelData count: %v", len(g.AvatarLevelDataMap))
|
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 (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"hk4e/pkg/logger"
|
"hk4e/pkg/logger"
|
||||||
|
|
||||||
"github.com/jszwec/csvutil"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 角色突破配置表
|
// AvatarPromoteData 角色突破配置表
|
||||||
|
|
||||||
type AvatarPromoteData struct {
|
type AvatarPromoteData struct {
|
||||||
PromoteId int32 `csv:"PromoteId"` // 角色突破ID
|
PromoteId int32 `csv:"PromoteId"` // 角色突破ID
|
||||||
PromoteLevel int32 `csv:"PromoteLevel,omitempty"` // 突破等级
|
PromoteLevel int32 `csv:"PromoteLevel,omitempty"` // 突破等级
|
||||||
@@ -59,3 +59,11 @@ func (g *GameDataConfig) loadAvatarPromoteData() {
|
|||||||
}
|
}
|
||||||
logger.Info("AvatarPromoteData count: %v", len(g.AvatarPromoteDataMap))
|
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"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 角色技能配置表
|
// AvatarSkillData 角色技能配置表
|
||||||
|
|
||||||
type AvatarSkillData struct {
|
type AvatarSkillData struct {
|
||||||
AvatarSkillId int32 `csv:"AvatarSkillId"` // ID
|
AvatarSkillId int32 `csv:"AvatarSkillId"` // ID
|
||||||
AbilityName string `csv:"AbilityName,omitempty"` // Ability名称
|
AbilityName string `csv:"AbilityName,omitempty"` // Ability名称
|
||||||
@@ -34,3 +33,11 @@ func (g *GameDataConfig) loadAvatarSkillData() {
|
|||||||
}
|
}
|
||||||
logger.Info("AvatarSkillData count: %v", len(g.AvatarSkillDataMap))
|
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"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 角色技能库配置表
|
// AvatarSkillDepotData 角色技能库配置表
|
||||||
|
|
||||||
type AvatarSkillDepotData struct {
|
type AvatarSkillDepotData struct {
|
||||||
AvatarSkillDepotId int32 `csv:"AvatarSkillDepotId"` // ID
|
AvatarSkillDepotId int32 `csv:"AvatarSkillDepotId"` // ID
|
||||||
EnergySkill int32 `csv:"EnergySkill,omitempty"` // 充能技能
|
EnergySkill int32 `csv:"EnergySkill,omitempty"` // 充能技能
|
||||||
@@ -127,7 +126,15 @@ func (g *GameDataConfig) loadAvatarSkillDepotData() {
|
|||||||
logger.Info("AvatarSkillDepotData count: %v", len(g.AvatarSkillDepotDataMap))
|
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 {
|
if avatarId == 10000005 || avatarId == 10000007 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/jszwec/csvutil"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// FetterData 角色资料解锁配置表
|
||||||
type FetterData struct {
|
type FetterData struct {
|
||||||
FetterId int32 `csv:"FetterId"` // ID
|
FetterId int32 `csv:"FetterId"` // ID
|
||||||
AvatarId int32 `csv:"AvatarId"` // 角色ID
|
AvatarId int32 `csv:"AvatarId"` // 角色ID
|
||||||
@@ -38,3 +39,15 @@ func (g *GameDataConfig) loadFetterData() {
|
|||||||
}
|
}
|
||||||
logger.Info("FetterData count: %v", len(g.FetterDataMap))
|
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 // 卡牌技能
|
GCGSkillDataMap map[int32]*GCGSkillData // 卡牌技能
|
||||||
SceneDataMap map[int32]*SceneData // 场景
|
SceneDataMap map[int32]*SceneData // 场景
|
||||||
ScenePointMap map[int32]*ScenePoint // 场景传送点
|
ScenePointMap map[int32]*ScenePoint // 场景传送点
|
||||||
SceneTagDataMap map[int32]*SceneTagData // 场景地图图标
|
SceneTagDataMap map[int32]*SceneTagData // 场景标签
|
||||||
SceneMap map[int32]*Scene // 场景详情
|
SceneDetailMap map[int32]*SceneDetail // 场景详情LUA配置数据
|
||||||
WorldAreaDataMap map[int32]*WorldAreaData // 世界区域
|
WorldAreaDataMap map[int32]*WorldAreaData // 世界区域
|
||||||
GatherDataMap map[int32]*GatherData // 采集物
|
GatherDataMap map[int32]*GatherData // 采集物
|
||||||
GatherDataPointTypeMap map[int32]*GatherData // 采集物场景节点索引
|
GatherDataPointTypeMap map[int32]*GatherData // 采集物场景节点索引
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ func TestSceneBlock(t *testing.T) {
|
|||||||
config.InitConfig("./bin/application.toml")
|
config.InitConfig("./bin/application.toml")
|
||||||
logger.InitLogger("SceneBlock")
|
logger.InitLogger("SceneBlock")
|
||||||
InitGameDataConfig()
|
InitGameDataConfig()
|
||||||
scene, exist := CONF.SceneMap[3]
|
scene, exist := CONF.SceneDetailMap[3]
|
||||||
if !exist {
|
if !exist {
|
||||||
panic("scene 3 not exist")
|
panic("scene 3 not exist")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/jszwec/csvutil"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// GatherData 采集物配置表
|
||||||
type GatherData struct {
|
type GatherData struct {
|
||||||
PointType int32 `csv:"PointType"` // 挂节点类型
|
PointType int32 `csv:"PointType"` // 挂节点类型
|
||||||
GatherId int32 `csv:"GatherId"` // ID
|
GatherId int32 `csv:"GatherId"` // ID
|
||||||
@@ -32,3 +33,15 @@ func (g *GameDataConfig) loadGatherData() {
|
|||||||
}
|
}
|
||||||
logger.Info("GatherData count: %v", len(g.GatherDataMap))
|
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"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 角色卡牌配置表
|
// GCGCharData 角色卡牌配置表
|
||||||
|
|
||||||
type GCGCharData struct {
|
type GCGCharData struct {
|
||||||
CharId int32 `csv:"CharId"` // ID
|
CharId int32 `csv:"CharId"` // ID
|
||||||
TagId1 int32 `csv:"TagId1,omitempty"` // 卡牌标签列表1
|
TagId1 int32 `csv:"TagId1,omitempty"` // 卡牌标签列表1
|
||||||
@@ -64,3 +63,11 @@ func (g *GameDataConfig) loadGCGCharData() {
|
|||||||
}
|
}
|
||||||
logger.Info("GCGCharData count: %v", len(g.GCGCharDataMap))
|
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 (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"hk4e/pkg/logger"
|
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"hk4e/pkg/logger"
|
||||||
|
|
||||||
"github.com/hjson/hjson-go/v4"
|
"github.com/hjson/hjson-go/v4"
|
||||||
|
|
||||||
"github.com/jszwec/csvutil"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 卡牌技能配置表
|
// GCGSkillData 卡牌技能配置表
|
||||||
|
|
||||||
type GCGSkillData struct {
|
type GCGSkillData struct {
|
||||||
SkillId int32 `csv:"SkillId"` // ID
|
SkillId int32 `csv:"SkillId"` // ID
|
||||||
ConfigJson string `csv:"ConfigJson,omitempty"` // 效果config
|
ConfigJson string `csv:"ConfigJson,omitempty"` // 效果config
|
||||||
@@ -109,3 +109,11 @@ func (g *GameDataConfig) loadGCGSkillData() {
|
|||||||
}
|
}
|
||||||
logger.Info("GCGSkillData count: %v", len(g.GCGSkillDataMap))
|
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 (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"hk4e/common/constant"
|
|
||||||
"hk4e/pkg/logger"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"hk4e/common/constant"
|
||||||
|
"hk4e/pkg/logger"
|
||||||
|
|
||||||
"github.com/jszwec/csvutil"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// ItemData 统一道具配置表
|
||||||
type ItemData struct {
|
type ItemData struct {
|
||||||
// 公共字段
|
// 公共字段
|
||||||
ItemId int32 `csv:"ItemId"` // ID
|
ItemId int32 `csv:"ItemId"` // ID
|
||||||
@@ -57,7 +59,7 @@ func (g *GameDataConfig) loadItemData() {
|
|||||||
itemData.SkillAffix = append(itemData.SkillAffix, itemData.SkillAffix2)
|
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, " ", ""), "#")
|
tempCostList := strings.Split(strings.ReplaceAll(itemData.AwakenCoinCostStr, " ", ""), "#")
|
||||||
itemData.AwakenCoinCostList = make([]uint32, 0, len(tempCostList))
|
itemData.AwakenCoinCostList = make([]uint32, 0, len(tempCostList))
|
||||||
for _, s := range tempCostList {
|
for _, s := range tempCostList {
|
||||||
@@ -74,3 +76,11 @@ func (g *GameDataConfig) loadItemData() {
|
|||||||
}
|
}
|
||||||
logger.Info("ItemData count: %v", len(g.ItemDataMap))
|
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 (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"hk4e/pkg/logger"
|
"hk4e/pkg/logger"
|
||||||
|
|
||||||
"github.com/jszwec/csvutil"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 玩家等级配置表
|
// PlayerLevelData 玩家等级配置表
|
||||||
|
|
||||||
type PlayerLevelData struct {
|
type PlayerLevelData struct {
|
||||||
Level int32 `csv:"Level"` // 等级
|
Level int32 `csv:"Level"` // 等级
|
||||||
Exp int32 `csv:"Exp,omitempty"` // 升到下一级所需经验
|
Exp int32 `csv:"Exp,omitempty"` // 升到下一级所需经验
|
||||||
@@ -29,3 +29,11 @@ func (g *GameDataConfig) loadPlayerLevelData() {
|
|||||||
}
|
}
|
||||||
logger.Info("PlayerLevelData count: %v", len(g.PlayerLevelDataMap))
|
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 (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"hk4e/pkg/logger"
|
"hk4e/pkg/logger"
|
||||||
|
|
||||||
"github.com/jszwec/csvutil"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 奖励配置表
|
// RewardData 奖励配置表
|
||||||
|
|
||||||
type RewardData struct {
|
type RewardData struct {
|
||||||
RewardID int32 `csv:"RewardID"` // 奖励ID
|
RewardID int32 `csv:"RewardID"` // 奖励ID
|
||||||
RewardItem1ID int32 `csv:"RewardItem1ID,omitempty"` // Reward道具1ID
|
RewardItem1ID int32 `csv:"RewardItem1ID,omitempty"` // Reward道具1ID
|
||||||
@@ -66,3 +66,11 @@ func (g *GameDataConfig) loadRewardData() {
|
|||||||
}
|
}
|
||||||
logger.Info("RewardData count: %v", len(g.RewardDataMap))
|
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"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// SceneData 场景配置表
|
||||||
type SceneData struct {
|
type SceneData struct {
|
||||||
SceneId int32 `csv:"SceneId"` // ID
|
SceneId int32 `csv:"SceneId"` // ID
|
||||||
SceneType int32 `csv:"SceneType,omitempty"` // 类型
|
SceneType int32 `csv:"SceneType,omitempty"` // 类型
|
||||||
@@ -28,3 +29,11 @@ func (g *GameDataConfig) loadSceneData() {
|
|||||||
}
|
}
|
||||||
logger.Info("SceneData count: %v", len(g.SceneDataMap))
|
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"
|
"hk4e/pkg/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 场景详情配置数据
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SceneGroupLoaderLimit = 4 // 加载文件的并发数 此操作很耗内存 调大之前请确保你的机器内存足够
|
SceneGroupLoaderLimit = 4 // 加载文件的并发数 此操作很耗内存 调大之前请确保你的机器内存足够
|
||||||
)
|
)
|
||||||
|
|
||||||
type Scene struct {
|
type SceneDetail struct {
|
||||||
Id int32
|
Id int32
|
||||||
SceneConfig *SceneConfig // 地图配置
|
SceneConfig *SceneConfig // 地图配置
|
||||||
BlockMap map[int32]*Block // 所有的区块
|
BlockMap map[int32]*Block // 所有的区块
|
||||||
@@ -130,7 +132,7 @@ func (g *GameDataConfig) loadGroup(group *Group, block *Block, sceneId int32, bl
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameDataConfig) loadScene() {
|
func (g *GameDataConfig) loadScene() {
|
||||||
g.SceneMap = make(map[int32]*Scene)
|
g.SceneDetailMap = make(map[int32]*SceneDetail)
|
||||||
sceneLuaPrefix := g.luaPrefix + "scene/"
|
sceneLuaPrefix := g.luaPrefix + "scene/"
|
||||||
for _, sceneData := range g.SceneDataMap {
|
for _, sceneData := range g.SceneDataMap {
|
||||||
sceneId := sceneData.SceneId
|
sceneId := sceneData.SceneId
|
||||||
@@ -141,17 +143,17 @@ func (g *GameDataConfig) loadScene() {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
luaState := fixLuaState(string(mainLuaData))
|
luaState := fixLuaState(string(mainLuaData))
|
||||||
scene := new(Scene)
|
sceneDetail := new(SceneDetail)
|
||||||
scene.Id = sceneId
|
sceneDetail.Id = sceneId
|
||||||
// scene_config
|
// scene_config
|
||||||
scene.SceneConfig = new(SceneConfig)
|
sceneDetail.SceneConfig = new(SceneConfig)
|
||||||
ok := parseLuaTableToObject[*SceneConfig](luaState, "scene_config", scene.SceneConfig)
|
ok := parseLuaTableToObject[*SceneConfig](luaState, "scene_config", sceneDetail.SceneConfig)
|
||||||
if !ok {
|
if !ok {
|
||||||
logger.Error("get scene_config object error, sceneId: %v", sceneId)
|
logger.Error("get scene_config object error, sceneId: %v", sceneId)
|
||||||
luaState.Close()
|
luaState.Close()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
scene.BlockMap = make(map[int32]*Block)
|
sceneDetail.BlockMap = make(map[int32]*Block)
|
||||||
// blocks
|
// blocks
|
||||||
blockIdList := make([]int32, 0)
|
blockIdList := make([]int32, 0)
|
||||||
ok = parseLuaTableToObject[*[]int32](luaState, "blocks", &blockIdList)
|
ok = parseLuaTableToObject[*[]int32](luaState, "blocks", &blockIdList)
|
||||||
@@ -205,9 +207,9 @@ func (g *GameDataConfig) loadScene() {
|
|||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
scene.BlockMap[block.Id] = block
|
sceneDetail.BlockMap[block.Id] = block
|
||||||
}
|
}
|
||||||
g.SceneMap[sceneId] = scene
|
g.SceneDetailMap[sceneId] = sceneDetail
|
||||||
}
|
}
|
||||||
sceneCount := 0
|
sceneCount := 0
|
||||||
blockCount := 0
|
blockCount := 0
|
||||||
@@ -215,7 +217,7 @@ func (g *GameDataConfig) loadScene() {
|
|||||||
monsterCount := 0
|
monsterCount := 0
|
||||||
npcCount := 0
|
npcCount := 0
|
||||||
gadgetCount := 0
|
gadgetCount := 0
|
||||||
for _, scene := range g.SceneMap {
|
for _, scene := range g.SceneDetailMap {
|
||||||
for _, block := range scene.BlockMap {
|
for _, block := range scene.BlockMap {
|
||||||
for _, group := range block.GroupMap {
|
for _, group := range block.GroupMap {
|
||||||
monsterCount += len(group.MonsterList)
|
monsterCount += len(group.MonsterList)
|
||||||
@@ -231,11 +233,19 @@ func (g *GameDataConfig) loadScene() {
|
|||||||
sceneCount, blockCount, groupCount, monsterCount, npcCount, gadgetCount)
|
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)
|
monsterList := make([]*Monster, 0)
|
||||||
npcList := make([]*Npc, 0)
|
npcList := make([]*Npc, 0)
|
||||||
gadgetList := make([]*Gadget, 0)
|
gadgetList := make([]*Gadget, 0)
|
||||||
sceneConfig, exist := g.SceneMap[sceneId]
|
sceneConfig, exist := CONF.SceneDetailMap[sceneId]
|
||||||
if !exist {
|
if !exist {
|
||||||
return nil, nil, nil, false
|
return nil, nil, nil, false
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,8 @@ import (
|
|||||||
"hk4e/pkg/logger"
|
"hk4e/pkg/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 场景传送点配置数据
|
||||||
|
|
||||||
// 传送点类型
|
// 传送点类型
|
||||||
const (
|
const (
|
||||||
PointTypeStrTransPointNormal = "TransPointNormal"
|
PointTypeStrTransPointNormal = "TransPointNormal"
|
||||||
@@ -126,3 +128,19 @@ func (g *GameDataConfig) loadScenePoint() {
|
|||||||
}
|
}
|
||||||
logger.Info("ScenePoint count: %v", scenePointCount)
|
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"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// SceneTagData 场景标签配置表
|
||||||
type SceneTagData struct {
|
type SceneTagData struct {
|
||||||
SceneTagId int32 `csv:"SceneTagId"` // ID
|
SceneTagId int32 `csv:"SceneTagId"` // ID
|
||||||
SceneId int32 `csv:"SceneId,omitempty"` // 场景ID
|
SceneId int32 `csv:"SceneId,omitempty"` // 场景ID
|
||||||
@@ -28,3 +29,11 @@ func (g *GameDataConfig) loadSceneTagData() {
|
|||||||
}
|
}
|
||||||
logger.Info("SceneTagData count: %v", len(g.SceneTagDataMap))
|
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 (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"hk4e/pkg/logger"
|
"hk4e/pkg/logger"
|
||||||
|
|
||||||
"github.com/jszwec/csvutil"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 武器等级配置表
|
// WeaponLevelData 武器等级配置表
|
||||||
|
|
||||||
type WeaponLevelData struct {
|
type WeaponLevelData struct {
|
||||||
Level int32 `csv:"Level"` // 等级
|
Level int32 `csv:"Level"` // 等级
|
||||||
ExpByStar1 int32 `csv:"ExpByStar1,omitempty"` // 武器升级经验1
|
ExpByStar1 int32 `csv:"ExpByStar1,omitempty"` // 武器升级经验1
|
||||||
@@ -42,3 +42,11 @@ func (g *GameDataConfig) loadWeaponLevelData() {
|
|||||||
}
|
}
|
||||||
logger.Info("WeaponLevelData count: %v", len(g.WeaponLevelDataMap))
|
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 (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"hk4e/pkg/logger"
|
"hk4e/pkg/logger"
|
||||||
|
|
||||||
"github.com/jszwec/csvutil"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 武器突破配置表
|
// WeaponPromoteData 武器突破配置表
|
||||||
|
|
||||||
type WeaponPromoteData struct {
|
type WeaponPromoteData struct {
|
||||||
PromoteId int32 `csv:"PromoteId"` // 武器突破ID
|
PromoteId int32 `csv:"PromoteId"` // 武器突破ID
|
||||||
PromoteLevel int32 `csv:"PromoteLevel,omitempty"` // 突破等级
|
PromoteLevel int32 `csv:"PromoteLevel,omitempty"` // 突破等级
|
||||||
@@ -56,3 +56,11 @@ func (g *GameDataConfig) loadWeaponPromoteData() {
|
|||||||
}
|
}
|
||||||
logger.Info("WeaponPromoteData count: %v", len(g.WeaponPromoteDataMap))
|
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"
|
"github.com/jszwec/csvutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// WorldAreaData 世界区域配置表
|
||||||
type WorldAreaData struct {
|
type WorldAreaData struct {
|
||||||
WorldAreaId int32 `csv:"WorldAreaId"` // 条目ID
|
WorldAreaId int32 `csv:"WorldAreaId"` // 条目ID
|
||||||
SceneId int32 `csv:"SceneId,omitempty"` // 场景ID
|
SceneId int32 `csv:"SceneId,omitempty"` // 场景ID
|
||||||
@@ -30,3 +31,11 @@ func (g *GameDataConfig) loadWorldAreaData() {
|
|||||||
}
|
}
|
||||||
logger.Info("WorldAreaData count: %v", len(g.WorldAreaDataMap))
|
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"
|
"time"
|
||||||
|
|
||||||
"hk4e/common/config"
|
"hk4e/common/config"
|
||||||
"hk4e/common/constant"
|
|
||||||
"hk4e/common/mq"
|
"hk4e/common/mq"
|
||||||
"hk4e/common/rpc"
|
"hk4e/common/rpc"
|
||||||
"hk4e/gdconf"
|
"hk4e/gdconf"
|
||||||
@@ -72,7 +71,6 @@ func Run(ctx context.Context, configFile string) error {
|
|||||||
logger.InitLogger("gs_" + APPID)
|
logger.InitLogger("gs_" + APPID)
|
||||||
logger.Warn("gs start, appid: %v, gsid: %v", APPID, GSID)
|
logger.Warn("gs start, appid: %v, gsid: %v", APPID, GSID)
|
||||||
|
|
||||||
constant.InitConstant()
|
|
||||||
gdconf.InitGameDataConfig()
|
gdconf.InitGameDataConfig()
|
||||||
|
|
||||||
db, err := dao.NewDao()
|
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)
|
logger.Error("player is nil, uid: %v", userId)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
GAME_MANAGER.TeleportPlayer(player, constant.EnterReasonConst.Gm, sceneId, &model.Vector{
|
GAME_MANAGER.TeleportPlayer(player, constant.EnterReasonGm, sceneId, &model.Vector{
|
||||||
X: posX,
|
X: posX,
|
||||||
Y: posY,
|
Y: posY,
|
||||||
Z: posZ,
|
Z: posZ,
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ func NewGameManager(dao *dao.Dao, messageQueue *mq.MessageQueue, gsId uint32, gs
|
|||||||
for i := 1; i < 3; i++ {
|
for i := 1; i < 3; i++ {
|
||||||
uid := 1000000 + uint32(i)
|
uid := 1000000 + uint32(i)
|
||||||
avatarId := uint32(0)
|
avatarId := uint32(0)
|
||||||
for _, avatarData := range gdconf.CONF.AvatarDataMap {
|
for _, avatarData := range gdconf.GetAvatarDataMap() {
|
||||||
avatarId = uint32(avatarData.AvatarId)
|
avatarId = uint32(avatarData.AvatarId)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -175,7 +175,7 @@ func (g *GameManager) gameMainLoop() {
|
|||||||
motherfuckerPlayerInfo, _ := json.Marshal(SELF)
|
motherfuckerPlayerInfo, _ := json.Marshal(SELF)
|
||||||
logger.Error("the motherfucker player info: %v", string(motherfuckerPlayerInfo))
|
logger.Error("the motherfucker player info: %v", string(motherfuckerPlayerInfo))
|
||||||
if SELF != nil {
|
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()
|
userList := USER_MANAGER.GetAllOnlineUserList()
|
||||||
for _, player := range userList {
|
for _, player := range userList {
|
||||||
g.DisconnectPlayer(player.PlayerID, kcp.EnetServerShutdown)
|
g.KickPlayer(player.PlayerID, kcp.EnetServerShutdown)
|
||||||
}
|
}
|
||||||
time.Sleep(time.Second)
|
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)
|
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))
|
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)
|
player := USER_MANAGER.GetOnlineUser(userId)
|
||||||
if player == nil {
|
if player == nil {
|
||||||
return
|
return
|
||||||
@@ -391,7 +391,6 @@ func (g *GameManager) DisconnectPlayer(userId uint32, reason uint32) {
|
|||||||
KickReason: reason,
|
KickReason: reason,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
// g.SendMsg(cmd.ServerDisconnectClientNotify, userId, 0, new(proto.ServerDisconnectClientNotify))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameManager) GetClientProtoObjByName(protoObjName string) pb.Message {
|
func (g *GameManager) GetClientProtoObjByName(protoObjName string) pb.Message {
|
||||||
|
|||||||
@@ -357,8 +357,8 @@ func (g *GCGGame) InitDeckCard(controller *GCGController, cardIdList ...uint32)
|
|||||||
// GiveCharCard 给予操控者角色卡牌
|
// GiveCharCard 给予操控者角色卡牌
|
||||||
func (g *GCGGame) GiveCharCard(controller *GCGController, charId uint32) {
|
func (g *GCGGame) GiveCharCard(controller *GCGController, charId uint32) {
|
||||||
// 读取角色卡牌配置表
|
// 读取角色卡牌配置表
|
||||||
gcgCharConfig, ok := gdconf.CONF.GCGCharDataMap[int32(charId)]
|
gcgCharConfig := gdconf.GetGCGCharDataById(int32(charId))
|
||||||
if !ok {
|
if gcgCharConfig == nil {
|
||||||
logger.Error("gcg char config error, charId: %v", charId)
|
logger.Error("gcg char config error, charId: %v", charId)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -372,10 +372,10 @@ func (g *GCGGame) GiveCharCard(controller *GCGController, charId uint32) {
|
|||||||
faceType: 0, // 1为金卡
|
faceType: 0, // 1为金卡
|
||||||
tagList: gcgCharConfig.TagList,
|
tagList: gcgCharConfig.TagList,
|
||||||
tokenMap: map[uint32]uint32{
|
tokenMap: map[uint32]uint32{
|
||||||
constant.GCGTokenConst.TOKEN_CUR_HEALTH: uint32(gcgCharConfig.HPBase), // 血量
|
constant.GCG_TOKEN_TYPE_CUR_HEALTH: uint32(gcgCharConfig.HPBase), // 血量
|
||||||
constant.GCGTokenConst.TOKEN_MAX_HEALTH: uint32(gcgCharConfig.HPBase), // 最大血量(不确定)
|
constant.GCG_TOKEN_TYPE_MAX_HEALTH: uint32(gcgCharConfig.HPBase), // 最大血量(不确定)
|
||||||
constant.GCGTokenConst.TOKEN_CUR_ELEM: 0, // 充能
|
constant.GCG_TOKEN_TYPE_CUR_ELEM: 0, // 充能
|
||||||
constant.GCGTokenConst.TOKEN_MAX_ELEM: uint32(gcgCharConfig.MaxElemVal), // 充能条
|
constant.GCG_TOKEN_TYPE_MAX_ELEM: uint32(gcgCharConfig.MaxElemVal), // 充能条
|
||||||
},
|
},
|
||||||
skillList: make([]*GCGSkillInfo, 0, len(gcgCharConfig.SkillList)),
|
skillList: make([]*GCGSkillInfo, 0, len(gcgCharConfig.SkillList)),
|
||||||
skillLimitList: []uint32{},
|
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.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, 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.GCGMsgSkillResult(targetSelectedCharCard.guid, skillId))
|
||||||
|
|
||||||
msgList = append(msgList, g.GCGMsgUseSkillEnd(controller.selectedCharCardGuid, skillId))
|
msgList = append(msgList, g.GCGMsgUseSkillEnd(controller.selectedCharCardGuid, skillId))
|
||||||
|
|
||||||
// 因为使用技能自身充能+1
|
// 因为使用技能自身充能+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.AddAllMsgPack(controller.controllerId, proto.GCGActionType_GCG_ACTION_ATTACK, msgList...)
|
||||||
g.ChangePhase(proto.GCGPhaseType_GCG_PHASE_MAIN)
|
g.ChangePhase(proto.GCGPhaseType_GCG_PHASE_MAIN)
|
||||||
}
|
}
|
||||||
@@ -949,8 +949,8 @@ func (g *GCGGame) GCGMsgCostRevise(controller *GCGController) *proto.GCGMessage
|
|||||||
// AttackCostList
|
// AttackCostList
|
||||||
for _, skillInfo := range selectedCharCard.skillList {
|
for _, skillInfo := range selectedCharCard.skillList {
|
||||||
// 读取卡牌技能配置表
|
// 读取卡牌技能配置表
|
||||||
gcgSkillConfig, ok := gdconf.CONF.GCGSkillDataMap[int32(skillInfo.skillId)]
|
gcgSkillConfig := gdconf.GetGCGSkillDataById(int32(skillInfo.skillId))
|
||||||
if !ok {
|
if gcgSkillConfig == nil {
|
||||||
logger.Error("gcg skill config error, skillId: %v", skillInfo.skillId)
|
logger.Error("gcg skill config error, skillId: %v", skillInfo.skillId)
|
||||||
return new(proto.GCGMessage)
|
return new(proto.GCGMessage)
|
||||||
}
|
}
|
||||||
@@ -1048,8 +1048,8 @@ func (g *GCGGame) GCGMsgTokenChange(cardGuid uint32, reason proto.GCGReason, tok
|
|||||||
// GCGMsgSkillResult GCG消息技能结果
|
// GCGMsgSkillResult GCG消息技能结果
|
||||||
func (g *GCGGame) GCGMsgSkillResult(selectedCharCardGuid uint32, skillId uint32) *proto.GCGMessage {
|
func (g *GCGGame) GCGMsgSkillResult(selectedCharCardGuid uint32, skillId uint32) *proto.GCGMessage {
|
||||||
// 读取卡牌技能配置表
|
// 读取卡牌技能配置表
|
||||||
gcgSkillConfig, ok := gdconf.CONF.GCGSkillDataMap[int32(skillId)]
|
gcgSkillConfig := gdconf.GetGCGSkillDataById(int32(skillId))
|
||||||
if !ok {
|
if gcgSkillConfig == nil {
|
||||||
logger.Error("gcg skill config error, skillId: %v", skillId)
|
logger.Error("gcg skill config error, skillId: %v", skillId)
|
||||||
return new(proto.GCGMessage)
|
return new(proto.GCGMessage)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
|
|
||||||
func (g *GameManager) GetAllAvatarDataConfig() map[int32]*gdconf.AvatarData {
|
func (g *GameManager) GetAllAvatarDataConfig() map[int32]*gdconf.AvatarData {
|
||||||
allAvatarDataConfig := make(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 {
|
if avatarId < 10000002 || avatarId >= 11000000 {
|
||||||
// 跳过无效角色
|
// 跳过无效角色
|
||||||
continue
|
continue
|
||||||
@@ -49,8 +49,8 @@ func (g *GameManager) AddUserAvatar(userId uint32, avatarId uint32) {
|
|||||||
player.AddAvatar(avatarId)
|
player.AddAvatar(avatarId)
|
||||||
|
|
||||||
// 添加初始武器
|
// 添加初始武器
|
||||||
avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(avatarId)]
|
avatarDataConfig := gdconf.GetAvatarDataById(int32(avatarId))
|
||||||
if !ok {
|
if avatarDataConfig == nil {
|
||||||
logger.Error("config is nil, itemId: %v", avatarId)
|
logger.Error("config is nil, itemId: %v", avatarId)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -80,8 +80,8 @@ func (g *GameManager) AvatarPromoteGetRewardReq(player *model.Player, payloadMsg
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取角色配置表
|
// 获取角色配置表
|
||||||
avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(avatar.AvatarId)]
|
avatarDataConfig := gdconf.GetAvatarDataById(int32(avatar.AvatarId))
|
||||||
if !ok {
|
if avatarDataConfig == nil {
|
||||||
logger.Error("avatar config error, avatarId: %v", avatar.AvatarId)
|
logger.Error("avatar config error, avatarId: %v", avatar.AvatarId)
|
||||||
g.SendError(cmd.AvatarPromoteGetRewardRsp, player, &proto.AvatarPromoteGetRewardRsp{})
|
g.SendError(cmd.AvatarPromoteGetRewardRsp, player, &proto.AvatarPromoteGetRewardRsp{})
|
||||||
return
|
return
|
||||||
@@ -93,8 +93,8 @@ func (g *GameManager) AvatarPromoteGetRewardReq(player *model.Player, payloadMsg
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取奖励配置表
|
// 获取奖励配置表
|
||||||
rewardConfig, ok := gdconf.CONF.RewardDataMap[int32(avatarDataConfig.PromoteRewardMap[req.PromoteLevel])]
|
rewardConfig := gdconf.GetRewardDataById(int32(avatarDataConfig.PromoteRewardMap[req.PromoteLevel]))
|
||||||
if !ok {
|
if rewardConfig == nil {
|
||||||
logger.Error("reward config error, rewardId: %v", avatarDataConfig.PromoteRewardMap[req.PromoteLevel])
|
logger.Error("reward config error, rewardId: %v", avatarDataConfig.PromoteRewardMap[req.PromoteLevel])
|
||||||
g.SendError(cmd.AvatarPromoteGetRewardRsp, player, &proto.AvatarPromoteGetRewardRsp{})
|
g.SendError(cmd.AvatarPromoteGetRewardRsp, player, &proto.AvatarPromoteGetRewardRsp{})
|
||||||
return
|
return
|
||||||
@@ -131,22 +131,15 @@ func (g *GameManager) AvatarPromoteReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取角色配置表
|
// 获取角色配置表
|
||||||
avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(avatar.AvatarId)]
|
avatarDataConfig := gdconf.GetAvatarDataById(int32(avatar.AvatarId))
|
||||||
if !ok {
|
if avatarDataConfig == nil {
|
||||||
logger.Error("avatar config error, avatarId: %v", avatar.AvatarId)
|
logger.Error("avatar config error, avatarId: %v", avatar.AvatarId)
|
||||||
g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{})
|
g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取角色突破配置表
|
// 获取角色突破配置表
|
||||||
avatarPromoteDataMap, ok := gdconf.CONF.AvatarPromoteDataMap[avatarDataConfig.PromoteId]
|
avatarPromoteConfig := gdconf.GetAvatarPromoteDataByIdAndLevel(avatarDataConfig.PromoteId, int32(avatar.Promote))
|
||||||
if !ok {
|
if avatarPromoteConfig == nil {
|
||||||
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 {
|
|
||||||
logger.Error("avatar promote config error, promoteLevel: %v", avatar.Promote)
|
logger.Error("avatar promote config error, promoteLevel: %v", avatar.Promote)
|
||||||
g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{})
|
g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{})
|
||||||
return
|
return
|
||||||
@@ -158,8 +151,8 @@ func (g *GameManager) AvatarPromoteReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取角色突破下一级的配置表
|
// 获取角色突破下一级的配置表
|
||||||
avatarPromoteConfig, ok = avatarPromoteDataMap[int32(avatar.Promote+1)]
|
avatarPromoteConfig = gdconf.GetAvatarPromoteDataByIdAndLevel(avatarDataConfig.PromoteId, int32(avatar.Promote+1))
|
||||||
if !ok {
|
if avatarPromoteConfig == nil {
|
||||||
logger.Error("avatar promote config error, next promoteLevel: %v", avatar.Promote+1)
|
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)
|
g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{}, proto.Retcode_RET_AVATAR_ON_MAX_BREAK_LEVEL)
|
||||||
return
|
return
|
||||||
@@ -175,7 +168,7 @@ func (g *GameManager) AvatarPromoteReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
}
|
}
|
||||||
// 消耗列表添加摩拉的消耗
|
// 消耗列表添加摩拉的消耗
|
||||||
costItemList = append(costItemList, &UserItem{
|
costItemList = append(costItemList, &UserItem{
|
||||||
ItemId: constant.ItemConstantConst.SCOIN,
|
ItemId: constant.ITEM_ID_SCOIN,
|
||||||
ChangeCount: uint32(avatarPromoteConfig.CostCoin),
|
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 {
|
if player.GetItemCount(item.ItemId) < item.ChangeCount {
|
||||||
logger.Error("item count not enough, itemId: %v", item.ItemId)
|
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_SCOIN_NOT_ENOUGH)
|
||||||
}
|
}
|
||||||
g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{}, proto.Retcode_RET_ITEM_COUNT_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) {
|
if player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL] < uint32(avatarPromoteConfig.MinPlayerLevel) {
|
||||||
logger.Error("player level not enough, level: %v", player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL])
|
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)
|
g.SendError(cmd.AvatarPromoteRsp, player, &proto.AvatarPromoteRsp{}, proto.Retcode_RET_PLAYER_LEVEL_LESS_THAN)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -230,9 +223,9 @@ func (g *GameManager) AvatarUpgradeReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取经验书物品配置表
|
// 获取经验书物品配置表
|
||||||
itemDataConfig, ok := gdconf.CONF.ItemDataMap[int32(req.ItemId)]
|
itemDataConfig := gdconf.GetItemDataById(int32(req.ItemId))
|
||||||
if !ok {
|
if itemDataConfig == nil {
|
||||||
logger.Error("item data config error, itemId: %v", constant.ItemConstantConst.SCOIN)
|
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)
|
g.SendError(cmd.AvatarUpgradeRsp, player, &proto.AvatarUpgradeRsp{}, proto.Retcode_RET_ITEM_NOT_EXIST)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -246,28 +239,21 @@ func (g *GameManager) AvatarUpgradeReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
// 角色获得的经验
|
// 角色获得的经验
|
||||||
expCount := uint32(itemParam) * req.Count
|
expCount := uint32(itemParam) * req.Count
|
||||||
// 摩拉数量是否足够
|
// 摩拉数量是否足够
|
||||||
if player.GetItemCount(constant.ItemConstantConst.SCOIN) < expCount/5 {
|
if player.GetItemCount(constant.ITEM_ID_SCOIN) < expCount/5 {
|
||||||
logger.Error("item count not enough, itemId: %v", constant.ItemConstantConst.SCOIN)
|
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)
|
g.SendError(cmd.AvatarUpgradeRsp, player, &proto.AvatarUpgradeRsp{}, proto.Retcode_RET_SCOIN_NOT_ENOUGH)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取角色配置表
|
// 获取角色配置表
|
||||||
avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(avatar.AvatarId)]
|
avatarDataConfig := gdconf.GetAvatarDataById(int32(avatar.AvatarId))
|
||||||
if !ok {
|
if avatarDataConfig == nil {
|
||||||
logger.Error("avatar config error, avatarId: %v", avatar.AvatarId)
|
logger.Error("avatar config error, avatarId: %v", avatar.AvatarId)
|
||||||
g.SendError(cmd.AvatarUpgradeRsp, player, &proto.AvatarUpgradeRsp{})
|
g.SendError(cmd.AvatarUpgradeRsp, player, &proto.AvatarUpgradeRsp{})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取角色突破配置表
|
// 获取角色突破配置表
|
||||||
avatarPromoteDataMap, ok := gdconf.CONF.AvatarPromoteDataMap[avatarDataConfig.PromoteId]
|
avatarPromoteConfig := gdconf.GetAvatarPromoteDataByIdAndLevel(avatarDataConfig.PromoteId, int32(avatar.Promote))
|
||||||
if !ok {
|
if avatarPromoteConfig == nil {
|
||||||
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 {
|
|
||||||
logger.Error("avatar promote config error, promoteLevel: %v", avatar.Promote)
|
logger.Error("avatar promote config error, promoteLevel: %v", avatar.Promote)
|
||||||
g.SendError(cmd.AvatarUpgradeRsp, player, &proto.AvatarUpgradeRsp{})
|
g.SendError(cmd.AvatarUpgradeRsp, player, &proto.AvatarUpgradeRsp{})
|
||||||
return
|
return
|
||||||
@@ -285,7 +271,7 @@ func (g *GameManager) AvatarUpgradeReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
ChangeCount: req.Count,
|
ChangeCount: req.Count,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ItemId: constant.ItemConstantConst.SCOIN,
|
ItemId: constant.ITEM_ID_SCOIN,
|
||||||
ChangeCount: expCount / 5,
|
ChangeCount: expCount / 5,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -312,20 +298,14 @@ func (g *GameManager) AvatarUpgradeReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
// UpgradePlayerAvatar 玩家角色升级
|
// UpgradePlayerAvatar 玩家角色升级
|
||||||
func (g *GameManager) UpgradePlayerAvatar(player *model.Player, avatar *model.Avatar, expCount uint32) {
|
func (g *GameManager) UpgradePlayerAvatar(player *model.Player, avatar *model.Avatar, expCount uint32) {
|
||||||
// 获取角色配置表
|
// 获取角色配置表
|
||||||
avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(avatar.AvatarId)]
|
avatarDataConfig := gdconf.GetAvatarDataById(int32(avatar.AvatarId))
|
||||||
if !ok {
|
if avatarDataConfig == nil {
|
||||||
logger.Error("avatar config error, avatarId: %v", avatar.AvatarId)
|
logger.Error("avatar config error, avatarId: %v", avatar.AvatarId)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取角色突破配置表
|
// 获取角色突破配置表
|
||||||
avatarPromoteDataMap, ok := gdconf.CONF.AvatarPromoteDataMap[avatarDataConfig.PromoteId]
|
avatarPromoteConfig := gdconf.GetAvatarPromoteDataByIdAndLevel(avatarDataConfig.PromoteId, int32(avatar.Promote))
|
||||||
if !ok {
|
if avatarPromoteConfig == nil {
|
||||||
logger.Error("avatar promote config error, promoteId: %v", avatarDataConfig.PromoteId)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 获取角色突破等级对应的配置表
|
|
||||||
avatarPromoteConfig, ok := avatarPromoteDataMap[int32(avatar.Promote)]
|
|
||||||
if !ok {
|
|
||||||
logger.Error("avatar promote config error, promoteLevel: %v", avatar.Promote)
|
logger.Error("avatar promote config error, promoteLevel: %v", avatar.Promote)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -334,8 +314,8 @@ func (g *GameManager) UpgradePlayerAvatar(player *model.Player, avatar *model.Av
|
|||||||
// 角色升级
|
// 角色升级
|
||||||
for {
|
for {
|
||||||
// 获取角色等级配置表
|
// 获取角色等级配置表
|
||||||
avatarLevelConfig, ok := gdconf.CONF.AvatarLevelDataMap[int32(avatar.Level)]
|
avatarLevelConfig := gdconf.GetAvatarLevelDataByLevel(int32(avatar.Level))
|
||||||
if !ok {
|
if avatarLevelConfig == nil {
|
||||||
// 获取不到代表已经到达最大等级
|
// 获取不到代表已经到达最大等级
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -366,15 +346,15 @@ func (g *GameManager) PacketAvatarPropNotify(avatar *model.Avatar) *proto.Avatar
|
|||||||
AvatarGuid: avatar.Guid,
|
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
|
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 {
|
func (g *GameManager) PacketAvatarEquipChangeNotify(avatar *model.Avatar, weapon *model.Weapon, entityId uint32) *proto.AvatarEquipChangeNotify {
|
||||||
itemDataConfig, ok := gdconf.CONF.ItemDataMap[int32(weapon.ItemId)]
|
itemDataConfig := gdconf.GetItemDataById(int32(weapon.ItemId))
|
||||||
if !ok {
|
if itemDataConfig == nil {
|
||||||
logger.Error("item data config error, itemId: %v", weapon.ItemId)
|
logger.Error("item data config error, itemId: %v", weapon.ItemId)
|
||||||
return new(proto.AvatarEquipChangeNotify)
|
return new(proto.AvatarEquipChangeNotify)
|
||||||
}
|
}
|
||||||
@@ -547,9 +527,9 @@ func (g *GameManager) PacketAvatarEquipChangeNotify(avatar *model.Avatar, weapon
|
|||||||
EquipGuid: weapon.Guid,
|
EquipGuid: weapon.Guid,
|
||||||
}
|
}
|
||||||
switch itemDataConfig.Type {
|
switch itemDataConfig.Type {
|
||||||
case int32(constant.ItemTypeConst.ITEM_WEAPON):
|
case int32(constant.ITEM_TYPE_WEAPON):
|
||||||
avatarEquipChangeNotify.EquipType = uint32(constant.EquipTypeConst.EQUIP_WEAPON)
|
avatarEquipChangeNotify.EquipType = uint32(constant.EQUIP_TYPE_WEAPON)
|
||||||
case int32(constant.ItemTypeConst.ITEM_RELIQUARY):
|
case int32(constant.ITEM_TYPE_RELIQUARY):
|
||||||
avatarEquipChangeNotify.EquipType = uint32(itemDataConfig.ReliquaryType)
|
avatarEquipChangeNotify.EquipType = uint32(itemDataConfig.ReliquaryType)
|
||||||
}
|
}
|
||||||
avatarEquipChangeNotify.Weapon = &proto.SceneWeaponInfo{
|
avatarEquipChangeNotify.Weapon = &proto.SceneWeaponInfo{
|
||||||
@@ -567,8 +547,8 @@ func (g *GameManager) PacketAvatarEquipTakeOffNotify(avatar *model.Avatar, weapo
|
|||||||
avatarEquipChangeNotify := &proto.AvatarEquipChangeNotify{
|
avatarEquipChangeNotify := &proto.AvatarEquipChangeNotify{
|
||||||
AvatarGuid: avatar.Guid,
|
AvatarGuid: avatar.Guid,
|
||||||
}
|
}
|
||||||
itemDataConfig, exist := gdconf.CONF.ItemDataMap[int32(weapon.ItemId)]
|
itemDataConfig := gdconf.GetItemDataById(int32(weapon.ItemId))
|
||||||
if exist {
|
if itemDataConfig != nil {
|
||||||
avatarEquipChangeNotify.EquipType = uint32(itemDataConfig.Type)
|
avatarEquipChangeNotify.EquipType = uint32(itemDataConfig.Type)
|
||||||
}
|
}
|
||||||
return avatarEquipChangeNotify
|
return avatarEquipChangeNotify
|
||||||
@@ -605,28 +585,28 @@ func (g *GameManager) PacketAvatarInfo(avatar *model.Avatar) *proto.AvatarInfo {
|
|||||||
AvatarId: avatar.AvatarId,
|
AvatarId: avatar.AvatarId,
|
||||||
Guid: avatar.Guid,
|
Guid: avatar.Guid,
|
||||||
PropMap: map[uint32]*proto.PropValue{
|
PropMap: map[uint32]*proto.PropValue{
|
||||||
uint32(constant.PlayerPropertyConst.PROP_LEVEL): {
|
uint32(constant.PLAYER_PROP_LEVEL): {
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL),
|
Type: uint32(constant.PLAYER_PROP_LEVEL),
|
||||||
Val: int64(avatar.Level),
|
Val: int64(avatar.Level),
|
||||||
Value: &proto.PropValue_Ival{Ival: int64(avatar.Level)},
|
Value: &proto.PropValue_Ival{Ival: int64(avatar.Level)},
|
||||||
},
|
},
|
||||||
uint32(constant.PlayerPropertyConst.PROP_EXP): {
|
uint32(constant.PLAYER_PROP_EXP): {
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_EXP),
|
Type: uint32(constant.PLAYER_PROP_EXP),
|
||||||
Val: int64(avatar.Exp),
|
Val: int64(avatar.Exp),
|
||||||
Value: &proto.PropValue_Ival{Ival: int64(avatar.Exp)},
|
Value: &proto.PropValue_Ival{Ival: int64(avatar.Exp)},
|
||||||
},
|
},
|
||||||
uint32(constant.PlayerPropertyConst.PROP_BREAK_LEVEL): {
|
uint32(constant.PLAYER_PROP_BREAK_LEVEL): {
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_BREAK_LEVEL),
|
Type: uint32(constant.PLAYER_PROP_BREAK_LEVEL),
|
||||||
Val: int64(avatar.Promote),
|
Val: int64(avatar.Promote),
|
||||||
Value: &proto.PropValue_Ival{Ival: int64(avatar.Promote)},
|
Value: &proto.PropValue_Ival{Ival: int64(avatar.Promote)},
|
||||||
},
|
},
|
||||||
uint32(constant.PlayerPropertyConst.PROP_SATIATION_VAL): {
|
uint32(constant.PLAYER_PROP_SATIATION_VAL): {
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_SATIATION_VAL),
|
Type: uint32(constant.PLAYER_PROP_SATIATION_VAL),
|
||||||
Val: int64(avatar.Satiation),
|
Val: int64(avatar.Satiation),
|
||||||
Value: &proto.PropValue_Ival{Ival: int64(avatar.Satiation)},
|
Value: &proto.PropValue_Ival{Ival: int64(avatar.Satiation)},
|
||||||
},
|
},
|
||||||
uint32(constant.PlayerPropertyConst.PROP_SATIATION_PENALTY_TIME): {
|
uint32(constant.PLAYER_PROP_SATIATION_PENALTY_TIME): {
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_SATIATION_PENALTY_TIME),
|
Type: uint32(constant.PLAYER_PROP_SATIATION_PENALTY_TIME),
|
||||||
Val: int64(avatar.SatiationPenalty),
|
Val: int64(avatar.SatiationPenalty),
|
||||||
Value: &proto.PropValue_Ival{Ival: 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 {
|
for _, v := range avatar.FetterList {
|
||||||
pbAvatar.FetterInfo.FetterList = append(pbAvatar.FetterInfo.FetterList, &proto.FetterData{
|
pbAvatar.FetterInfo.FetterList = append(pbAvatar.FetterInfo.FetterList, &proto.FetterData{
|
||||||
FetterId: v,
|
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{
|
pbAvatar.FetterInfo.FetterList = append(pbAvatar.FetterInfo.FetterList, &proto.FetterData{
|
||||||
FetterId: uint32(v),
|
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
|
return
|
||||||
}
|
}
|
||||||
// 玩家增加冒险阅历
|
// 玩家增加冒险阅历
|
||||||
player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_EXP] += expCount
|
player.PropertiesMap[constant.PLAYER_PROP_PLAYER_EXP] += expCount
|
||||||
// 玩家升级
|
// 玩家升级
|
||||||
for {
|
for {
|
||||||
playerLevel := player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL]
|
playerLevel := player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL]
|
||||||
// 读取玩家等级配置表
|
// 读取玩家等级配置表
|
||||||
playerLevelConfig, ok := gdconf.CONF.PlayerLevelDataMap[int32(playerLevel)]
|
playerLevelConfig := gdconf.GetPlayerLevelDataById(int32(playerLevel))
|
||||||
if !ok {
|
if playerLevelConfig == nil {
|
||||||
// 获取不到代表已经到达最大等级
|
// 获取不到代表已经到达最大等级
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
// 玩家冒险阅历不足则跳出循环
|
// 玩家冒险阅历不足则跳出循环
|
||||||
if player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_EXP] < uint32(playerLevelConfig.Exp) {
|
if player.PropertiesMap[constant.PLAYER_PROP_PLAYER_EXP] < uint32(playerLevelConfig.Exp) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
// 玩家增加冒险等阶
|
// 玩家增加冒险等阶
|
||||||
player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL]++
|
player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL]++
|
||||||
player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_EXP] -= uint32(playerLevelConfig.Exp)
|
player.PropertiesMap[constant.PLAYER_PROP_PLAYER_EXP] -= uint32(playerLevelConfig.Exp)
|
||||||
|
|
||||||
// 更新玩家属性
|
// 更新玩家属性
|
||||||
playerPropNotify := &proto.PlayerPropNotify{
|
playerPropNotify := &proto.PlayerPropNotify{
|
||||||
PropMap: make(map[uint32]*proto.PropValue),
|
PropMap: make(map[uint32]*proto.PropValue),
|
||||||
}
|
}
|
||||||
playerPropNotify.PropMap[uint32(constant.PlayerPropertyConst.PROP_PLAYER_LEVEL)] = &proto.PropValue{
|
playerPropNotify.PropMap[uint32(constant.PLAYER_PROP_PLAYER_LEVEL)] = &proto.PropValue{
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_PLAYER_LEVEL),
|
Type: uint32(constant.PLAYER_PROP_PLAYER_LEVEL),
|
||||||
Val: int64(player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL]),
|
Val: int64(player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL]),
|
||||||
Value: &proto.PropValue_Ival{
|
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{
|
playerPropNotify.PropMap[uint32(constant.PLAYER_PROP_PLAYER_EXP)] = &proto.PropValue{
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_PLAYER_EXP),
|
Type: uint32(constant.PLAYER_PROP_PLAYER_EXP),
|
||||||
Val: int64(player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_EXP]),
|
Val: int64(player.PropertiesMap[constant.PLAYER_PROP_PLAYER_EXP]),
|
||||||
Value: &proto.PropValue_Ival{
|
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)
|
g.SendMsg(cmd.PlayerPropNotify, userId, player.ClientSeq, playerPropNotify)
|
||||||
|
|||||||
@@ -139,12 +139,12 @@ func (g *GameManager) CombatInvocationsNotify(player *model.Player, payloadMsg p
|
|||||||
currHp := float32(0)
|
currHp := float32(0)
|
||||||
fightProp := target.GetFightProp()
|
fightProp := target.GetFightProp()
|
||||||
if fightProp != nil {
|
if fightProp != nil {
|
||||||
currHp = fightProp[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)]
|
currHp = fightProp[uint32(constant.FIGHT_PROP_CUR_HP)]
|
||||||
currHp -= damage
|
currHp -= damage
|
||||||
if currHp < 0 {
|
if currHp < 0 {
|
||||||
currHp = 0
|
currHp = 0
|
||||||
}
|
}
|
||||||
fightProp[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP)] = currHp
|
fightProp[uint32(constant.FIGHT_PROP_CUR_HP)] = currHp
|
||||||
}
|
}
|
||||||
entityFightPropUpdateNotify := &proto.EntityFightPropUpdateNotify{
|
entityFightPropUpdateNotify := &proto.EntityFightPropUpdateNotify{
|
||||||
FightPropMap: fightProp,
|
FightPropMap: fightProp,
|
||||||
@@ -152,7 +152,7 @@ func (g *GameManager) CombatInvocationsNotify(player *model.Player, payloadMsg p
|
|||||||
}
|
}
|
||||||
g.SendToWorldA(world, cmd.EntityFightPropUpdateNotify, player.ClientSeq, entityFightPropUpdateNotify)
|
g.SendToWorldA(world, cmd.EntityFightPropUpdateNotify, player.ClientSeq, entityFightPropUpdateNotify)
|
||||||
if currHp == 0 && target.GetAvatarEntity() == nil {
|
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)
|
combatData, err := pb.Marshal(hitInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ func (g *GameManager) GCGStartChallenge(player *model.Player) {
|
|||||||
g.PacketGCGGameBriefDataNotify(player, proto.GCGGameBusinessType_GCG_GAME_GUIDE_GROUP, game))
|
g.PacketGCGGameBriefDataNotify(player, proto.GCGGameBusinessType_GCG_GAME_GUIDE_GROUP, game))
|
||||||
|
|
||||||
// 玩家进入GCG界面
|
// 玩家进入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决斗请求
|
// GCGAskDuelReq GCG决斗请求
|
||||||
@@ -392,8 +392,8 @@ func (g *GameManager) PacketGCGSkillPreviewNotify(game *GCGGame, controller *GCG
|
|||||||
// SkillPreviewList
|
// SkillPreviewList
|
||||||
for _, skillInfo := range selectedCharCard.skillList {
|
for _, skillInfo := range selectedCharCard.skillList {
|
||||||
// 读取卡牌技能配置表
|
// 读取卡牌技能配置表
|
||||||
gcgSkillConfig, ok := gdconf.CONF.GCGSkillDataMap[int32(skillInfo.skillId)]
|
gcgSkillConfig := gdconf.GetGCGSkillDataById(int32(skillInfo.skillId))
|
||||||
if !ok {
|
if gcgSkillConfig == nil {
|
||||||
logger.Error("gcg skill config error, skillId: %v", skillInfo.skillId)
|
logger.Error("gcg skill config error, skillId: %v", skillInfo.skillId)
|
||||||
return new(proto.GCGSkillPreviewNotify)
|
return new(proto.GCGSkillPreviewNotify)
|
||||||
}
|
}
|
||||||
@@ -421,10 +421,10 @@ func (g *GameManager) PacketGCGSkillPreviewNotify(game *GCGGame, controller *GCG
|
|||||||
TokenChangeList: []*proto.GCGSkillPreviewTokenInfo{
|
TokenChangeList: []*proto.GCGSkillPreviewTokenInfo{
|
||||||
{
|
{
|
||||||
// Token类型
|
// Token类型
|
||||||
TokenType: constant.GCGTokenConst.TOKEN_CUR_ELEM,
|
TokenType: constant.GCG_TOKEN_TYPE_CUR_ELEM,
|
||||||
BeforeValue: 0,
|
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 {
|
func (g *GameManager) GetAllItemDataConfig() map[int32]*gdconf.ItemData {
|
||||||
allItemDataConfig := make(map[int32]*gdconf.ItemData)
|
allItemDataConfig := make(map[int32]*gdconf.ItemData)
|
||||||
for itemId, itemData := range gdconf.CONF.ItemDataMap {
|
for itemId, itemData := range gdconf.GetItemDataMap() {
|
||||||
if uint16(itemData.Type) == constant.ItemTypeConst.ITEM_WEAPON {
|
if uint16(itemData.Type) == constant.ITEM_TYPE_WEAPON {
|
||||||
// 排除武器
|
// 排除武器
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if uint16(itemData.Type) == constant.ItemTypeConst.ITEM_RELIQUARY {
|
if uint16(itemData.Type) == constant.ITEM_TYPE_RELIQUARY {
|
||||||
// 排除圣遗物
|
// 排除圣遗物
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -61,10 +61,10 @@ func (g *GameManager) AddUserItem(userId uint32, itemList []*UserItem, isHint bo
|
|||||||
for _, userItem := range itemList {
|
for _, userItem := range itemList {
|
||||||
// 物品为虚拟物品则另外处理
|
// 物品为虚拟物品则另外处理
|
||||||
switch userItem.ItemId {
|
switch userItem.ItemId {
|
||||||
case constant.ItemConstantConst.RESIN, constant.ItemConstantConst.LEGENDARY_KEY, constant.ItemConstantConst.HCOIN,
|
case constant.ITEM_ID_RESIN, constant.ITEM_ID_LEGENDARY_KEY, constant.ITEM_ID_HCOIN, constant.ITEM_ID_SCOIN,
|
||||||
constant.ItemConstantConst.SCOIN, constant.ItemConstantConst.MCOIN, constant.ItemConstantConst.HOME_COIN:
|
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 {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -78,7 +78,7 @@ func (g *GameManager) AddUserItem(userId uint32, itemList []*UserItem, isHint bo
|
|||||||
Ival: int64(player.PropertiesMap[prop]),
|
Ival: int64(player.PropertiesMap[prop]),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
case constant.ItemConstantConst.PLAYER_EXP:
|
case constant.ITEM_ID_PLAYER_EXP:
|
||||||
// 冒险阅历
|
// 冒险阅历
|
||||||
g.AddUserPlayerExp(userId, userItem.ChangeCount)
|
g.AddUserPlayerExp(userId, userItem.ChangeCount)
|
||||||
default:
|
default:
|
||||||
@@ -110,7 +110,7 @@ func (g *GameManager) AddUserItem(userId uint32, itemList []*UserItem, isHint bo
|
|||||||
|
|
||||||
if isHint {
|
if isHint {
|
||||||
if hintReason == 0 {
|
if hintReason == 0 {
|
||||||
hintReason = constant.ActionReasonConst.SubfieldDrop
|
hintReason = constant.ActionReasonSubfieldDrop
|
||||||
}
|
}
|
||||||
itemAddHintNotify := &proto.ItemAddHintNotify{
|
itemAddHintNotify := &proto.ItemAddHintNotify{
|
||||||
Reason: uint32(hintReason),
|
Reason: uint32(hintReason),
|
||||||
@@ -139,10 +139,10 @@ func (g *GameManager) CostUserItem(userId uint32, itemList []*UserItem) {
|
|||||||
for _, userItem := range itemList {
|
for _, userItem := range itemList {
|
||||||
// 物品为虚拟物品则另外处理
|
// 物品为虚拟物品则另外处理
|
||||||
switch userItem.ItemId {
|
switch userItem.ItemId {
|
||||||
case constant.ItemConstantConst.RESIN, constant.ItemConstantConst.LEGENDARY_KEY, constant.ItemConstantConst.HCOIN,
|
case constant.ITEM_ID_RESIN, constant.ITEM_ID_LEGENDARY_KEY, constant.ITEM_ID_HCOIN, constant.ITEM_ID_SCOIN,
|
||||||
constant.ItemConstantConst.SCOIN, constant.ItemConstantConst.MCOIN, constant.ItemConstantConst.HOME_COIN:
|
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 {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -160,7 +160,7 @@ func (g *GameManager) CostUserItem(userId uint32, itemList []*UserItem) {
|
|||||||
Ival: int64(player.PropertiesMap[prop]),
|
Ival: int64(player.PropertiesMap[prop]),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
case constant.ItemConstantConst.PLAYER_EXP:
|
case constant.ITEM_ID_PLAYER_EXP:
|
||||||
// 冒险阅历应该也没人会去扣吧?
|
// 冒险阅历应该也没人会去扣吧?
|
||||||
default:
|
default:
|
||||||
// 普通物品直接扣除
|
// 普通物品直接扣除
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import (
|
|||||||
"hk4e/gdconf"
|
"hk4e/gdconf"
|
||||||
"hk4e/gs/model"
|
"hk4e/gs/model"
|
||||||
"hk4e/pkg/logger"
|
"hk4e/pkg/logger"
|
||||||
"hk4e/pkg/reflection"
|
|
||||||
"hk4e/protocol/cmd"
|
"hk4e/protocol/cmd"
|
||||||
"hk4e/protocol/proto"
|
"hk4e/protocol/proto"
|
||||||
|
|
||||||
@@ -198,19 +197,18 @@ func (g *GameManager) PacketPlayerStoreNotify(player *model.Player) *proto.Playe
|
|||||||
StoreType: proto.StoreType_STORE_PACK,
|
StoreType: proto.StoreType_STORE_PACK,
|
||||||
WeightLimit: 30000,
|
WeightLimit: 30000,
|
||||||
}
|
}
|
||||||
itemDataMapConfig := gdconf.CONF.ItemDataMap
|
|
||||||
for _, weapon := range player.WeaponMap {
|
for _, weapon := range player.WeaponMap {
|
||||||
pbItem := &proto.Item{
|
pbItem := &proto.Item{
|
||||||
ItemId: weapon.ItemId,
|
ItemId: weapon.ItemId,
|
||||||
Guid: weapon.Guid,
|
Guid: weapon.Guid,
|
||||||
Detail: nil,
|
Detail: nil,
|
||||||
}
|
}
|
||||||
itemData, ok := itemDataMapConfig[int32(weapon.ItemId)]
|
itemDataConfig := gdconf.GetItemDataById(int32(weapon.ItemId))
|
||||||
if !ok {
|
if itemDataConfig == nil {
|
||||||
logger.Error("config is nil, itemId: %v", weapon.ItemId)
|
logger.Error("get item data config is nil, itemId: %v", weapon.ItemId)
|
||||||
return nil
|
continue
|
||||||
}
|
}
|
||||||
if uint16(itemData.Type) != constant.ItemTypeConst.ITEM_WEAPON {
|
if uint16(itemDataConfig.Type) != constant.ITEM_TYPE_WEAPON {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
affixMap := make(map[uint32]uint32)
|
affixMap := make(map[uint32]uint32)
|
||||||
@@ -238,7 +236,12 @@ func (g *GameManager) PacketPlayerStoreNotify(player *model.Player) *proto.Playe
|
|||||||
Guid: reliquary.Guid,
|
Guid: reliquary.Guid,
|
||||||
Detail: nil,
|
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
|
continue
|
||||||
}
|
}
|
||||||
pbItem.Detail = &proto.Item_Equip{
|
pbItem.Detail = &proto.Item_Equip{
|
||||||
@@ -263,8 +266,12 @@ func (g *GameManager) PacketPlayerStoreNotify(player *model.Player) *proto.Playe
|
|||||||
Guid: item.Guid,
|
Guid: item.Guid,
|
||||||
Detail: nil,
|
Detail: nil,
|
||||||
}
|
}
|
||||||
itemDataConfig := itemDataMapConfig[int32(item.ItemId)]
|
itemDataConfig := gdconf.GetItemDataById(int32(item.ItemId))
|
||||||
if itemDataConfig != nil && uint16(itemDataConfig.Type) == constant.ItemTypeConst.ITEM_FURNITURE {
|
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{
|
pbItem.Detail = &proto.Item_Furniture{
|
||||||
Furniture: &proto.Furniture{
|
Furniture: &proto.Furniture{
|
||||||
Count: item.Count,
|
Count: item.Count,
|
||||||
@@ -315,10 +322,9 @@ func (g *GameManager) PacketOpenStateUpdateNotify() *proto.OpenStateUpdateNotify
|
|||||||
openStateUpdateNotify := &proto.OpenStateUpdateNotify{
|
openStateUpdateNotify := &proto.OpenStateUpdateNotify{
|
||||||
OpenStateMap: make(map[uint32]uint32),
|
OpenStateMap: make(map[uint32]uint32),
|
||||||
}
|
}
|
||||||
openStateConstMap := reflection.ConvStructToMap(constant.OpenStateConst)
|
|
||||||
// 先暂时开放全部功能模块
|
// 先暂时开放全部功能模块
|
||||||
for _, v := range openStateConstMap {
|
for _, v := range constant.ALL_OPEN_STATE {
|
||||||
openStateUpdateNotify.OpenStateMap[uint32(v.(uint16))] = 1
|
openStateUpdateNotify.OpenStateMap[uint32(v)] = 1
|
||||||
}
|
}
|
||||||
return openStateUpdateNotify
|
return openStateUpdateNotify
|
||||||
}
|
}
|
||||||
@@ -342,31 +348,17 @@ func (g *GameManager) CreatePlayer(userId uint32, nickName string, mainCharAvata
|
|||||||
player.SceneId = 3
|
player.SceneId = 3
|
||||||
|
|
||||||
player.PropertiesMap = make(map[uint16]uint32)
|
player.PropertiesMap = make(map[uint16]uint32)
|
||||||
// 初始化所有属性
|
player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL] = 1
|
||||||
propList := reflection.ConvStructToMap(constant.PlayerPropertyConst)
|
player.PropertiesMap[constant.PLAYER_PROP_PLAYER_WORLD_LEVEL] = 0
|
||||||
for fieldName, fieldValue := range propList {
|
player.PropertiesMap[constant.PLAYER_PROP_IS_SPRING_AUTO_USE] = 1
|
||||||
// 排除角色相关的属性
|
player.PropertiesMap[constant.PLAYER_PROP_SPRING_AUTO_USE_PERCENT] = 100
|
||||||
if fieldName == "PROP_EXP" ||
|
player.PropertiesMap[constant.PLAYER_PROP_IS_FLYABLE] = 1
|
||||||
fieldName == "PROP_BREAK_LEVEL" ||
|
player.PropertiesMap[constant.PLAYER_PROP_IS_TRANSFERABLE] = 1
|
||||||
fieldName == "PROP_SATIATION_VAL" ||
|
player.PropertiesMap[constant.PLAYER_PROP_MAX_STAMINA] = 24000
|
||||||
fieldName == "PROP_SATIATION_PENALTY_TIME" ||
|
player.PropertiesMap[constant.PLAYER_PROP_CUR_PERSIST_STAMINA] = 24000
|
||||||
fieldName == "PROP_LEVEL" {
|
player.PropertiesMap[constant.PLAYER_PROP_PLAYER_RESIN] = 160
|
||||||
continue
|
player.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE] = 2
|
||||||
}
|
player.PropertiesMap[constant.PLAYER_PROP_IS_MP_MODE_AVAILABLE] = 1
|
||||||
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.FlyCloakList = make([]uint32, 0)
|
player.FlyCloakList = make([]uint32, 0)
|
||||||
player.FlyCloakList = append(player.FlyCloakList, 140001)
|
player.FlyCloakList = append(player.FlyCloakList, 140001)
|
||||||
@@ -411,8 +403,8 @@ func (g *GameManager) CreatePlayer(userId uint32, nickName string, mainCharAvata
|
|||||||
// 添加选定的主角
|
// 添加选定的主角
|
||||||
player.AddAvatar(mainCharAvatarId)
|
player.AddAvatar(mainCharAvatarId)
|
||||||
// 添加初始武器
|
// 添加初始武器
|
||||||
avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(mainCharAvatarId)]
|
avatarDataConfig := gdconf.GetAvatarDataById(int32(mainCharAvatarId))
|
||||||
if !ok {
|
if avatarDataConfig == nil {
|
||||||
logger.Error("config is nil, mainCharAvatarId: %v", mainCharAvatarId)
|
logger.Error("config is nil, mainCharAvatarId: %v", mainCharAvatarId)
|
||||||
return nil
|
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)
|
logger.Debug("user get scene trans to point, uid: %v", player.PlayerID)
|
||||||
req := payloadMsg.(*proto.SceneTransToPointReq)
|
req := payloadMsg.(*proto.SceneTransToPointReq)
|
||||||
|
|
||||||
scenePointConfig, exist := gdconf.CONF.ScenePointMap[int32(req.SceneId)]
|
pointDataConfig := gdconf.GetScenePointBySceneIdAndPointId(int32(req.SceneId), int32(req.PointId))
|
||||||
if !exist {
|
if pointDataConfig == nil {
|
||||||
g.SendError(cmd.SceneTransToPointRsp, player, &proto.SceneTransToPointRsp{})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
pointConfig, exist := scenePointConfig.PointMap[int32(req.PointId)]
|
|
||||||
if !exist {
|
|
||||||
g.SendError(cmd.SceneTransToPointRsp, player, &proto.SceneTransToPointRsp{})
|
g.SendError(cmd.SceneTransToPointRsp, player, &proto.SceneTransToPointRsp{})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 传送玩家
|
// 传送玩家
|
||||||
sceneId := req.SceneId
|
sceneId := req.SceneId
|
||||||
g.TeleportPlayer(player, constant.EnterReasonConst.TransPoint, sceneId, &model.Vector{
|
g.TeleportPlayer(player, constant.EnterReasonTransPoint, sceneId, &model.Vector{
|
||||||
X: pointConfig.TranPos.X,
|
X: pointDataConfig.TranPos.X,
|
||||||
Y: pointConfig.TranPos.Y,
|
Y: pointDataConfig.TranPos.Y,
|
||||||
Z: pointConfig.TranPos.Z,
|
Z: pointDataConfig.TranPos.Z,
|
||||||
}, &model.Vector{
|
}, &model.Vector{
|
||||||
X: pointConfig.TranRot.X,
|
X: pointDataConfig.TranRot.X,
|
||||||
Y: pointConfig.TranRot.Y,
|
Y: pointDataConfig.TranRot.Y,
|
||||||
Z: pointConfig.TranRot.Z,
|
Z: pointDataConfig.TranRot.Z,
|
||||||
}, 0)
|
}, 0)
|
||||||
|
|
||||||
sceneTransToPointRsp := &proto.SceneTransToPointRsp{
|
sceneTransToPointRsp := &proto.SceneTransToPointRsp{
|
||||||
@@ -60,7 +55,7 @@ func (g *GameManager) MarkMapReq(player *model.Player, payloadMsg pb.Message) {
|
|||||||
posYInt = 300
|
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),
|
X: float64(req.Mark.Pos.X),
|
||||||
Y: float64(posYInt),
|
Y: float64(posYInt),
|
||||||
Z: float64(req.Mark.Pos.Z),
|
Z: float64(req.Mark.Pos.Z),
|
||||||
@@ -107,7 +102,7 @@ func (g *GameManager) TeleportPlayer(player *model.Player, enterReason uint16, s
|
|||||||
|
|
||||||
var enterType proto.EnterType
|
var enterType proto.EnterType
|
||||||
switch enterReason {
|
switch enterReason {
|
||||||
case constant.EnterReasonConst.DungeonEnter:
|
case constant.EnterReasonDungeonEnter:
|
||||||
logger.Debug("player dungeon scene, scene: %v, pos: %v", player.SceneId, player.Pos)
|
logger.Debug("player dungeon scene, scene: %v, pos: %v", player.SceneId, player.Pos)
|
||||||
enterType = proto.EnterType_ENTER_DUNGEON
|
enterType = proto.EnterType_ENTER_DUNGEON
|
||||||
default:
|
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)
|
logger.Debug("user get scene point, uid: %v", player.PlayerID)
|
||||||
req := payloadMsg.(*proto.GetScenePointReq)
|
req := payloadMsg.(*proto.GetScenePointReq)
|
||||||
|
|
||||||
scenePointConfig, exist := gdconf.CONF.ScenePointMap[int32(req.SceneId)]
|
scenePointMapConfig := gdconf.GetScenePointMapBySceneId(int32(req.SceneId))
|
||||||
if !exist {
|
if scenePointMapConfig == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,7 +131,7 @@ func (g *GameManager) GetScenePointReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
SceneId: req.SceneId,
|
SceneId: req.SceneId,
|
||||||
}
|
}
|
||||||
areaIdMap := make(map[uint32]bool)
|
areaIdMap := make(map[uint32]bool)
|
||||||
for _, worldAreaData := range gdconf.CONF.WorldAreaDataMap {
|
for _, worldAreaData := range gdconf.GetWorldAreaDataMap() {
|
||||||
if uint32(worldAreaData.SceneId) == req.SceneId {
|
if uint32(worldAreaData.SceneId) == req.SceneId {
|
||||||
areaIdMap[uint32(worldAreaData.AreaId1)] = true
|
areaIdMap[uint32(worldAreaData.AreaId1)] = true
|
||||||
}
|
}
|
||||||
@@ -146,7 +141,7 @@ func (g *GameManager) GetScenePointReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
areaList = append(areaList, areaId)
|
areaList = append(areaList, areaId)
|
||||||
}
|
}
|
||||||
getScenePointRsp.UnlockAreaList = areaList
|
getScenePointRsp.UnlockAreaList = areaList
|
||||||
for _, pointData := range scenePointConfig.PointMap {
|
for _, pointData := range scenePointMapConfig {
|
||||||
if pointData.PointType == gdconf.PointTypeOther {
|
if pointData.PointType == gdconf.PointTypeOther {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -163,7 +158,7 @@ func (g *GameManager) GetSceneAreaReq(player *model.Player, payloadMsg pb.Messag
|
|||||||
SceneId: req.SceneId,
|
SceneId: req.SceneId,
|
||||||
}
|
}
|
||||||
areaIdMap := make(map[uint32]bool)
|
areaIdMap := make(map[uint32]bool)
|
||||||
for _, worldAreaData := range gdconf.CONF.WorldAreaDataMap {
|
for _, worldAreaData := range gdconf.GetWorldAreaDataMap() {
|
||||||
if uint32(worldAreaData.SceneId) == req.SceneId {
|
if uint32(worldAreaData.SceneId) == req.SceneId {
|
||||||
areaIdMap[uint32(worldAreaData.AreaId1)] = true
|
areaIdMap[uint32(worldAreaData.AreaId1)] = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -212,8 +212,8 @@ func (g *GameManager) UserApplyEnterWorld(player *model.Player, targetUid uint32
|
|||||||
ApplyPlayerOnlineInfo: &mq.UserBaseInfo{
|
ApplyPlayerOnlineInfo: &mq.UserBaseInfo{
|
||||||
UserId: player.PlayerID,
|
UserId: player.PlayerID,
|
||||||
Nickname: player.NickName,
|
Nickname: player.NickName,
|
||||||
PlayerLevel: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL],
|
PlayerLevel: player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL],
|
||||||
MpSettingType: uint8(player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]),
|
MpSettingType: uint8(player.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]),
|
||||||
NameCardId: player.NameCard,
|
NameCardId: player.NameCard,
|
||||||
Signature: player.Signature,
|
Signature: player.Signature,
|
||||||
HeadImageId: player.HeadImage,
|
HeadImageId: player.HeadImage,
|
||||||
@@ -235,7 +235,7 @@ func (g *GameManager) UserApplyEnterWorld(player *model.Player, targetUid uint32
|
|||||||
applyFailNotify(proto.PlayerApplyEnterMpResultNotify_PLAYER_NOT_IN_PLAYER_WORLD)
|
applyFailNotify(proto.PlayerApplyEnterMpResultNotify_PLAYER_NOT_IN_PLAYER_WORLD)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
mpSetting := targetPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]
|
mpSetting := targetPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]
|
||||||
if mpSetting == 0 {
|
if mpSetting == 0 {
|
||||||
// 房主玩家没开权限
|
// 房主玩家没开权限
|
||||||
applyFailNotify(proto.PlayerApplyEnterMpResultNotify_SCENE_CANNOT_ENTER)
|
applyFailNotify(proto.PlayerApplyEnterMpResultNotify_SCENE_CANNOT_ENTER)
|
||||||
@@ -340,7 +340,7 @@ func (g *GameManager) HostEnterMpWorld(hostPlayer *model.Player, otherUid uint32
|
|||||||
hostPlayer,
|
hostPlayer,
|
||||||
hostPlayer,
|
hostPlayer,
|
||||||
proto.EnterType_ENTER_GOTO,
|
proto.EnterType_ENTER_GOTO,
|
||||||
uint32(constant.EnterReasonConst.HostFromSingleToMp),
|
uint32(constant.EnterReasonHostFromSingleToMp),
|
||||||
hostPlayer.SceneId,
|
hostPlayer.SceneId,
|
||||||
hostPlayer.Pos,
|
hostPlayer.Pos,
|
||||||
0,
|
0,
|
||||||
@@ -368,7 +368,7 @@ func (g *GameManager) UserLeaveWorld(player *model.Player) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g.ReconnectPlayer(player.PlayerID)
|
g.ReLoginPlayer(player.PlayerID)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -458,8 +458,8 @@ func (g *GameManager) UpdateWorldPlayerInfo(hostWorld *World, excludePlayer *mod
|
|||||||
onlinePlayerInfo := &proto.OnlinePlayerInfo{
|
onlinePlayerInfo := &proto.OnlinePlayerInfo{
|
||||||
Uid: subWorldPlayer.PlayerID,
|
Uid: subWorldPlayer.PlayerID,
|
||||||
Nickname: subWorldPlayer.NickName,
|
Nickname: subWorldPlayer.NickName,
|
||||||
PlayerLevel: subWorldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL],
|
PlayerLevel: subWorldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL],
|
||||||
MpSettingType: proto.MpSettingType(subWorldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]),
|
MpSettingType: proto.MpSettingType(subWorldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]),
|
||||||
NameCardId: subWorldPlayer.NameCard,
|
NameCardId: subWorldPlayer.NameCard,
|
||||||
Signature: subWorldPlayer.Signature,
|
Signature: subWorldPlayer.Signature,
|
||||||
ProfilePicture: &proto.ProfilePicture{AvatarId: subWorldPlayer.HeadImage},
|
ProfilePicture: &proto.ProfilePicture{AvatarId: subWorldPlayer.HeadImage},
|
||||||
@@ -483,8 +483,8 @@ func (g *GameManager) UpdateWorldPlayerInfo(hostWorld *World, excludePlayer *mod
|
|||||||
onlinePlayerInfo := &proto.OnlinePlayerInfo{
|
onlinePlayerInfo := &proto.OnlinePlayerInfo{
|
||||||
Uid: worldPlayer.PlayerID,
|
Uid: worldPlayer.PlayerID,
|
||||||
Nickname: worldPlayer.NickName,
|
Nickname: worldPlayer.NickName,
|
||||||
PlayerLevel: worldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL],
|
PlayerLevel: worldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL],
|
||||||
MpSettingType: proto.MpSettingType(worldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]),
|
MpSettingType: proto.MpSettingType(worldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]),
|
||||||
NameCardId: worldPlayer.NameCard,
|
NameCardId: worldPlayer.NameCard,
|
||||||
Signature: worldPlayer.Signature,
|
Signature: worldPlayer.Signature,
|
||||||
ProfilePicture: &proto.ProfilePicture{AvatarId: worldPlayer.HeadImage},
|
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)
|
applyFailNotify(proto.PlayerApplyEnterMpResultNotify_PLAYER_NOT_IN_PLAYER_WORLD)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
mpSetting := hostPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]
|
mpSetting := hostPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]
|
||||||
if mpSetting == 0 {
|
if mpSetting == 0 {
|
||||||
// 房主玩家没开权限
|
// 房主玩家没开权限
|
||||||
applyFailNotify(proto.PlayerApplyEnterMpResultNotify_SCENE_CANNOT_ENTER)
|
applyFailNotify(proto.PlayerApplyEnterMpResultNotify_SCENE_CANNOT_ENTER)
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ func (g *GameManager) SceneInitFinishReq(player *model.Player, payloadMsg pb.Mes
|
|||||||
onlinePlayerInfo := &proto.OnlinePlayerInfo{
|
onlinePlayerInfo := &proto.OnlinePlayerInfo{
|
||||||
Uid: worldPlayer.PlayerID,
|
Uid: worldPlayer.PlayerID,
|
||||||
Nickname: worldPlayer.NickName,
|
Nickname: worldPlayer.NickName,
|
||||||
PlayerLevel: worldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL],
|
PlayerLevel: worldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL],
|
||||||
MpSettingType: proto.MpSettingType(worldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]),
|
MpSettingType: proto.MpSettingType(worldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]),
|
||||||
NameCardId: worldPlayer.NameCard,
|
NameCardId: worldPlayer.NameCard,
|
||||||
Signature: worldPlayer.Signature,
|
Signature: worldPlayer.Signature,
|
||||||
ProfilePicture: &proto.ProfilePicture{AvatarId: worldPlayer.HeadImage},
|
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 _, info := range playerWorldSceneInfoListNotify.InfoList {
|
||||||
for _, sceneTagDataConfig := range gdconf.CONF.SceneTagDataMap {
|
for _, sceneTagDataConfig := range gdconf.GetSceneTagDataMap() {
|
||||||
if uint32(sceneTagDataConfig.SceneId) == info.SceneId {
|
if uint32(sceneTagDataConfig.SceneId) == info.SceneId {
|
||||||
info.SceneTagIdList = append(info.SceneTagIdList, uint32(sceneTagDataConfig.SceneTagId))
|
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{
|
sceneAreaWeatherNotify := &proto.SceneAreaWeatherNotify{
|
||||||
WeatherAreaId: 0,
|
WeatherAreaId: 0,
|
||||||
ClimateType: uint32(constant.ClimateTypeConst.CLIMATE_SUNNY),
|
ClimateType: uint32(constant.CLIMATE_TYPE_SUNNY),
|
||||||
}
|
}
|
||||||
g.SendMsg(cmd.SceneAreaWeatherNotify, player.PlayerID, player.ClientSeq, sceneAreaWeatherNotify)
|
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{
|
onlinePlayerInfo := &proto.OnlinePlayerInfo{
|
||||||
Uid: worldPlayer.PlayerID,
|
Uid: worldPlayer.PlayerID,
|
||||||
Nickname: worldPlayer.NickName,
|
Nickname: worldPlayer.NickName,
|
||||||
PlayerLevel: worldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL],
|
PlayerLevel: worldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL],
|
||||||
MpSettingType: proto.MpSettingType(worldPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]),
|
MpSettingType: proto.MpSettingType(worldPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]),
|
||||||
NameCardId: worldPlayer.NameCard,
|
NameCardId: worldPlayer.NameCard,
|
||||||
Signature: worldPlayer.Signature,
|
Signature: worldPlayer.Signature,
|
||||||
ProfilePicture: &proto.ProfilePicture{AvatarId: worldPlayer.HeadImage},
|
ProfilePicture: &proto.ProfilePicture{AvatarId: worldPlayer.HeadImage},
|
||||||
@@ -284,7 +284,7 @@ func (g *GameManager) EnterSceneDoneReq(player *model.Player, payloadMsg pb.Mess
|
|||||||
|
|
||||||
sceneAreaWeatherNotify := &proto.SceneAreaWeatherNotify{
|
sceneAreaWeatherNotify := &proto.SceneAreaWeatherNotify{
|
||||||
WeatherAreaId: 0,
|
WeatherAreaId: 0,
|
||||||
ClimateType: uint32(constant.ClimateTypeConst.CLIMATE_SUNNY),
|
ClimateType: uint32(constant.CLIMATE_TYPE_SUNNY),
|
||||||
}
|
}
|
||||||
g.SendMsg(cmd.SceneAreaWeatherNotify, player.PlayerID, player.ClientSeq, sceneAreaWeatherNotify)
|
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)
|
gadget := entityConfig.(*gdconf.Gadget)
|
||||||
// 70500000并不是实际的装置id 根据节点类型对应采集物配置表
|
// 70500000并不是实际的装置id 根据节点类型对应采集物配置表
|
||||||
if gadget.PointType != 0 && gadget.GadgetId == 70500000 {
|
if gadget.PointType != 0 && gadget.GadgetId == 70500000 {
|
||||||
gatherDataConfig, exist := gdconf.CONF.GatherDataPointTypeMap[gadget.PointType]
|
gatherDataConfig := gdconf.GetGatherDataByPointType(gadget.PointType)
|
||||||
if !exist {
|
if gatherDataConfig == nil {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
return scene.CreateEntityGadgetGather(&model.Vector{
|
return scene.CreateEntityGadgetGather(&model.Vector{
|
||||||
@@ -420,8 +420,8 @@ func (g *GameManager) PacketPlayerEnterSceneNotifyLogin(player *model.Player, en
|
|||||||
Type: enterType,
|
Type: enterType,
|
||||||
TargetUid: player.PlayerID,
|
TargetUid: player.PlayerID,
|
||||||
EnterSceneToken: player.EnterSceneToken,
|
EnterSceneToken: player.EnterSceneToken,
|
||||||
WorldLevel: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL],
|
WorldLevel: player.PropertiesMap[constant.PLAYER_PROP_PLAYER_WORLD_LEVEL],
|
||||||
EnterReason: uint32(constant.EnterReasonConst.Login),
|
EnterReason: uint32(constant.EnterReasonLogin),
|
||||||
IsFirstLoginEnterScene: true,
|
IsFirstLoginEnterScene: true,
|
||||||
WorldType: 1,
|
WorldType: 1,
|
||||||
SceneTagIdList: make([]uint32, 0),
|
SceneTagIdList: make([]uint32, 0),
|
||||||
@@ -430,7 +430,7 @@ func (g *GameManager) PacketPlayerEnterSceneNotifyLogin(player *model.Player, en
|
|||||||
strconv.Itoa(int(player.PlayerID)) + "-" +
|
strconv.Itoa(int(player.PlayerID)) + "-" +
|
||||||
strconv.Itoa(int(time.Now().Unix())) + "-" +
|
strconv.Itoa(int(time.Now().Unix())) + "-" +
|
||||||
"296359"
|
"296359"
|
||||||
for _, sceneTagDataConfig := range gdconf.CONF.SceneTagDataMap {
|
for _, sceneTagDataConfig := range gdconf.GetSceneTagDataMap() {
|
||||||
if uint32(sceneTagDataConfig.SceneId) == player.SceneId {
|
if uint32(sceneTagDataConfig.SceneId) == player.SceneId {
|
||||||
playerEnterSceneNotify.SceneTagIdList = append(playerEnterSceneNotify.SceneTagIdList, uint32(sceneTagDataConfig.SceneTagId))
|
playerEnterSceneNotify.SceneTagIdList = append(playerEnterSceneNotify.SceneTagIdList, uint32(sceneTagDataConfig.SceneTagId))
|
||||||
}
|
}
|
||||||
@@ -470,7 +470,7 @@ func (g *GameManager) PacketPlayerEnterSceneNotifyMp(
|
|||||||
Type: enterType,
|
Type: enterType,
|
||||||
TargetUid: targetPlayer.PlayerID,
|
TargetUid: targetPlayer.PlayerID,
|
||||||
EnterSceneToken: player.EnterSceneToken,
|
EnterSceneToken: player.EnterSceneToken,
|
||||||
WorldLevel: targetPlayer.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL],
|
WorldLevel: targetPlayer.PropertiesMap[constant.PLAYER_PROP_PLAYER_WORLD_LEVEL],
|
||||||
EnterReason: enterReason,
|
EnterReason: enterReason,
|
||||||
WorldType: 1,
|
WorldType: 1,
|
||||||
DungeonId: dungeonId,
|
DungeonId: dungeonId,
|
||||||
@@ -480,7 +480,7 @@ func (g *GameManager) PacketPlayerEnterSceneNotifyMp(
|
|||||||
strconv.Itoa(int(targetPlayer.PlayerID)) + "-" +
|
strconv.Itoa(int(targetPlayer.PlayerID)) + "-" +
|
||||||
strconv.Itoa(int(time.Now().Unix())) + "-" +
|
strconv.Itoa(int(time.Now().Unix())) + "-" +
|
||||||
"296359"
|
"296359"
|
||||||
for _, sceneTagDataConfig := range gdconf.CONF.SceneTagDataMap {
|
for _, sceneTagDataConfig := range gdconf.GetSceneTagDataMap() {
|
||||||
if uint32(sceneTagDataConfig.SceneId) == player.SceneId {
|
if uint32(sceneTagDataConfig.SceneId) == player.SceneId {
|
||||||
playerEnterSceneNotify.SceneTagIdList = append(playerEnterSceneNotify.SceneTagIdList, uint32(sceneTagDataConfig.SceneTagId))
|
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) {
|
func (g *GameManager) EntityFightPropUpdateNotifyBroadcast(scene *Scene, entity *Entity, fightPropId uint32) {
|
||||||
for _, player := range scene.GetAllPlayer() {
|
for _, player := range scene.GetAllPlayer() {
|
||||||
// PacketEntityFightPropUpdateNotify
|
fightProp := entity.GetFightProp()
|
||||||
g.SendMsg(cmd.EntityFightPropUpdateNotify, player.PlayerID, player.ClientSeq, &proto.EntityFightPropUpdateNotify{
|
ntf := &proto.EntityFightPropUpdateNotify{
|
||||||
FightPropMap: entity.GetFightProp(),
|
FightPropMap: make(map[uint32]float32),
|
||||||
EntityId: entity.GetId(),
|
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 {
|
func (g *GameManager) PacketFightPropMapToPbFightPropList(fightPropMap map[uint32]float32) []*proto.FightPropPair {
|
||||||
fightPropList := []*proto.FightPropPair{
|
fightPropList := []*proto.FightPropPair{
|
||||||
{
|
{PropType: uint32(constant.FIGHT_PROP_BASE_HP), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_BASE_HP)]},
|
||||||
PropType: uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_HP),
|
{PropType: uint32(constant.FIGHT_PROP_BASE_ATTACK), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_BASE_ATTACK)]},
|
||||||
PropValue: fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_HP)],
|
{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.FightPropertyConst.FIGHT_PROP_BASE_ATTACK),
|
{PropType: uint32(constant.FIGHT_PROP_CHARGE_EFFICIENCY), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_CHARGE_EFFICIENCY)]},
|
||||||
PropValue: fightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_ATTACK)],
|
{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.FightPropertyConst.FIGHT_PROP_BASE_DEFENSE),
|
{PropType: uint32(constant.FIGHT_PROP_CUR_DEFENSE), PropValue: fightPropMap[uint32(constant.FIGHT_PROP_CUR_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)],
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
return fightPropList
|
return fightPropList
|
||||||
}
|
}
|
||||||
@@ -676,37 +648,37 @@ func (g *GameManager) PacketSceneEntityInfoAvatar(scene *Scene, player *model.Pl
|
|||||||
},
|
},
|
||||||
PropList: []*proto.PropPair{
|
PropList: []*proto.PropPair{
|
||||||
{
|
{
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL),
|
Type: uint32(constant.PLAYER_PROP_LEVEL),
|
||||||
PropValue: &proto.PropValue{
|
PropValue: &proto.PropValue{
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL),
|
Type: uint32(constant.PLAYER_PROP_LEVEL),
|
||||||
Value: &proto.PropValue_Ival{Ival: int64(avatar.Level)},
|
Value: &proto.PropValue_Ival{Ival: int64(avatar.Level)},
|
||||||
Val: int64(avatar.Level)},
|
Val: int64(avatar.Level)},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_EXP),
|
Type: uint32(constant.PLAYER_PROP_EXP),
|
||||||
PropValue: &proto.PropValue{
|
PropValue: &proto.PropValue{
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_EXP),
|
Type: uint32(constant.PLAYER_PROP_EXP),
|
||||||
Value: &proto.PropValue_Ival{Ival: int64(avatar.Exp)},
|
Value: &proto.PropValue_Ival{Ival: int64(avatar.Exp)},
|
||||||
Val: int64(avatar.Exp)},
|
Val: int64(avatar.Exp)},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_BREAK_LEVEL),
|
Type: uint32(constant.PLAYER_PROP_BREAK_LEVEL),
|
||||||
PropValue: &proto.PropValue{
|
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)},
|
Value: &proto.PropValue_Ival{Ival: int64(avatar.Promote)},
|
||||||
Val: int64(avatar.Promote)},
|
Val: int64(avatar.Promote)},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type: uint32(constant.PlayerPropertyConst.PROP_SATIATION_VAL),
|
Type: uint32(constant.PLAYER_PROP_SATIATION_VAL),
|
||||||
PropValue: &proto.PropValue{
|
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)},
|
Value: &proto.PropValue_Ival{Ival: int64(avatar.Satiation)},
|
||||||
Val: 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{
|
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)},
|
Value: &proto.PropValue_Ival{Ival: int64(avatar.SatiationPenalty)},
|
||||||
Val: int64(avatar.SatiationPenalty)},
|
Val: int64(avatar.SatiationPenalty)},
|
||||||
},
|
},
|
||||||
@@ -763,8 +735,8 @@ func (g *GameManager) PacketSceneEntityInfoMonster(scene *Scene, entityId uint32
|
|||||||
Speed: &proto.Vector{},
|
Speed: &proto.Vector{},
|
||||||
State: proto.MotionState(entity.GetMoveState()),
|
State: proto.MotionState(entity.GetMoveState()),
|
||||||
},
|
},
|
||||||
PropList: []*proto.PropPair{{Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL), PropValue: &proto.PropValue{
|
PropList: []*proto.PropPair{{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(entity.GetLevel())},
|
Value: &proto.PropValue_Ival{Ival: int64(entity.GetLevel())},
|
||||||
Val: int64(entity.GetLevel()),
|
Val: int64(entity.GetLevel()),
|
||||||
}}},
|
}}},
|
||||||
@@ -811,8 +783,8 @@ func (g *GameManager) PacketSceneEntityInfoNpc(scene *Scene, entityId uint32) *p
|
|||||||
Speed: &proto.Vector{},
|
Speed: &proto.Vector{},
|
||||||
State: proto.MotionState(entity.GetMoveState()),
|
State: proto.MotionState(entity.GetMoveState()),
|
||||||
},
|
},
|
||||||
PropList: []*proto.PropPair{{Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL), PropValue: &proto.PropValue{
|
PropList: []*proto.PropPair{{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(entity.GetLevel())},
|
Value: &proto.PropValue_Ival{Ival: int64(entity.GetLevel())},
|
||||||
Val: int64(entity.GetLevel()),
|
Val: int64(entity.GetLevel()),
|
||||||
}}},
|
}}},
|
||||||
@@ -859,8 +831,8 @@ func (g *GameManager) PacketSceneEntityInfoGadget(scene *Scene, entityId uint32)
|
|||||||
Speed: &proto.Vector{},
|
Speed: &proto.Vector{},
|
||||||
State: proto.MotionState(entity.GetMoveState()),
|
State: proto.MotionState(entity.GetMoveState()),
|
||||||
},
|
},
|
||||||
PropList: []*proto.PropPair{{Type: uint32(constant.PlayerPropertyConst.PROP_LEVEL), PropValue: &proto.PropValue{
|
PropList: []*proto.PropPair{{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(1)},
|
Value: &proto.PropValue_Ival{Ival: int64(1)},
|
||||||
Val: int64(1),
|
Val: int64(1),
|
||||||
}}},
|
}}},
|
||||||
@@ -917,7 +889,7 @@ func (g *GameManager) PacketSceneAvatarInfo(scene *Scene, player *model.Player,
|
|||||||
SkillDepotId: player.AvatarMap[avatarId].SkillDepotId,
|
SkillDepotId: player.AvatarMap[avatarId].SkillDepotId,
|
||||||
Weapon: &proto.SceneWeaponInfo{
|
Weapon: &proto.SceneWeaponInfo{
|
||||||
EntityId: scene.GetWorld().GetPlayerWorldAvatarWeaponEntityId(player, avatarId),
|
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,
|
ItemId: weapon.ItemId,
|
||||||
Guid: weapon.Guid,
|
Guid: weapon.Guid,
|
||||||
Level: uint32(weapon.Level),
|
Level: uint32(weapon.Level),
|
||||||
@@ -974,8 +946,8 @@ func (g *GameManager) PacketSceneGadgetInfoNormal(entity *Entity) *proto.SceneGa
|
|||||||
func (g *GameManager) PacketSceneGadgetInfoGather(entity *Entity) *proto.SceneGadgetInfo {
|
func (g *GameManager) PacketSceneGadgetInfoGather(entity *Entity) *proto.SceneGadgetInfo {
|
||||||
gadgetEntity := entity.GetGadgetEntity()
|
gadgetEntity := entity.GetGadgetEntity()
|
||||||
gatherEntity := gadgetEntity.GetGadgetGatherEntity()
|
gatherEntity := gadgetEntity.GetGadgetGatherEntity()
|
||||||
gather, ok := gdconf.CONF.GatherDataMap[int32(gatherEntity.GetGatherId())]
|
gatherDataConfig := gdconf.GetGatherDataById(int32(gatherEntity.GetGatherId()))
|
||||||
if !ok {
|
if gatherDataConfig == nil {
|
||||||
logger.Error("gather data error, gatherId: %v", gatherEntity.GetGatherId())
|
logger.Error("gather data error, gatherId: %v", gatherEntity.GetGatherId())
|
||||||
return new(proto.SceneGadgetInfo)
|
return new(proto.SceneGadgetInfo)
|
||||||
}
|
}
|
||||||
@@ -988,7 +960,7 @@ func (g *GameManager) PacketSceneGadgetInfoGather(entity *Entity) *proto.SceneGa
|
|||||||
AuthorityPeerId: 1,
|
AuthorityPeerId: 1,
|
||||||
Content: &proto.SceneGadgetInfo_GatherGadget{
|
Content: &proto.SceneGadgetInfo_GatherGadget{
|
||||||
GatherGadget: &proto.GatherGadgetInfo{
|
GatherGadget: &proto.GatherGadgetInfo{
|
||||||
ItemId: uint32(gather.ItemId),
|
ItemId: uint32(gatherDataConfig.ItemId),
|
||||||
IsForbidGuest: false,
|
IsForbidGuest: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1041,21 +1013,21 @@ func (g *GameManager) PacketDelTeamEntityNotify(scene *Scene, player *model.Play
|
|||||||
|
|
||||||
func (g *GameManager) GetTempFightPropMap() map[uint32]float32 {
|
func (g *GameManager) GetTempFightPropMap() map[uint32]float32 {
|
||||||
fpm := map[uint32]float32{
|
fpm := map[uint32]float32{
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_HP): float32(72.91699),
|
uint32(constant.FIGHT_PROP_CUR_HP): float32(72.91699),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_PHYSICAL_SUB_HURT): float32(0.1),
|
uint32(constant.FIGHT_PROP_PHYSICAL_SUB_HURT): float32(0.1),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_DEFENSE): float32(505.0),
|
uint32(constant.FIGHT_PROP_CUR_DEFENSE): float32(505.0),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_ATTACK): float32(45.679916),
|
uint32(constant.FIGHT_PROP_CUR_ATTACK): float32(45.679916),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_ICE_SUB_HURT): float32(0.1),
|
uint32(constant.FIGHT_PROP_ICE_SUB_HURT): float32(0.1),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_ATTACK): float32(45.679916),
|
uint32(constant.FIGHT_PROP_BASE_ATTACK): float32(45.679916),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_MAX_HP): float32(72.91699),
|
uint32(constant.FIGHT_PROP_MAX_HP): float32(72.91699),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_FIRE_SUB_HURT): float32(0.1),
|
uint32(constant.FIGHT_PROP_FIRE_SUB_HURT): float32(0.1),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_ELEC_SUB_HURT): float32(0.1),
|
uint32(constant.FIGHT_PROP_ELEC_SUB_HURT): float32(0.1),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_WIND_SUB_HURT): float32(0.1),
|
uint32(constant.FIGHT_PROP_WIND_SUB_HURT): float32(0.1),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_ROCK_SUB_HURT): float32(0.1),
|
uint32(constant.FIGHT_PROP_ROCK_SUB_HURT): float32(0.1),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_GRASS_SUB_HURT): float32(0.1),
|
uint32(constant.FIGHT_PROP_GRASS_SUB_HURT): float32(0.1),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_WATER_SUB_HURT): float32(0.1),
|
uint32(constant.FIGHT_PROP_WATER_SUB_HURT): float32(0.1),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_HP): float32(72.91699),
|
uint32(constant.FIGHT_PROP_BASE_HP): float32(72.91699),
|
||||||
uint32(constant.FightPropertyConst.FIGHT_PROP_BASE_DEFENSE): float32(505.0),
|
uint32(constant.FIGHT_PROP_BASE_DEFENSE): float32(505.0),
|
||||||
}
|
}
|
||||||
return fpm
|
return fpm
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ func (g *GameManager) BuyGoodsReq(player *model.Player, payloadMsg pb.Message) {
|
|||||||
g.AddUserItem(player.PlayerID, []*UserItem{{
|
g.AddUserItem(player.PlayerID, []*UserItem{{
|
||||||
ItemId: buyItemId,
|
ItemId: buyItemId,
|
||||||
ChangeCount: buyItemCount,
|
ChangeCount: buyItemCount,
|
||||||
}}, true, constant.ActionReasonConst.Shop)
|
}}, true, constant.ActionReasonShop)
|
||||||
req.Goods.BoughtNum = player.GetItemCount(buyItemId)
|
req.Goods.BoughtNum = player.GetItemCount(buyItemId)
|
||||||
|
|
||||||
buyGoodsRsp := &proto.BuyGoodsRsp{
|
buyGoodsRsp := &proto.BuyGoodsRsp{
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ func (g *GameManager) GetPlayerSocialDetailReq(player *model.Player, payloadMsg
|
|||||||
ProfilePicture: &proto.ProfilePicture{AvatarId: targetPlayer.HeadImage},
|
ProfilePicture: &proto.ProfilePicture{AvatarId: targetPlayer.HeadImage},
|
||||||
Nickname: targetPlayer.NickName,
|
Nickname: targetPlayer.NickName,
|
||||||
Signature: targetPlayer.Signature,
|
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])},
|
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,
|
NameCardId: targetPlayer.NameCard,
|
||||||
IsShowAvatar: false,
|
IsShowAvatar: false,
|
||||||
FinishAchievementNum: 0,
|
FinishAchievementNum: 0,
|
||||||
@@ -174,9 +174,9 @@ func (g *GameManager) GetPlayerFriendListReq(player *model.Player, payloadMsg pb
|
|||||||
friendBrief := &proto.FriendBrief{
|
friendBrief := &proto.FriendBrief{
|
||||||
Uid: friendPlayer.PlayerID,
|
Uid: friendPlayer.PlayerID,
|
||||||
Nickname: friendPlayer.NickName,
|
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},
|
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,
|
Signature: friendPlayer.Signature,
|
||||||
OnlineState: onlineState,
|
OnlineState: onlineState,
|
||||||
IsMpModeAvailable: true,
|
IsMpModeAvailable: true,
|
||||||
@@ -212,9 +212,9 @@ func (g *GameManager) GetPlayerAskFriendListReq(player *model.Player, payloadMsg
|
|||||||
friendBrief := &proto.FriendBrief{
|
friendBrief := &proto.FriendBrief{
|
||||||
Uid: friendPlayer.PlayerID,
|
Uid: friendPlayer.PlayerID,
|
||||||
Nickname: friendPlayer.NickName,
|
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},
|
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,
|
Signature: friendPlayer.Signature,
|
||||||
OnlineState: onlineState,
|
OnlineState: onlineState,
|
||||||
IsMpModeAvailable: true,
|
IsMpModeAvailable: true,
|
||||||
@@ -258,11 +258,11 @@ func (g *GameManager) AskAddFriendReq(player *model.Player, payloadMsg pb.Messag
|
|||||||
ApplyPlayerOnlineInfo: &mq.UserBaseInfo{
|
ApplyPlayerOnlineInfo: &mq.UserBaseInfo{
|
||||||
UserId: player.PlayerID,
|
UserId: player.PlayerID,
|
||||||
Nickname: player.NickName,
|
Nickname: player.NickName,
|
||||||
PlayerLevel: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL],
|
PlayerLevel: player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL],
|
||||||
NameCardId: player.NameCard,
|
NameCardId: player.NameCard,
|
||||||
Signature: player.Signature,
|
Signature: player.Signature,
|
||||||
HeadImageId: player.HeadImage,
|
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{
|
askAddFriendNotify.TargetFriendBrief = &proto.FriendBrief{
|
||||||
Uid: player.PlayerID,
|
Uid: player.PlayerID,
|
||||||
Nickname: player.NickName,
|
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},
|
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,
|
Signature: player.Signature,
|
||||||
OnlineState: proto.FriendOnlineState_FRIEND_ONLINE,
|
OnlineState: proto.FriendOnlineState_FRIEND_ONLINE,
|
||||||
IsMpModeAvailable: true,
|
IsMpModeAvailable: true,
|
||||||
@@ -460,8 +460,8 @@ func (g *GameManager) PacketOnlinePlayerInfo(player *model.Player) *proto.Online
|
|||||||
onlinePlayerInfo := &proto.OnlinePlayerInfo{
|
onlinePlayerInfo := &proto.OnlinePlayerInfo{
|
||||||
Uid: player.PlayerID,
|
Uid: player.PlayerID,
|
||||||
Nickname: player.NickName,
|
Nickname: player.NickName,
|
||||||
PlayerLevel: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL],
|
PlayerLevel: player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL],
|
||||||
MpSettingType: proto.MpSettingType(player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]),
|
MpSettingType: proto.MpSettingType(player.PropertiesMap[constant.PLAYER_PROP_PLAYER_MP_SETTING_TYPE]),
|
||||||
NameCardId: player.NameCard,
|
NameCardId: player.NameCard,
|
||||||
Signature: player.Signature,
|
Signature: player.Signature,
|
||||||
ProfilePicture: &proto.ProfilePicture{AvatarId: player.HeadImage},
|
ProfilePicture: &proto.ProfilePicture{AvatarId: player.HeadImage},
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ func (g *GameManager) HandleAbilityStamina(player *model.Player, entry *proto.Ab
|
|||||||
}
|
}
|
||||||
// 根据ability name查找到对应的技能表里的技能配置
|
// 根据ability name查找到对应的技能表里的技能配置
|
||||||
var avatarAbility *gdconf.AvatarSkillData = nil
|
var avatarAbility *gdconf.AvatarSkillData = nil
|
||||||
for _, avatarSkillData := range gdconf.CONF.AvatarSkillDataMap {
|
for _, avatarSkillData := range gdconf.GetAvatarSkillDataMap() {
|
||||||
hashCode := endec.Hk4eAbilityHashCode(avatarSkillData.AbilityName)
|
hashCode := endec.Hk4eAbilityHashCode(avatarSkillData.AbilityName)
|
||||||
if uint32(hashCode) == abilityNameHashCode {
|
if uint32(hashCode) == abilityNameHashCode {
|
||||||
avatarAbility = avatarSkillData
|
avatarAbility = avatarSkillData
|
||||||
@@ -121,11 +121,11 @@ func (g *GameManager) SceneAvatarStaminaStepReq(player *model.Player, payloadMsg
|
|||||||
// 倒三角 非常消耗体力
|
// 倒三角 非常消耗体力
|
||||||
costRevise = -(angleRevise * 2) + 10
|
costRevise = -(angleRevise * 2) + 10
|
||||||
}
|
}
|
||||||
logger.Debug("stamina climbing, rotX: %v, costRevise: %v, cost: %v", req.Rot.X, costRevise, 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.StaminaCostConst.CLIMBING_BASE-costRevise)
|
g.UpdatePlayerStamina(player, constant.STAMINA_COST_CLIMBING_BASE-costRevise)
|
||||||
case proto.MotionState_MOTION_SWIM_MOVE:
|
case proto.MotionState_MOTION_SWIM_MOVE:
|
||||||
// 缓慢游泳
|
// 缓慢游泳
|
||||||
g.UpdatePlayerStamina(player, constant.StaminaCostConst.SWIMMING)
|
g.UpdatePlayerStamina(player, constant.STAMINA_COST_SWIMMING)
|
||||||
}
|
}
|
||||||
|
|
||||||
// PacketSceneAvatarStaminaStepRsp
|
// PacketSceneAvatarStaminaStepRsp
|
||||||
@@ -159,16 +159,16 @@ func (g *GameManager) ImmediateStamina(player *model.Player, motionState proto.M
|
|||||||
switch motionState {
|
switch motionState {
|
||||||
case proto.MotionState_MOTION_CLIMB:
|
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:
|
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:
|
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:
|
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
|
skillId := staminaInfo.LastSkillId
|
||||||
|
|
||||||
// 读取技能配置表
|
// 读取技能配置表
|
||||||
avatarSkillConfig, ok := gdconf.CONF.AvatarSkillDataMap[int32(skillId)]
|
avatarSkillConfig := gdconf.GetAvatarSkillDataById(int32(skillId))
|
||||||
if !ok {
|
if avatarSkillConfig == nil {
|
||||||
logger.Error("avatarSkillConfig error, skillId: %v", skillId)
|
logger.Error("avatarSkillConfig error, skillId: %v", skillId)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -191,8 +191,8 @@ func (g *GameManager) SkillSustainStamina(player *model.Player, isSwim bool) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取现行角色的配置表
|
// 获取现行角色的配置表
|
||||||
avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(worldAvatar.GetAvatarId())]
|
avatarDataConfig := gdconf.GetAvatarDataById(int32(worldAvatar.GetAvatarId()))
|
||||||
if !ok {
|
if avatarDataConfig == nil {
|
||||||
logger.Error("avatarDataConfig error, avatarId: %v", worldAvatar.GetAvatarId())
|
logger.Error("avatarDataConfig error, avatarId: %v", worldAvatar.GetAvatarId())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -203,8 +203,8 @@ func (g *GameManager) SkillSustainStamina(player *model.Player, isSwim bool) {
|
|||||||
// 如果为0代表使用默认值
|
// 如果为0代表使用默认值
|
||||||
if avatarSkillConfig.CostStamina == 0 {
|
if avatarSkillConfig.CostStamina == 0 {
|
||||||
// 大剑持续耐力消耗默认值
|
// 大剑持续耐力消耗默认值
|
||||||
if avatarDataConfig.WeaponType == constant.WeaponTypeConst.WEAPON_CLAYMORE {
|
if avatarDataConfig.WeaponType == constant.WEAPON_TYPE_CLAYMORE {
|
||||||
costStamina = constant.StaminaCostConst.FIGHT_CLAYMORE_PER
|
costStamina = constant.STAMINA_COST_FIGHT_CLAYMORE_PER
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
costStamina = -(avatarSkillConfig.CostStamina * 100)
|
costStamina = -(avatarSkillConfig.CostStamina * 100)
|
||||||
@@ -230,8 +230,8 @@ func (g *GameManager) ChargedAttackStamina(player *model.Player, worldAvatar *Wo
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取现行角色的配置表
|
// 获取现行角色的配置表
|
||||||
avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(worldAvatar.GetAvatarId())]
|
avatarDataConfig := gdconf.GetAvatarDataById(int32(worldAvatar.GetAvatarId()))
|
||||||
if !ok {
|
if avatarDataConfig == nil {
|
||||||
logger.Error("avatarDataConfig error, avatarId: %v", worldAvatar.GetAvatarId())
|
logger.Error("avatarDataConfig error, avatarId: %v", worldAvatar.GetAvatarId())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -244,15 +244,15 @@ func (g *GameManager) ChargedAttackStamina(player *model.Player, worldAvatar *Wo
|
|||||||
// 使用武器对应默认耐力消耗
|
// 使用武器对应默认耐力消耗
|
||||||
// 双手剑为持续耐力消耗不在这里处理
|
// 双手剑为持续耐力消耗不在这里处理
|
||||||
switch avatarDataConfig.WeaponType {
|
switch avatarDataConfig.WeaponType {
|
||||||
case constant.WeaponTypeConst.WEAPON_SWORD_ONE_HAND:
|
case constant.WEAPON_TYPE_SWORD_ONE_HAND:
|
||||||
// 单手剑
|
// 单手剑
|
||||||
costStamina = constant.StaminaCostConst.FIGHT_SWORD_ONE_HAND
|
costStamina = constant.STAMINA_COST_FIGHT_SWORD_ONE_HAND
|
||||||
case constant.WeaponTypeConst.WEAPON_POLE:
|
case constant.WEAPON_TYPE_POLE:
|
||||||
// 长枪
|
// 长枪
|
||||||
costStamina = constant.StaminaCostConst.FIGHT_POLE
|
costStamina = constant.STAMINA_COST_FIGHT_POLE
|
||||||
case constant.WeaponTypeConst.WEAPON_CATALYST:
|
case constant.WEAPON_TYPE_CATALYST:
|
||||||
// 法器
|
// 法器
|
||||||
costStamina = constant.StaminaCostConst.FIGHT_CATALYST
|
costStamina = constant.STAMINA_COST_FIGHT_CATALYST
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
costStamina = -(skillData.CostStamina * 100)
|
costStamina = -(skillData.CostStamina * 100)
|
||||||
@@ -268,17 +268,17 @@ func (g *GameManager) SkillStartStamina(player *model.Player, casterId uint32, s
|
|||||||
staminaInfo := player.StaminaInfo
|
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
|
pastTime := time.Now().UnixMilli() - staminaInfo.LastSkillStartTime
|
||||||
// 上次触发的技能相同则每400ms触发一次消耗
|
// 上次触发的技能相同则每400ms触发一次消耗
|
||||||
if staminaInfo.LastSkillId != skillId || pastTime > 400 {
|
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()
|
staminaInfo.LastSkillStartTime = time.Now().UnixMilli()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -314,10 +314,10 @@ func (g *GameManager) VehicleRestoreStaminaHandler(player *model.Player) {
|
|||||||
// 判断玩家处于载具中
|
// 判断玩家处于载具中
|
||||||
if g.IsPlayerInVehicle(player, gadgetEntity.GetGadgetVehicleEntity()) {
|
if g.IsPlayerInVehicle(player, gadgetEntity.GetGadgetVehicleEntity()) {
|
||||||
// 角色回复耐力
|
// 角色回复耐力
|
||||||
g.UpdatePlayerStamina(player, constant.StaminaCostConst.IN_SKIFF)
|
g.UpdatePlayerStamina(player, constant.STAMINA_COST_IN_SKIFF)
|
||||||
} else {
|
} 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)
|
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 {
|
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
|
player.StaminaInfo.DrownBackDelay = 0
|
||||||
} else if player.StaminaInfo.DrownBackDelay == 20 {
|
} else if player.StaminaInfo.DrownBackDelay == 20 {
|
||||||
// TODO 队伍扣血
|
// TODO 队伍扣血
|
||||||
maxStamina := player.PropertiesMap[constant.PlayerPropertyConst.PROP_MAX_STAMINA]
|
maxStamina := player.PropertiesMap[constant.PLAYER_PROP_MAX_STAMINA]
|
||||||
// 设置玩家耐力为一半
|
// 设置玩家耐力为一半
|
||||||
g.SetPlayerStamina(player, maxStamina/2)
|
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 {
|
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 {
|
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)
|
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
|
player.StaminaInfo.DrownBackDelay = 1
|
||||||
}
|
}
|
||||||
@@ -553,7 +553,7 @@ func (g *GameManager) SetVehicleStamina(player *model.Player, vehicleEntity *Ent
|
|||||||
// SetPlayerStamina 设置玩家耐力
|
// SetPlayerStamina 设置玩家耐力
|
||||||
func (g *GameManager) SetPlayerStamina(player *model.Player, stamina uint32) {
|
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
|
player.PropertiesMap[prop] = stamina
|
||||||
// logger.Debug("player stamina set, stamina: %v", 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())
|
sceneTeamAvatar.SceneAvatarInfo = g.PacketSceneAvatarInfo(worldPlayerScene, worldPlayer, worldAvatar.GetAvatarId())
|
||||||
}
|
}
|
||||||
// add AbilityControlBlock
|
// add AbilityControlBlock
|
||||||
avatarDataConfig := gdconf.CONF.AvatarDataMap[int32(worldAvatar.GetAvatarId())]
|
|
||||||
acb := sceneTeamAvatar.AbilityControlBlock
|
acb := sceneTeamAvatar.AbilityControlBlock
|
||||||
embryoId := 0
|
embryoId := 0
|
||||||
// add avatar abilities
|
// add avatar abilities
|
||||||
|
avatarDataConfig := gdconf.GetAvatarDataById(int32(worldAvatar.GetAvatarId()))
|
||||||
if avatarDataConfig != nil {
|
if avatarDataConfig != nil {
|
||||||
for _, abilityId := range avatarDataConfig.AbilityHashCodeList {
|
for _, abilityId := range avatarDataConfig.AbilityHashCodeList {
|
||||||
embryoId++
|
embryoId++
|
||||||
emb := &proto.AbilityEmbryo{
|
emb := &proto.AbilityEmbryo{
|
||||||
AbilityId: uint32(embryoId),
|
AbilityId: uint32(embryoId),
|
||||||
AbilityNameHash: uint32(abilityId),
|
AbilityNameHash: uint32(abilityId),
|
||||||
AbilityOverrideNameHash: uint32(constant.GameConstantConst.DEFAULT_ABILITY_NAME),
|
AbilityOverrideNameHash: uint32(constant.DEFAULT_ABILITY_NAME),
|
||||||
}
|
}
|
||||||
acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb)
|
acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// add default abilities
|
// add default abilities
|
||||||
for _, abilityId := range constant.GameConstantConst.DEFAULT_ABILITY_HASHES {
|
for _, abilityId := range constant.DEFAULT_ABILITY_HASHES {
|
||||||
embryoId++
|
embryoId++
|
||||||
emb := &proto.AbilityEmbryo{
|
emb := &proto.AbilityEmbryo{
|
||||||
AbilityId: uint32(embryoId),
|
AbilityId: uint32(embryoId),
|
||||||
AbilityNameHash: uint32(abilityId),
|
AbilityNameHash: uint32(abilityId),
|
||||||
AbilityOverrideNameHash: uint32(constant.GameConstantConst.DEFAULT_ABILITY_NAME),
|
AbilityOverrideNameHash: uint32(constant.DEFAULT_ABILITY_NAME),
|
||||||
}
|
}
|
||||||
acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb)
|
acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb)
|
||||||
}
|
}
|
||||||
@@ -280,14 +280,14 @@ func (g *GameManager) PacketSceneTeamUpdateNotify(world *World) *proto.SceneTeam
|
|||||||
// acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb)
|
// acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb)
|
||||||
// }
|
// }
|
||||||
// add skill depot abilities
|
// add skill depot abilities
|
||||||
skillDepot := gdconf.CONF.AvatarSkillDepotDataMap[int32(worldPlayerAvatar.SkillDepotId)]
|
skillDepot := gdconf.GetAvatarSkillDepotDataById(int32(worldPlayerAvatar.SkillDepotId))
|
||||||
if skillDepot != nil && len(skillDepot.AbilityHashCodeList) != 0 {
|
if skillDepot != nil && len(skillDepot.AbilityHashCodeList) != 0 {
|
||||||
for _, id := range skillDepot.AbilityHashCodeList {
|
for _, id := range skillDepot.AbilityHashCodeList {
|
||||||
embryoId++
|
embryoId++
|
||||||
emb := &proto.AbilityEmbryo{
|
emb := &proto.AbilityEmbryo{
|
||||||
AbilityId: uint32(embryoId),
|
AbilityId: uint32(embryoId),
|
||||||
AbilityNameHash: uint32(id),
|
AbilityNameHash: uint32(id),
|
||||||
AbilityOverrideNameHash: uint32(constant.GameConstantConst.DEFAULT_ABILITY_NAME),
|
AbilityOverrideNameHash: uint32(constant.DEFAULT_ABILITY_NAME),
|
||||||
}
|
}
|
||||||
acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb)
|
acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb)
|
||||||
}
|
}
|
||||||
@@ -298,7 +298,7 @@ func (g *GameManager) PacketSceneTeamUpdateNotify(world *World) *proto.SceneTeam
|
|||||||
emb := &proto.AbilityEmbryo{
|
emb := &proto.AbilityEmbryo{
|
||||||
AbilityId: uint32(embryoId),
|
AbilityId: uint32(embryoId),
|
||||||
AbilityNameHash: uint32(endec.Hk4eAbilityHashCode(skill)),
|
AbilityNameHash: uint32(endec.Hk4eAbilityHashCode(skill)),
|
||||||
AbilityOverrideNameHash: uint32(constant.GameConstantConst.DEFAULT_ABILITY_NAME),
|
AbilityOverrideNameHash: uint32(constant.DEFAULT_ABILITY_NAME),
|
||||||
}
|
}
|
||||||
acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb)
|
acb.AbilityEmbryoList = append(acb.AbilityEmbryoList, emb)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ import (
|
|||||||
|
|
||||||
func (g *GameManager) GetAllWeaponDataConfig() map[int32]*gdconf.ItemData {
|
func (g *GameManager) GetAllWeaponDataConfig() map[int32]*gdconf.ItemData {
|
||||||
allWeaponDataConfig := make(map[int32]*gdconf.ItemData)
|
allWeaponDataConfig := make(map[int32]*gdconf.ItemData)
|
||||||
for itemId, itemData := range gdconf.CONF.ItemDataMap {
|
for itemId, itemData := range gdconf.GetItemDataMap() {
|
||||||
if uint16(itemData.Type) != constant.ItemTypeConst.ITEM_WEAPON {
|
if uint16(itemData.Type) != constant.ITEM_TYPE_WEAPON {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if (itemId >= 10000 && itemId <= 10008) ||
|
if (itemId >= 10000 && itemId <= 10008) ||
|
||||||
@@ -130,15 +130,15 @@ func (g *GameManager) WeaponAwakenReq(player *model.Player, payloadMsg pb.Messag
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取武器物品配置表
|
// 获取武器物品配置表
|
||||||
weaponConfig, ok := gdconf.CONF.ItemDataMap[int32(weapon.ItemId)]
|
weaponConfig := gdconf.GetItemDataById(int32(weapon.ItemId))
|
||||||
if !ok {
|
if weaponConfig == nil {
|
||||||
logger.Error("weapon config error, itemId: %v", weapon.ItemId)
|
logger.Error("weapon config error, itemId: %v", weapon.ItemId)
|
||||||
g.SendError(cmd.WeaponAwakenRsp, player, &proto.WeaponAwakenRsp{}, proto.Retcode_RET_ITEM_NOT_EXIST)
|
g.SendError(cmd.WeaponAwakenRsp, player, &proto.WeaponAwakenRsp{}, proto.Retcode_RET_ITEM_NOT_EXIST)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 摩拉数量是否足够
|
// 摩拉数量是否足够
|
||||||
if player.GetItemCount(constant.ItemConstantConst.SCOIN) < weaponConfig.AwakenCoinCostList[weapon.Refinement] {
|
if player.GetItemCount(constant.ITEM_ID_SCOIN) < weaponConfig.AwakenCoinCostList[weapon.Refinement] {
|
||||||
logger.Error("item count not enough, itemId: %v", constant.ItemConstantConst.SCOIN)
|
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)
|
g.SendError(cmd.WeaponAwakenRsp, player, &proto.WeaponAwakenRsp{}, proto.Retcode_RET_SCOIN_NOT_ENOUGH)
|
||||||
return
|
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))]
|
itemDataConfig := gdconf.GetItemDataById(int32(player.GetItemIdByItemAndWeaponGuid(req.ItemGuid)))
|
||||||
if !ok {
|
if itemDataConfig == nil {
|
||||||
logger.Error("item data config error, itemGuid: %v", req.ItemGuid)
|
logger.Error("item data config error, itemGuid: %v", req.ItemGuid)
|
||||||
g.SendError(cmd.WeaponAwakenRsp, player, &proto.WeaponAwakenRsp{}, proto.Retcode_RET_ITEM_NOT_EXIST)
|
g.SendError(cmd.WeaponAwakenRsp, player, &proto.WeaponAwakenRsp{}, proto.Retcode_RET_ITEM_NOT_EXIST)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 根据精炼材料的类型做不同操作
|
// 根据精炼材料的类型做不同操作
|
||||||
switch itemDataConfig.Type {
|
switch itemDataConfig.Type {
|
||||||
case int32(constant.ItemTypeConst.ITEM_WEAPON):
|
case int32(constant.ITEM_TYPE_WEAPON):
|
||||||
// 精炼材料为武器
|
// 精炼材料为武器
|
||||||
// 是否拥有将被用于精炼的武器
|
// 是否拥有将被用于精炼的武器
|
||||||
foodWeapon, ok := player.WeaponMap[player.GetWeaponIdByGuid(req.ItemGuid)]
|
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})
|
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)]
|
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{
|
g.CostUserItem(player.PlayerID, []*UserItem{
|
||||||
{
|
{
|
||||||
ItemId: constant.ItemConstantConst.SCOIN,
|
ItemId: constant.ITEM_ID_SCOIN,
|
||||||
ChangeCount: weaponConfig.AwakenCoinCostList[weapon.Refinement],
|
ChangeCount: weaponConfig.AwakenCoinCostList[weapon.Refinement],
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -256,22 +256,15 @@ func (g *GameManager) WeaponPromoteReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取武器配置表
|
// 获取武器配置表
|
||||||
weaponConfig, ok := gdconf.CONF.ItemDataMap[int32(weapon.ItemId)]
|
weaponConfig := gdconf.GetItemDataById(int32(weapon.ItemId))
|
||||||
if !ok {
|
if weaponConfig == nil {
|
||||||
logger.Error("weapon config error, itemId: %v", weapon.ItemId)
|
logger.Error("weapon config error, itemId: %v", weapon.ItemId)
|
||||||
g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{})
|
g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取武器突破配置表
|
// 获取武器突破配置表
|
||||||
weaponPromoteDataMap, ok := gdconf.CONF.WeaponPromoteDataMap[weaponConfig.PromoteId]
|
weaponPromoteConfig := gdconf.GetWeaponPromoteDataByIdAndLevel(weaponConfig.PromoteId, int32(weapon.Promote))
|
||||||
if !ok {
|
if weaponPromoteConfig == nil {
|
||||||
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 {
|
|
||||||
logger.Error("weapon promote config error, promoteLevel: %v", weapon.Promote)
|
logger.Error("weapon promote config error, promoteLevel: %v", weapon.Promote)
|
||||||
g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{})
|
g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{})
|
||||||
return
|
return
|
||||||
@@ -283,8 +276,8 @@ func (g *GameManager) WeaponPromoteReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取武器突破下一级的配置表
|
// 获取武器突破下一级的配置表
|
||||||
weaponPromoteConfig, ok = weaponPromoteDataMap[int32(weapon.Promote+1)]
|
weaponPromoteConfig = gdconf.GetWeaponPromoteDataByIdAndLevel(weaponConfig.PromoteId, int32(weapon.Promote+1))
|
||||||
if !ok {
|
if weaponPromoteConfig == nil {
|
||||||
logger.Error("weapon promote config error, next promoteLevel: %v", weapon.Promote+1)
|
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)
|
g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{}, proto.Retcode_RET_WEAPON_PROMOTE_LEVEL_EXCEED_LIMIT)
|
||||||
return
|
return
|
||||||
@@ -300,7 +293,7 @@ func (g *GameManager) WeaponPromoteReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
}
|
}
|
||||||
// 消耗列表添加摩拉的消耗
|
// 消耗列表添加摩拉的消耗
|
||||||
costItemList = append(costItemList, &UserItem{
|
costItemList = append(costItemList, &UserItem{
|
||||||
ItemId: constant.ItemConstantConst.SCOIN,
|
ItemId: constant.ITEM_ID_SCOIN,
|
||||||
ChangeCount: uint32(weaponPromoteConfig.CostCoin),
|
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 {
|
if player.GetItemCount(item.ItemId) < item.ChangeCount {
|
||||||
logger.Error("item count not enough, itemId: %v", item.ItemId)
|
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_SCOIN_NOT_ENOUGH)
|
||||||
}
|
}
|
||||||
g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{}, proto.Retcode_RET_ITEM_COUNT_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) {
|
if player.PropertiesMap[constant.PLAYER_PROP_PLAYER_LEVEL] < uint32(weaponPromoteConfig.MinPlayerLevel) {
|
||||||
logger.Error("player level not enough, level: %v", player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL])
|
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)
|
g.SendError(cmd.WeaponPromoteRsp, player, &proto.WeaponPromoteRsp{}, proto.Retcode_RET_PLAYER_LEVEL_LESS_THAN)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -356,12 +349,12 @@ func (g *GameManager) GetWeaponUpgradeReturnMaterial(overflowExp uint32) (return
|
|||||||
Exp uint32
|
Exp uint32
|
||||||
}
|
}
|
||||||
// 武器强化返还材料的经验列表
|
// 武器强化返还材料的经验列表
|
||||||
materialExpList := make([]*materialExpData, 0, len(constant.ItemConstantConst.WEAPON_UPGRADE_MATERIAL))
|
materialExpList := make([]*materialExpData, 0, len(constant.WEAPON_UPGRADE_MATERIAL))
|
||||||
for _, itemId := range constant.ItemConstantConst.WEAPON_UPGRADE_MATERIAL {
|
for _, itemId := range constant.WEAPON_UPGRADE_MATERIAL {
|
||||||
// 获取物品配置表
|
// 获取物品配置表
|
||||||
itemDataConfig, ok := gdconf.CONF.ItemDataMap[int32(itemId)]
|
itemDataConfig := gdconf.GetItemDataById(int32(itemId))
|
||||||
if !ok {
|
if itemDataConfig == nil {
|
||||||
logger.Error("item data config error, itemId: %v", constant.ItemConstantConst.SCOIN)
|
logger.Error("item data config error, itemId: %v", constant.ITEM_ID_SCOIN)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 材料将给予的经验数
|
// 材料将给予的经验数
|
||||||
@@ -411,8 +404,8 @@ func (g *GameManager) CalcWeaponUpgradeExpAndCoin(player *model.Player, itemPara
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取武器配置表
|
// 获取武器配置表
|
||||||
weaponConfig, ok := gdconf.CONF.ItemDataMap[int32(foodWeapon.ItemId)]
|
weaponConfig := gdconf.GetItemDataById(int32(foodWeapon.ItemId))
|
||||||
if !ok {
|
if weaponConfig == nil {
|
||||||
logger.Error("weapon config error, itemId: %v", foodWeapon.ItemId)
|
logger.Error("weapon config error, itemId: %v", foodWeapon.ItemId)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -421,8 +414,8 @@ func (g *GameManager) CalcWeaponUpgradeExpAndCoin(player *model.Player, itemPara
|
|||||||
// 计算从1级到武器当前等级所需消耗的经验
|
// 计算从1级到武器当前等级所需消耗的经验
|
||||||
for i := int32(1); i < int32(foodWeapon.Level); i++ {
|
for i := int32(1); i < int32(foodWeapon.Level); i++ {
|
||||||
// 获取武器等级配置表
|
// 获取武器等级配置表
|
||||||
weaponLevelConfig, ok := gdconf.CONF.WeaponLevelDataMap[i]
|
weaponLevelConfig := gdconf.GetWeaponLevelDataByLevel(i)
|
||||||
if !ok {
|
if weaponLevelConfig == nil {
|
||||||
logger.Error("weapon level config error, level: %v", i)
|
logger.Error("weapon level config error, level: %v", i)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -445,9 +438,9 @@ func (g *GameManager) CalcWeaponUpgradeExpAndCoin(player *model.Player, itemPara
|
|||||||
// 材料经验计算
|
// 材料经验计算
|
||||||
for _, param := range itemParamList {
|
for _, param := range itemParamList {
|
||||||
// 获取物品配置表
|
// 获取物品配置表
|
||||||
itemDataConfig, ok := gdconf.CONF.ItemDataMap[int32(param.ItemId)]
|
itemDataConfig := gdconf.GetItemDataById(int32(param.ItemId))
|
||||||
if !ok {
|
if itemDataConfig == nil {
|
||||||
logger.Error("item data config error, itemId: %v", constant.ItemConstantConst.SCOIN)
|
logger.Error("item data config error, itemId: %v", constant.ITEM_ID_SCOIN)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 材料将给予的经验数
|
// 材料将给予的经验数
|
||||||
@@ -471,20 +464,14 @@ func (g *GameManager) CalcWeaponUpgradeExpAndCoin(player *model.Player, itemPara
|
|||||||
// CalcWeaponUpgrade 计算使用材料给武器强化后的等级经验以及返回的矿石
|
// CalcWeaponUpgrade 计算使用材料给武器强化后的等级经验以及返回的矿石
|
||||||
func (g *GameManager) CalcWeaponUpgrade(weapon *model.Weapon, expCount uint32) (weaponLevel uint8, weaponExp uint32, returnItemList []*proto.ItemParam, success bool) {
|
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)]
|
weaponConfig := gdconf.GetItemDataById(int32(weapon.ItemId))
|
||||||
if !ok {
|
if weaponConfig == nil {
|
||||||
logger.Error("weapon config error, itemId: %v", weapon.ItemId)
|
logger.Error("weapon config error, itemId: %v", weapon.ItemId)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取武器突破配置表
|
// 获取武器突破配置表
|
||||||
weaponPromoteDataMap, ok := gdconf.CONF.WeaponPromoteDataMap[weaponConfig.PromoteId]
|
weaponPromoteConfig := gdconf.GetWeaponPromoteDataByIdAndLevel(weaponConfig.PromoteId, int32(weapon.Promote))
|
||||||
if !ok {
|
if weaponPromoteConfig == nil {
|
||||||
logger.Error("weapon promote config error, promoteId: %v", weaponConfig.PromoteId)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 获取武器突破等级对应的配置表
|
|
||||||
weaponPromoteConfig, ok := weaponPromoteDataMap[int32(weapon.Promote)]
|
|
||||||
if !ok {
|
|
||||||
logger.Error("weapon promote config error, promoteLevel: %v", weapon.Promote)
|
logger.Error("weapon promote config error, promoteLevel: %v", weapon.Promote)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -493,8 +480,8 @@ func (g *GameManager) CalcWeaponUpgrade(weapon *model.Weapon, expCount uint32) (
|
|||||||
weaponExp = weapon.Exp + expCount
|
weaponExp = weapon.Exp + expCount
|
||||||
for {
|
for {
|
||||||
// 获取武器等级配置表
|
// 获取武器等级配置表
|
||||||
weaponLevelConfig, ok := gdconf.CONF.WeaponLevelDataMap[int32(weaponLevel)]
|
weaponLevelConfig := gdconf.GetWeaponLevelDataByLevel(int32(weaponLevel))
|
||||||
if !ok {
|
if weaponLevelConfig == nil {
|
||||||
// 获取不到代表已经到达最大等级
|
// 获取不到代表已经到达最大等级
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -537,22 +524,15 @@ func (g *GameManager) WeaponUpgradeReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取武器配置表
|
// 获取武器配置表
|
||||||
weaponConfig, ok := gdconf.CONF.ItemDataMap[int32(weapon.ItemId)]
|
weaponConfig := gdconf.GetItemDataById(int32(weapon.ItemId))
|
||||||
if !ok {
|
if weaponConfig == nil {
|
||||||
logger.Error("weapon config error, itemId: %v", weapon.ItemId)
|
logger.Error("weapon config error, itemId: %v", weapon.ItemId)
|
||||||
g.SendError(cmd.WeaponUpgradeRsp, player, &proto.WeaponUpgradeRsp{})
|
g.SendError(cmd.WeaponUpgradeRsp, player, &proto.WeaponUpgradeRsp{})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取武器突破配置表
|
// 获取武器突破配置表
|
||||||
weaponPromoteDataMap, ok := gdconf.CONF.WeaponPromoteDataMap[weaponConfig.PromoteId]
|
weaponPromoteConfig := gdconf.GetWeaponPromoteDataByIdAndLevel(weaponConfig.PromoteId, int32(weapon.Promote))
|
||||||
if !ok {
|
if weaponPromoteConfig == nil {
|
||||||
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 {
|
|
||||||
logger.Error("weapon promote config error, promoteLevel: %v", weapon.Promote)
|
logger.Error("weapon promote config error, promoteLevel: %v", weapon.Promote)
|
||||||
g.SendError(cmd.WeaponUpgradeRsp, player, &proto.WeaponUpgradeRsp{})
|
g.SendError(cmd.WeaponUpgradeRsp, player, &proto.WeaponUpgradeRsp{})
|
||||||
return
|
return
|
||||||
@@ -581,7 +561,7 @@ func (g *GameManager) WeaponUpgradeReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
}
|
}
|
||||||
// 消耗列表添加摩拉的消耗
|
// 消耗列表添加摩拉的消耗
|
||||||
costItemList = append(costItemList, &UserItem{
|
costItemList = append(costItemList, &UserItem{
|
||||||
ItemId: constant.ItemConstantConst.SCOIN,
|
ItemId: constant.ITEM_ID_SCOIN,
|
||||||
ChangeCount: coinCost,
|
ChangeCount: coinCost,
|
||||||
})
|
})
|
||||||
// 校验物品是否足够
|
// 校验物品是否足够
|
||||||
@@ -589,7 +569,7 @@ func (g *GameManager) WeaponUpgradeReq(player *model.Player, payloadMsg pb.Messa
|
|||||||
if player.GetItemCount(item.ItemId) < item.ChangeCount {
|
if player.GetItemCount(item.ItemId) < item.ChangeCount {
|
||||||
logger.Error("item count not enough, itemId: %v", item.ItemId)
|
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_SCOIN_NOT_ENOUGH)
|
||||||
}
|
}
|
||||||
g.SendError(cmd.WeaponUpgradeRsp, player, &proto.WeaponUpgradeRsp{}, proto.Retcode_RET_ITEM_COUNT_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)
|
player := USER_MANAGER.GetOnlineUser(userId)
|
||||||
if player == nil {
|
if player == nil {
|
||||||
logger.Error("player is nil, uid: %v", userId)
|
logger.Error("player is nil, uid: %v", userId)
|
||||||
GAME_MANAGER.DisconnectPlayer(userId, kcp.EnetNotFoundSession)
|
GAME_MANAGER.KickPlayer(userId, kcp.EnetNotFoundSession)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !player.Online {
|
if !player.Online {
|
||||||
|
|||||||
@@ -188,7 +188,7 @@ func (t *TickManager) onTickMinute(now int64) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// TODO 3.0.0REL版本中 发送某些无效家具 可能会导致客户端背包家具界面卡死
|
// TODO 3.0.0REL版本中 发送某些无效家具 可能会导致客户端背包家具界面卡死
|
||||||
if uint16(itemDataConfig.Type) == constant.ItemTypeConst.ITEM_FURNITURE {
|
if uint16(itemDataConfig.Type) == constant.ITEM_TYPE_FURNITURE {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
num := random.GetRandomInt32(1, 9)
|
num := random.GetRandomInt32(1, 9)
|
||||||
@@ -298,7 +298,7 @@ func (t *TickManager) onTick5Second(now int64) {
|
|||||||
Z: float32(entity.rot.Z),
|
Z: float32(entity.rot.Z),
|
||||||
},
|
},
|
||||||
EntityId: entity.id,
|
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,
|
OwnerUid: entity.gadgetEntity.gadgetVehicleEntity.owner.PlayerID,
|
||||||
Pos: &proto.Vector{
|
Pos: &proto.Vector{
|
||||||
X: float32(entity.pos.X),
|
X: float32(entity.pos.X),
|
||||||
@@ -307,7 +307,7 @@ func (t *TickManager) onTick5Second(now int64) {
|
|||||||
},
|
},
|
||||||
UidList: make([]uint32, 0, len(entity.gadgetEntity.gadgetVehicleEntity.memberMap)),
|
UidList: make([]uint32, 0, len(entity.gadgetEntity.gadgetVehicleEntity.memberMap)),
|
||||||
GadgetId: entity.gadgetEntity.gadgetVehicleEntity.vehicleId,
|
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 {
|
for _, p := range entity.gadgetEntity.gadgetVehicleEntity.memberMap {
|
||||||
vehicleLocationInfo.UidList = append(vehicleLocationInfo.UidList, p.PlayerID)
|
vehicleLocationInfo.UidList = append(vehicleLocationInfo.UidList, p.PlayerID)
|
||||||
|
|||||||
@@ -1,16 +1,13 @@
|
|||||||
package game
|
package game
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"math"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"hk4e/common/constant"
|
"hk4e/common/constant"
|
||||||
"hk4e/common/mq"
|
|
||||||
"hk4e/gdconf"
|
"hk4e/gdconf"
|
||||||
"hk4e/gs/model"
|
"hk4e/gs/model"
|
||||||
"hk4e/pkg/alg"
|
"hk4e/pkg/alg"
|
||||||
"hk4e/pkg/logger"
|
"hk4e/pkg/logger"
|
||||||
"hk4e/protocol/cmd"
|
|
||||||
"hk4e/protocol/proto"
|
"hk4e/protocol/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -35,7 +32,7 @@ func NewWorldManager(snowflake *alg.SnowflakeWorker) (r *WorldManager) {
|
|||||||
r.worldMap = make(map[uint32]*World)
|
r.worldMap = make(map[uint32]*World)
|
||||||
r.snowflake = snowflake
|
r.snowflake = snowflake
|
||||||
r.sceneBlockAoiMap = make(map[uint32]*alg.AoiManager)
|
r.sceneBlockAoiMap = make(map[uint32]*alg.AoiManager)
|
||||||
for _, sceneConfig := range gdconf.CONF.SceneMap {
|
for _, sceneConfig := range gdconf.GetSceneDetailMap() {
|
||||||
minX := int16(0)
|
minX := int16(0)
|
||||||
maxX := int16(0)
|
maxX := int16(0)
|
||||||
minZ := int16(0)
|
minZ := int16(0)
|
||||||
@@ -172,7 +169,7 @@ func (w *WorldManager) CreateWorld(owner *model.Player) *World {
|
|||||||
multiplayerTeam: CreateMultiplayerTeam(),
|
multiplayerTeam: CreateMultiplayerTeam(),
|
||||||
peerList: make([]*model.Player, 0),
|
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
|
w.worldMap[worldId] = world
|
||||||
return world
|
return world
|
||||||
}
|
}
|
||||||
@@ -221,8 +218,7 @@ func (w *WorldManager) GetMultiplayerWorldNum() uint32 {
|
|||||||
return w.multiplayerWorldNum
|
return w.multiplayerWorldNum
|
||||||
}
|
}
|
||||||
|
|
||||||
// 世界数据结构
|
// World 世界数据结构
|
||||||
|
|
||||||
type World struct {
|
type World struct {
|
||||||
id uint32
|
id uint32
|
||||||
owner *model.Player
|
owner *model.Player
|
||||||
@@ -482,7 +478,7 @@ func (w *World) GetPlayerTeamEntityId(player *model.Player) uint32 {
|
|||||||
|
|
||||||
// InitPlayerTeamEntityId 初始化某玩家的本地队伍实体id
|
// InitPlayerTeamEntityId 初始化某玩家的本地队伍实体id
|
||||||
func (w *World) InitPlayerTeamEntityId(player *model.Player) {
|
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
|
// GetPlayerWorldAvatarEntityId 获取某玩家在世界队伍中的某角色的实体id
|
||||||
@@ -749,670 +745,3 @@ func (w *World) GetSceneById(sceneId uint32) *Scene {
|
|||||||
}
|
}
|
||||||
return 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 初始化角色面板
|
// InitAvatarFightProp 初始化角色面板
|
||||||
func (p *Player) InitAvatarFightProp(avatar *Avatar) {
|
func (p *Player) InitAvatarFightProp(avatar *Avatar) {
|
||||||
avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(avatar.AvatarId)]
|
avatarDataConfig := gdconf.GetAvatarDataById(int32(avatar.AvatarId))
|
||||||
if !ok {
|
if avatarDataConfig == nil {
|
||||||
logger.Error("avatarDataConfig error, avatarId: %v", avatar.AvatarId)
|
logger.Error("avatarDataConfig error, avatarId: %v", avatar.AvatarId)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
avatar.FightPropMap = make(map[uint32]float32)
|
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.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.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_HP)] = float32(avatarDataConfig.GetBaseHpByLevel(avatar.Level))
|
||||||
// 白字+绿字攻防血
|
// 白字+绿字攻防血
|
||||||
avatar.FightPropMap[uint32(constant.FightPropertyConst.FIGHT_PROP_CUR_ATTACK)] = float32(avatarDataConfig.GetBaseAttackByLevel(avatar.Level))
|
avatar.FightPropMap[uint32(constant.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.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_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.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_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)
|
p.SetCurrEnergy(avatar, avatar.CurrEnergy, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,8 +89,8 @@ func (p *Player) GetAvatarIdByGuid(guid uint64) uint32 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *Player) AddAvatar(avatarId uint32) {
|
func (p *Player) AddAvatar(avatarId uint32) {
|
||||||
avatarDataConfig, exist := gdconf.CONF.AvatarDataMap[int32(avatarId)]
|
avatarDataConfig := gdconf.GetAvatarDataById(int32(avatarId))
|
||||||
if !exist {
|
if avatarDataConfig == nil {
|
||||||
logger.Error("avatar data config is nil, avatarId: %v", avatarId)
|
logger.Error("avatar data config is nil, avatarId: %v", avatarId)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -103,14 +103,14 @@ func (p *Player) AddAvatar(avatarId uint32) {
|
|||||||
} else {
|
} else {
|
||||||
skillDepotId = avatarDataConfig.SkillDepotId
|
skillDepotId = avatarDataConfig.SkillDepotId
|
||||||
}
|
}
|
||||||
avatarSkillDepotDataConfig, exist := gdconf.CONF.AvatarSkillDepotDataMap[skillDepotId]
|
avatarSkillDepotDataConfig := gdconf.GetAvatarSkillDepotDataById(skillDepotId)
|
||||||
if !exist {
|
if avatarSkillDepotDataConfig == nil {
|
||||||
logger.Error("avatar skill depot data config is nil, skillDepotId: %v", skillDepotId)
|
logger.Error("avatar skill depot data config is nil, skillDepotId: %v", skillDepotId)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
avatar := &Avatar{
|
avatar := &Avatar{
|
||||||
AvatarId: avatarId,
|
AvatarId: avatarId,
|
||||||
LifeState: constant.LifeStateConst.LIFE_ALIVE,
|
LifeState: constant.LIFE_STATE_ALIVE,
|
||||||
Level: 1,
|
Level: 1,
|
||||||
Exp: 0,
|
Exp: 0,
|
||||||
Promote: 0,
|
Promote: 0,
|
||||||
@@ -155,16 +155,16 @@ func (p *Player) AddAvatar(avatarId uint32) {
|
|||||||
func (p *Player) SetCurrEnergy(avatar *Avatar, value float64, max bool) {
|
func (p *Player) SetCurrEnergy(avatar *Avatar, value float64, max bool) {
|
||||||
var avatarSkillDataConfig *gdconf.AvatarSkillData = nil
|
var avatarSkillDataConfig *gdconf.AvatarSkillData = nil
|
||||||
if avatar.AvatarId == 10000005 || avatar.AvatarId == 10000007 {
|
if avatar.AvatarId == 10000005 || avatar.AvatarId == 10000007 {
|
||||||
avatarSkillDepotDataConfig, exist := gdconf.CONF.AvatarSkillDepotDataMap[int32(avatar.SkillDepotId)]
|
avatarSkillDepotDataConfig := gdconf.GetAvatarSkillDepotDataById(int32(avatar.SkillDepotId))
|
||||||
if !exist {
|
if avatarSkillDepotDataConfig == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
avatarSkillDataConfig, exist = gdconf.CONF.AvatarSkillDataMap[avatarSkillDepotDataConfig.EnergySkill]
|
avatarSkillDataConfig = gdconf.GetAvatarSkillDataById(avatarSkillDepotDataConfig.EnergySkill)
|
||||||
if !exist {
|
if avatarSkillDataConfig == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
avatarSkillDataConfig = gdconf.CONF.GetAvatarEnergySkillConfig(avatar.AvatarId)
|
avatarSkillDataConfig = gdconf.GetAvatarEnergySkillConfig(avatar.AvatarId)
|
||||||
}
|
}
|
||||||
if avatarSkillDataConfig == nil {
|
if avatarSkillDataConfig == nil {
|
||||||
logger.Error("get avatar energy skill is nil, avatarId: %v", avatar.AvatarId)
|
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 {
|
func (p *Player) GetItemCount(itemId uint32) uint32 {
|
||||||
prop, ok := constant.ItemConstantConst.VIRTUAL_ITEM_PROP[itemId]
|
prop, ok := constant.VIRTUAL_ITEM_PROP[itemId]
|
||||||
if ok {
|
if ok {
|
||||||
value := p.PropertiesMap[prop]
|
value := p.PropertiesMap[prop]
|
||||||
return value
|
return value
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ func (p *Player) AddReliquary(itemId uint32, reliquaryId uint64, mainPropId uint
|
|||||||
AvatarId: 0,
|
AvatarId: 0,
|
||||||
Guid: 0,
|
Guid: 0,
|
||||||
}
|
}
|
||||||
itemDataConfig, exist := gdconf.CONF.ItemDataMap[int32(itemId)]
|
itemDataConfig := gdconf.GetItemDataById(int32(itemId))
|
||||||
if !exist {
|
if itemDataConfig == nil {
|
||||||
logger.Error("reliquary config is nil, itemId: %v", itemId)
|
logger.Error("reliquary config is nil, itemId: %v", itemId)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,35 +26,35 @@ func (s *StaminaInfo) SetStaminaCost(state proto.MotionState) {
|
|||||||
// 消耗耐力
|
// 消耗耐力
|
||||||
case proto.MotionState_MOTION_DASH:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
case proto.MotionState_MOTION_CLIMB, proto.MotionState_MOTION_SWIM_MOVE:
|
||||||
// 缓慢攀爬 或 缓慢游泳
|
// 缓慢攀爬 或 缓慢游泳
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ func (t *TeamInfo) UpdateTeam() {
|
|||||||
t.TeamResonancesConfig = make(map[int32]bool)
|
t.TeamResonancesConfig = make(map[int32]bool)
|
||||||
teamElementTypeCountMap := make(map[uint16]uint8)
|
teamElementTypeCountMap := make(map[uint16]uint8)
|
||||||
for _, avatarId := range activeTeam.GetAvatarIdList() {
|
for _, avatarId := range activeTeam.GetAvatarIdList() {
|
||||||
avatarSkillDataConfig := gdconf.CONF.GetAvatarEnergySkillConfig(avatarId)
|
avatarSkillDataConfig := gdconf.GetAvatarEnergySkillConfig(avatarId)
|
||||||
if avatarSkillDataConfig == nil {
|
if avatarSkillDataConfig == nil {
|
||||||
logger.Error("get avatar energy skill is nil, avatarId: %v", avatarId)
|
logger.Error("get avatar energy skill is nil, avatarId: %v", avatarId)
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -68,8 +68,8 @@ func (p *Player) AddWeapon(itemId uint32, weaponId uint64) {
|
|||||||
Refinement: 0,
|
Refinement: 0,
|
||||||
Guid: 0,
|
Guid: 0,
|
||||||
}
|
}
|
||||||
itemDataConfig, exist := gdconf.CONF.ItemDataMap[int32(itemId)]
|
itemDataConfig := gdconf.GetItemDataById(int32(itemId))
|
||||||
if !exist {
|
if itemDataConfig == nil {
|
||||||
logger.Error("weapon config is nil, itemId: %v", itemId)
|
logger.Error("weapon config is nil, itemId: %v", itemId)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user