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
+779
-18
No files matched your search
@@ -69,6 +69,7 @@ private class Stats {
|
|||||||
var HeaderErrors = 0
|
var HeaderErrors = 0
|
||||||
var ShortCommands = 0
|
var ShortCommands = 0
|
||||||
var UnknownMethods = 0
|
var UnknownMethods = 0
|
||||||
|
val UnknownIds = ArrayList<Long>()
|
||||||
val Failures = ArrayList<String>()
|
val Failures = ArrayList<String>()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,6 +80,8 @@ private fun RunOne(Path: String, Registry: Map<Long, ErasedCodec>, S: Stats) {
|
|||||||
S.BadFrames++
|
S.BadFrames++
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// 别名表按文件(同一次连接的一段抓包)维护;_setModelCommandAlias 解码后会填充
|
||||||
|
val Aliases = HashMap<Int, Pair<Long, Long>>()
|
||||||
for (F in Frames) {
|
for (F in Frames) {
|
||||||
S.Frames++
|
S.Frames++
|
||||||
val Body = try {
|
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}")
|
if (S.Failures.size < 12) S.Failures.add("$Path 解压失败:${E.message}")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
val R = SpaceFrame.DecodeBody(Body, Registry)
|
val R = SpaceFrame.DecodeBody(Body, Registry, Aliases)
|
||||||
S.Records += R.Records.size
|
S.Records += R.Records.size
|
||||||
S.ShortCommands += R.ShortCommandCount
|
S.ShortCommands += R.ShortCommandCount
|
||||||
S.UnknownMethods += R.UnknownMethodIds.size
|
S.UnknownMethods += R.UnknownMethodIds.size
|
||||||
|
for (Id in R.UnknownMethodIds) if (S.UnknownIds.size < 8) S.UnknownIds.add(Id)
|
||||||
val Err = R.Error
|
val Err = R.Error
|
||||||
if (Err != null) {
|
if (Err != null) {
|
||||||
if (Err.startsWith("记录头截断")) S.HeaderErrors++
|
if (Err.startsWith("记录头截断")) S.HeaderErrors++
|
||||||
@@ -161,6 +165,9 @@ fun main() {
|
|||||||
println("回编码一致 ${S.RoundTripOk}|不一致 ${S.RoundTripBad}")
|
println("回编码一致 ${S.RoundTripOk}|不一致 ${S.RoundTripBad}")
|
||||||
println("短命令 ${S.ShortCommands}|未知 methodId ${S.UnknownMethods}|记录头截断 ${S.HeaderErrors}|其它解码错误 ${S.DecodeErrors}|坏帧 ${S.BadFrames}")
|
println("短命令 ${S.ShortCommands}|未知 methodId ${S.UnknownMethods}|记录头截断 ${S.HeaderErrors}|其它解码错误 ${S.DecodeErrors}|坏帧 ${S.BadFrames}")
|
||||||
println("下行注册 ${DownlinkRegistry.ByMethodId.size}|上行注册 ${UplinkRegistry.ByMethodId.size}")
|
println("下行注册 ${DownlinkRegistry.ByMethodId.size}|上行注册 ${UplinkRegistry.ByMethodId.size}")
|
||||||
|
if (S.UnknownIds.isNotEmpty()) {
|
||||||
|
println("未知 methodId 样例:" + S.UnknownIds.joinToString(","))
|
||||||
|
}
|
||||||
if (S.Failures.isNotEmpty()) {
|
if (S.Failures.isNotEmpty()) {
|
||||||
println("前若干失败:")
|
println("前若干失败:")
|
||||||
for (F in S.Failures) println(" · $F")
|
for (F in S.Failures) println(" · $F")
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 1798193036336198760|module_10283
|
// 下行 1798193036336198760|module_10283
|
||||||
data class Down10283Xt8760(
|
data class Down10283Xt8760(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 3001647159444627062|module_1510
|
// 下行 3001647159444627062|module_1510
|
||||||
data class Down1510Gn7062(
|
data class Down1510Gn7062(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 1246109053620123806|module_25377
|
// 下行 1246109053620123806|module_25377
|
||||||
data class UidNotifierData3806(
|
data class UidNotifierData3806(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 8179162314198150518|module_29554
|
// 下行 8179162314198150518|module_29554
|
||||||
data class ZnM88693Lt0518(
|
data class ZnM88693Lt0518(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 1661920281800548495|module_31908
|
// 下行 1661920281800548495|module_31908
|
||||||
data class StatisticsTeamCC8495(
|
data class StatisticsTeamCC8495(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 246376163847464422|module_37504
|
// 下行 246376163847464422|module_37504
|
||||||
data class ClanUserCC4422(
|
data class ClanUserCC4422(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 73478093585084631|module_47243
|
// 下行 73478093585084631|module_47243
|
||||||
data class Down47243K4631(
|
data class Down47243K4631(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 314983404410424222|module_54199
|
// 下行 314983404410424222|module_54199
|
||||||
data class NewsShowingCC4222(
|
data class NewsShowingCC4222(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 28608551882350617|module_85183
|
// 下行 28608551882350617|module_85183
|
||||||
data class ModerationToolInteropCC0617(
|
data class ModerationToolInteropCC0617(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 7615142300796401818|module_85196
|
// 下行 7615142300796401818|module_85196
|
||||||
data class Down85196Ch1818(
|
data class Down85196Ch1818(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 756296912352966419|module_85667
|
// 下行 756296912352966419|module_85667
|
||||||
data class CaptchaCC6419(
|
data class CaptchaCC6419(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 2997538417603420748|module_88693
|
// 下行 2997538417603420748|module_88693
|
||||||
data class Down88693Pt0748(
|
data class Down88693Pt0748(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 下行 1480424224583906965|module_89803
|
// 下行 1480424224583906965|module_89803
|
||||||
data class TeamBattleInfoCC6965(
|
data class TeamBattleInfoCC6965(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// FacebookPaymentCC|module_01510
|
// FacebookPaymentCC|module_01510
|
||||||
data class FacebookPaymentCC(
|
data class FacebookPaymentCC(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// AntiAddictionRealNameValidatorModelCC|module_10283
|
// AntiAddictionRealNameValidatorModelCC|module_10283
|
||||||
data class AntiAddictionRealNameValidatorModelCC(
|
data class AntiAddictionRealNameValidatorModelCC(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// Atlas|module_16100
|
// Atlas|module_16100
|
||||||
data class Atlas(
|
data class Atlas(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
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
|
// codec module_24635::Ht|module_24635
|
||||||
data class F24635Ht(
|
data class F24635Ht(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// UserNotifierCC|module_25377
|
// UserNotifierCC|module_25377
|
||||||
data class UserNotifierCC(
|
data class UserNotifierCC(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// BattleCreateParameters|module_31908
|
// BattleCreateParameters|module_31908
|
||||||
data class BattleCreateParameters(
|
data class BattleCreateParameters(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// ClanFriendsCC|module_37504
|
// ClanFriendsCC|module_37504
|
||||||
data class ClanFriendsCC(
|
data class ClanFriendsCC(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// at|module_45686
|
// at|module_45686
|
||||||
data class At(
|
data class At(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// Hc|module_47243
|
// Hc|module_47243
|
||||||
data class Hc(
|
data class Hc(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// ChannelSidAndName|module_54199
|
// ChannelSidAndName|module_54199
|
||||||
data class ChannelSidAndName(
|
data class ChannelSidAndName(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// Lt|module_61860
|
// Lt|module_61860
|
||||||
data class Lt(
|
data class Lt(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// SocialNetworkParametersCC|module_67222
|
// SocialNetworkParametersCC|module_67222
|
||||||
data class SocialNetworkParametersCC(
|
data class SocialNetworkParametersCC(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
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
|
// codec module_71105::ps|module_71105
|
||||||
class F71105Ps
|
class F71105Ps
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// FlagBattleSFXCC|module_85183
|
// FlagBattleSFXCC|module_85183
|
||||||
data class FlagBattleSFXCC(
|
data class FlagBattleSFXCC(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// AvailableForAllCC|module_85196
|
// AvailableForAllCC|module_85196
|
||||||
data class AvailableForAllCC(
|
data class AvailableForAllCC(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// bu|module_85667
|
// bu|module_85667
|
||||||
data class Bu(
|
data class Bu(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// E|module_85745
|
// E|module_85745
|
||||||
data class EM85745X(
|
data class EM85745X(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// TankState|module_87072
|
// TankState|module_87072
|
||||||
class TankStateM87072T5
|
class TankStateM87072T5
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// FriendsCC|module_88693
|
// FriendsCC|module_88693
|
||||||
data class FriendsCC(
|
data class FriendsCC(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// BattleInfoCC|module_89803
|
// BattleInfoCC|module_89803
|
||||||
data class BattleInfoCC(
|
data class BattleInfoCC(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// DescriptionModelCC|module_99527
|
// DescriptionModelCC|module_99527
|
||||||
data class DescriptionModelCC(
|
data class DescriptionModelCC(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
object DownlinkRegistry {
|
object DownlinkRegistry {
|
||||||
val ByMethodId: Map<Long, ErasedCodec> = mapOf(
|
val ByMethodId: Map<Long, ErasedCodec> = mapOf(
|
||||||
@@ -602,7 +606,6 @@ object DownlinkRegistry {
|
|||||||
8164325377073720540L to F24635WtCodec,
|
8164325377073720540L to F24635WtCodec,
|
||||||
8171556272533651970L to F24635WtCodec,
|
8171556272533651970L to F24635WtCodec,
|
||||||
8171778085109430386L to UserNotifierCCCodec,
|
8171778085109430386L to UserNotifierCCCodec,
|
||||||
8179162314198150518L to ZnM88693Lt0518Codec,
|
|
||||||
8188577464406062306L to PaymentRequestVariableCodec,
|
8188577464406062306L to PaymentRequestVariableCodec,
|
||||||
8201829668071386439L to F24635WtCodec,
|
8201829668071386439L to F24635WtCodec,
|
||||||
8230065716229425028L to Down47243Jg5028Codec,
|
8230065716229425028L to Down47243Jg5028Codec,
|
||||||
@@ -677,7 +680,6 @@ object DownlinkRegistry {
|
|||||||
8981778623033134120L to UserNotifierCCCodec,
|
8981778623033134120L to UserNotifierCCCodec,
|
||||||
8992960192854306015L to Down47243Iv6015Codec,
|
8992960192854306015L to Down47243Iv6015Codec,
|
||||||
9006618999845515525L to UserNotifierCCCodec,
|
9006618999845515525L to UserNotifierCCCodec,
|
||||||
9038756763225879447L to ClanOutgoingCCCodec,
|
|
||||||
9045061171239007459L to FacebookPaymentCCCodec,
|
9045061171239007459L to FacebookPaymentCCCodec,
|
||||||
9047763868814832699L to DemomanSfxCC2699Codec,
|
9047763868814832699L to DemomanSfxCC2699Codec,
|
||||||
9052673731308612681L to FacebookPaymentCCCodec,
|
9052673731308612681L to FacebookPaymentCCCodec,
|
||||||
@@ -693,6 +695,10 @@ object DownlinkRegistry {
|
|||||||
9187558822227119790L to TCodec,
|
9187558822227119790L to TCodec,
|
||||||
9187558822227614985L to F24635WtCodec,
|
9187558822227614985L to F24635WtCodec,
|
||||||
9198230959529402310L to DonationAlertCC0661Codec,
|
9198230959529402310L to DonationAlertCC0661Codec,
|
||||||
|
9038756763225879447L to LtCodec,
|
||||||
|
7640916300855664666L to PtCodec,
|
||||||
|
3216143066888387731L to ZtCodec,
|
||||||
|
8179162314198150518L to AliasCodec,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1061,3 +1067,365 @@ object UplinkRegistry {
|
|||||||
9221299643007466131L to TCodec,
|
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.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 上行 108605496059850042|module_10283
|
// 上行 108605496059850042|module_10283
|
||||||
data class Up10283On(
|
data class Up10283On(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 上行 2522279596878141909|module_25377
|
// 上行 2522279596878141909|module_25377
|
||||||
data class Up25377Mn(
|
data class Up25377Mn(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 上行 1923257295373322726|module_37504
|
// 上行 1923257295373322726|module_37504
|
||||||
data class Up37504Mi(
|
data class Up37504Mi(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 上行 545646835775802391|module_47243
|
// 上行 545646835775802391|module_47243
|
||||||
data class Up47243Xd(
|
data class Up47243Xd(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 上行 3122753540375943279|module_54199
|
// 上行 3122753540375943279|module_54199
|
||||||
data class Up54199Nn(
|
data class Up54199Nn(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 上行 242594788112599303|module_85183
|
// 上行 242594788112599303|module_85183
|
||||||
data class Up85183GL(
|
data class Up85183GL(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 上行 3992138268563757275|module_85196
|
// 上行 3992138268563757275|module_85196
|
||||||
data class Up85196A(
|
data class Up85196A(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 上行 3312562673813486434|module_85667
|
// 上行 3312562673813486434|module_85667
|
||||||
data class Up85667Hu(
|
data class Up85667Hu(
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import Net.Wire.ModelCodec
|
|||||||
import Net.Wire.Wire
|
import Net.Wire.Wire
|
||||||
import Net.Wire.ErasedCodec
|
import Net.Wire.ErasedCodec
|
||||||
import Net.Protocol.TankStateCodec
|
import Net.Protocol.TankStateCodec
|
||||||
|
import Net.Protocol.LtCodec
|
||||||
|
import Net.Protocol.PtCodec
|
||||||
|
import Net.Protocol.ZtCodec
|
||||||
|
import Net.Protocol.AliasCodec
|
||||||
|
|
||||||
// 上行 1389350490037720721|module_89803
|
// 上行 1389350490037720721|module_89803
|
||||||
data class Up89803Kr(
|
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 {
|
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 Records = ArrayList<DecodedRecord>()
|
||||||
val Unknown = ArrayList<Long>()
|
val Unknown = ArrayList<Long>()
|
||||||
var ShortCount = 0
|
var ShortCount = 0
|
||||||
@@ -45,19 +52,26 @@ object SpaceFrame {
|
|||||||
val R = ByteReader(Body, NullmapSize)
|
val R = ByteReader(Body, NullmapSize)
|
||||||
while (R.Remaining > 0) {
|
while (R.Remaining > 0) {
|
||||||
val Form = Cursor.ReadBit()
|
val Form = Cursor.ReadBit()
|
||||||
if (Form) {
|
|
||||||
// 短命令:后面还有 1 字节别名 + 未知长度负载,S2 不猜,停在第一条短命令
|
|
||||||
ShortCount++
|
|
||||||
break
|
|
||||||
}
|
|
||||||
val ObjectId: Long
|
val ObjectId: Long
|
||||||
val MethodId: Long
|
val MethodId: Long
|
||||||
try {
|
if (Form) {
|
||||||
ObjectId = R.ReadLong()
|
// 短命令:1 字节别名 → 会话别名表;表里没有就如实停下(不猜)
|
||||||
MethodId = R.ReadLong()
|
val Alias = R.ReadByte().toInt() and 0xff
|
||||||
} catch (E: Throwable) {
|
val Entry = Aliases?.get(Alias)
|
||||||
// 不是空间帧(常见于入口/登录帧),或帧体在记录头处截断:如实中止
|
if (Entry == null) {
|
||||||
return DecodeBodyResult(Records, ShortCount, Unknown, "记录头截断:${E.message}")
|
ShortCount++
|
||||||
|
break
|
||||||
|
}
|
||||||
|
ObjectId = Entry.first
|
||||||
|
MethodId = Entry.second
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
ObjectId = R.ReadLong()
|
||||||
|
MethodId = R.ReadLong()
|
||||||
|
} catch (E: Throwable) {
|
||||||
|
// 不是空间帧(常见于入口/登录帧),或帧体在记录头处截断:如实中止
|
||||||
|
return DecodeBodyResult(Records, ShortCount, Unknown, "记录头截断:${E.message}")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
val Codec = Registry[MethodId]
|
val Codec = Registry[MethodId]
|
||||||
if (Codec == null) {
|
if (Codec == null) {
|
||||||
@@ -81,6 +95,9 @@ object SpaceFrame {
|
|||||||
"methodId=$MethodId 回编码失败:${E.message}")
|
"methodId=$MethodId 回编码失败:${E.message}")
|
||||||
}
|
}
|
||||||
Records.add(DecodedRecord(ObjectId, MethodId, Value, Payload, W.ToByteArray()))
|
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)
|
return DecodeBodyResult(Records, ShortCount, Unknown, null)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,15 @@ OUT = ROOT / "net" / "src" / "jsMain" / "kotlin" / "Net" / "Generated"
|
|||||||
# 这些 codec 的线形不能由字段表直译,改由 Net/Protocol 下手写(数据类仍由生成器产出)。
|
# 这些 codec 的线形不能由字段表直译,改由 Net/Protocol 下手写(数据类仍由生成器产出)。
|
||||||
# module_85183::jq = TankState 的「字段表版」;真正上线的是 module_87072 注册的 T5(23 字节位打包)
|
# module_85183::jq = TankState 的「字段表版」;真正上线的是 module_87072 注册的 T5(23 字节位打包)
|
||||||
OVERLAY_CODECS = {"module_85183::jq"}
|
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 = {
|
PRIMS = {
|
||||||
"bool": ("Boolean", "R.ReadBool()", "W.WriteBool({})"),
|
"bool": ("Boolean", "R.ReadBool()", "W.WriteBool({})"),
|
||||||
@@ -349,7 +358,8 @@ def Main():
|
|||||||
"import Core.ByteReader\nimport Core.ByteWriter\nimport Core.NullmapCursor\n"
|
"import Core.ByteReader\nimport Core.ByteWriter\nimport Core.NullmapCursor\n"
|
||||||
"import Core.NullmapWriter\nimport Core.Vector3\n"
|
"import Core.NullmapWriter\nimport Core.Vector3\n"
|
||||||
"import Net.Wire.ModelCodec\nimport Net.Wire.Wire\nimport Net.Wire.ErasedCodec\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):
|
def EmitClass(Def: ClassDef, Nodes):
|
||||||
Names = UniqueFieldNames(Def.Fields)
|
Names = UniqueFieldNames(Def.Fields)
|
||||||
@@ -409,17 +419,40 @@ def Main():
|
|||||||
Lines = [f"object {Title} {{", " val ByMethodId: Map<Long, ErasedCodec> = mapOf("]
|
Lines = [f"object {Title} {{", " val ByMethodId: Map<Long, ErasedCodec> = mapOf("]
|
||||||
Seen = set()
|
Seen = set()
|
||||||
for Mid, Name in Entries:
|
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
|
continue
|
||||||
Seen.add(Mid)
|
Seen.add(Mid)
|
||||||
Lines.append(f" {Mid}L to {Name}Codec,")
|
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(" )")
|
||||||
Lines.append("}")
|
Lines.append("}")
|
||||||
return Lines
|
return Lines
|
||||||
|
|
||||||
(OUT / "Registry.kt").write_text(
|
(OUT / "Registry.kt").write_text(
|
||||||
Header + "\n".join(Registry(DownRegistry, "DownlinkRegistry")) + "\n\n" +
|
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. 元数据 ----------
|
# ---------- 6. 元数据 ----------
|
||||||
def MetaEntry(Def: ClassDef, Nodes):
|
def MetaEntry(Def: ClassDef, Nodes):
|
||||||
|
|||||||
Reference in new issue
Block a user