lenix 1.7.7 → 1.7.9

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 (2) hide show
  1. package/client/client.ts +53 -33
  2. package/package.json +1 -1
package/client/client.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  import { repeat } from '../shared/repeat.ts'
2
2
  import type { Vec3, Vec4 } from '../shared/types.ts'
3
3
 
4
+ type JsonPrimitive = string | number | boolean | null
5
+ type JsonValue = JsonPrimitive | JsonValue[] | { [key: string]: JsonValue }
6
+
4
7
  export const client = {
5
8
  entity: {
6
9
  /**
@@ -38,7 +41,7 @@ export const client = {
38
41
  * Gets entity coordinates and heading.
39
42
  */
40
43
  coords: (() => {
41
- function coords(entity: number, excludeH: boolean, isAlive?: boolean): Vec3
44
+ function coords(entity: number, excludeH?: true, isAlive?: boolean): Vec3
42
45
  function coords(entity: number, excludeH?: false, isAlive?: boolean): Vec4
43
46
  function coords(entity: number, excludeH = false, isAlive = true) {
44
47
  const entityCoords = GetEntityCoords(entity, isAlive) as Vec3
@@ -96,27 +99,6 @@ export const client = {
96
99
  }
97
100
  },
98
101
  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
-
120
102
  /**
121
103
  * Gets a client player ID.
122
104
  *
@@ -129,7 +111,7 @@ export const client = {
129
111
  * - id(targetServerId) -> target player's client player ID
130
112
  * - id() -> your own client player ID
131
113
  */
132
- id: (serverId?: number) => serverId ? GetPlayerFromServerId(serverId) : PlayerId(),
114
+ id: (serverId?: number) => serverId !== undefined ? GetPlayerFromServerId(serverId) : PlayerId(),
133
115
 
134
116
  /**
135
117
  * Gets a player's server ID from their client player ID.
@@ -143,25 +125,63 @@ export const client = {
143
125
  * - serverId(targetPlayerId) -> target player's server ID
144
126
  * - serverId() -> your own server ID
145
127
  */
146
- serverId: (playerId?: number) => GetPlayerServerId(playerId ?? client.player.id()),
128
+ serverId(playerId?: number) {
129
+ return GetPlayerServerId(playerId ?? this.id())
130
+ },
131
+
132
+ /* */
133
+ entity: (playerId?: number) => playerId !== undefined ? GetPlayerPed(playerId) : PlayerPedId(),
147
134
 
135
+ /* */
136
+ netId(playerId?: number) {
137
+ return PedToNet(this.entity(playerId))
138
+ },
139
+
140
+ /* */
141
+ coords(excludeH?: true, isAlive?: boolean) {
142
+ return client.entity.coords(this.entity(), excludeH, isAlive)
143
+ },
144
+
145
+ /* */
146
+ teleport(
147
+ x: number,
148
+ y: number,
149
+ z: number,
150
+ h?: number,
151
+ clearArea?: boolean,
152
+ alive?: boolean,
153
+ deadDisable?: boolean,
154
+ ragdol?: boolean
155
+ ) {
156
+ return client.entity.teleport(this.entity(), x, y, z, h, clearArea, alive, deadDisable, ragdol)
157
+ },
158
+
159
+ /* */
148
160
  storage: {
149
161
  set: <Storage>(
150
162
  ...[key, value]: {
151
- [K in keyof Storage]: [key: Extract<K, string>, value: Extract<Storage[K], string>]
163
+ [K in keyof Storage]: Storage[K] extends JsonValue
164
+ ? [key: Extract<K, string>, value: Storage[K]]
165
+ : never
152
166
  }[keyof Storage]
153
- ) => SetResourceKvp(key, value),
167
+ ) => SetResourceKvp(key, JSON.stringify(value)),
154
168
 
155
169
  get: <Storage, K extends Extract<keyof Storage, string>>(
156
170
  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)
171
+ init?: Storage[K] extends JsonValue ? Storage[K] : never
172
+ ): Storage[K] extends JsonValue ? Storage[K] : never => {
173
+ const value = GetResourceKvpString(key)
174
+
175
+ if (value === null) {
176
+ if (init === undefined) {
177
+ throw new Error(`Storage<${key}> was never assigned`)
178
+ }
179
+
180
+ SetResourceKvp(key, JSON.stringify(init))
181
+ return init as Storage[K] extends JsonValue ? Storage[K] : never
163
182
  }
164
- return get(key) as Storage[K]
183
+
184
+ return JSON.parse(value) as Storage[K] extends JsonValue ? Storage[K] : never
165
185
  },
166
186
 
167
187
  delete: <Storage>(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lenix",
3
- "version": "1.7.7",
3
+ "version": "1.7.9",
4
4
  "description": "Typed FiveM utilities for client, server, shared, and NUI scripts",
5
5
  "author": "Lenix",
6
6
  "license": "MIT",