feat(protocol): 补齐容器命令与短命令别名机制
- Containers.kt 实现 lt/pt/zt/alias 四种布局,覆盖 ModelService 4 条容器命令 - 生成 ModelRegistry.ByModelId,供 pt 项按 modelId 展开 - 短命令:_setModelCommandAlias 解码后写入别名表,记录链可按别名继续解 - 下行注册补到 681 条;railgun-battle 400 帧复跑仍为 399/399 回编码一致
This commit is contained in:
1 parent
7481dad24e
commit
f3db51cf4b
48 files changed
+771
-10
No files matched your search
@@ -69,6 +69,7 @@ private class Stats {
|
||||
var HeaderErrors = 0
|
||||
var ShortCommands = 0
|
||||
var UnknownMethods = 0
|
||||
val UnknownIds = ArrayList<Long>()
|
||||
val Failures = ArrayList<String>()
|
||||
}
|
||||
|
||||
@@ -79,6 +80,8 @@ private fun RunOne(Path: String, Registry: Map<Long, ErasedCodec>, S: Stats) {
|
||||
S.BadFrames++
|
||||
return
|
||||
}
|
||||
// 别名表按文件(同一次连接的一段抓包)维护;_setModelCommandAlias 解码后会填充
|
||||
val Aliases = HashMap<Int, Pair<Long, Long>>()
|
||||
for (F in Frames) {
|
||||
S.Frames++
|
||||
val Body = try {
|
||||
@@ -88,10 +91,11 @@ private fun RunOne(Path: String, Registry: Map<Long, ErasedCodec>, S: Stats) {
|
||||
if (S.Failures.size < 12) S.Failures.add("$Path 解压失败:${E.message}")
|
||||
continue
|
||||
}
|
||||
val R = SpaceFrame.DecodeBody(Body, Registry)
|
||||
val R = SpaceFrame.DecodeBody(Body, Registry, Aliases)
|
||||
S.Records += R.Records.size
|
||||
S.ShortCommands += R.ShortCommandCount
|
||||
S.UnknownMethods += R.UnknownMethodIds.size
|
||||
for (Id in R.UnknownMethodIds) if (S.UnknownIds.size < 8) S.UnknownIds.add(Id)
|
||||
val Err = R.Error
|
||||
if (Err != null) {
|
||||
if (Err.startsWith("记录头截断")) S.HeaderErrors++
|
||||
@@ -161,6 +165,9 @@ fun main() {
|
||||
println("回编码一致 ${S.RoundTripOk}|不一致 ${S.RoundTripBad}")
|
||||
println("短命令 ${S.ShortCommands}|未知 methodId ${S.UnknownMethods}|记录头截断 ${S.HeaderErrors}|其它解码错误 ${S.DecodeErrors}|坏帧 ${S.BadFrames}")
|
||||
println("下行注册 ${DownlinkRegistry.ByMethodId.size}|上行注册 ${UplinkRegistry.ByMethodId.size}")
|
||||
if (S.UnknownIds.isNotEmpty()) {
|
||||
println("未知 methodId 样例:" + S.UnknownIds.joinToString(","))
|
||||
}
|
||||
if (S.Failures.isNotEmpty()) {
|
||||
println("前若干失败:")
|
||||
for (F in S.Failures) println(" · $F")
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 1798193036336198760|module_10283
|
||||
data class Down10283Xt8760(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 3001647159444627062|module_1510
|
||||
data class Down1510Gn7062(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 1246109053620123806|module_25377
|
||||
data class UidNotifierData3806(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 8179162314198150518|module_29554
|
||||
data class ZnM88693Lt0518(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 1661920281800548495|module_31908
|
||||
data class StatisticsTeamCC8495(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 246376163847464422|module_37504
|
||||
data class ClanUserCC4422(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 73478093585084631|module_47243
|
||||
data class Down47243K4631(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 314983404410424222|module_54199
|
||||
data class NewsShowingCC4222(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 28608551882350617|module_85183
|
||||
data class ModerationToolInteropCC0617(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 7615142300796401818|module_85196
|
||||
data class Down85196Ch1818(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 756296912352966419|module_85667
|
||||
data class CaptchaCC6419(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 2997538417603420748|module_88693
|
||||
data class Down88693Pt0748(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 下行 1480424224583906965|module_89803
|
||||
data class TeamBattleInfoCC6965(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// FacebookPaymentCC|module_01510
|
||||
data class FacebookPaymentCC(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// AntiAddictionRealNameValidatorModelCC|module_10283
|
||||
data class AntiAddictionRealNameValidatorModelCC(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// Atlas|module_16100
|
||||
data class Atlas(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// codec module_24635::Ht|module_24635
|
||||
data class F24635Ht(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// UserNotifierCC|module_25377
|
||||
data class UserNotifierCC(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// BattleCreateParameters|module_31908
|
||||
data class BattleCreateParameters(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// ClanFriendsCC|module_37504
|
||||
data class ClanFriendsCC(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// at|module_45686
|
||||
data class At(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// Hc|module_47243
|
||||
data class Hc(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// ChannelSidAndName|module_54199
|
||||
data class ChannelSidAndName(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// Lt|module_61860
|
||||
data class Lt(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// SocialNetworkParametersCC|module_67222
|
||||
data class SocialNetworkParametersCC(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// codec module_71105::ps|module_71105
|
||||
class F71105Ps
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// FlagBattleSFXCC|module_85183
|
||||
data class FlagBattleSFXCC(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// AvailableForAllCC|module_85196
|
||||
data class AvailableForAllCC(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// bu|module_85667
|
||||
data class Bu(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// E|module_85745
|
||||
data class EM85745X(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// TankState|module_87072
|
||||
class TankStateM87072T5
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// FriendsCC|module_88693
|
||||
data class FriendsCC(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// BattleInfoCC|module_89803
|
||||
data class BattleInfoCC(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// DescriptionModelCC|module_99527
|
||||
data class DescriptionModelCC(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
object DownlinkRegistry {
|
||||
val ByMethodId: Map<Long, ErasedCodec> = mapOf(
|
||||
@@ -602,7 +606,6 @@ object DownlinkRegistry {
|
||||
8164325377073720540L to F24635WtCodec,
|
||||
8171556272533651970L to F24635WtCodec,
|
||||
8171778085109430386L to UserNotifierCCCodec,
|
||||
8179162314198150518L to ZnM88693Lt0518Codec,
|
||||
8188577464406062306L to PaymentRequestVariableCodec,
|
||||
8201829668071386439L to F24635WtCodec,
|
||||
8230065716229425028L to Down47243Jg5028Codec,
|
||||
@@ -677,7 +680,6 @@ object DownlinkRegistry {
|
||||
8981778623033134120L to UserNotifierCCCodec,
|
||||
8992960192854306015L to Down47243Iv6015Codec,
|
||||
9006618999845515525L to UserNotifierCCCodec,
|
||||
9038756763225879447L to ClanOutgoingCCCodec,
|
||||
9045061171239007459L to FacebookPaymentCCCodec,
|
||||
9047763868814832699L to DemomanSfxCC2699Codec,
|
||||
9052673731308612681L to FacebookPaymentCCCodec,
|
||||
@@ -693,6 +695,10 @@ object DownlinkRegistry {
|
||||
9187558822227119790L to TCodec,
|
||||
9187558822227614985L to F24635WtCodec,
|
||||
9198230959529402310L to DonationAlertCC0661Codec,
|
||||
9038756763225879447L to LtCodec,
|
||||
7640916300855664666L to PtCodec,
|
||||
3216143066888387731L to ZtCodec,
|
||||
8179162314198150518L to AliasCodec,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1061,3 +1067,365 @@ object UplinkRegistry {
|
||||
9221299643007466131L to TCodec,
|
||||
)
|
||||
}
|
||||
|
||||
object ModelRegistry {
|
||||
val ByModelId: Map<Long, ErasedCodec> = mapOf(
|
||||
3000206000964343740L to FacebookPaymentCCCodec,
|
||||
7245225301789542308L to SonyProductToItemIdMapCCCodec,
|
||||
7838366943662257567L to AntiAddictionRealNameValidatorModelCCCodec,
|
||||
6791702738669939115L to LoaderBackgroundModelCCCodec,
|
||||
4065909569861626318L to ServerHaltEntranceCCCodec,
|
||||
466296741210741928L to ExternalEntranceCCCodec,
|
||||
9117714962311439886L to InviteEntranceCCCodec,
|
||||
5457907984000701384L to NotificationsByCountryModelCCCodec,
|
||||
513176302374590130L to CompositePartnerCCCodec,
|
||||
8618289906968528240L to RegistrationModelCCCodec,
|
||||
2474458842977623992L to RegistrationModelCCCodec,
|
||||
7300500077035374704L to EntranceResourcesCCCodec,
|
||||
6627517808336136295L to MaterialsCodec,
|
||||
6403067749608679876L to UserNotifierCCCodec,
|
||||
1850509145998626828L to UserActionsLoggerCCCodec,
|
||||
258682513334072065L to RankNotifierDataCodec,
|
||||
4255726087158005051L to UidNotifierDataCodec,
|
||||
3527205014716342329L to RankInfoCodec,
|
||||
216902005816818019L to SpectatorsModelCCCodec,
|
||||
2085529474881905981L to StatisticsModelCCCodec,
|
||||
787936358514072261L to StatisticsDMCCCodec,
|
||||
2472262160204144219L to StatisticsDMCCCodec,
|
||||
8115862559097350286L to ClanFriendsCCCodec,
|
||||
7076997842038370798L to ClanMembersCCCodec,
|
||||
3413041240691998182L to ClanIncomingCCCodec,
|
||||
8762499949521628954L to ClanInfoCCCodec,
|
||||
6048708024205731750L to ClanOutgoingCCCodec,
|
||||
6882547137659234022L to ClanPermissionsCCCodec,
|
||||
6768558945605412944L to ContainerCCCodec,
|
||||
871785774630866042L to ContainerCCCodec,
|
||||
6220257539261493170L to ContainerCCCodec,
|
||||
2023935033691193766L to ContainerCCCodec,
|
||||
5297988375509642470L to ContainerCCCodec,
|
||||
4813819753066546054L to ContainerCCCodec,
|
||||
649690707811173020L to ContainerCCCodec,
|
||||
881620222948704326L to ContainerCCCodec,
|
||||
8495889215182031654L to LicenseClanUserCCCodec,
|
||||
7949064601138261608L to ClanNotifierDataCodec,
|
||||
2547093126916834195L to ClanEditPriceCCCodec,
|
||||
6247612331185889342L to ClanLoadingPanelCCCodec,
|
||||
2606798949852309286L to ClanPanelNotificationCCCodec,
|
||||
6042266992054445914L to ClanCreateCCCodec,
|
||||
1115275516484037832L to ClanUserCCCodec,
|
||||
1986821874929333245L to UserAccountRemovalModelCCCodec,
|
||||
1298753286651761171L to F45686JtCodec,
|
||||
7588919819099098108L to BattleInviteCCCodec,
|
||||
2855626038259597130L to BattlePassPurchaseNotifierCCCodec,
|
||||
7805766859473669177L to ChallengeClientCCCodec,
|
||||
3349786357139026014L to TierCodec,
|
||||
8237913720896985151L to TierItemCodec,
|
||||
1987602940683756146L to StarsInfoCCCodec,
|
||||
8677996546985988365L to StarsInfoCCCodec,
|
||||
6514486185481319524L to CreatorTagCCCodec,
|
||||
965113061940997187L to CreatorTagsCCCodec,
|
||||
7341286352739641155L to DebtInfoCCCodec,
|
||||
3395764563215792356L to DonationAlertCCCodec,
|
||||
2108103923322474513L to DonationDataCodec,
|
||||
8464700182634408374L to UserDroppableGoldSettingsCCCodec,
|
||||
3503382027414679973L to TankHasGrenadeCCCodec,
|
||||
5801057999588514016L to ResistancesCCCodec,
|
||||
6820688895043695030L to GSWarningInfoModelCCCodec,
|
||||
7822174537018024954L to GSWarningInfoModelCCCodec,
|
||||
3152693668290247629L to IconsProviderCCCodec,
|
||||
6726403008449784914L to KeysInfoCCCodec,
|
||||
1417398836682569292L to PaymentCCCodec,
|
||||
3031864034871022835L to PaymentLoaderCCCodec,
|
||||
1009501302658881534L to PaymentLoaderCCCodec,
|
||||
4748522118519647527L to PayModeCCCodec,
|
||||
5952355564848177159L to AndroidPayCCCodec,
|
||||
6169263949965533624L to AppleAppStoreCCCodec,
|
||||
5156898764211343104L to AppleAppStoreCCCodec,
|
||||
8083057704493864984L to BottomDescriptionCCCodec,
|
||||
6144768774251946863L to BottomDescriptionCCCodec,
|
||||
2951667042968033849L to JwCodec,
|
||||
4905763060352702216L to PayPalPayModelCCCodec,
|
||||
7860106430129114440L to RuStorePayCCCodec,
|
||||
3158124838791669092L to PaymentButtonCCCodec,
|
||||
213661725715747381L to PeriodicRewardCCCodec,
|
||||
3620520388804703780L to PeriodicRewardCCCodec,
|
||||
5780017129265868734L to PresentsSettingsCCCodec,
|
||||
7307951074626252633L to PresentsSettingsCCCodec,
|
||||
9028066746998427457L to PaidRenameCCCodec,
|
||||
3179861497615625536L to UserEmailCCCodec,
|
||||
1893408944113965505L to UserPropertiesCCCodec,
|
||||
9006361281849290638L to UserPushNotificationSettingsModelCCCodec,
|
||||
5895522515282663537L to UserAchievementCCCodec,
|
||||
7295738902766942560L to MainQuestBattleProgressCodec,
|
||||
701801920209410257L to MainQuestUserModelCCCodec,
|
||||
7105110962241677955L to MainQuestUserModelCCCodec,
|
||||
5167916989664044333L to ReferralEventUserModelCCCodec,
|
||||
4038465370530850950L to QuestCategoriesModelCCCodec,
|
||||
462434031489766566L to QuestCategoriesModelCCCodec,
|
||||
6680653332718076818L to QuestCategoryStatisticCodec,
|
||||
6966229709169193455L to RewardedVideosCCCodec,
|
||||
8659306545527654916L to RubyInfoCCCodec,
|
||||
2767408225195389970L to RubyInfoCCCodec,
|
||||
1456475022890566348L to RulesUpdateShowingCCCodec,
|
||||
3714146481313901316L to ShopCardCCCodec,
|
||||
5172585086901412996L to ShopCardDiscountCCCodec,
|
||||
5817682208733860186L to ShowcaseViewCCCodec,
|
||||
1535852183188388854L to BattlePassPackageCCCodec,
|
||||
889485403566576664L to KitBundleViewCCCodec,
|
||||
4186634155763928467L to CoinPackageCCCodec,
|
||||
6484910309342792771L to ContractShopCCCodec,
|
||||
2789386002514731022L to CrystalPackageCCCodec,
|
||||
7810820263988615290L to ShopItemAdditionalDescriptionCCCodec,
|
||||
8458424802385151068L to ShopDiscountCCCodec,
|
||||
6744857484209767976L to EmailRequiredCCCodec,
|
||||
8853923292505519798L to RestrictionByPayModeCCCodec,
|
||||
6091707767266836975L to ShopItemFeaturingCCCodec,
|
||||
6899642532024252493L to GoldBoxPackageCCCodec,
|
||||
806128205466208462L to GoldBoxPackageCCCodec,
|
||||
6395651505226788750L to GoodsCCCodec,
|
||||
7786222713213880898L to GoodsCCCodec,
|
||||
7935550480449821024L to IndemnityCCCodec,
|
||||
8629995567796005946L to KeysPackageCCCodec,
|
||||
2103303438297476110L to KitPackageCCCodec,
|
||||
3985896237583754666L to KitViewResourceCCCodec,
|
||||
4440355418204561498L to KitViewResourceLocalizedCCCodec,
|
||||
8755539534673619516L to LootBoxPackageCCCodec,
|
||||
5004566952388327414L to LootboxAndPaintCCCodec,
|
||||
6841476710481576918L to ShopItemOneTimePurchaseCCCodec,
|
||||
7949842549440362353L to ShopItemOneTimePurchaseCCCodec,
|
||||
9121776538033375678L to PaintPackageCCCodec,
|
||||
7881181052304665842L to PaintPackageCCCodec,
|
||||
5138794050233567698L to PremiumPackageCCCodec,
|
||||
693025797100292228L to ShopItemCCCodec,
|
||||
8048067679617995470L to ShopCategoryCCCodec,
|
||||
4268132139764766386L to ShopItemCategoryCCCodec,
|
||||
6192892501890483066L to SpecialKitPackageCCCodec,
|
||||
1036461397335537760L to StarsPackageCCCodec,
|
||||
2168011188167752629L to ContextTutorialModelCCCodec,
|
||||
4782427880403395260L to LobbyTutorialModelCCCodec,
|
||||
5256681735304582291L to TwitchAccountModelCCCodec,
|
||||
2252704231082045810L to TwoStepVerificationModelCCCodec,
|
||||
2080556892932195426L to UserCountryCCCodec,
|
||||
1851605205665890036L to RewardInfoDataCodec,
|
||||
8517963146836182364L to RewardsInfoCCCodec,
|
||||
6071565290933648049L to ChatCCCodec,
|
||||
891137447706578619L to ClanChatCCCodec,
|
||||
868364325972433765L to NewsShowingCCCodec,
|
||||
7970528904804811572L to OiCodec,
|
||||
7267982595724632282L to MiM61860FrCodec,
|
||||
6359692933626160397L to SocialNetworkParametersCCCodec,
|
||||
7762582768388221832L to FlagBattleSFXCCCodec,
|
||||
7401419333842694749L to BattlefieldCCCodec,
|
||||
2101100305743734614L to BillboardCCCodec,
|
||||
5958419804845264849L to BotNavigationCCCodec,
|
||||
2464705242400585109L to FacilitySphericalZoneCCCodec,
|
||||
5242494537362061802L to CommonFacilityCCCodec,
|
||||
8109298281939714429L to BattleLockingCCCodec,
|
||||
9172358609541951983L to MeteorStormCCCodec,
|
||||
2057320715890332864L to BattleMineCCCodec,
|
||||
8980131978880882207L to BattleStartDelayCCCodec,
|
||||
5385894712778438726L to BattleChatCCCodec,
|
||||
6445399806655453890L to InventoryCCCodec,
|
||||
3364392936313775902L to TargetHighlightingCCCodec,
|
||||
7874327015886119466L to JuggernautCCCodec,
|
||||
5123834867188931684L to KillStreakCCCodec,
|
||||
2648029304025111838L to CaptureTheFlagCCCodec,
|
||||
2618111250571302204L to RugbyCCCodec,
|
||||
2269636304551395302L to BallExplosionCCCodec,
|
||||
6141842138930446750L to StatusEffectBattleCCCodec,
|
||||
1475210252818583689L to BattleTutorialCCCodec,
|
||||
9114375113924783411L to BattleTutorialCCCodec,
|
||||
2145315487377727727L to BattlefieldBonusesCCCodec,
|
||||
5215232257096838692L to BonusRegionsCCCodec,
|
||||
3339617300033754420L to GoldBonusCCCodec,
|
||||
510571369984788727L to BattleGoldBonusCCCodec,
|
||||
8966480724474352542L to BonusCommonCCCodec,
|
||||
3305376498517733218L to NotificationBonusCCCodec,
|
||||
7484749077586587376L to BonusLightCCCodec,
|
||||
5968651969329902265L to ColorAdjustCCCodec,
|
||||
1661364280719338177L to DemomanSfxCCCodec,
|
||||
8316165996190533130L to DroneIndicatorCCCodec,
|
||||
4553925959338838726L to CrisisEffectCCCodec,
|
||||
5207857306014573244L to XCCodec,
|
||||
6424605984954645392L to TankEffectSFXCCCodec,
|
||||
8166810800706377715L to ActiveAfterDeathCCCodec,
|
||||
5779075235189237790L to EffectDescriptionCCCodec,
|
||||
3157947224668485277L to EffectLevelCCCodec,
|
||||
2078544146946392301L to GrenadeCCCodec,
|
||||
9169475278259220023L to GrenadeCommonSFXCCCodec,
|
||||
8082047509383246662L to BazookaExplosionCCCodec,
|
||||
6729312304988255776L to FoamBazookaCCCodec,
|
||||
2046257084008991040L to MagnetBazookaCCCodec,
|
||||
2360640997000854496L to RepairGrenadeCCCodec,
|
||||
3385611214280288146L to TeslaBazookaCCCodec,
|
||||
7336962025965257296L to HeatTrapBazookaCCCodec,
|
||||
4985274885530276227L to InventoryItemCCCodec,
|
||||
2173939047300893281L to InventorySfxCCCodec,
|
||||
4693095212037357021L to BattleMapCCCodec,
|
||||
1688856467034284073L to MapBonusLightCCCodec,
|
||||
4885574251230758729L to ModerationToolInteropCCCodec,
|
||||
7894174029759745197L to ClassicParachuteCCCodec,
|
||||
4778752313022424015L to RadarCCCodec,
|
||||
3719295044981767592L to StatusEffectCCCodec,
|
||||
8889030940127130747L to StatusEffectCCCodec,
|
||||
5215458949573069793L to SuppliesTutorialModelCCCodec,
|
||||
3535248640055401164L to TrackedChassisCCCodec,
|
||||
9175894397021160571L to HullCommonCCCodec,
|
||||
3966050316678844327L to TankRankUpEffectCCCodec,
|
||||
6638615717159906637L to TankRankUpEffectCCCodec,
|
||||
4875657231924274329L to SimpleArmorCCCodec,
|
||||
7912514999422640843L to SimpleArmorCCCodec,
|
||||
1090112775751802907L to ColorTransformCCCodec,
|
||||
7968893209278436962L to ColorTransformCCCodec,
|
||||
844040023906032853L to FreezeSFXCCCodec,
|
||||
5745114335268581493L to IsisSFXCCCodec,
|
||||
2368553937090306741L to RailgunShootSFXCCCodec,
|
||||
5257069799854314780L to RicochetSFXCCCodec,
|
||||
9094843804380507187L to ShaftShootSFXCCCodec,
|
||||
1748249573394295263L to SmokyShootSFXCCCodec,
|
||||
6623392760536649465L to TeslaShootSFXCCCodec,
|
||||
8191021443726008799L to ThunderShootSFXCCCodec,
|
||||
7692437363459179503L to TwinsShootSFXCCCodec,
|
||||
6641568549549264883L to HullSmokeCCCodec,
|
||||
2638139599268780529L to AimAssistCCCodec,
|
||||
7883218652624289568L to VerticalAnglesCCCodec,
|
||||
1237976996871886061L to WeaponCommonCCCodec,
|
||||
4444006910106229297L to FlameThrowerCCCodec,
|
||||
9105939015977236209L to FreezeCCCodec,
|
||||
1782954502314814229L to GaussCCCodec,
|
||||
3075844226211230705L to GaussSFXCCCodec,
|
||||
7068168268219022867L to IsisCCCodec,
|
||||
5194655544597440038L to LaserPointerCCCodec,
|
||||
7266201540452328992L to LaserPointerCCCodec,
|
||||
1663344340563853103L to RailgunCCCodec,
|
||||
1092307613749405757L to RicochetCCCodec,
|
||||
1130027771466355435L to ScorpioCCCodec,
|
||||
313670832122918648L to ScorpioSfxCCCodec,
|
||||
732152133982227177L to ShaftCCCodec,
|
||||
7700337090161867199L to ShotCCCodec,
|
||||
2172139419072369403L to SmokyCCCodec,
|
||||
2544465990449691855L to SplashCCCodec,
|
||||
2235965200289058033L to SplashCCCodec,
|
||||
8345039896357067195L to StreamWeaponCCCodec,
|
||||
2057487026153364495L to StreamWeaponCCCodec,
|
||||
6855550629220038001L to TerminatorCCCodec,
|
||||
6210980129845088505L to TerminatorSFXCCCodec,
|
||||
573691036321759779L to TeslaCCCodec,
|
||||
8212033390179430143L to TsunamiCCCodec,
|
||||
5604117679922858821L to TsunamiShootSFXCCCodec,
|
||||
2803166101624878775L to RotatingTurretCCCodec,
|
||||
8384919755051909877L to TwinsCCCodec,
|
||||
6384655869260380731L to WeaponWeakeningCCCodec,
|
||||
6642061974307112160L to ArtilleryCCCodec,
|
||||
8754295211549969729L to ArtilleryElevatingBarrelCCCodec,
|
||||
4499337062875496540L to ArtillerySfxCCCodec,
|
||||
7235761383767133268L to BonkWeaponCCCodec,
|
||||
7022952987062772048L to MachineGunCCCodec,
|
||||
6596471917520283782L to MachineGunSFXCCCodec,
|
||||
8784137528831277530L to MachineGunSFXCCCodec,
|
||||
6528115483341986769L to RocketLauncherCCCodec,
|
||||
4045733714401632272L to RocketLauncherCCCodec,
|
||||
770654516236272028L to ShotgunSFXCCCodec,
|
||||
5867914731324680416L to ShotgunShotCCCodec,
|
||||
2660691061343351669L to TeamLightCCCodec,
|
||||
171896995500198357L to TeamLightCCCodec,
|
||||
1500120709087433677L to TeamLightColorParamsCodec,
|
||||
6455142242556985012L to UltimateCCCodec,
|
||||
7899544742191273818L to AresUltimateProjectileCCCodec,
|
||||
6210079079280471693L to CrusaderEffectCCCodec,
|
||||
3907559303616283277L to CrusaderUltimateCCCodec,
|
||||
6590506277285284269L to DictatorUltimateCCCodec,
|
||||
6668012086939621459L to HopperUltimateCCCodec,
|
||||
8738779591519195597L to HornetUltimateCCCodec,
|
||||
7214131179703676563L to HornetUltimateCCCodec,
|
||||
920233600808088339L to BattleUltimateRadarCCCodec,
|
||||
4406836274649365203L to HunterUltimateCCCodec,
|
||||
7257138969919985658L to TankStunCCCodec,
|
||||
887431150717814637L to JuggernautUltimateCCCodec,
|
||||
1997576349992148053L to MammothUltimateCCCodec,
|
||||
4658911146867546991L to PaladinAuraVisualCCCodec,
|
||||
4388979890807820236L to TankSuperchargeCCCodec,
|
||||
973781565169577734L to TankSuperchargeCCCodec,
|
||||
7551602984488625261L to VikingUltimateCCCodec,
|
||||
3137250957878113145L to WaspUltimateBombCCCodec,
|
||||
3248199557469599724L to NuclearRechargeCCCodec,
|
||||
5055746953759097716L to BossStateCCCodec,
|
||||
3317051239895575278L to TankConfigurationCCCodec,
|
||||
1838248562944554574L to TankCritCCCodec,
|
||||
1767155986856291742L to TankPointersCCCodec,
|
||||
5543162332469864498L to TankInfoCCCodec,
|
||||
260111248825415414L to BattleBotControlCCCodec,
|
||||
2560105521800470759L to RemoteTankStateUpdatingCCCodec,
|
||||
4206032257972775630L to TankResistanceCodec,
|
||||
7127632667958387441L to TankResistancesCCCodec,
|
||||
2104999573658810427L to TankSpawnerCCCodec,
|
||||
7163171834328288344L to SpeedCharacteristicsCCCodec,
|
||||
2271787261806799336L to SuicideCCCodec,
|
||||
2150802556932617880L to TankCCCodec,
|
||||
6589716392600418185L to AvailableForAllCCCodec,
|
||||
9168562037264832365L to PassToShopCCCodec,
|
||||
3122964582367261689L to TemperatureCCCodec,
|
||||
3730185794267514852L to GaragePreviewModelCCCodec,
|
||||
2769268442698022653L to BuyableCCCodec,
|
||||
2114179554921095892L to ItemCategoryCCCodec,
|
||||
120961863156462946L to CountableItemCCCodec,
|
||||
7391892068905080676L to DelayMountCategoryCCCodec,
|
||||
7109632754421804521L to DelayMountCategoryCCCodec,
|
||||
7640081207058999117L to DevicePropertiesCCCodec,
|
||||
6111098822553419499L to PaCodec,
|
||||
4692610703461978415L to ProAbonementRankDiscountCCCodec,
|
||||
6430862429652735997L to EmissionColorCCCodec,
|
||||
1534251830977989099L to EmissionColorCCCodec,
|
||||
1865478986390468300L to GroupedCCCodec,
|
||||
658797348514407988L to ItemModelCCCodec,
|
||||
3438505192580052999L to ItemModelCCCodec,
|
||||
7472019549033825785L to Item3DCCCodec,
|
||||
5219530271535770658L to GarageKitCCCodec,
|
||||
4309274349580876968L to ItemSaleByKitCCCodec,
|
||||
2494628067134376039L to ModificationCCCodec,
|
||||
4245000165576407500L to Object3DSCCCodec,
|
||||
1139677084511624062L to PremiumItemCCCodec,
|
||||
8153652471440648359L to RelativePropertiesCCCodec,
|
||||
5724298620794499870L to MountedResistancesCCCodec,
|
||||
6628468327090974523L to ResistanceBackgroundCCCodec,
|
||||
712090483864327130L to HullSkinModelCCCodec,
|
||||
5738770490413536673L to TankPartSkinModelCCCodec,
|
||||
481504601146841174L to TankPartSkinModelCCCodec,
|
||||
4234781414353452329L to TurretSkinModelCCCodec,
|
||||
3893855999545616334L to TemporaryItemCCCodec,
|
||||
4743567393313674375L to UpgradeParamsCCCodec,
|
||||
6117306895090150422L to ItemViewCategoryCCCodec,
|
||||
4817031001612283794L to ProtectionSlotsCCCodec,
|
||||
2433120830275396692L to PresentsCCCodec,
|
||||
5988756521593027564L to DwCodec,
|
||||
7563487786199453443L to OverdriveDescriptionCCCodec,
|
||||
149643551432886459L to TurretMechanismCCCodec,
|
||||
905970599512839002L to MountedSkinCCCodec,
|
||||
834829861153964627L to MountedSkinCCCodec,
|
||||
1164458258646872337L to AvailableShotSkinsCCCodec,
|
||||
7175193612424807833L to VuCodec,
|
||||
4068618447512888231L to ColoringCCCodec,
|
||||
5255782026414758079L to BsCodec,
|
||||
1259328549938381181L to VoCodec,
|
||||
7272122855372520854L to FriendsCCCodec,
|
||||
7286757952195114814L to UserContainerCCCodec,
|
||||
433350986715773690L to UserContainerCCCodec,
|
||||
6666386288157781248L to UserContainerCCCodec,
|
||||
6165842138816273510L to UserContainerCCCodec,
|
||||
4806152428066355053L to ContainersInfoCCCodec,
|
||||
2396069765491056127L to UserReportsModelCCCodec,
|
||||
5111180848188020047L to NotificationEnabledCCCodec,
|
||||
821863604528384663L to ZnM88693LtCodec,
|
||||
2913056477936031270L to BattleInfoCCCodec,
|
||||
994751080759166914L to BattleDMInfoCCCodec,
|
||||
6282101613166902704L to BattleParamInfoCCCodec,
|
||||
6652129902375288094L to TeamBattleInfoCCCodec,
|
||||
7185560430911351668L to FormatBattleOptionsCCCodec,
|
||||
5412538083071671358L to MapInfoCCCodec,
|
||||
104562115846147942L to MatchmakingGroupCCCodec,
|
||||
5932347630672640435L to MatchmakingLayoutCCCodec,
|
||||
3935107155251354407L to DescriptionModelCCCodec,
|
||||
1472449384337994019L to DescriptionModelCCCodec,
|
||||
8032192927455575509L to TimePeriodModelCCCodec,
|
||||
)
|
||||
}
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 上行 108605496059850042|module_10283
|
||||
data class Up10283On(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 上行 2522279596878141909|module_25377
|
||||
data class Up25377Mn(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 上行 1923257295373322726|module_37504
|
||||
data class Up37504Mi(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 上行 545646835775802391|module_47243
|
||||
data class Up47243Xd(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 上行 3122753540375943279|module_54199
|
||||
data class Up54199Nn(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 上行 242594788112599303|module_85183
|
||||
data class Up85183GL(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 上行 3992138268563757275|module_85196
|
||||
data class Up85196A(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 上行 3312562673813486434|module_85667
|
||||
data class Up85667Hu(
|
||||
|
||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
||||
import Net.Wire.Wire
|
||||
import Net.Wire.ErasedCodec
|
||||
import Net.Protocol.TankStateCodec
|
||||
import Net.Protocol.LtCodec
|
||||
import Net.Protocol.PtCodec
|
||||
import Net.Protocol.ZtCodec
|
||||
import Net.Protocol.AliasCodec
|
||||
|
||||
// 上行 1389350490037720721|module_89803
|
||||
data class Up89803Kr(
|
||||
|
||||
@@ -0,0 +1,164 @@
|
||||
// Containers.kt —— ModelService 4 条容器命令的真实布局
|
||||
//
|
||||
// 依据(逐字节标定过):3DTank/tools/server/container.js + module_29554.js 的 U.u7j:
|
||||
// _unloadObjects (9038756763225879447) → lt:varint 个数 + 个数 × i64
|
||||
// _loadObjectsData (7640916300855664666) → pt:i32 对象数 + 对象表 + i32 项数 + 项表
|
||||
// _loadDependencies (3216143066888387731) → zt:i32 X + i32 批次数 + 批次 + i32 项数 + 项表
|
||||
// _setModelCommandAlias (8179162314198150518) → i32 alias + i64 + i64
|
||||
//
|
||||
// pt 的每一项:i64 id;id == 0 → 再读 i64 当值;否则 id 是 modelId,就地展开该模型的字段。
|
||||
// modelId → codec 由生成的 ModelRegistry.ByModelId 提供。
|
||||
package Net.Protocol
|
||||
|
||||
import Core.ByteReader
|
||||
import Core.ByteWriter
|
||||
import Core.NullmapCursor
|
||||
import Core.NullmapWriter
|
||||
import Core.ProtocolException
|
||||
import Net.Generated.ModelRegistry
|
||||
import Net.Wire.ModelCodec
|
||||
|
||||
// ---------------- lt ----------------
|
||||
class LtPayload(val Ids: List<Long>)
|
||||
|
||||
object LtCodec : ModelCodec<LtPayload> {
|
||||
override fun Decode(R: ByteReader, N: NullmapCursor): LtPayload {
|
||||
val Count = R.ReadVarint()
|
||||
if (Count < 0 || Count > 1 shl 20) throw ProtocolException("lt 个数不合法:$Count")
|
||||
val Ids = ArrayList<Long>(Count)
|
||||
repeat(Count) { Ids.add(R.ReadLong()) }
|
||||
return LtPayload(Ids)
|
||||
}
|
||||
|
||||
override fun Encode(W: ByteWriter, N: NullmapWriter, V: LtPayload) {
|
||||
W.WriteVarint(V.Ids.size)
|
||||
for (Id in V.Ids) W.WriteLong(Id)
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------- pt ----------------
|
||||
class PtObject(val ObjectId: Long, val GameTypeId: Long)
|
||||
class PtItem(val Id: Long, val Value: Any)
|
||||
class PtPayload(val Objects: List<PtObject>, val Items: List<PtItem>)
|
||||
|
||||
object PtCodec : ModelCodec<PtPayload> {
|
||||
override fun Decode(R: ByteReader, N: NullmapCursor): PtPayload {
|
||||
val CObjects = R.ReadInt()
|
||||
if (CObjects < 0 || CObjects > 1 shl 20) throw ProtocolException("pt 对象数不合法:$CObjects")
|
||||
val Objects = ArrayList<PtObject>(CObjects)
|
||||
repeat(CObjects) { Objects.add(PtObject(R.ReadLong(), R.ReadLong())) }
|
||||
|
||||
val CItems = R.ReadInt()
|
||||
if (CItems < 0 || CItems > 1 shl 20) throw ProtocolException("pt 项数不合法:$CItems")
|
||||
val Items = ArrayList<PtItem>(CItems)
|
||||
repeat(CItems) {
|
||||
val Id = R.ReadLong()
|
||||
if (Id == 0L) {
|
||||
Items.add(PtItem(Id, R.ReadLong()))
|
||||
} else {
|
||||
val Codec = ModelRegistry.ByModelId[Id]
|
||||
?: throw ProtocolException("pt 项 modelId=$Id 没有 codec")
|
||||
Items.add(PtItem(Id, Codec.DecodeAny(R, N)))
|
||||
}
|
||||
}
|
||||
return PtPayload(Objects, Items)
|
||||
}
|
||||
|
||||
override fun Encode(W: ByteWriter, N: NullmapWriter, V: PtPayload) {
|
||||
W.WriteInt(V.Objects.size)
|
||||
for (O in V.Objects) {
|
||||
W.WriteLong(O.ObjectId)
|
||||
W.WriteLong(O.GameTypeId)
|
||||
}
|
||||
W.WriteInt(V.Items.size)
|
||||
for (Item in V.Items) {
|
||||
W.WriteLong(Item.Id)
|
||||
if (Item.Id == 0L) {
|
||||
W.WriteLong(Item.Value as Long)
|
||||
} else {
|
||||
val Codec = ModelRegistry.ByModelId[Item.Id]
|
||||
?: throw ProtocolException("pt 项 modelId=${Item.Id} 没有 codec")
|
||||
Codec.EncodeAny(W, N, Item.Value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------- zt ----------------
|
||||
class ZtBatch(val ObjectId: Long, val ModelIds: List<Long>)
|
||||
class ZtItem(
|
||||
val R: Long,
|
||||
val E: Short,
|
||||
val U: Short,
|
||||
val S: Long,
|
||||
val O: Byte,
|
||||
val Skipped: List<Long>,
|
||||
)
|
||||
class ZtPayload(val X: Int, val Batches: List<ZtBatch>, val Items: List<ZtItem>)
|
||||
|
||||
object ZtCodec : ModelCodec<ZtPayload> {
|
||||
override fun Decode(R: ByteReader, N: NullmapCursor): ZtPayload {
|
||||
val X = R.ReadInt()
|
||||
val CBatches = R.ReadInt()
|
||||
if (CBatches < 0 || CBatches > 1 shl 20) throw ProtocolException("zt 批次数不合法:$CBatches")
|
||||
val Batches = ArrayList<ZtBatch>(CBatches)
|
||||
repeat(CBatches) {
|
||||
val ObjectId = R.ReadLong()
|
||||
val Count = R.ReadInt()
|
||||
if (Count < 0 || Count > 1 shl 20) throw ProtocolException("zt 批次 modelId 数不合法:$Count")
|
||||
val Ids = ArrayList<Long>(Count)
|
||||
repeat(Count) { Ids.add(R.ReadLong()) }
|
||||
Batches.add(ZtBatch(ObjectId, Ids))
|
||||
}
|
||||
val CItems = R.ReadInt()
|
||||
if (CItems < 0 || CItems > 1 shl 20) throw ProtocolException("zt 项数不合法:$CItems")
|
||||
val Items = ArrayList<ZtItem>(CItems)
|
||||
repeat(CItems) {
|
||||
val R0 = R.ReadLong()
|
||||
val E = R.ReadShort()
|
||||
val U = R.ReadShort()
|
||||
val S = R.ReadLong()
|
||||
val O = R.ReadByte()
|
||||
val Skip = R.ReadByte().toInt()
|
||||
if (Skip < 0) throw ProtocolException("zt 跳过个数不合法:$Skip")
|
||||
val Skipped = ArrayList<Long>(Skip)
|
||||
repeat(Skip) { Skipped.add(R.ReadLong()) }
|
||||
Items.add(ZtItem(R0, E, U, S, O, Skipped))
|
||||
}
|
||||
return ZtPayload(X, Batches, Items)
|
||||
}
|
||||
|
||||
override fun Encode(W: ByteWriter, N: NullmapWriter, V: ZtPayload) {
|
||||
W.WriteInt(V.X)
|
||||
W.WriteInt(V.Batches.size)
|
||||
for (B in V.Batches) {
|
||||
W.WriteLong(B.ObjectId)
|
||||
W.WriteInt(B.ModelIds.size)
|
||||
for (Id in B.ModelIds) W.WriteLong(Id)
|
||||
}
|
||||
W.WriteInt(V.Items.size)
|
||||
for (Item in V.Items) {
|
||||
W.WriteLong(Item.R)
|
||||
W.WriteShort(Item.E.toInt())
|
||||
W.WriteShort(Item.U.toInt())
|
||||
W.WriteLong(Item.S)
|
||||
W.WriteByte(Item.O.toInt())
|
||||
W.WriteByte(Item.Skipped.size)
|
||||
for (Id in Item.Skipped) W.WriteLong(Id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------- alias ----------------
|
||||
class AliasPayload(val Alias: Int, val A: Long, val B: Long)
|
||||
|
||||
object AliasCodec : ModelCodec<AliasPayload> {
|
||||
override fun Decode(R: ByteReader, N: NullmapCursor): AliasPayload =
|
||||
AliasPayload(R.ReadInt(), R.ReadLong(), R.ReadLong())
|
||||
|
||||
override fun Encode(W: ByteWriter, N: NullmapWriter, V: AliasPayload) {
|
||||
W.WriteInt(V.Alias)
|
||||
W.WriteLong(V.A)
|
||||
W.WriteLong(V.B)
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,14 @@ class DecodeBodyResult(
|
||||
|
||||
object SpaceFrame {
|
||||
|
||||
fun DecodeBody(Body: ByteArray, Registry: Map<Long, ErasedCodec>): DecodeBodyResult {
|
||||
// _setModelCommandAlias 的 methodId:解码到它时把「别名 → (objectId, methodId)」写进会话表
|
||||
private const val AliasMethodId = 8179162314198150518L
|
||||
|
||||
fun DecodeBody(
|
||||
Body: ByteArray,
|
||||
Registry: Map<Long, ErasedCodec>,
|
||||
Aliases: MutableMap<Int, Pair<Long, Long>>? = null,
|
||||
): DecodeBodyResult {
|
||||
val Records = ArrayList<DecodedRecord>()
|
||||
val Unknown = ArrayList<Long>()
|
||||
var ShortCount = 0
|
||||
@@ -45,13 +52,19 @@ object SpaceFrame {
|
||||
val R = ByteReader(Body, NullmapSize)
|
||||
while (R.Remaining > 0) {
|
||||
val Form = Cursor.ReadBit()
|
||||
val ObjectId: Long
|
||||
val MethodId: Long
|
||||
if (Form) {
|
||||
// 短命令:后面还有 1 字节别名 + 未知长度负载,S2 不猜,停在第一条短命令
|
||||
// 短命令:1 字节别名 → 会话别名表;表里没有就如实停下(不猜)
|
||||
val Alias = R.ReadByte().toInt() and 0xff
|
||||
val Entry = Aliases?.get(Alias)
|
||||
if (Entry == null) {
|
||||
ShortCount++
|
||||
break
|
||||
}
|
||||
val ObjectId: Long
|
||||
val MethodId: Long
|
||||
ObjectId = Entry.first
|
||||
MethodId = Entry.second
|
||||
} else {
|
||||
try {
|
||||
ObjectId = R.ReadLong()
|
||||
MethodId = R.ReadLong()
|
||||
@@ -59,6 +72,7 @@ object SpaceFrame {
|
||||
// 不是空间帧(常见于入口/登录帧),或帧体在记录头处截断:如实中止
|
||||
return DecodeBodyResult(Records, ShortCount, Unknown, "记录头截断:${E.message}")
|
||||
}
|
||||
}
|
||||
val Codec = Registry[MethodId]
|
||||
if (Codec == null) {
|
||||
Unknown.add(MethodId)
|
||||
@@ -81,6 +95,9 @@ object SpaceFrame {
|
||||
"methodId=$MethodId 回编码失败:${E.message}")
|
||||
}
|
||||
Records.add(DecodedRecord(ObjectId, MethodId, Value, Payload, W.ToByteArray()))
|
||||
if (MethodId == AliasMethodId && Value is AliasPayload) {
|
||||
Aliases?.set(Value.Alias and 0xff, Value.A to Value.B)
|
||||
}
|
||||
}
|
||||
return DecodeBodyResult(Records, ShortCount, Unknown, null)
|
||||
}
|
||||
|
||||
@@ -28,6 +28,15 @@ OUT = ROOT / "net" / "src" / "jsMain" / "kotlin" / "Net" / "Generated"
|
||||
# 这些 codec 的线形不能由字段表直译,改由 Net/Protocol 下手写(数据类仍由生成器产出)。
|
||||
# module_85183::jq = TankState 的「字段表版」;真正上线的是 module_87072 注册的 T5(23 字节位打包)
|
||||
OVERLAY_CODECS = {"module_85183::jq"}
|
||||
OVERLAY_NAMES = {"module_85183::jq": "TankStateCodec"}
|
||||
|
||||
# ModelService 的 4 条容器命令:布局由 Net/Protocol/Containers.kt 手写,直接覆盖注册表
|
||||
REGISTRY_OVERRIDES = {
|
||||
"9038756763225879447": "LtCodec", # _unloadObjects
|
||||
"7640916300855664666": "PtCodec", # _loadObjectsData
|
||||
"3216143066888387731": "ZtCodec", # _loadDependencies
|
||||
"8179162314198150518": "AliasCodec", # _setModelCommandAlias
|
||||
}
|
||||
|
||||
PRIMS = {
|
||||
"bool": ("Boolean", "R.ReadBool()", "W.WriteBool({})"),
|
||||
@@ -349,7 +358,8 @@ def Main():
|
||||
"import Core.ByteReader\nimport Core.ByteWriter\nimport Core.NullmapCursor\n"
|
||||
"import Core.NullmapWriter\nimport Core.Vector3\n"
|
||||
"import Net.Wire.ModelCodec\nimport Net.Wire.Wire\nimport Net.Wire.ErasedCodec\n"
|
||||
"import Net.Protocol.TankStateCodec\n\n")
|
||||
"import Net.Protocol.TankStateCodec\nimport Net.Protocol.LtCodec\n"
|
||||
"import Net.Protocol.PtCodec\nimport Net.Protocol.ZtCodec\nimport Net.Protocol.AliasCodec\n\n")
|
||||
|
||||
def EmitClass(Def: ClassDef, Nodes):
|
||||
Names = UniqueFieldNames(Def.Fields)
|
||||
@@ -409,17 +419,40 @@ def Main():
|
||||
Lines = [f"object {Title} {{", " val ByMethodId: Map<Long, ErasedCodec> = mapOf("]
|
||||
Seen = set()
|
||||
for Mid, Name in Entries:
|
||||
if Name not in Emitted or Mid in Seen:
|
||||
if Name not in Emitted or Mid in Seen or Mid in REGISTRY_OVERRIDES:
|
||||
continue
|
||||
Seen.add(Mid)
|
||||
Lines.append(f" {Mid}L to {Name}Codec,")
|
||||
if Title == "DownlinkRegistry":
|
||||
for Mid, Expr in REGISTRY_OVERRIDES.items():
|
||||
Lines.append(f" {Mid}L to {Expr},")
|
||||
Lines.append(" )")
|
||||
Lines.append("}")
|
||||
return Lines
|
||||
|
||||
def RegistryWithModelIds(ResolvedMap, NameMap):
|
||||
Lines = ["object ModelRegistry {", " val ByModelId: Map<Long, ErasedCodec> = mapOf("]
|
||||
Seen = set()
|
||||
for Key, (Def, Nodes) in ResolvedMap.items():
|
||||
C = Codecs[Key]
|
||||
Expr = OVERLAY_NAMES.get(Key, NameMap[Key] + "Codec")
|
||||
Ids = []
|
||||
if C.get("ModelId"):
|
||||
Ids.append(str(C["ModelId"]))
|
||||
Ids += [str(M) for M in (C.get("ModelIds") or [])]
|
||||
for Mid in Ids:
|
||||
if Mid in Seen:
|
||||
continue
|
||||
Seen.add(Mid)
|
||||
Lines.append(f" {Mid}L to {Expr},")
|
||||
Lines.append(" )")
|
||||
Lines.append("}")
|
||||
return Lines
|
||||
|
||||
(OUT / "Registry.kt").write_text(
|
||||
Header + "\n".join(Registry(DownRegistry, "DownlinkRegistry")) + "\n\n" +
|
||||
"\n".join(Registry(UpRegistry, "UplinkRegistry")) + "\n", "utf-8")
|
||||
"\n".join(Registry(UpRegistry, "UplinkRegistry")) + "\n\n" +
|
||||
"\n".join(RegistryWithModelIds(Resolved, CodecKeyToName)) + "\n", "utf-8")
|
||||
|
||||
# ---------- 6. 元数据 ----------
|
||||
def MetaEntry(Def: ClassDef, Nodes):
|
||||
|
||||
Reference in new issue
Block a user