@panda0day/fivex 0.3.1 → 0.4.0

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.
Files changed (149) hide show
  1. package/dist/client/core.d.ts +10 -0
  2. package/dist/client/core.d.ts.map +1 -1
  3. package/dist/client/core.js +10 -2
  4. package/dist/client/core.js.map +1 -1
  5. package/dist/client/entities/blip.d.ts +14 -0
  6. package/dist/client/entities/blip.d.ts.map +1 -0
  7. package/dist/client/entities/blip.js +33 -0
  8. package/dist/client/entities/blip.js.map +1 -0
  9. package/dist/client/entities/checkpoint.d.ts +8 -0
  10. package/dist/client/entities/checkpoint.d.ts.map +1 -0
  11. package/dist/client/entities/checkpoint.js +15 -0
  12. package/dist/client/entities/checkpoint.js.map +1 -0
  13. package/dist/client/entities/colshape.d.ts +20 -0
  14. package/dist/client/entities/colshape.d.ts.map +1 -0
  15. package/dist/client/entities/colshape.js +36 -0
  16. package/dist/client/entities/colshape.js.map +1 -0
  17. package/dist/client/entities/label.d.ts +7 -0
  18. package/dist/client/entities/label.d.ts.map +1 -0
  19. package/dist/client/entities/label.js +28 -0
  20. package/dist/client/entities/label.js.map +1 -0
  21. package/dist/client/entities/marker.d.ts +7 -0
  22. package/dist/client/entities/marker.d.ts.map +1 -0
  23. package/dist/client/entities/marker.js +14 -0
  24. package/dist/client/entities/marker.js.map +1 -0
  25. package/dist/client/entities/pickup.d.ts +9 -0
  26. package/dist/client/entities/pickup.d.ts.map +1 -0
  27. package/dist/client/entities/pickup.js +29 -0
  28. package/dist/client/entities/pickup.js.map +1 -0
  29. package/dist/client/managers/blip-pool.d.ts +15 -0
  30. package/dist/client/managers/blip-pool.d.ts.map +1 -0
  31. package/dist/client/managers/blip-pool.js +31 -0
  32. package/dist/client/managers/blip-pool.js.map +1 -0
  33. package/dist/client/managers/checkpoint-pool.d.ts +10 -0
  34. package/dist/client/managers/checkpoint-pool.d.ts.map +1 -0
  35. package/dist/client/managers/checkpoint-pool.js +17 -0
  36. package/dist/client/managers/checkpoint-pool.js.map +1 -0
  37. package/dist/client/managers/colshape-pool.d.ts +14 -0
  38. package/dist/client/managers/colshape-pool.d.ts.map +1 -0
  39. package/dist/client/managers/colshape-pool.js +52 -0
  40. package/dist/client/managers/colshape-pool.js.map +1 -0
  41. package/dist/client/managers/label-pool.d.ts +12 -0
  42. package/dist/client/managers/label-pool.d.ts.map +1 -0
  43. package/dist/client/managers/label-pool.js +21 -0
  44. package/dist/client/managers/label-pool.js.map +1 -0
  45. package/dist/client/managers/marker-pool.d.ts +12 -0
  46. package/dist/client/managers/marker-pool.d.ts.map +1 -0
  47. package/dist/client/managers/marker-pool.js +21 -0
  48. package/dist/client/managers/marker-pool.js.map +1 -0
  49. package/dist/client/managers/orchestration.d.ts +13 -0
  50. package/dist/client/managers/orchestration.d.ts.map +1 -0
  51. package/dist/client/managers/orchestration.js +27 -0
  52. package/dist/client/managers/orchestration.js.map +1 -0
  53. package/dist/client/managers/pickup-pool.d.ts +10 -0
  54. package/dist/client/managers/pickup-pool.d.ts.map +1 -0
  55. package/dist/client/managers/pickup-pool.js +17 -0
  56. package/dist/client/managers/pickup-pool.js.map +1 -0
  57. package/dist/client/managers/tick-orchestration.d.ts +16 -0
  58. package/dist/client/managers/tick-orchestration.d.ts.map +1 -0
  59. package/dist/client/managers/tick-orchestration.js +39 -0
  60. package/dist/client/managers/tick-orchestration.js.map +1 -0
  61. package/dist/server/core.d.ts +11 -3
  62. package/dist/server/core.d.ts.map +1 -1
  63. package/dist/server/core.js +11 -3
  64. package/dist/server/core.js.map +1 -1
  65. package/dist/server/entities/blip.d.ts +17 -0
  66. package/dist/server/entities/blip.d.ts.map +1 -0
  67. package/dist/server/entities/blip.js +39 -0
  68. package/dist/server/entities/blip.js.map +1 -0
  69. package/dist/server/entities/checkpoint.d.ts +16 -0
  70. package/dist/server/entities/checkpoint.d.ts.map +1 -0
  71. package/dist/server/entities/checkpoint.js +23 -0
  72. package/dist/server/entities/checkpoint.js.map +1 -0
  73. package/dist/server/entities/colshape.d.ts +16 -0
  74. package/dist/server/entities/colshape.d.ts.map +1 -0
  75. package/dist/server/entities/colshape.js +15 -0
  76. package/dist/server/entities/colshape.js.map +1 -0
  77. package/dist/server/entities/label.d.ts +21 -0
  78. package/dist/server/entities/label.d.ts.map +1 -0
  79. package/dist/server/entities/label.js +31 -0
  80. package/dist/server/entities/label.js.map +1 -0
  81. package/dist/server/entities/marker.d.ts +22 -0
  82. package/dist/server/entities/marker.d.ts.map +1 -0
  83. package/dist/server/entities/marker.js +39 -0
  84. package/dist/server/entities/marker.js.map +1 -0
  85. package/dist/server/entities/pickup.d.ts +16 -0
  86. package/dist/server/entities/pickup.d.ts.map +1 -0
  87. package/dist/server/entities/pickup.js +23 -0
  88. package/dist/server/entities/pickup.js.map +1 -0
  89. package/dist/server/managers/blip-pool.d.ts +14 -0
  90. package/dist/server/managers/blip-pool.d.ts.map +1 -0
  91. package/dist/server/managers/blip-pool.js +16 -0
  92. package/dist/server/managers/blip-pool.js.map +1 -0
  93. package/dist/server/managers/checkpoint-pool.d.ts +18 -0
  94. package/dist/server/managers/checkpoint-pool.d.ts.map +1 -0
  95. package/dist/server/managers/checkpoint-pool.js +32 -0
  96. package/dist/server/managers/checkpoint-pool.js.map +1 -0
  97. package/dist/server/managers/colshape-pool.d.ts +17 -0
  98. package/dist/server/managers/colshape-pool.d.ts.map +1 -0
  99. package/dist/server/managers/colshape-pool.js +76 -0
  100. package/dist/server/managers/colshape-pool.js.map +1 -0
  101. package/dist/server/managers/label-pool.d.ts +10 -0
  102. package/dist/server/managers/label-pool.d.ts.map +1 -0
  103. package/dist/server/managers/label-pool.js +16 -0
  104. package/dist/server/managers/label-pool.js.map +1 -0
  105. package/dist/server/managers/marker-pool.d.ts +10 -0
  106. package/dist/server/managers/marker-pool.d.ts.map +1 -0
  107. package/dist/server/managers/marker-pool.js +16 -0
  108. package/dist/server/managers/marker-pool.js.map +1 -0
  109. package/dist/server/managers/orchestration.d.ts +14 -0
  110. package/dist/server/managers/orchestration.d.ts.map +1 -0
  111. package/dist/server/managers/orchestration.js +23 -0
  112. package/dist/server/managers/orchestration.js.map +1 -0
  113. package/dist/server/managers/pickup-pool.d.ts +18 -0
  114. package/dist/server/managers/pickup-pool.d.ts.map +1 -0
  115. package/dist/server/managers/pickup-pool.js +32 -0
  116. package/dist/server/managers/pickup-pool.js.map +1 -0
  117. package/dist/shared/checkpoints.d.ts +17 -0
  118. package/dist/shared/checkpoints.d.ts.map +1 -0
  119. package/dist/shared/checkpoints.js +6 -0
  120. package/dist/shared/checkpoints.js.map +1 -0
  121. package/dist/shared/colshape.d.ts +10 -0
  122. package/dist/shared/colshape.d.ts.map +1 -0
  123. package/dist/shared/colshape.js +22 -0
  124. package/dist/shared/colshape.js.map +1 -0
  125. package/dist/shared/labels.d.ts +18 -0
  126. package/dist/shared/labels.d.ts.map +1 -0
  127. package/dist/shared/labels.js +6 -0
  128. package/dist/shared/labels.js.map +1 -0
  129. package/dist/shared/markers.d.ts +21 -0
  130. package/dist/shared/markers.d.ts.map +1 -0
  131. package/dist/shared/markers.js +6 -0
  132. package/dist/shared/markers.js.map +1 -0
  133. package/dist/shared/orchestration.d.ts +9 -0
  134. package/dist/shared/orchestration.d.ts.map +1 -0
  135. package/dist/shared/orchestration.js +2 -0
  136. package/dist/shared/orchestration.js.map +1 -0
  137. package/dist/shared/pickups.d.ts +10 -0
  138. package/dist/shared/pickups.d.ts.map +1 -0
  139. package/dist/shared/pickups.js +6 -0
  140. package/dist/shared/pickups.js.map +1 -0
  141. package/package.json +1 -1
  142. package/dist/client/blips-internal.d.ts +0 -2
  143. package/dist/client/blips-internal.d.ts.map +0 -1
  144. package/dist/client/blips-internal.js +0 -32
  145. package/dist/client/blips-internal.js.map +0 -1
  146. package/dist/server/blips.d.ts +0 -9
  147. package/dist/server/blips.d.ts.map +0 -1
  148. package/dist/server/blips.js +0 -25
  149. package/dist/server/blips.js.map +0 -1
@@ -0,0 +1,18 @@
1
+ import { type CheckpointData } from "../../shared/checkpoints";
2
+ import { Checkpoint } from "../entities/checkpoint";
3
+ import type { Player } from "../entities/player";
4
+ import type { ColshapePool } from "./colshape-pool";
5
+ import { ServerOrchestration } from "./orchestration";
6
+ interface CheckpointOptions extends Omit<CheckpointData, "id"> {
7
+ onEnter?: (player: Player) => void;
8
+ removeOnEnter?: boolean;
9
+ }
10
+ export declare class CheckpointPool extends ServerOrchestration<CheckpointData, Checkpoint> {
11
+ private readonly colshapes;
12
+ protected readonly net: import("../../shared/orchestration").OrchestrationNet;
13
+ constructor(colshapes: ColshapePool);
14
+ protected wrap(target: number, data: CheckpointData, _onChange: () => void, onRemove: () => void): Checkpoint;
15
+ create(options: CheckpointOptions): Checkpoint;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=checkpoint-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint-pool.d.ts","sourceRoot":"","sources":["../../../src/server/managers/checkpoint-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,iBAAkB,SAAQ,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;IAC7D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,cAAe,SAAQ,mBAAmB,CACtD,cAAc,EACd,UAAU,CACV;IAGY,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,SAAS,CAAC,QAAQ,CAAC,GAAG,wDAAiB;gBAEV,SAAS,EAAE,YAAY;IAIpD,SAAS,CAAC,IAAI,CACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,MAAM,IAAI,EACrB,QAAQ,EAAE,MAAM,IAAI,GAClB,UAAU;IAIb,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU;CAmB9C"}
@@ -0,0 +1,32 @@
1
+ import { CheckpointNet } from "../../shared/checkpoints";
2
+ import { Checkpoint } from "../entities/checkpoint";
3
+ import { ServerOrchestration } from "./orchestration";
4
+ export class CheckpointPool extends ServerOrchestration {
5
+ colshapes;
6
+ net = CheckpointNet;
7
+ constructor(colshapes) {
8
+ super();
9
+ this.colshapes = colshapes;
10
+ }
11
+ wrap(target, data, _onChange, onRemove) {
12
+ return new Checkpoint(target, data, onRemove);
13
+ }
14
+ create(options) {
15
+ const { onEnter, removeOnEnter = false, ...data } = options;
16
+ const checkpoint = this.spawn(-1, data);
17
+ checkpoint.onEnter = onEnter;
18
+ const shape = this.colshapes.create({
19
+ kind: "sphere",
20
+ center: data.coords,
21
+ radius: data.radius ?? 3,
22
+ onEnter: (_s, player) => {
23
+ checkpoint.onEnter?.(player);
24
+ if (removeOnEnter)
25
+ checkpoint.remove();
26
+ },
27
+ });
28
+ checkpoint.attachColshape(shape);
29
+ return checkpoint;
30
+ }
31
+ }
32
+ //# sourceMappingURL=checkpoint-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint-pool.js","sourceRoot":"","sources":["../../../src/server/managers/checkpoint-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAOtD,MAAM,OAAO,cAAe,SAAQ,mBAGnC;IAG6B;IAFV,GAAG,GAAG,aAAa,CAAC;IAEvC,YAA6B,SAAuB;QACnD,KAAK,EAAE,CAAC;QADoB,cAAS,GAAT,SAAS,CAAc;IAEpD,CAAC;IAES,IAAI,CACb,MAAc,EACd,IAAoB,EACpB,SAAqB,EACrB,QAAoB;QAEpB,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,OAA0B;QAChC,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAE5D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACxC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QAE7B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACnC,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;YACxB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;gBACvB,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC7B,IAAI,aAAa;oBAAE,UAAU,CAAC,MAAM,EAAE,CAAC;YACxC,CAAC;SACD,CAAC,CAAC;QACH,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAEjC,OAAO,UAAU,CAAC;IACnB,CAAC;CACD"}
@@ -0,0 +1,17 @@
1
+ import { Pool } from "../../shared/pool-base";
2
+ import { Colshape, type ColshapeOptions } from "../entities/colshape";
3
+ export declare class ColshapePool extends Pool<Colshape> {
4
+ private shapes;
5
+ private nextId;
6
+ private interval;
7
+ private readonly rateMs;
8
+ protected ids(): number[];
9
+ protected wrap(id: number): Colshape;
10
+ at(id: number): Colshape | undefined;
11
+ create(options: ColshapeOptions): Colshape;
12
+ remove(id: number): void;
13
+ handleDropped(source: number): void;
14
+ private ensureLoop;
15
+ private check;
16
+ }
17
+ //# sourceMappingURL=colshape-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colshape-pool.d.ts","sourceRoot":"","sources":["../../../src/server/managers/colshape-pool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGtE,qBAAa,YAAa,SAAQ,IAAI,CAAC,QAAQ,CAAC;IAC/C,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,SAAS,CAAC,GAAG,IAAI,MAAM,EAAE;IAIzB,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ;IAMpC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIpC,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ;IAO1C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQxB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQnC,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,KAAK;CA8Bb"}
@@ -0,0 +1,76 @@
1
+ import { Vector3 } from "../../shared";
2
+ import { isInsideShape } from "../../shared/colshape";
3
+ import { Pool } from "../../shared/pool-base";
4
+ import { Colshape } from "../entities/colshape";
5
+ import { Player } from "../entities/player";
6
+ export class ColshapePool extends Pool {
7
+ shapes = new Map();
8
+ nextId = 1;
9
+ interval = null;
10
+ rateMs = 300;
11
+ ids() {
12
+ return [...this.shapes.keys()];
13
+ }
14
+ wrap(id) {
15
+ const shape = this.shapes.get(id);
16
+ if (!shape)
17
+ throw new Error(`[fx] colshape ${id} not found in pool`);
18
+ return shape;
19
+ }
20
+ at(id) {
21
+ return this.shapes.get(id);
22
+ }
23
+ create(options) {
24
+ const shape = new Colshape(this.nextId++, options, (id) => this.remove(id));
25
+ this.shapes.set(shape.id, shape);
26
+ this.ensureLoop();
27
+ return shape;
28
+ }
29
+ remove(id) {
30
+ this.shapes.delete(id);
31
+ if (this.shapes.size === 0 && this.interval !== null) {
32
+ clearInterval(this.interval);
33
+ this.interval = null;
34
+ }
35
+ }
36
+ handleDropped(source) {
37
+ for (const shape of this.shapes.values()) {
38
+ if (shape.inside.delete(source)) {
39
+ shape.options.onExit?.(shape, new Player(source));
40
+ }
41
+ }
42
+ }
43
+ ensureLoop() {
44
+ if (this.interval !== null)
45
+ return;
46
+ this.interval = setInterval(() => this.check(), this.rateMs);
47
+ }
48
+ check() {
49
+ const players = getPlayers().map(Number);
50
+ for (const shape of this.shapes.values()) {
51
+ for (const src of players) {
52
+ const ped = GetPlayerPed(String(src));
53
+ if (ped === 0)
54
+ continue;
55
+ if (shape.options.dimension !== undefined &&
56
+ GetPlayerRoutingBucket(String(src)) !== shape.options.dimension) {
57
+ if (shape.inside.delete(src))
58
+ shape.options.onExit?.(shape, new Player(src));
59
+ continue;
60
+ }
61
+ const coords = Vector3.from(GetEntityCoords(ped));
62
+ const inside = isInsideShape(shape.options, coords);
63
+ const was = shape.inside.has(src);
64
+ if (inside && !was) {
65
+ shape.inside.add(src);
66
+ shape.options.onEnter?.(shape, new Player(src));
67
+ }
68
+ else if (!inside && was) {
69
+ shape.inside.delete(src);
70
+ shape.options.onExit?.(shape, new Player(src));
71
+ }
72
+ }
73
+ }
74
+ }
75
+ }
76
+ //# sourceMappingURL=colshape-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colshape-pool.js","sourceRoot":"","sources":["../../../src/server/managers/colshape-pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type LabelData } from "../../shared/labels";
2
+ import { Label } from "../entities/label";
3
+ import { ServerOrchestration } from "./orchestration";
4
+ export declare class LabelPool extends ServerOrchestration<LabelData, Label> {
5
+ protected readonly net: import("../../shared/orchestration").OrchestrationNet;
6
+ protected wrap(target: number, data: LabelData, onChange: () => void, onRemove: () => void): Label;
7
+ create(data: Omit<LabelData, "id">): Label;
8
+ createFor(source: number, data: Omit<LabelData, "id">): Label;
9
+ }
10
+ //# sourceMappingURL=label-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-pool.d.ts","sourceRoot":"","sources":["../../../src/server/managers/label-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,qBAAa,SAAU,SAAQ,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC;IACnE,SAAS,CAAC,QAAQ,CAAC,GAAG,wDAAY;IAElC,SAAS,CAAC,IAAI,CACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM,IAAI,EACpB,QAAQ,EAAE,MAAM,IAAI,GAClB,KAAK;IAIR,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,KAAK;IAI1C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,KAAK;CAG7D"}
@@ -0,0 +1,16 @@
1
+ import { LabelNet } from "../../shared/labels";
2
+ import { Label } from "../entities/label";
3
+ import { ServerOrchestration } from "./orchestration";
4
+ export class LabelPool extends ServerOrchestration {
5
+ net = LabelNet;
6
+ wrap(target, data, onChange, onRemove) {
7
+ return new Label(target, data, onChange, onRemove);
8
+ }
9
+ create(data) {
10
+ return this.spawn(-1, data);
11
+ }
12
+ createFor(source, data) {
13
+ return this.spawn(source, data);
14
+ }
15
+ }
16
+ //# sourceMappingURL=label-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-pool.js","sourceRoot":"","sources":["../../../src/server/managers/label-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,OAAO,SAAU,SAAQ,mBAAqC;IAChD,GAAG,GAAG,QAAQ,CAAC;IAExB,IAAI,CACb,MAAc,EACd,IAAe,EACf,QAAoB,EACpB,QAAoB;QAEpB,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,IAA2B;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,IAA2B;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;CACD"}
@@ -0,0 +1,10 @@
1
+ import { type MarkerData } from "../../shared/markers";
2
+ import { Marker } from "../entities/marker";
3
+ import { ServerOrchestration } from "./orchestration";
4
+ export declare class MarkerPool extends ServerOrchestration<MarkerData, Marker> {
5
+ protected readonly net: import("../../shared/orchestration").OrchestrationNet;
6
+ protected wrap(target: number, data: MarkerData, onChange: () => void, onRemove: () => void): Marker;
7
+ create(data: Omit<MarkerData, "id">): Marker;
8
+ createFor(source: number, data: Omit<MarkerData, "id">): Marker;
9
+ }
10
+ //# sourceMappingURL=marker-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marker-pool.d.ts","sourceRoot":"","sources":["../../../src/server/managers/marker-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,qBAAa,UAAW,SAAQ,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC;IACtE,SAAS,CAAC,QAAQ,CAAC,GAAG,wDAAa;IAEnC,SAAS,CAAC,IAAI,CACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,IAAI,EACpB,QAAQ,EAAE,MAAM,IAAI,GAClB,MAAM;IAIT,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,MAAM;IAI5C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,MAAM;CAG/D"}
@@ -0,0 +1,16 @@
1
+ import { MarkerNet } from "../../shared/markers";
2
+ import { Marker } from "../entities/marker";
3
+ import { ServerOrchestration } from "./orchestration";
4
+ export class MarkerPool extends ServerOrchestration {
5
+ net = MarkerNet;
6
+ wrap(target, data, onChange, onRemove) {
7
+ return new Marker(target, data, onChange, onRemove);
8
+ }
9
+ create(data) {
10
+ return this.spawn(-1, data);
11
+ }
12
+ createFor(source, data) {
13
+ return this.spawn(source, data);
14
+ }
15
+ }
16
+ //# sourceMappingURL=marker-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marker-pool.js","sourceRoot":"","sources":["../../../src/server/managers/marker-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,OAAO,UAAW,SAAQ,mBAAuC;IACnD,GAAG,GAAG,SAAS,CAAC;IAEzB,IAAI,CACb,MAAc,EACd,IAAgB,EAChB,QAAoB,EACpB,QAAoB;QAEpB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,IAA4B;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,IAA4B;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;CACD"}
@@ -0,0 +1,14 @@
1
+ import type { Orchestrated, OrchestrationNet } from "../../shared/orchestration";
2
+ export declare abstract class ServerOrchestration<TData extends {
3
+ id: number;
4
+ }, TInstance extends Orchestrated<TData>> {
5
+ private registry;
6
+ private nextId;
7
+ protected abstract readonly net: OrchestrationNet;
8
+ protected abstract wrap(target: number, data: TData, onChange: () => void, onRemove: () => void): TInstance;
9
+ protected spawn(target: number, data: Omit<TData, "id">): TInstance;
10
+ private destroy;
11
+ syncTo(source: number): void;
12
+ toArray(): TInstance[];
13
+ }
14
+ //# sourceMappingURL=orchestration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration.d.ts","sourceRoot":"","sources":["../../../src/server/managers/orchestration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,YAAY,EACZ,gBAAgB,EAChB,MAAM,4BAA4B,CAAC;AAEpC,8BAAsB,mBAAmB,CACxC,KAAK,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC5B,SAAS,SAAS,YAAY,CAAC,KAAK,CAAC;IAErC,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,MAAM,CAAK;IAEnB,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;IAElD,SAAS,CAAC,QAAQ,CAAC,IAAI,CACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,MAAM,IAAI,EACpB,QAAQ,EAAE,MAAM,IAAI,GAClB,SAAS;IAEZ,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,SAAS;IAanE,OAAO,CAAC,OAAO;IAKf,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B,OAAO,IAAI,SAAS,EAAE;CAGtB"}
@@ -0,0 +1,23 @@
1
+ export class ServerOrchestration {
2
+ registry = new Map();
3
+ nextId = 1;
4
+ spawn(target, data) {
5
+ const full = { ...data, id: this.nextId++ };
6
+ const instance = this.wrap(target, full, () => emitNet(this.net.add, target, full), () => this.destroy(full.id, target));
7
+ if (target === -1)
8
+ this.registry.set(full.id, instance);
9
+ emitNet(this.net.add, target, full);
10
+ return instance;
11
+ }
12
+ destroy(id, target) {
13
+ this.registry.delete(id);
14
+ emitNet(this.net.remove, target, id);
15
+ }
16
+ syncTo(source) {
17
+ emitNet(this.net.sync, source, [...this.registry.values()].map((i) => i.data));
18
+ }
19
+ toArray() {
20
+ return [...this.registry.values()];
21
+ }
22
+ }
23
+ //# sourceMappingURL=orchestration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../../src/server/managers/orchestration.ts"],"names":[],"mappings":"AAMA,MAAM,OAAgB,mBAAmB;IAIhC,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IACxC,MAAM,GAAG,CAAC,CAAC;IAWT,KAAK,CAAC,MAAc,EAAE,IAAuB;QACtD,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAW,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CACzB,MAAM,EACN,IAAI,EACJ,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EACzC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CACnC,CAAC;QACF,IAAI,MAAM,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEO,OAAO,CAAC,EAAU,EAAE,MAAc;QACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,MAAc;QACpB,OAAO,CACN,IAAI,CAAC,GAAG,CAAC,IAAI,EACb,MAAM,EACN,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9C,CAAC;IACH,CAAC;IAED,OAAO;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;CACD"}
@@ -0,0 +1,18 @@
1
+ import { type PickupData } from "../../shared/pickups";
2
+ import { Pickup } from "../entities/pickup";
3
+ import type { Player } from "../entities/player";
4
+ import type { ColshapePool } from "./colshape-pool";
5
+ import { ServerOrchestration } from "./orchestration";
6
+ interface PickupOptions extends Omit<PickupData, "id"> {
7
+ onCollect?: (player: Player) => void;
8
+ removeOnCollect?: boolean;
9
+ }
10
+ export declare class PickupPool extends ServerOrchestration<PickupData, Pickup> {
11
+ private readonly colshapes;
12
+ protected readonly net: import("../../shared/orchestration").OrchestrationNet;
13
+ constructor(colshapes: ColshapePool);
14
+ protected wrap(target: number, data: PickupData, onRemove: () => void): Pickup;
15
+ create(options: PickupOptions): Pickup;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=pickup-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pickup-pool.d.ts","sourceRoot":"","sources":["../../../src/server/managers/pickup-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,aAAc,SAAQ,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,UAAW,SAAQ,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC;IAG1D,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,SAAS,CAAC,QAAQ,CAAC,GAAG,wDAAa;gBAEN,SAAS,EAAE,YAAY;IAIpD,SAAS,CAAC,IAAI,CACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,IAAI,GAClB,MAAM;IAIT,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM;CAmBtC"}
@@ -0,0 +1,32 @@
1
+ import { PickupNet } from "../../shared/pickups";
2
+ import { Pickup } from "../entities/pickup";
3
+ import { ServerOrchestration } from "./orchestration";
4
+ export class PickupPool extends ServerOrchestration {
5
+ colshapes;
6
+ net = PickupNet;
7
+ constructor(colshapes) {
8
+ super();
9
+ this.colshapes = colshapes;
10
+ }
11
+ wrap(target, data, onRemove) {
12
+ return new Pickup(target, data, onRemove);
13
+ }
14
+ create(options) {
15
+ const { onCollect, removeOnCollect = true, ...data } = options;
16
+ const pickup = this.spawn(-1, data);
17
+ pickup.onCollect = onCollect;
18
+ const shape = this.colshapes.create({
19
+ kind: "sphere",
20
+ center: data.coords,
21
+ radius: data.radius ?? 1.5,
22
+ onEnter: (_s, player) => {
23
+ pickup.onCollect?.(player);
24
+ if (removeOnCollect)
25
+ pickup.remove();
26
+ },
27
+ });
28
+ pickup.attachColshape(shape);
29
+ return pickup;
30
+ }
31
+ }
32
+ //# sourceMappingURL=pickup-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pickup-pool.js","sourceRoot":"","sources":["../../../src/server/managers/pickup-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAOtD,MAAM,OAAO,UAAW,SAAQ,mBAAuC;IAGzC;IAFV,GAAG,GAAG,SAAS,CAAC;IAEnC,YAA6B,SAAuB;QACnD,KAAK,EAAE,CAAC;QADoB,cAAS,GAAT,SAAS,CAAc;IAEpD,CAAC;IAES,IAAI,CACb,MAAc,EACd,IAAgB,EAChB,QAAoB;QAEpB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,OAAsB;QAC5B,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAE/D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAE7B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACnC,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;YAC1B,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;gBACvB,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC3B,IAAI,eAAe;oBAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YACtC,CAAC;SACD,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE7B,OAAO,MAAM,CAAC;IACf,CAAC;CACD"}
@@ -0,0 +1,17 @@
1
+ import type { IVector3 } from "./index";
2
+ import type { OrchestrationNet } from "./orchestration";
3
+ export interface CheckpointData {
4
+ id: number;
5
+ coords: IVector3;
6
+ radius?: number;
7
+ type?: number;
8
+ color?: {
9
+ r: number;
10
+ g: number;
11
+ b: number;
12
+ a?: number;
13
+ };
14
+ nextCoords?: IVector3;
15
+ }
16
+ export declare const CheckpointNet: OrchestrationNet;
17
+ //# sourceMappingURL=checkpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoints.d.ts","sourceRoot":"","sources":["../../src/shared/checkpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,UAAU,CAAC,EAAE,QAAQ,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,gBAI3B,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const CheckpointNet = {
2
+ add: "__fx:checkpoint:add",
3
+ remove: "__fx:checkpoint:remove",
4
+ sync: "__fx:checkpoint:sync",
5
+ };
6
+ //# sourceMappingURL=checkpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoints.js","sourceRoot":"","sources":["../../src/shared/checkpoints.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC9C,GAAG,EAAE,qBAAqB;IAC1B,MAAM,EAAE,wBAAwB;IAChC,IAAI,EAAE,sBAAsB;CAC5B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { IVector3 } from "./index";
2
+ export type ColshapeKind = "sphere" | "circle" | "box";
3
+ export interface ColshapeShape {
4
+ kind: ColshapeKind;
5
+ center: IVector3;
6
+ radius?: number;
7
+ size?: IVector3;
8
+ }
9
+ export declare function isInsideShape(shape: ColshapeShape, p: IVector3): boolean;
10
+ //# sourceMappingURL=colshape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colshape.d.ts","sourceRoot":"","sources":["../../src/shared/colshape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,CAAC;CAChB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAyBxE"}
@@ -0,0 +1,22 @@
1
+ export function isInsideShape(shape, p) {
2
+ const c = shape.center;
3
+ switch (shape.kind) {
4
+ case "sphere": {
5
+ const r = shape.radius ?? 1;
6
+ const dx = p.x - c.x, dy = p.y - c.y, dz = p.z - c.z;
7
+ return dx * dx + dy * dy + dz * dz <= r * r;
8
+ }
9
+ case "circle": {
10
+ const r = shape.radius ?? 1;
11
+ const dx = p.x - c.x, dy = p.y - c.y;
12
+ return dx * dx + dy * dy <= r * r; // ignores z
13
+ }
14
+ case "box": {
15
+ const s = shape.size ?? { x: 1, y: 1, z: 1 };
16
+ return (Math.abs(p.x - c.x) <= s.x / 2 &&
17
+ Math.abs(p.y - c.y) <= s.y / 2 &&
18
+ Math.abs(p.z - c.z) <= s.z / 2);
19
+ }
20
+ }
21
+ }
22
+ //# sourceMappingURL=colshape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colshape.js","sourceRoot":"","sources":["../../src/shared/colshape.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,aAAa,CAAC,KAAoB,EAAE,CAAW;IAC9D,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EACnB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EACd,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EACnB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY;QAChD,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7C,OAAO,CACN,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAC9B,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { IVector3 } from "./index";
2
+ import type { OrchestrationNet } from "./orchestration";
3
+ export interface LabelData {
4
+ id: number;
5
+ coords: IVector3;
6
+ text: string;
7
+ color?: {
8
+ r: number;
9
+ g: number;
10
+ b: number;
11
+ a?: number;
12
+ };
13
+ scale?: number;
14
+ font?: number;
15
+ drawDistance?: number;
16
+ }
17
+ export declare const LabelNet: OrchestrationNet;
18
+ //# sourceMappingURL=labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../src/shared/labels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,QAAQ,EAAE,gBAItB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const LabelNet = {
2
+ add: "__fx:label:add",
3
+ remove: "__fx:label:remove",
4
+ sync: "__fx:label:sync",
5
+ };
6
+ //# sourceMappingURL=labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/shared/labels.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,QAAQ,GAAqB;IACzC,GAAG,EAAE,gBAAgB;IACrB,MAAM,EAAE,mBAAmB;IAC3B,IAAI,EAAE,iBAAiB;CACvB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { IVector3 } from "./index";
2
+ import type { OrchestrationNet } from "./orchestration";
3
+ export interface MarkerData {
4
+ id: number;
5
+ type: number;
6
+ coords: IVector3;
7
+ color: {
8
+ r: number;
9
+ g: number;
10
+ b: number;
11
+ };
12
+ scale?: IVector3;
13
+ direction?: IVector3;
14
+ rotation?: IVector3;
15
+ alpha?: number;
16
+ bobUpAndDown?: boolean;
17
+ faceCamera?: boolean;
18
+ rotationOrder?: number;
19
+ }
20
+ export declare const MarkerNet: OrchestrationNet;
21
+ //# sourceMappingURL=markers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markers.d.ts","sourceRoot":"","sources":["../../src/shared/markers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,SAAS,EAAE,gBAIvB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const MarkerNet = {
2
+ add: "__fx:marker:add",
3
+ remove: "__fx:marker:remove",
4
+ sync: "__fx:marker:sync",
5
+ };
6
+ //# sourceMappingURL=markers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markers.js","sourceRoot":"","sources":["../../src/shared/markers.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,SAAS,GAAqB;IAC1C,GAAG,EAAE,iBAAiB;IACtB,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,kBAAkB;CACxB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface OrchestrationNet {
2
+ add: string;
3
+ remove: string;
4
+ sync: string;
5
+ }
6
+ export interface Orchestrated<TData> {
7
+ readonly data: TData;
8
+ }
9
+ //# sourceMappingURL=orchestration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration.d.ts","sourceRoot":"","sources":["../../src/shared/orchestration.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY,CAAC,KAAK;IAClC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=orchestration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../src/shared/orchestration.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { IVector3 } from "./index";
2
+ import type { OrchestrationNet } from "./orchestration";
3
+ export interface PickupData {
4
+ id: number;
5
+ coords: IVector3;
6
+ model: number | string;
7
+ radius?: number;
8
+ }
9
+ export declare const PickupNet: OrchestrationNet;
10
+ //# sourceMappingURL=pickups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pickups.d.ts","sourceRoot":"","sources":["../../src/shared/pickups.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,SAAS,EAAE,gBAIvB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const PickupNet = {
2
+ add: "__fx:pickup:add",
3
+ remove: "__fx:pickup:remove",
4
+ sync: "__fx:pickup:sync",
5
+ };
6
+ //# sourceMappingURL=pickups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pickups.js","sourceRoot":"","sources":["../../src/shared/pickups.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,SAAS,GAAqB;IAC1C,GAAG,EAAE,iBAAiB;IACtB,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,kBAAkB;CACxB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panda0day/fivex",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,2 +0,0 @@
1
- export declare function registerBlipHandlers(): void;
2
- //# sourceMappingURL=blips-internal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blips-internal.d.ts","sourceRoot":"","sources":["../../src/client/blips-internal.ts"],"names":[],"mappings":"AAmBA,wBAAgB,oBAAoB,IAAI,IAAI,CAU3C"}
@@ -1,32 +0,0 @@
1
- /// <reference types="@citizenfx/client" />
2
- import { BlipNet } from "../shared/blips";
3
- const handles = new Map();
4
- function draw(d) {
5
- const blip = AddBlipForCoord(d.coords.x, d.coords.y, d.coords.z);
6
- if (d.sprite !== undefined)
7
- SetBlipSprite(blip, d.sprite);
8
- if (d.color !== undefined)
9
- SetBlipColour(blip, d.color);
10
- if (d.scale !== undefined)
11
- SetBlipScale(blip, d.scale);
12
- if (d.shortRange)
13
- SetBlipAsShortRange(blip, true);
14
- if (d.label) {
15
- BeginTextCommandSetBlipName("STRING");
16
- AddTextComponentSubstringPlayerName(d.label);
17
- EndTextCommandSetBlipName(blip);
18
- }
19
- handles.set(d.id, blip);
20
- }
21
- export function registerBlipHandlers() {
22
- onNet(BlipNet.add, (d) => draw(d));
23
- onNet(BlipNet.sync, (list) => list.forEach(draw));
24
- onNet(BlipNet.remove, (id) => {
25
- const h = handles.get(id);
26
- if (h !== undefined) {
27
- RemoveBlip(h);
28
- handles.delete(id);
29
- }
30
- });
31
- }
32
- //# sourceMappingURL=blips-internal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blips-internal.js","sourceRoot":"","sources":["../../src/client/blips-internal.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAiB,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE1C,SAAS,IAAI,CAAC,CAAW;IACxB,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;QAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,UAAU;QAAE,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACb,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QACtC,mCAAmC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7C,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB;IACnC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAW,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAU,EAAE,EAAE;QACpC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACrB,UAAU,CAAC,CAAC,CAAC,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC"}