lenix 1.7.5 → 1.7.7

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.
package/client/client.ts CHANGED
@@ -1,50 +1,7 @@
1
1
  import { repeat } from '../shared/repeat.ts'
2
2
  import type { Vec3, Vec4 } from '../shared/types.ts'
3
3
 
4
- export const client: {
5
- entity: {
6
- handle: (entityNetId?: number) => number
7
- netId: (entity?: number) => number
8
- coords: {
9
- (excludeH: true, entity?: number, isAlive?: boolean): Vec3;
10
- (excludeH?: false, entity?: number, isAlive?: boolean): Vec4
11
- }
12
- teleport: (
13
- x: number,
14
- y: number,
15
- z: number,
16
- h?: number,
17
- entity?: number,
18
- clearArea?: boolean,
19
- alive?: boolean,
20
- deadDisable?: boolean,
21
- ragdol?: boolean
22
- ) => void
23
- playAnim: (
24
- dict: string,
25
- name: string,
26
- blendIn?: number,
27
- blendOut?: number,
28
- ped?: number,
29
- duration?: number,
30
- flag?: number,
31
- playbackFrom?: number,
32
- x?: boolean,
33
- y?: boolean,
34
- z?: boolean
35
- ) => Promise<void>
36
- stopAnim: (dict: string, ped?: number) => void
37
- }
38
- player: {
39
- serverId: (playerId?: number) => number
40
- id: (serverId?: number) => number
41
- storage: {
42
- set: <T extends string>(key: T, value: string) => void
43
- get: <T extends string>(key: T) => string
44
- delete: <T extends string>(key: T) => void
45
- }
46
- }
47
- } = {
4
+ export const client = {
48
5
  entity: {
49
6
  /**
50
7
  * Gets the local entity handle from a network ID.
@@ -60,7 +17,7 @@ export const client: {
60
17
  * - entity(pedNetId) -> local ped handle
61
18
  * - entity() -> your own player ped handle
62
19
  */
63
- handle: (entityNetId = client.entity.netId()) => NetworkGetEntityFromNetworkId(entityNetId),
20
+ handle: (entityNetId: number) => NetworkGetEntityFromNetworkId(entityNetId),
64
21
 
65
22
  /**
66
23
  * Gets the network ID for an entity.
@@ -75,15 +32,15 @@ export const client: {
75
32
  * - netId(targetPed) -> network ID of that ped
76
33
  * - netId() -> network ID of your own player ped
77
34
  */
78
- netId: (entity = PlayerPedId()) => NetworkGetNetworkIdFromEntity(entity),
35
+ netId: (entity: number) => NetworkGetNetworkIdFromEntity(entity),
79
36
 
80
37
  /**
81
38
  * Gets entity coordinates and heading.
82
39
  */
83
40
  coords: (() => {
84
- function coords(excludeH: true, entity?: number, isAlive?: boolean): Vec3
85
- function coords(excludeH?: false, entity?: number, isAlive?: boolean): Vec4
86
- function coords(excludeH = false, entity = client.entity.handle(), isAlive = true) {
41
+ function coords(entity: number, excludeH: boolean, isAlive?: boolean): Vec3
42
+ function coords(entity: number, excludeH?: false, isAlive?: boolean): Vec4
43
+ function coords(entity: number, excludeH = false, isAlive = true) {
87
44
  const entityCoords = GetEntityCoords(entity, isAlive) as Vec3
88
45
 
89
46
  if (excludeH) return entityCoords
@@ -98,22 +55,28 @@ export const client: {
98
55
  })(),
99
56
 
100
57
  /* */
101
- teleport: (x, y, z, h,
102
- entity = client.entity.handle(),
58
+ teleport: (
59
+ entity: number,
60
+ x: number,
61
+ y: number,
62
+ z: number,
63
+ h?: number,
103
64
  clearArea = false,
104
65
  alive = true,
105
66
  deadDisable = false,
106
67
  ragdol = false
107
68
  ) => {
108
69
  SetEntityCoords(entity, x, y, z, alive, deadDisable, ragdol, clearArea)
109
- SetEntityHeading(entity, h ?? client.entity.coords()[3])
70
+ h && SetEntityHeading(entity, h)
110
71
  },
111
72
 
112
73
  /* */
113
- playAnim: async (dict, name,
74
+ playAnim: async (
75
+ ped: number,
76
+ dict: string,
77
+ name: string,
114
78
  blendIn = 2.0,
115
79
  blendOut = 2.0,
116
- ped = client.entity.handle(),
117
80
  duration = -1,
118
81
  flag = 0,
119
82
  playbackFrom = 0.0,
@@ -127,12 +90,33 @@ export const client: {
127
90
  },
128
91
 
129
92
  /* */
130
- stopAnim: (dict: string, ped = client.entity.handle()) => {
93
+ stopAnim: (ped: number, dict: string) => {
131
94
  RemoveAnimDict(dict)
132
95
  ClearPedTasks(ped)
133
96
  }
134
97
  },
135
98
  player: {
99
+ /* */
100
+ handle: () => PlayerPedId(),
101
+
102
+ /* */
103
+ netId: () => client.entity.netId(client.player.handle()),
104
+
105
+ /* */
106
+ coords: () => client.entity.coords(client.player.handle()),
107
+
108
+ /* */
109
+ teleport: (
110
+ x: number,
111
+ y: number,
112
+ z: number,
113
+ h?: number,
114
+ clearArea?: boolean,
115
+ alive?: boolean,
116
+ deadDisable?: boolean,
117
+ ragdol?: boolean
118
+ ) => client.entity.teleport(client.player.handle(), x, y, z, h, clearArea, alive, deadDisable, ragdol),
119
+
136
120
  /**
137
121
  * Gets a client player ID.
138
122
  *
@@ -145,7 +129,7 @@ export const client: {
145
129
  * - id(targetServerId) -> target player's client player ID
146
130
  * - id() -> your own client player ID
147
131
  */
148
- id: (serverId) => serverId ? GetPlayerFromServerId(serverId) : PlayerId(),
132
+ id: (serverId?: number) => serverId ? GetPlayerFromServerId(serverId) : PlayerId(),
149
133
 
150
134
  /**
151
135
  * Gets a player's server ID from their client player ID.
@@ -159,13 +143,31 @@ export const client: {
159
143
  * - serverId(targetPlayerId) -> target player's server ID
160
144
  * - serverId() -> your own server ID
161
145
  */
162
- serverId: (playerId = client.player.id()) => GetPlayerServerId(playerId),
146
+ serverId: (playerId?: number) => GetPlayerServerId(playerId ?? client.player.id()),
163
147
 
164
148
  storage: {
165
- set: (key, value) => SetResourceKvp(key, value),
166
- get: (key) => GetResourceKvpString(key),
167
- delete: (key) => DeleteResourceKvp(key)
149
+ set: <Storage>(
150
+ ...[key, value]: {
151
+ [K in keyof Storage]: [key: Extract<K, string>, value: Extract<Storage[K], string>]
152
+ }[keyof Storage]
153
+ ) => SetResourceKvp(key, value),
154
+
155
+ get: <Storage, K extends Extract<keyof Storage, string>>(
156
+ key: K,
157
+ init?: Extract<Storage[K], string>
158
+ ): Storage[K] => {
159
+ const get = GetResourceKvpString
160
+ if (!get(key)) {
161
+ if (init === undefined || init === null) throw new Error(`Failed to get Storage<${key}> value, reason: The key was never assigned before and you did not provided an initiate value`)
162
+ client.player.storage.set<Storage>(key, init)
163
+ }
164
+ return get(key) as Storage[K]
165
+ },
166
+
167
+ delete: <Storage>(
168
+ key: Extract<keyof Storage, string>
169
+ ) => DeleteResourceKvp(key),
170
+ /* TODO: add on event */
168
171
  }
169
172
  }
170
173
  }
171
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lenix",
3
- "version": "1.7.5",
3
+ "version": "1.7.7",
4
4
  "description": "Typed FiveM utilities for client, server, shared, and NUI scripts",
5
5
  "author": "Lenix",
6
6
  "license": "MIT",
package/shared/types.ts CHANGED
@@ -23,6 +23,7 @@ export type Request<
23
23
  > = Params extends readonly unknown[] ? never
24
24
  : [Response, Id, Params]
25
25
 
26
+
26
27
  /**
27
28
  * Internal NUI requests used by Lenix helpers. DO NOT USE
28
29
  */