@ianlucas/cs2-lib-inspect 5.5.2 → 5.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Copyright (c) candyboyz, Ian Lucas. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { CS2EconomyInstance, CS2_MIN_KEYCHAIN_SEED, CS2_MIN_SEED, CS2_MIN_STICKER_ROTATION, CS2_MIN_STICKER_WEAR, CS2_MIN_WEAR, CS2_STICKER_WEAR_FACTOR, CS2_WEAR_FACTOR, assert, ensure } from "@ianlucas/cs2-lib";
|
|
5
|
+
import { CS2EconomyInstance, CS2_MAX_KEYCHAIN_SEED, CS2_MAX_STICKER_ROTATION, CS2_MAX_STICKER_WEAR, CS2_MIN_KEYCHAIN_SEED, CS2_MIN_SEED, CS2_MIN_STICKER_ROTATION, CS2_MIN_STICKER_WEAR, CS2_MIN_WEAR, CS2_STICKER_WEAR_FACTOR, CS2_WEAR_FACTOR, assert, ensure } from "@ianlucas/cs2-lib";
|
|
6
6
|
import { CS2_PREVIEW_HAS_STICKERS } from "./constants.js";
|
|
7
|
-
import { truncate } from "./utils.js";
|
|
7
|
+
import { clamp, truncate } from "./utils.js";
|
|
8
8
|
export function parseGCInventoryItem(economy, data) {
|
|
9
9
|
const { defindex, paintindex, paintseed, floatvalue, killeatervalue, customname, musicindex, stickers, keychains } = data;
|
|
10
10
|
let economyItem = economy.itemsAsArray.find((item) => item.def === defindex);
|
|
@@ -31,15 +31,18 @@ export function parseGCInventoryItem(economy, data) {
|
|
|
31
31
|
}
|
|
32
32
|
assert(economyItem !== undefined);
|
|
33
33
|
if (economyItem.isKeychain()) {
|
|
34
|
+
const seed = keychains[0]?.pattern ?? paintseed;
|
|
34
35
|
return stripMinValues({
|
|
35
36
|
id: economyItem.id,
|
|
36
|
-
seed:
|
|
37
|
+
seed: seed !== undefined ? clamp(seed, CS2_MIN_KEYCHAIN_SEED, CS2_MAX_KEYCHAIN_SEED) : undefined
|
|
37
38
|
});
|
|
38
39
|
}
|
|
39
40
|
return stripMinValues({
|
|
40
41
|
id: economyItem.id,
|
|
41
42
|
seed: economyItem.hasSeed() ? paintseed : undefined,
|
|
42
|
-
wear: economyItem.hasWear() && floatvalue !== undefined
|
|
43
|
+
wear: economyItem.hasWear() && floatvalue !== undefined
|
|
44
|
+
? clamp(truncate(floatvalue, CS2_WEAR_FACTOR), economyItem.getMinimumWear(), economyItem.getMaximumWear())
|
|
45
|
+
: undefined,
|
|
43
46
|
statTrak: economyItem.hasStatTrak() ? killeatervalue : undefined,
|
|
44
47
|
nameTag: economyItem.hasNametag() ? customname : undefined,
|
|
45
48
|
keychains: economyItem.hasKeychains() && keychains.length > 0
|
|
@@ -49,7 +52,9 @@ export function parseGCInventoryItem(economy, data) {
|
|
|
49
52
|
id: ensure(economy.itemsAsArray.find((item) => item.isKeychain() &&
|
|
50
53
|
item.index === stickerId &&
|
|
51
54
|
item.stickerIndex === wrappedSticker)?.id),
|
|
52
|
-
seed: pattern
|
|
55
|
+
seed: pattern !== undefined
|
|
56
|
+
? clamp(pattern, CS2_MIN_KEYCHAIN_SEED, CS2_MAX_KEYCHAIN_SEED)
|
|
57
|
+
: undefined,
|
|
53
58
|
x: offsetX,
|
|
54
59
|
y: offsetY,
|
|
55
60
|
z: offsetZ
|
|
@@ -62,9 +67,13 @@ export function parseGCInventoryItem(economy, data) {
|
|
|
62
67
|
{
|
|
63
68
|
id: ensure(economy.itemsAsArray.find((item) => item.isSticker() && item.index === stickerId)
|
|
64
69
|
?.id),
|
|
65
|
-
rotation: rotation !== undefined
|
|
70
|
+
rotation: rotation !== undefined
|
|
71
|
+
? clamp(((Math.trunc(rotation) % 360) + 360) % 360, CS2_MIN_STICKER_ROTATION, CS2_MAX_STICKER_ROTATION)
|
|
72
|
+
: undefined,
|
|
66
73
|
schema: slot,
|
|
67
|
-
wear: wear !== undefined
|
|
74
|
+
wear: wear !== undefined
|
|
75
|
+
? clamp(truncate(wear, CS2_STICKER_WEAR_FACTOR), CS2_MIN_STICKER_WEAR, CS2_MAX_STICKER_WEAR)
|
|
76
|
+
: undefined,
|
|
68
77
|
x: offsetX,
|
|
69
78
|
y: offsetY
|
|
70
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-gc-inventory-item.js","sourceRoot":"","sources":["../src/parse-gc-inventory-item.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAEH,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACZ,wBAAwB,EACxB,oBAAoB,EACpB,YAAY,EACZ,uBAAuB,EACvB,eAAe,EACf,MAAM,EACN,MAAM,EACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-gc-inventory-item.js","sourceRoot":"","sources":["../src/parse-gc-inventory-item.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export declare function floatToBytes(floatValue: number): number;
|
|
2
2
|
export declare function bytesToFloat(byteValue: number): number;
|
|
3
3
|
export declare function truncate(value: number, factor: number): number;
|
|
4
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
package/dist/utils.js
CHANGED
|
@@ -17,4 +17,7 @@ export function bytesToFloat(byteValue) {
|
|
|
17
17
|
export function truncate(value, factor) {
|
|
18
18
|
return parseFloat(String(value).substring(0, String(factor).length));
|
|
19
19
|
}
|
|
20
|
+
export function clamp(value, min, max) {
|
|
21
|
+
return Math.min(Math.max(value, min), max);
|
|
22
|
+
}
|
|
20
23
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC3C,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IACvC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;IAC3B,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC1C,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IACrC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACzB,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,MAAc;IAClD,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACzE,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC3C,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IACvC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;IAC3B,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC1C,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IACrC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACzB,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,MAAc;IAClD,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC"}
|
package/package.json
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@protobuf-ts/runtime": "^2.11.1",
|
|
32
32
|
"buffer": "^6.0.3",
|
|
33
33
|
"crc-32": "^1.2.2",
|
|
34
|
-
"vitest": "^4.1.
|
|
34
|
+
"vitest": "^4.1.6"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"@ianlucas/cs2-lib": "^7.0.0"
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"engines": {
|
|
47
47
|
"node": ">=20"
|
|
48
48
|
},
|
|
49
|
-
"version": "5.5.
|
|
49
|
+
"version": "5.5.3"
|
|
50
50
|
}
|