feat(session): 静态解析 modelId 注册表,补齐大厅容器模型名
This commit is contained in:
1 parent
87539a9645
commit
b8fb22f401
6 files changed
+2712
No files matched your search
@@ -476,6 +476,18 @@
|
||||
说明现有 modelId→codec 绑定只覆盖 363 个模型;需要补「modelId → 模块/类」的运行时注册表,
|
||||
才能把大厅容器的模型路由进状态层。当前 `RunSessionTest.ps1` 只断言「会话解码 + 回编码」,
|
||||
路由计数(已派发/未覆盖)作为诊断输出。
|
||||
- modelId 注册表(继续补):
|
||||
- 新增 `tools/gen_model_registry.js`:静态解析各模块构造函数里的
|
||||
`this.<slot> = new X(lo, hi)` + `ModelReg.n7o(this.<slot>, … new W(b(ModelClass), …))`,
|
||||
得到 **362 个 modelId**(361 个解析出语义名,如 `ItemCategoryCC` / `BuyableCC` / `UserPropertiesCC`)。
|
||||
产物:`names/model_registry.json` + `App/State/ModelRegistry.kt`(`ModelNamesByModelId`)。
|
||||
- `SessionRouter` 把它用于诊断:`RunSessionTest.ps1` 现在会打印「未覆盖协议模型」TOP。
|
||||
抓包实测:`plain` 目录前 8000 个 s2c 里未覆盖的主要是
|
||||
`ItemCategoryCC×1918`、`DescriptionModelCC×1883`、`BuyableCC×1879`、`TimePeriodModelCC×1879`、
|
||||
`ItemModelCC×1879`、`ItemRarityCC×1879`、`PremiumItemCC×1879`、`ItemViewCategoryCC×1879`
|
||||
—— 即车库 / 商店的物品配置容器,不是用户属性。
|
||||
- 下一步:给这 8 个 CC 写「CC → 动作」适配器(原包在 module_47243 的模型层里聚合后派发),
|
||||
用户属性那条链路(`UserPropertiesCC` → `SetUserPropertiesAction`)已经可用。
|
||||
- 委派表里的已知形态:`shop` / `home` / `localBattleUserState` / `partner` 是内联 IIFE,
|
||||
已按字段具名为 `(inline@<field>)` 并从函数体抓到顶层动作名(69 / 1 / 2 / 11 个);
|
||||
`launchParams` 是纯透传(`(pass-through)`,无 reducer),已把字段收口为 `Map<String, String>`。
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,135 @@
|
||||
// gen_model_registry.js —— 静态解析「modelId → 模块 / 模型类 / 语义名」
|
||||
//
|
||||
// 问题:names/model_binding.json 只有 363 条,且抓包 Pt 容器里的 modelId 大多不在里面
|
||||
// (那批只覆盖了「运行时 dump 到的 codec」)。但客户端在每个模块的构造函数里都会调用
|
||||
// `ModelReg.n7o(modelId, codec)` 注册模型,注册点本身就带模块与模型类,可以静态挖出来。
|
||||
//
|
||||
// 形态(module_10283 例):
|
||||
// (this.vgw_1 = new R(-1339607649, 1825012020)),
|
||||
// Rt(this).n7o(this.vgw_1, At(this).r7g(new p(b(Mt), !1)))
|
||||
// → modelId = (hi << 32) | (lo & 0xffffffff),lo 在前、hi 在后(按无符号 lo 处理)
|
||||
// → 模块 = 文件,模型类 = `b(<Class>)` 里的 Class
|
||||
// → 语义名 = codec_fields.json 里同模块、ModelClassLocal 相同的 codec 的 ModelName
|
||||
//
|
||||
// 输出:names/model_registry.json
|
||||
// { Note, Count, WithName, Rows: [{ ModelId, Module, ModelClass, ModelName }] }
|
||||
//
|
||||
// 用法:cd 3DTank/tools && node gen_model_registry.js
|
||||
'use strict';
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const P = path.resolve(__dirname, '..');
|
||||
const SrcDir = path.join(P, 'src');
|
||||
const Names = path.join(P, 'names');
|
||||
|
||||
const Codecs = JSON.parse(fs.readFileSync(path.join(Names, 'codec_fields.json'), 'utf8')).Codecs;
|
||||
|
||||
// module -> (ModelClassLocal -> ModelName[])
|
||||
const NameByModuleClass = new Map();
|
||||
for (const C of Object.values(Codecs)) {
|
||||
if (!C.ModelClassLocal) continue;
|
||||
const Key = C.Module + '::' + C.ModelClassLocal;
|
||||
if (!NameByModuleClass.has(Key)) NameByModuleClass.set(Key, new Set());
|
||||
if (C.ModelName) NameByModuleClass.get(Key).add(C.ModelName);
|
||||
}
|
||||
|
||||
function ReadParen(S, Start) {
|
||||
let D = 0, I = Start;
|
||||
for (; I < S.length; I++) {
|
||||
if (S[I] === '(') D++;
|
||||
else if (S[I] === ')') { D--; if (!D) { I++; break; } }
|
||||
}
|
||||
return S.slice(Start, I);
|
||||
}
|
||||
|
||||
function ModelIdOf(Hi, Lo) {
|
||||
const H = BigInt(Hi);
|
||||
const L = BigInt.asUintN(32, BigInt(Lo));
|
||||
return BigInt.asIntN(64, (H << 32n) | L).toString();
|
||||
}
|
||||
|
||||
const Rows = [];
|
||||
const Files = fs.readdirSync(SrcDir).filter((F) => /^module_\d+\.js$/.test(F)).sort();
|
||||
for (const F of Files) {
|
||||
const Module = F.replace(/\.js$/, '');
|
||||
const S = fs.readFileSync(path.join(SrcDir, F), 'utf8');
|
||||
const Re = /n7o\(\s*this\.(\w+)\s*,/g;
|
||||
let M;
|
||||
while ((M = Re.exec(S))) {
|
||||
const Slot = M[1];
|
||||
const Asg = new RegExp('this\\.' + Slot + '\\s*=\\s*new\\s+[\\w$]+').exec(S);
|
||||
if (!Asg) continue;
|
||||
const CallStart = S.indexOf('(', Asg.index + Asg[0].length);
|
||||
const Call = ReadParen(S, CallStart);
|
||||
const Args = Call.slice(1, -1).split(',').map((X) => X.trim());
|
||||
if (Args.length !== 2 || !/^-?\d+$/.test(Args[0]) || !/^-?\d+$/.test(Args[1])) continue;
|
||||
const ModelId = ModelIdOf(Number(Args[1]), Number(Args[0]));
|
||||
|
||||
// 注册表达式尾部:取到本行结束,抓 `(<Class>)` 作为模型类
|
||||
const LineEnd = S.indexOf('\n', M.index);
|
||||
const Tail = S.slice(M.index, LineEnd < 0 ? S.length : LineEnd);
|
||||
const ClassMatch = /\(\s*([\w$]+)\s*\)\s*,\s*!?[01]/.exec(Tail);
|
||||
const ModelClass = ClassMatch ? ClassMatch[1] : null;
|
||||
const NamesSet = ModelClass ? NameByModuleClass.get(Module + '::' + ModelClass) : null;
|
||||
let ModelName = null;
|
||||
if (NamesSet && NamesSet.size) {
|
||||
const Arr = [...NamesSet];
|
||||
ModelName = Arr.find((N) => N !== ModelClass) || Arr[0];
|
||||
}
|
||||
|
||||
Rows.push({ ModelId, Module, ModelClass, ModelName });
|
||||
}
|
||||
}
|
||||
|
||||
const Seen = new Set();
|
||||
const Unique = [];
|
||||
for (const R of Rows) {
|
||||
if (Seen.has(R.ModelId)) continue;
|
||||
Seen.add(R.ModelId);
|
||||
Unique.push(R);
|
||||
}
|
||||
|
||||
fs.writeFileSync(
|
||||
path.join(Names, 'model_registry.json'),
|
||||
JSON.stringify(
|
||||
{
|
||||
Note:
|
||||
'静态解析的 modelId → 模块 / 模型类 / 语义名。来源:各模块构造函数里的 `ModelReg.n7o(modelId, codec)` ' +
|
||||
'注册点 + `this.<slot> = new X(lo, hi)` 的 64 位常量;语义名同模块的 ModelClassLocal 反查 codec_fields.json。',
|
||||
Source: ['src/*.js', 'codec_fields.json'],
|
||||
Count: Unique.length,
|
||||
WithName: Unique.filter((R) => R.ModelName).length,
|
||||
Rows: Unique,
|
||||
},
|
||||
null,
|
||||
1,
|
||||
),
|
||||
'utf8',
|
||||
);
|
||||
|
||||
// ---------------------------------------------------------------- Kotlin 表(诊断 + 适配器用)
|
||||
const KotlinPath = path.resolve(P, '..', 'TankiOffline', 'app', 'src', 'jsMain', 'kotlin', 'App', 'State', 'ModelRegistry.kt');
|
||||
const Lines = [];
|
||||
Lines.push('// ModelRegistry.kt —— modelId → 协议模型名(生成物,不要手改)');
|
||||
Lines.push('//');
|
||||
Lines.push('// 由 3DTank/tools/gen_model_registry.js 静态解析各模块的 ModelReg 注册点得到:');
|
||||
Lines.push('// this.<slot> = new X(lo, hi) + n7o(this.<slot>, ... new W(b(ModelClass), ...))');
|
||||
Lines.push('// 语义名来自 codec_fields.json 里同模块、ModelClassLocal 相同的 codec 的 ModelName。');
|
||||
Lines.push('package App.State');
|
||||
Lines.push('');
|
||||
Lines.push('/** modelId → 协议模型名(未解析出语义名的条目不在表里)。 */');
|
||||
Lines.push('val ModelNamesByModelId: Map<Long, String> = mapOf(');
|
||||
for (const R of Unique) {
|
||||
if (!R.ModelName) continue;
|
||||
Lines.push(' ' + R.ModelId + 'L to ' + JSON.stringify(R.ModelName) + ',');
|
||||
}
|
||||
Lines.push(')');
|
||||
Lines.push('');
|
||||
fs.writeFileSync(KotlinPath, Lines.join('\n'), 'utf8');
|
||||
console.log('Kotlin: ' + KotlinPath);
|
||||
|
||||
console.log(
|
||||
`modelId ${Unique.length} 个(注册点 ${Rows.length} 个),其中 ${Unique.filter((R) => R.ModelName).length} 个解析出语义名。`,
|
||||
);
|
||||
@@ -101,6 +101,10 @@ object SessionCheck {
|
||||
|
||||
println("文件 $Frames|记录 $Records|回编码一致 $Ok|不一致 $Bad|记录头截断 $HeaderErrors|其它错误 $Errors|别名表=${Session.AliasCount}")
|
||||
println("路由:已派发 ${Router.Applied}|未覆盖 ${Router.Unmapped}|失败 ${Router.Failed}|用户=${Router.Store.State.User.Uid}|屏幕=${Router.Store.State.Screen.Current}")
|
||||
val TopModels = Router.UnmappedModels.entries.sortedByDescending { it.value }.take(8)
|
||||
if (TopModels.isNotEmpty()) {
|
||||
println("未覆盖协议模型:" + TopModels.joinToString(",") { "${it.key}×${it.value}" })
|
||||
}
|
||||
val TopUnmapped = Router.UnmappedIds.entries.sortedByDescending { it.value }.take(6)
|
||||
if (TopUnmapped.isNotEmpty()) {
|
||||
println("未覆盖 id:" + TopUnmapped.joinToString(",") { "${it.key}×${it.value}" })
|
||||
|
||||
@@ -6,6 +6,7 @@ package App.Session
|
||||
|
||||
import App.State.DownlinkActions
|
||||
import App.State.DownlinkModelActions
|
||||
import App.State.ModelNamesByModelId
|
||||
import App.State.ReduceRoot
|
||||
import App.State.RootState
|
||||
import Net.Protocol.DecodedRecord
|
||||
@@ -26,6 +27,9 @@ class SessionRouter(InitialState: RootState = RootState()) {
|
||||
/** 未覆盖的 id(methodId 或 Pt item modelId)计数,自检时打印头部。 */
|
||||
val UnmappedIds: MutableMap<Long, Int> = LinkedHashMap()
|
||||
|
||||
/** 未覆盖的协议模型名计数(model_registry 能解析出名字的部分)。 */
|
||||
val UnmappedModels: MutableMap<String, Int> = LinkedHashMap()
|
||||
|
||||
/** 已应用动作的类名(调试 / 自检用)。 */
|
||||
val AppliedNames: MutableList<String> = ArrayList()
|
||||
|
||||
@@ -40,6 +44,9 @@ class SessionRouter(InitialState: RootState = RootState()) {
|
||||
if (MakeModel == null) {
|
||||
Unmapped++
|
||||
UnmappedIds[Item.Id] = (UnmappedIds[Item.Id] ?: 0) + 1
|
||||
ModelNamesByModelId[Item.Id]?.let { Name ->
|
||||
UnmappedModels[Name] = (UnmappedModels[Name] ?: 0) + 1
|
||||
}
|
||||
continue
|
||||
}
|
||||
try {
|
||||
|
||||
@@ -0,0 +1,371 @@
|
||||
// ModelRegistry.kt —— modelId → 协议模型名(生成物,不要手改)
|
||||
//
|
||||
// 由 3DTank/tools/gen_model_registry.js 静态解析各模块的 ModelReg 注册点得到:
|
||||
// this.<slot> = new X(lo, hi) + n7o(this.<slot>, ... new W(b(ModelClass), ...))
|
||||
// 语义名来自 codec_fields.json 里同模块、ModelClassLocal 相同的 codec 的 ModelName。
|
||||
package App.State
|
||||
|
||||
/** modelId → 协议模型名(未解析出语义名的条目不在表里)。 */
|
||||
val ModelNamesByModelId: Map<Long, String> = mapOf(
|
||||
3000206000964343740L to "FacebookPaymentCC",
|
||||
7245225301789542308L to "SonyProductToItemIdMapCC",
|
||||
7838366943662257567L to "AntiAddictionRealNameValidatorModelCC",
|
||||
6791702738669939115L to "LoaderBackgroundModelCC",
|
||||
4065909569861626318L to "ServerHaltEntranceCC",
|
||||
466296741210741928L to "ExternalEntranceCC",
|
||||
9117714962311439886L to "InviteEntranceCC",
|
||||
5457907984000701384L to "NotificationsByCountryModelCC",
|
||||
513176302374590130L to "CompositePartnerCC",
|
||||
2474458842977623992L to "RegistrationModelCC",
|
||||
7300500077035374704L to "EntranceResourcesCC",
|
||||
6403067749608679876L to "UserNotifierCC",
|
||||
1850509145998626828L to "UserActionsLoggerCC",
|
||||
1298753286651761171L to "PremiumNotifierCC",
|
||||
258682513334072065L to "RankNotifierData",
|
||||
4255726087158005051L to "UidNotifierData",
|
||||
3527205014716342329L to "RankLoaderCC",
|
||||
6627517808336136295L to "UidCheckCC",
|
||||
216902005816818019L to "SpectatorsModelCC",
|
||||
2085529474881905981L to "StatisticsModelCC",
|
||||
2472262160204144219L to "StatisticsDMCC",
|
||||
787936358514072261L to "StatisticsTeamCC",
|
||||
871785774630866042L to "ContainerCC",
|
||||
6768558945605412944L to "ContainerCC",
|
||||
8115862559097350286L to "ClanFriendsCC",
|
||||
7076997842038370798L to "ClanMembersCC",
|
||||
3413041240691998182L to "ClanIncomingCC",
|
||||
6220257539261493170L to "ContainerCC",
|
||||
8762499949521628954L to "ClanInfoCC",
|
||||
6048708024205731750L to "ClanOutgoingCC",
|
||||
6882547137659234022L to "ClanPermissionsCC",
|
||||
8495889215182031654L to "LicenseClanUserCC",
|
||||
7949064601138261608L to "ClanNotifierData",
|
||||
2547093126916834195L to "ClanEditPriceCC",
|
||||
6247612331185889342L to "ClanLoadingPanelCC",
|
||||
2606798949852309286L to "ClanPanelNotificationCC",
|
||||
6042266992054445914L to "ClanCreateCC",
|
||||
1115275516484037832L to "ClanUserCC",
|
||||
2023935033691193766L to "ContainerCC",
|
||||
5297988375509642470L to "ContainerCC",
|
||||
4813819753066546054L to "ContainerCC",
|
||||
649690707811173020L to "ContainerCC",
|
||||
881620222948704326L to "ContainerCC",
|
||||
1986821874929333245L to "UserAccountRemovalModelCC",
|
||||
7588919819099098108L to "BattleInviteCC",
|
||||
2855626038259597130L to "BattlePassPurchaseNotifierCC",
|
||||
7805766859473669177L to "ChallengeClientCC",
|
||||
8677996546985988365L to "StarsInfoCC",
|
||||
1987602940683756146L to "CoinInfoCC",
|
||||
3349786357139026014L to "ContractUserModelCC",
|
||||
6514486185481319524L to "CreatorTagCC",
|
||||
965113061940997187L to "CreatorTagsCC",
|
||||
7341286352739641155L to "DebtInfoCC",
|
||||
3395764563215792356L to "DonationAlertCC",
|
||||
8464700182634408374L to "UserDroppableGoldSettingsCC",
|
||||
3503382027414679973L to "TankHasGrenadeCC",
|
||||
5801057999588514016L to "ResistancesCC",
|
||||
51703991768325247L to "SaleByShopCC",
|
||||
7822174537018024954L to "GSWarningInfoModelCC",
|
||||
3152693668290247629L to "IconsProviderCC",
|
||||
6726403008449784914L to "KeysInfoCC",
|
||||
1417398836682569292L to "PaymentCC",
|
||||
1009501302658881534L to "PaymentLoaderCC",
|
||||
4748522118519647527L to "PayModeCC",
|
||||
6820688895043695030L to "AndroidPayCC",
|
||||
5156898764211343104L to "AppleAppStoreCC",
|
||||
6144768774251946863L to "BottomDescriptionCC",
|
||||
8083057704493864984L to "PayGardenPaymentCC",
|
||||
4905763060352702216L to "PayPalPayModelCC",
|
||||
7860106430129114440L to "RuStorePayCC",
|
||||
3158124838791669092L to "PaymentButtonCC",
|
||||
3620520388804703780L to "PeriodicRewardCC",
|
||||
7307951074626252633L to "PresentsSettingsCC",
|
||||
9028066746998427457L to "PaidRenameCC",
|
||||
3179861497615625536L to "UserEmailCC",
|
||||
1893408944113965505L to "UserPropertiesCC",
|
||||
5780017129265868734L to "ProfileVisibilityModelCC",
|
||||
9006361281849290638L to "UserPushNotificationSettingsModelCC",
|
||||
5895522515282663537L to "UserAchievementCC",
|
||||
7105110962241677955L to "MainQuestUserModelCC",
|
||||
5167916989664044333L to "ReferralEventUserModelCC",
|
||||
462434031489766566L to "QuestCategoriesModelCC",
|
||||
6966229709169193455L to "RewardedVideosCC",
|
||||
2767408225195389970L to "RubyInfoCC",
|
||||
1456475022890566348L to "RulesUpdateShowingCC",
|
||||
3189656422709297036L to "ItemsPackageCC",
|
||||
3714146481313901316L to "ShopCardCC",
|
||||
5172585086901412996L to "ShopCardDiscountCC",
|
||||
5817682208733860186L to "ShowcaseViewCC",
|
||||
1535852183188388854L to "BattlePassPackageCC",
|
||||
889485403566576664L to "KitBundleViewCC",
|
||||
4186634155763928467L to "CoinPackageCC",
|
||||
6484910309342792771L to "ContractShopCC",
|
||||
2789386002514731022L to "CrystalPackageCC",
|
||||
7810820263988615290L to "ShopItemAdditionalDescriptionCC",
|
||||
8458424802385151068L to "ShopDiscountCC",
|
||||
6744857484209767976L to "EmailRequiredCC",
|
||||
8853923292505519798L to "RestrictionByPayModeCC",
|
||||
6091707767266836975L to "ShopItemFeaturingCC",
|
||||
806128205466208462L to "GoldBoxPackageCC",
|
||||
6395651505226788750L to "GoodsCC",
|
||||
7786222713213880898L to "GoodsCC",
|
||||
7935550480449821024L to "IndemnityCC",
|
||||
8629995567796005946L to "KeysPackageCC",
|
||||
2103303438297476110L to "KitPackageCC",
|
||||
3985896237583754666L to "KitViewResourceCC",
|
||||
4440355418204561498L to "KitViewResourceLocalizedCC",
|
||||
8755539534673619516L to "LootBoxPackageCC",
|
||||
5004566952388327414L to "LootboxAndPaintCC",
|
||||
7949842549440362353L to "ShopItemOneTimePurchaseCC",
|
||||
6841476710481576918L to "ShopItemOneTimePurchaseCC",
|
||||
7881181052304665842L to "PaintPackageCC",
|
||||
5138794050233567698L to "PremiumPackageCC",
|
||||
693025797100292228L to "ShopItemCC",
|
||||
8048067679617995470L to "ShopCategoryCC",
|
||||
4268132139764766386L to "ShopItemCategoryCC",
|
||||
6192892501890483066L to "SpecialKitPackageCC",
|
||||
6899642532024252493L to "SingleItemKitViewCC",
|
||||
1036461397335537760L to "StarsPackageCC",
|
||||
2168011188167752629L to "ContextTutorialModelCC",
|
||||
4782427880403395260L to "LobbyTutorialModelCC",
|
||||
5256681735304582291L to "TwitchAccountModelCC",
|
||||
2252704231082045810L to "TwoStepVerificationModelCC",
|
||||
2080556892932195426L to "UserCountryCC",
|
||||
1851605205665890036L to "RewardsInfoCC",
|
||||
6071565290933648049L to "ChatCC",
|
||||
891137447706578619L to "ClanChatCC",
|
||||
868364325972433765L to "NewsShowingCC",
|
||||
6359692933626160397L to "SocialNetworkParametersCC",
|
||||
7762582768388221832L to "FlagBattleSFXCC",
|
||||
7970528904804811572L to "ArmsRaceCC",
|
||||
7401419333842694749L to "BattlefieldCC",
|
||||
2101100305743734614L to "BillboardCC",
|
||||
7267982595724632282L to "BillboardImageCC",
|
||||
5958419804845264849L to "BotNavigationCC",
|
||||
2464705242400585109L to "FacilitySphericalZoneCC",
|
||||
5242494537362061802L to "CommonFacilityCC",
|
||||
8109298281939714429L to "BattleLockingCC",
|
||||
9172358609541951983L to "MeteorStormCC",
|
||||
2057320715890332864L to "BattleMineCC",
|
||||
8980131978880882207L to "BattleStartDelayCC",
|
||||
8237913720896985151L to "DominationCC",
|
||||
5385894712778438726L to "BattleChatCC",
|
||||
6445399806655453890L to "InventoryCC",
|
||||
3364392936313775902L to "TargetHighlightingCC",
|
||||
7874327015886119466L to "JuggernautCC",
|
||||
5123834867188931684L to "KillStreakCC",
|
||||
3031864034871022835L to "PointBasedBattleCC",
|
||||
6169263949965533624L to "AssaultCC",
|
||||
2648029304025111838L to "CaptureTheFlagCC",
|
||||
2618111250571302204L to "RugbyCC",
|
||||
2269636304551395302L to "BallExplosionCC",
|
||||
6141842138930446750L to "StatusEffectBattleCC",
|
||||
7295738902766942560L to "TeamJuggernautCC",
|
||||
9114375113924783411L to "BattleTutorialCC",
|
||||
2145315487377727727L to "BattlefieldBonusesCC",
|
||||
5215232257096838692L to "BonusRegionsCC",
|
||||
3339617300033754420L to "GoldBonusCC",
|
||||
510571369984788727L to "BattleGoldBonusCC",
|
||||
8966480724474352542L to "BonusCommonCC",
|
||||
3305376498517733218L to "NotificationBonusCC",
|
||||
7484749077586587376L to "BonusLightCC",
|
||||
5968651969329902265L to "ColorAdjustCC",
|
||||
1661364280719338177L to "DemomanSfxCC",
|
||||
1475210252818583689L to "AutoSupplyRestrictionCC",
|
||||
8316165996190533130L to "DroneIndicatorCC",
|
||||
4553925959338838726L to "CrisisEffectCC",
|
||||
6424605984954645392L to "TankEffectSFXCC",
|
||||
8166810800706377715L to "ActiveAfterDeathCC",
|
||||
5779075235189237790L to "EffectDescriptionCC",
|
||||
8659306545527654916L to "DurationCC",
|
||||
3157947224668485277L to "EffectLevelCC",
|
||||
2078544146946392301L to "GrenadeCC",
|
||||
9169475278259220023L to "GrenadeCommonSFXCC",
|
||||
8082047509383246662L to "BazookaExplosionCC",
|
||||
6729312304988255776L to "FoamBazookaCC",
|
||||
2046257084008991040L to "MagnetBazookaCC",
|
||||
2360640997000854496L to "RepairGrenadeCC",
|
||||
9121776538033375678L to "SmokeBazookaCC",
|
||||
1219567052273540192L to "TeleportBazookaCC",
|
||||
3385611214280288146L to "TeslaBazookaCC",
|
||||
7336962025965257296L to "HeatTrapBazookaCC",
|
||||
4985274885530276227L to "InventoryItemCC",
|
||||
2173939047300893281L to "InventorySfxCC",
|
||||
4693095212037357021L to "BattleMapCC",
|
||||
1688856467034284073L to "MapBonusLightCC",
|
||||
4885574251230758729L to "ModerationToolInteropCC",
|
||||
3746009188563785369L to "ClassicParachuteCC",
|
||||
7894174029759745197L to "DroneParachuteCC",
|
||||
4778752313022424015L to "RadarCC",
|
||||
8889030940127130747L to "StatusEffectCC",
|
||||
5215458949573069793L to "SuppliesTutorialModelCC",
|
||||
3719295044981767592L to "HoverChassisCC",
|
||||
3535248640055401164L to "TrackedChassisCC",
|
||||
9175894397021160571L to "HullCommonCC",
|
||||
8517963146836182364L to "TankExplosionCC",
|
||||
6638615717159906637L to "TankRankUpEffectCC",
|
||||
7912514999422640843L to "SimpleArmorCC",
|
||||
3966050316678844327L to "EngineCC",
|
||||
4875657231924274329L to "BattleGearScoreCC",
|
||||
7968893209278436962L to "ColorTransformCC",
|
||||
1090112775751802907L to "FlameThrowingSFXCC",
|
||||
844040023906032853L to "FreezeSFXCC",
|
||||
5745114335268581493L to "IsisSFXCC",
|
||||
3240562023750085679L to "ClassicRailgunShootSFXCC",
|
||||
2368553937090306741L to "RailgunShootSFXCC",
|
||||
5257069799854314780L to "RicochetSFXCC",
|
||||
9094843804380507187L to "ShaftShootSFXCC",
|
||||
1748249573394295263L to "SmokyShootSFXCC",
|
||||
6623392760536649465L to "TeslaShootSFXCC",
|
||||
8191021443726008799L to "ThunderShootSFXCC",
|
||||
7692437363459179503L to "TwinsShootSFXCC",
|
||||
6641568549549264883L to "HullSmokeCC",
|
||||
2638139599268780529L to "AimAssistCC",
|
||||
7883218652624289568L to "VerticalAnglesCC",
|
||||
1237976996871886061L to "WeaponCommonCC",
|
||||
4444006910106229297L to "FlameThrowerCC",
|
||||
9105939015977236209L to "FreezeCC",
|
||||
1782954502314814229L to "GaussCC",
|
||||
3075844226211230705L to "GaussSFXCC",
|
||||
7068168268219022867L to "IsisCC",
|
||||
7266201540452328992L to "LaserPointerCC",
|
||||
1663344340563853103L to "RailgunCC",
|
||||
2544465990449691855L to "RicochetCC",
|
||||
8345039896357067195L to "ScorpioCC",
|
||||
313670832122918648L to "ScorpioSfxCC",
|
||||
732152133982227177L to "ShaftCC",
|
||||
7700337090161867199L to "ShotCC",
|
||||
2172139419072369403L to "SmokyCC",
|
||||
2235965200289058033L to "SplashCC",
|
||||
2057487026153364495L to "StreamWeaponCC",
|
||||
6855550629220038001L to "TerminatorCC",
|
||||
6210980129845088505L to "TerminatorSFXCC",
|
||||
573691036321759779L to "TeslaCC",
|
||||
5194655544597440038L to "GlobeLightningCC",
|
||||
1092307613749405757L to "ThunderCC",
|
||||
1130027771466355435L to "CassetteShootingCC",
|
||||
8212033390179430143L to "TsunamiCC",
|
||||
5604117679922858821L to "TsunamiShootSFXCC",
|
||||
2803166101624878775L to "RotatingTurretCC",
|
||||
8384919755051909877L to "TwinsCC",
|
||||
6384655869260380731L to "WeaponWeakeningCC",
|
||||
6642061974307112160L to "ArtilleryCC",
|
||||
8754295211549969729L to "ArtilleryElevatingBarrelCC",
|
||||
4499337062875496540L to "ArtillerySfxCC",
|
||||
7235761383767133268L to "BonkWeaponCC",
|
||||
7022952987062772048L to "MachineGunCC",
|
||||
8784137528831277530L to "MachineGunSFXCC",
|
||||
4045733714401632272L to "RocketLauncherCC",
|
||||
6596471917520283782L to "RocketLauncherSfxCC",
|
||||
6528115483341986769L to "ShotGunAimingCC",
|
||||
770654516236272028L to "ShotgunSFXCC",
|
||||
5867914731324680416L to "ShotgunShotCC",
|
||||
171896995500198357L to "TeamLightCC",
|
||||
6455142242556985012L to "UltimateCC",
|
||||
2660691061343351669L to "DeferredOverdriveCC",
|
||||
1500120709087433677L to "AresUltimateCC",
|
||||
7899544742191273818L to "AresUltimateProjectileCC",
|
||||
6210079079280471693L to "CrusaderEffectCC",
|
||||
3907559303616283277L to "CrusaderUltimateCC",
|
||||
6590506277285284269L to "DictatorUltimateCC",
|
||||
6668012086939621459L to "HopperUltimateCC",
|
||||
7214131179703676563L to "HornetUltimateCC",
|
||||
920233600808088339L to "BattleUltimateRadarCC",
|
||||
4406836274649365203L to "HunterUltimateCC",
|
||||
7257138969919985658L to "TankStunCC",
|
||||
887431150717814637L to "JuggernautUltimateCC",
|
||||
1997576349992148053L to "MammothUltimateCC",
|
||||
4658911146867546991L to "PaladinAuraVisualCC",
|
||||
973781565169577734L to "TankSuperchargeCC",
|
||||
8738779591519195597L to "TitanUltimateGeneratorCC",
|
||||
7551602984488625261L to "VikingUltimateCC",
|
||||
3137250957878113145L to "WaspUltimateBombCC",
|
||||
4388979890807820236L to "NuclearRechargeCC",
|
||||
5055746953759097716L to "BossStateCC",
|
||||
3317051239895575278L to "TankConfigurationCC",
|
||||
1838248562944554574L to "TankCritCC",
|
||||
3248199557469599724L to "DamageIndicatorCC",
|
||||
1767155986856291742L to "TankPointersCC",
|
||||
5543162332469864498L to "TankInfoCC",
|
||||
260111248825415414L to "BattleBotControlCC",
|
||||
2560105521800470759L to "RemoteTankStateUpdatingCC",
|
||||
7127632667958387441L to "TankResistancesCC",
|
||||
2104999573658810427L to "TankSpawnerCC",
|
||||
7163171834328288344L to "SpeedCharacteristicsCC",
|
||||
2271787261806799336L to "SuicideCC",
|
||||
2150802556932617880L to "TankCC",
|
||||
4206032257972775630L to "TurnOverCC",
|
||||
6589716392600418185L to "AvailableForAllCC",
|
||||
9168562037264832365L to "PassToShopCC",
|
||||
3122964582367261689L to "TemperatureCC",
|
||||
1259328549938381181L to "UpgradeGarageItemCC",
|
||||
3730185794267514852L to "GaragePreviewModelCC",
|
||||
2769268442698022653L to "BuyableCC",
|
||||
2114179554921095892L to "ItemCategoryCC",
|
||||
120961863156462946L to "CountableItemCC",
|
||||
7109632754421804521L to "DelayMountCategoryCC",
|
||||
5952355564848177159L to "DescriptionMediaCC",
|
||||
7391892068905080676L to "ItemDevicesCC",
|
||||
7640081207058999117L to "DevicePropertiesCC",
|
||||
2951667042968033849L to "DiscountCC",
|
||||
4692610703461978415L to "ProAbonementRankDiscountCC",
|
||||
1534251830977989099L to "EmissionColorCC",
|
||||
6111098822553419499L to "BazookaSupplyCC",
|
||||
1865478986390468300L to "GroupedCC",
|
||||
3438505192580052999L to "ItemModelCC",
|
||||
7472019549033825785L to "Item3DCC",
|
||||
213661725715747381L to "ItemEnabledForPartnerCC",
|
||||
5219530271535770658L to "GarageKitCC",
|
||||
4309274349580876968L to "ItemSaleByKitCC",
|
||||
2494628067134376039L to "ModificationCC",
|
||||
6430862429652735997L to "Object3DSCC",
|
||||
1139677084511624062L to "PremiumItemCC",
|
||||
4245000165576407500L to "ItemPropertiesCC",
|
||||
658797348514407988L to "ItemRarityCC",
|
||||
8153652471440648359L to "RelativePropertiesCC",
|
||||
5724298620794499870L to "MountedResistancesCC",
|
||||
6628468327090974523L to "ResistanceBackgroundCC",
|
||||
712090483864327130L to "HullSkinModelCC",
|
||||
481504601146841174L to "TankPartSkinModelCC",
|
||||
4234781414353452329L to "TurretSkinModelCC",
|
||||
3893855999545616334L to "TemporaryItemCC",
|
||||
4743567393313674375L to "UpgradeParamsCC",
|
||||
6117306895090150422L to "ItemViewCategoryCC",
|
||||
5738770490413536673L to "VisibleCC",
|
||||
4817031001612283794L to "ProtectionSlotsCC",
|
||||
701801920209410257L to "UserItemFavoriteCC",
|
||||
2433120830275396692L to "PresentsCC",
|
||||
4038465370530850950L to "HullEngineTypeCC",
|
||||
7563487786199453443L to "OverdriveDescriptionCC",
|
||||
5988756521593027564L to "RelatedResistanceModuleCC",
|
||||
149643551432886459L to "TurretMechanismCC",
|
||||
5207857306014573244L to "AvailableSkinsCC",
|
||||
905970599512839002L to "MountedSkinCC",
|
||||
834829861153964627L to "MountedSkinCC",
|
||||
1164458258646872337L to "AvailableShotSkinsCC",
|
||||
6680653332718076818L to "SkinPreviewCC",
|
||||
2108103923322474513L to "CaptchaCC",
|
||||
7175193612424807833L to "ServerHaltCC",
|
||||
4068618447512888231L to "ColoringCC",
|
||||
5255782026414758079L to "LobbyLayoutModelCC",
|
||||
7272122855372520854L to "FriendsCC",
|
||||
7286757952195114814L to "UserContainerCC",
|
||||
433350986715773690L to "UserContainerCC",
|
||||
6666386288157781248L to "UserContainerCC",
|
||||
6165842138816273510L to "UserContainerCC",
|
||||
4806152428066355053L to "ContainersInfoCC",
|
||||
2396069765491056127L to "UserReportsModelCC",
|
||||
5111180848188020047L to "NotificationEnabledCC",
|
||||
2913056477936031270L to "BattleInfoCC",
|
||||
994751080759166914L to "BattleDMInfoCC",
|
||||
6282101613166902704L to "BattleParamInfoCC",
|
||||
6652129902375288094L to "TeamBattleInfoCC",
|
||||
5413550891500581680L to "ClassicBattleSelectModelCC",
|
||||
8618289906968528240L to "BattleCreateCC",
|
||||
7185560430911351668L to "FormatBattleOptionsCC",
|
||||
5412538083071671358L to "MapInfoCC",
|
||||
104562115846147942L to "MatchmakingGroupCC",
|
||||
5932347630672640435L to "MatchmakingLayoutCC",
|
||||
3935107155251354407L to "DescriptionModelCC",
|
||||
8032192927455575509L to "TimePeriodModelCC",
|
||||
)
|
||||
Reference in new issue
Block a user