Skip to content

Commit d252743

Browse files
authored
Merge pull request #13 from blastorg/left-buyzone-with
left buyzone with
2 parents ca42338 + 98fee4c commit d252743

File tree

4 files changed

+64
-0
lines changed

4 files changed

+64
-0
lines changed

src/log-parser.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
connectionParser,
66
entityTriggeredParser,
77
killedParser,
8+
leftBuyzoneWithParser,
89
playerUpdateParser,
910
projectileSpawnedParser,
1011
purchasedParser,
@@ -25,6 +26,7 @@ import {
2526
ConnectionEvent,
2627
EntityTriggeredEvent,
2728
KilledEvent,
29+
LeftBuyzoneWithEvent,
2830
PlayerUpdateEvent,
2931
ProjectileSpawnedEvent,
3032
PurchasedEvent,
@@ -48,6 +50,7 @@ export const defaultParsers = [
4850
connectionParser,
4951
entityTriggeredParser,
5052
killedParser,
53+
leftBuyzoneWithParser,
5154
playerUpdateParser,
5255
projectileSpawnedParser,
5356
purchasedParser,
@@ -71,6 +74,7 @@ export type Events =
7174
| ConnectionEvent
7275
| EntityTriggeredEvent
7376
| KilledEvent
77+
| LeftBuyzoneWithEvent
7478
| PlayerUpdateEvent
7579
| ProjectileSpawnedEvent
7680
| PurchasedEvent

src/parsers/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export * from "./attacked";
55
export * from "./connection";
66
export * from "./entity-triggered";
77
export * from "./killed";
8+
export * from "./left-buyzone-with";
89
export * from "./player-update";
910
export * from "./projectile-spawned";
1011
export * from "./purchased";

src/parsers/left-buyzone-with.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { IBaseEvent, defineParser } from "./parser";
2+
import { concatPattern } from "../helpers";
3+
import { Entity, entityRe, parseEntity } from "../entities";
4+
5+
export type LeftBuyzoneWithEventPayload = {
6+
entity: Entity;
7+
kind: string;
8+
value: string[];
9+
};
10+
11+
export type LeftBuyzoneWithEvent = IBaseEvent<"left_buyzone_with", LeftBuyzoneWithEventPayload>;
12+
13+
// eslint-disable-next-line max-len
14+
// "Player<93><STEAM_1:0:12345><CT>" left buyzone with [ weapon_knife_butterfly weapon_usp_silencer kevlar(100) ]
15+
export const leftBuyzoneWithParser = defineParser<LeftBuyzoneWithEvent>({
16+
type: "left_buyzone_with",
17+
18+
patterns: [concatPattern`^(?<entity>${entityRe}) left buyzone with (?<value>\\[.*\\])$`],
19+
20+
parse({ entity, kind = "left_buyzone_with", value }) {
21+
return {
22+
entity: parseEntity(entity),
23+
kind,
24+
value: value.trim().replaceAll("[", "").replaceAll("]", "").split(" ").slice(1, -1),
25+
};
26+
},
27+
});

tests/left_buyzone_with.test.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { ok } from "assert";
2+
import { parse } from "../src";
3+
import { getEventString } from "./helpers/getEventString";
4+
import { counterTerroristTeam } from "./helpers/teams";
5+
6+
describe("left buyzone with", (): void => {
7+
it("should correctly parse", () => {
8+
const log = getEventString(
9+
'"Player<93><[U:1:230970467]><CT>" left buyzone with [ weapon_knife_butterfly weapon_usp_silencer kevlar(100) ]',
10+
);
11+
12+
const result = parse(log);
13+
14+
ok(result !== undefined, `Failed parse log: ${log}`);
15+
16+
expect(result.type).toBe("left_buyzone_with");
17+
expect(result.payload).toMatchObject({
18+
entity: {
19+
kind: "player",
20+
21+
entityId: 93,
22+
steamId: "76561198191236195",
23+
24+
name: "Player",
25+
26+
team: counterTerroristTeam,
27+
},
28+
kind: "left_buyzone_with",
29+
value: ["weapon_knife_butterfly", "weapon_usp_silencer", "kevlar(100)"],
30+
});
31+
});
32+
});

0 commit comments

Comments
 (0)