@nodemod/core 1.0.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.
- package/README.md +60 -0
- package/dist/core/cmd.d.ts +148 -0
- package/dist/core/cmd.d.ts.map +1 -0
- package/dist/core/cmd.js +177 -0
- package/dist/core/cmd.js.map +1 -0
- package/dist/core/menu.d.ts +300 -0
- package/dist/core/menu.d.ts.map +1 -0
- package/dist/core/menu.js +449 -0
- package/dist/core/menu.js.map +1 -0
- package/dist/core/msg.d.ts +300 -0
- package/dist/core/msg.d.ts.map +1 -0
- package/dist/core/msg.js +374 -0
- package/dist/core/msg.js.map +1 -0
- package/dist/core/resource.d.ts +137 -0
- package/dist/core/resource.d.ts.map +1 -0
- package/dist/core/resource.js +171 -0
- package/dist/core/resource.js.map +1 -0
- package/dist/core/sound.d.ts +262 -0
- package/dist/core/sound.d.ts.map +1 -0
- package/dist/core/sound.js +300 -0
- package/dist/core/sound.js.map +1 -0
- package/dist/enhanced/entity.d.ts +263 -0
- package/dist/enhanced/entity.d.ts.map +1 -0
- package/dist/enhanced/entity.js +447 -0
- package/dist/enhanced/entity.js.map +1 -0
- package/dist/enhanced/events.d.ts +257 -0
- package/dist/enhanced/events.d.ts.map +1 -0
- package/dist/enhanced/events.js +350 -0
- package/dist/enhanced/events.js.map +1 -0
- package/dist/enhanced/player.d.ts +272 -0
- package/dist/enhanced/player.d.ts.map +1 -0
- package/dist/enhanced/player.js +389 -0
- package/dist/enhanced/player.js.map +1 -0
- package/dist/enhanced/trace.d.ts +198 -0
- package/dist/enhanced/trace.d.ts.map +1 -0
- package/dist/enhanced/trace.js +311 -0
- package/dist/enhanced/trace.js.map +1 -0
- package/dist/index.d.ts +88 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +120 -0
- package/dist/index.js.map +1 -0
- package/dist/native/cvar.d.ts +49 -0
- package/dist/native/cvar.d.ts.map +1 -0
- package/dist/native/cvar.js +169 -0
- package/dist/native/cvar.js.map +1 -0
- package/dist/native/file.d.ts +221 -0
- package/dist/native/file.d.ts.map +1 -0
- package/dist/native/file.js +353 -0
- package/dist/native/file.js.map +1 -0
- package/dist/types/dll.d.ts +109 -0
- package/dist/types/engine.d.ts +319 -0
- package/dist/types/enums.d.ts +434 -0
- package/dist/types/events.d.ts +2432 -0
- package/dist/types/index.d.ts +38 -0
- package/dist/types/structures.d.ts +1144 -0
- package/dist/utils/util.d.ts +202 -0
- package/dist/utils/util.d.ts.map +1 -0
- package/dist/utils/util.js +318 -0
- package/dist/utils/util.js.map +1 -0
- package/package.json +167 -0
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* File system utilities for Half-Life engine providing safe file operations with automatic memory management.
|
|
5
|
+
* Supports loading game resources, configuration files, and provides path utilities for Half-Life directory structure.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Load and read a configuration file
|
|
10
|
+
* const config = nodemodCore.file.loadConfig('server.cfg');
|
|
11
|
+
* if (config) {
|
|
12
|
+
* console.log(`Max players: ${config['maxplayers']}`);
|
|
13
|
+
* }
|
|
14
|
+
*
|
|
15
|
+
* // Check if a sound file exists
|
|
16
|
+
* if (nodemodCore.file.isValidSoundFile('weapons/ak47-1.wav')) {
|
|
17
|
+
* console.log('Sound file is available');
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* // Load file with automatic cleanup
|
|
21
|
+
* const content = nodemodCore.file.readText('motd.txt');
|
|
22
|
+
* if (content) {
|
|
23
|
+
* console.log('MOTD:', content);
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* // Watch a file for changes
|
|
27
|
+
* const stopWatching = nodemodCore.file.watch('banned.cfg', (event) => {
|
|
28
|
+
* console.log(`Banned list updated: ${event.newSize} bytes`);
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
class NodemodFile {
|
|
33
|
+
/**
|
|
34
|
+
* Loads a file into memory and returns the raw buffer.
|
|
35
|
+
* Remember to call free() when done to prevent memory leaks.
|
|
36
|
+
*
|
|
37
|
+
* @param filename - Path to the file to load
|
|
38
|
+
* @returns Raw file buffer as number array, or null if loading failed
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const buffer = nodemodCore.file.load('maps/de_dust2.bsp');
|
|
43
|
+
* if (buffer) {
|
|
44
|
+
* console.log(`Loaded ${buffer.length} bytes`);
|
|
45
|
+
* // Don't forget to free the buffer!
|
|
46
|
+
* nodemodCore.file.free(buffer);
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
load(filename) {
|
|
51
|
+
try {
|
|
52
|
+
const result = nodemod.eng.loadFileForMe(filename);
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
console.error(`Failed to load file ${filename}:`, error);
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Free file buffer (important for memory management)
|
|
61
|
+
free(buffer) {
|
|
62
|
+
if (buffer) {
|
|
63
|
+
nodemod.eng.freeFile(buffer);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Get file size
|
|
67
|
+
getSize(filename) {
|
|
68
|
+
return nodemod.eng.getFileSize(filename);
|
|
69
|
+
}
|
|
70
|
+
// Compare file modification times
|
|
71
|
+
compareTime(filename1, filename2) {
|
|
72
|
+
const iCompare = [];
|
|
73
|
+
return nodemod.eng.compareFileTime(filename1, filename2, iCompare);
|
|
74
|
+
}
|
|
75
|
+
// Check if file exists
|
|
76
|
+
exists(filename) {
|
|
77
|
+
const size = this.getSize(filename);
|
|
78
|
+
return size > 0;
|
|
79
|
+
}
|
|
80
|
+
// Load file with automatic cleanup
|
|
81
|
+
loadWithCleanup(filename, callback) {
|
|
82
|
+
const buffer = this.load(filename);
|
|
83
|
+
if (!buffer) {
|
|
84
|
+
return callback(null);
|
|
85
|
+
}
|
|
86
|
+
const fileBuffer = {
|
|
87
|
+
toString: (encoding) => {
|
|
88
|
+
// Convert number[] to string
|
|
89
|
+
const bytes = new Uint8Array(buffer);
|
|
90
|
+
const decoder = new TextDecoder(encoding || 'utf-8');
|
|
91
|
+
return decoder.decode(bytes);
|
|
92
|
+
},
|
|
93
|
+
length: buffer.length
|
|
94
|
+
};
|
|
95
|
+
try {
|
|
96
|
+
const result = callback(fileBuffer, fileBuffer.length);
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
this.free(buffer);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Reads a file as text with automatic memory management.
|
|
105
|
+
* Handles encoding detection and cleanup automatically.
|
|
106
|
+
*
|
|
107
|
+
* @param filename - Path to the text file to read
|
|
108
|
+
* @returns File content as string, or null if reading failed
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* // Read server configuration
|
|
113
|
+
* const motd = nodemodCore.file.readText('motd.txt');
|
|
114
|
+
* if (motd) {
|
|
115
|
+
* console.log('Message of the Day:', motd);
|
|
116
|
+
* }
|
|
117
|
+
*
|
|
118
|
+
* // Read map list
|
|
119
|
+
* const mapList = nodemodCore.file.readText('mapcycle.txt');
|
|
120
|
+
* if (mapList) {
|
|
121
|
+
* const maps = mapList.split('\\n').filter(line => line.trim());
|
|
122
|
+
* console.log('Available maps:', maps);
|
|
123
|
+
* }
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
readText(filename) {
|
|
127
|
+
return this.loadWithCleanup(filename, (buffer) => {
|
|
128
|
+
if (!buffer)
|
|
129
|
+
return null;
|
|
130
|
+
// Convert buffer to string (basic implementation)
|
|
131
|
+
try {
|
|
132
|
+
return buffer.toString('utf8');
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return buffer.toString();
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
// Get game directory
|
|
140
|
+
getGameDir() {
|
|
141
|
+
const gameDir = [''];
|
|
142
|
+
nodemod.eng.getGameDir(gameDir[0]);
|
|
143
|
+
return gameDir[0];
|
|
144
|
+
}
|
|
145
|
+
// File path utilities
|
|
146
|
+
joinPath(...parts) {
|
|
147
|
+
return parts.join('/').replace(/\/+/g, '/');
|
|
148
|
+
}
|
|
149
|
+
normalizePath(path) {
|
|
150
|
+
return path.replace(/\\/g, '/').replace(/\/+/g, '/');
|
|
151
|
+
}
|
|
152
|
+
getExtension(filename) {
|
|
153
|
+
const lastDot = filename.lastIndexOf('.');
|
|
154
|
+
return lastDot === -1 ? '' : filename.substring(lastDot + 1).toLowerCase();
|
|
155
|
+
}
|
|
156
|
+
getBasename(filename) {
|
|
157
|
+
const lastSlash = Math.max(filename.lastIndexOf('/'), filename.lastIndexOf('\\'));
|
|
158
|
+
const name = lastSlash === -1 ? filename : filename.substring(lastSlash + 1);
|
|
159
|
+
const lastDot = name.lastIndexOf('.');
|
|
160
|
+
return lastDot === -1 ? name : name.substring(0, lastDot);
|
|
161
|
+
}
|
|
162
|
+
getDirectory(filename) {
|
|
163
|
+
const lastSlash = Math.max(filename.lastIndexOf('/'), filename.lastIndexOf('\\'));
|
|
164
|
+
return lastSlash === -1 ? '' : filename.substring(0, lastSlash);
|
|
165
|
+
}
|
|
166
|
+
// Resource file helpers
|
|
167
|
+
buildResourcePath(type, name) {
|
|
168
|
+
const gameDir = this.getGameDir();
|
|
169
|
+
const paths = {
|
|
170
|
+
model: `${gameDir}/models/${name}`,
|
|
171
|
+
sound: `${gameDir}/sound/${name}`,
|
|
172
|
+
sprite: `${gameDir}/sprites/${name}`,
|
|
173
|
+
map: `${gameDir}/maps/${name}`,
|
|
174
|
+
config: `${gameDir}/${name}`
|
|
175
|
+
};
|
|
176
|
+
return this.normalizePath(paths[type] || `${gameDir}/${name}`);
|
|
177
|
+
}
|
|
178
|
+
// Check if resource file exists
|
|
179
|
+
resourceExists(type, name) {
|
|
180
|
+
const path = this.buildResourcePath(type, name);
|
|
181
|
+
return this.exists(path);
|
|
182
|
+
}
|
|
183
|
+
// Load resource file
|
|
184
|
+
loadResource(type, name) {
|
|
185
|
+
const path = this.buildResourcePath(type, name);
|
|
186
|
+
return this.load(path);
|
|
187
|
+
}
|
|
188
|
+
// Batch file operations
|
|
189
|
+
loadMultiple(filenames) {
|
|
190
|
+
const results = {};
|
|
191
|
+
filenames.forEach(filename => {
|
|
192
|
+
results[filename] = {
|
|
193
|
+
buffer: this.load(filename),
|
|
194
|
+
size: this.getSize(filename),
|
|
195
|
+
exists: this.exists(filename)
|
|
196
|
+
};
|
|
197
|
+
});
|
|
198
|
+
return results;
|
|
199
|
+
}
|
|
200
|
+
// Clean up multiple file buffers
|
|
201
|
+
freeMultiple(buffers) {
|
|
202
|
+
if (Array.isArray(buffers)) {
|
|
203
|
+
buffers.forEach(buffer => this.free(buffer));
|
|
204
|
+
}
|
|
205
|
+
else if (typeof buffers === 'object') {
|
|
206
|
+
Object.values(buffers).forEach(item => {
|
|
207
|
+
if (item && typeof item === 'object' && 'buffer' in item) {
|
|
208
|
+
this.free(item.buffer);
|
|
209
|
+
}
|
|
210
|
+
else if (Array.isArray(item)) {
|
|
211
|
+
this.free(item);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// File validation
|
|
217
|
+
isValidModelFile(filename) {
|
|
218
|
+
const ext = this.getExtension(filename);
|
|
219
|
+
return ['mdl', 'bsp'].includes(ext) && this.exists(this.buildResourcePath('model', filename));
|
|
220
|
+
}
|
|
221
|
+
isValidSoundFile(filename) {
|
|
222
|
+
const ext = this.getExtension(filename);
|
|
223
|
+
return ['wav', 'mp3'].includes(ext) && this.exists(this.buildResourcePath('sound', filename));
|
|
224
|
+
}
|
|
225
|
+
isValidMapFile(filename) {
|
|
226
|
+
const ext = this.getExtension(filename);
|
|
227
|
+
return ext === 'bsp' && this.exists(this.buildResourcePath('map', filename));
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Loads and parses a configuration file with key=value format.
|
|
231
|
+
* Supports comments starting with // or # and handles empty lines.
|
|
232
|
+
*
|
|
233
|
+
* @param filename - Name of the configuration file
|
|
234
|
+
* @returns Parsed configuration object, or null if loading failed
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* ```typescript
|
|
238
|
+
* // Load server configuration
|
|
239
|
+
* const config = nodemodCore.file.loadConfig('server.cfg');
|
|
240
|
+
* if (config) {
|
|
241
|
+
* const maxPlayers = parseInt(config['maxplayers'] || '16');
|
|
242
|
+
* const serverName = config['hostname'] || 'Unnamed Server';
|
|
243
|
+
* console.log(`Server: ${serverName}, Max Players: ${maxPlayers}`);
|
|
244
|
+
* }
|
|
245
|
+
*
|
|
246
|
+
* // Load custom plugin config
|
|
247
|
+
* const pluginConfig = nodemodCore.file.loadConfig('myplugin.cfg');
|
|
248
|
+
* if (pluginConfig?.enabled === '1') {
|
|
249
|
+
* console.log('Plugin is enabled');
|
|
250
|
+
* }
|
|
251
|
+
* ```
|
|
252
|
+
*/
|
|
253
|
+
loadConfig(filename) {
|
|
254
|
+
const configPath = this.buildResourcePath('config', filename);
|
|
255
|
+
const content = this.readText(configPath);
|
|
256
|
+
if (!content)
|
|
257
|
+
return null;
|
|
258
|
+
// Parse simple key=value config format
|
|
259
|
+
const config = {};
|
|
260
|
+
const lines = content.split('\n');
|
|
261
|
+
lines.forEach((line) => {
|
|
262
|
+
const trimmed = line.trim();
|
|
263
|
+
if (trimmed && !trimmed.startsWith('//') && !trimmed.startsWith('#')) {
|
|
264
|
+
const equalPos = trimmed.indexOf('=');
|
|
265
|
+
if (equalPos > 0) {
|
|
266
|
+
const key = trimmed.substring(0, equalPos).trim();
|
|
267
|
+
const value = trimmed.substring(equalPos + 1).trim();
|
|
268
|
+
config[key] = value;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
return config;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Monitors a file for changes using periodic polling.
|
|
276
|
+
* Returns a function to stop monitoring.
|
|
277
|
+
*
|
|
278
|
+
* @param filename - File to monitor
|
|
279
|
+
* @param callback - Function called when file changes
|
|
280
|
+
* @param interval - Check interval in milliseconds (default: 1000)
|
|
281
|
+
* @returns Function to stop monitoring
|
|
282
|
+
*
|
|
283
|
+
* @example
|
|
284
|
+
* ```typescript
|
|
285
|
+
* // Watch configuration file for changes
|
|
286
|
+
* const stopWatching = nodemodCore.file.watch('server.cfg', (event) => {
|
|
287
|
+
* console.log(`Config changed! Old size: ${event.oldSize}, New size: ${event.newSize}`);
|
|
288
|
+
* // Reload configuration
|
|
289
|
+
* const newConfig = nodemodCore.file.loadConfig('server.cfg');
|
|
290
|
+
* });
|
|
291
|
+
*
|
|
292
|
+
* // Stop watching after 10 minutes
|
|
293
|
+
* setTimeout(() => {
|
|
294
|
+
* stopWatching();
|
|
295
|
+
* console.log('Stopped watching file');
|
|
296
|
+
* }, 600000);
|
|
297
|
+
* ```
|
|
298
|
+
*/
|
|
299
|
+
watch(filename, callback, interval = 1000) {
|
|
300
|
+
let lastSize = this.getSize(filename);
|
|
301
|
+
let lastTime = Date.now();
|
|
302
|
+
const watchInterval = setInterval(() => {
|
|
303
|
+
const currentSize = this.getSize(filename);
|
|
304
|
+
const currentTime = Date.now();
|
|
305
|
+
if (currentSize !== lastSize) {
|
|
306
|
+
callback({
|
|
307
|
+
filename,
|
|
308
|
+
event: 'change',
|
|
309
|
+
oldSize: lastSize,
|
|
310
|
+
newSize: currentSize,
|
|
311
|
+
timestamp: currentTime
|
|
312
|
+
});
|
|
313
|
+
lastSize = currentSize;
|
|
314
|
+
lastTime = currentTime;
|
|
315
|
+
}
|
|
316
|
+
}, interval);
|
|
317
|
+
return () => clearInterval(watchInterval);
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Common Half-Life server file paths.
|
|
321
|
+
*/
|
|
322
|
+
static PATHS = {
|
|
323
|
+
/** Main server configuration file */
|
|
324
|
+
CONFIG: 'server.cfg',
|
|
325
|
+
/** Banned players list */
|
|
326
|
+
BANNED: 'banned.cfg',
|
|
327
|
+
/** IP ban list */
|
|
328
|
+
LISTIP: 'listip.cfg',
|
|
329
|
+
/** Map rotation cycle */
|
|
330
|
+
MAPCYCLE: 'mapcycle.txt',
|
|
331
|
+
/** Message of the day */
|
|
332
|
+
MOTD: 'motd.txt'
|
|
333
|
+
};
|
|
334
|
+
/**
|
|
335
|
+
* Valid file extensions for different resource types.
|
|
336
|
+
*/
|
|
337
|
+
static EXTENSIONS = {
|
|
338
|
+
/** Model file extensions */
|
|
339
|
+
MODEL: ['mdl'],
|
|
340
|
+
/** Sound file extensions */
|
|
341
|
+
SOUND: ['wav', 'mp3'],
|
|
342
|
+
/** Map file extensions */
|
|
343
|
+
MAP: ['bsp'],
|
|
344
|
+
/** Image file extensions */
|
|
345
|
+
IMAGE: ['bmp', 'tga', 'jpg', 'jpeg', 'png'],
|
|
346
|
+
/** Sprite file extensions */
|
|
347
|
+
SPRITE: ['spr'],
|
|
348
|
+
/** Configuration file extensions */
|
|
349
|
+
CONFIG: ['cfg', 'txt', 'ini']
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
exports.default = NodemodFile;
|
|
353
|
+
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/native/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// This file is generated automatically. Don't edit it.
|
|
2
|
+
/// <reference path="./structures.d.ts" />
|
|
3
|
+
/// <reference path="./enums.d.ts" />
|
|
4
|
+
|
|
5
|
+
declare namespace nodemod {
|
|
6
|
+
interface DLL {
|
|
7
|
+
/** void (*pfnGameInit)( void ); */
|
|
8
|
+
gameInit(): void;
|
|
9
|
+
/** int (*pfnSpawn)( edict_t *pent ); */
|
|
10
|
+
spawn(pent: Entity): number;
|
|
11
|
+
/** void (*pfnThink)( edict_t *pent ); */
|
|
12
|
+
think(pent: Entity): void;
|
|
13
|
+
/** void (*pfnUse)( edict_t *pentUsed, edict_t *pentOther ); */
|
|
14
|
+
use(pentUsed: Entity, pentOther: Entity): void;
|
|
15
|
+
/** void (*pfnTouch)( edict_t *pentTouched, edict_t *pentOther ); */
|
|
16
|
+
touch(pentTouched: Entity, pentOther: Entity): void;
|
|
17
|
+
/** void (*pfnBlocked)( edict_t *pentBlocked, edict_t *pentOther ); */
|
|
18
|
+
blocked(pentBlocked: Entity, pentOther: Entity): void;
|
|
19
|
+
/** void (*pfnKeyValue)( edict_t *pentKeyvalue, KeyValueData *pkvd ); */
|
|
20
|
+
keyValue(pentKeyvalue: Entity, pkvd: KeyValueData): void;
|
|
21
|
+
/** void (*pfnSave)( edict_t *pent, SAVERESTOREDATA *pSaveData ); */
|
|
22
|
+
save(pent: Entity, pSaveData: SaveRestoreData): void;
|
|
23
|
+
/** int (*pfnRestore)( edict_t *pent, SAVERESTOREDATA *pSaveData, int globalEntity ); */
|
|
24
|
+
restore(pent: Entity, pSaveData: SaveRestoreData, globalEntity: number): number;
|
|
25
|
+
/** void (*pfnSetAbsBox)( edict_t *pent ); */
|
|
26
|
+
setAbsBox(pent: Entity): void;
|
|
27
|
+
/** void (*pfnSaveWriteFields)( SAVERESTOREDATA*, const char*, void*, TYPEDESCRIPTION*, int ); */
|
|
28
|
+
saveWriteFields(value0: SaveRestoreData, value1: string, value2: ArrayBuffer | Uint8Array | null, value3: TypeDescription, value4: number): void;
|
|
29
|
+
/** void (*pfnSaveReadFields)( SAVERESTOREDATA*, const char*, void*, TYPEDESCRIPTION*, int ); */
|
|
30
|
+
saveReadFields(value0: SaveRestoreData, value1: string, value2: ArrayBuffer | Uint8Array | null, value3: TypeDescription, value4: number): void;
|
|
31
|
+
/** void (*pfnSaveGlobalState)( SAVERESTOREDATA * ); */
|
|
32
|
+
saveGlobalState(value0: SaveRestoreData): void;
|
|
33
|
+
/** void (*pfnRestoreGlobalState)( SAVERESTOREDATA * ); */
|
|
34
|
+
restoreGlobalState(value0: SaveRestoreData): void;
|
|
35
|
+
/** void (*pfnResetGlobalState)( void ); */
|
|
36
|
+
resetGlobalState(): void;
|
|
37
|
+
/** qboolean (*pfnClientConnect)( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[128] ); */
|
|
38
|
+
clientConnect(pEntity: Entity, pszName: string, pszAddress: string, szRejectReason: string): boolean;
|
|
39
|
+
/** void (*pfnClientDisconnect)( edict_t *pEntity ); */
|
|
40
|
+
clientDisconnect(pEntity: Entity): void;
|
|
41
|
+
/** void (*pfnClientKill)( edict_t *pEntity ); */
|
|
42
|
+
clientKill(pEntity: Entity): void;
|
|
43
|
+
/** void (*pfnClientPutInServer)( edict_t *pEntity ); */
|
|
44
|
+
clientPutInServer(pEntity: Entity): void;
|
|
45
|
+
/** void (*pfnClientCommand)( edict_t *pEntity ); */
|
|
46
|
+
clientCommand(pEntity: Entity): void;
|
|
47
|
+
/** void (*pfnClientUserInfoChanged)( edict_t *pEntity, char *infobuffer ); */
|
|
48
|
+
clientUserInfoChanged(pEntity: Entity, infobuffer: string): void;
|
|
49
|
+
/** void (*pfnServerActivate)( edict_t *pEdictList, int edictCount, int clientMax ); */
|
|
50
|
+
serverActivate(pEdictList: Entity, edictCount: number, clientMax: number): void;
|
|
51
|
+
/** void (*pfnServerDeactivate)( void ); */
|
|
52
|
+
serverDeactivate(): void;
|
|
53
|
+
/** void (*pfnPlayerPreThink)( edict_t *pEntity ); */
|
|
54
|
+
playerPreThink(pEntity: Entity): void;
|
|
55
|
+
/** void (*pfnPlayerPostThink)( edict_t *pEntity ); */
|
|
56
|
+
playerPostThink(pEntity: Entity): void;
|
|
57
|
+
/** void (*pfnStartFrame)( void ); */
|
|
58
|
+
startFrame(): void;
|
|
59
|
+
/** void (*pfnParmsNewLevel)( void ); */
|
|
60
|
+
parmsNewLevel(): void;
|
|
61
|
+
/** void (*pfnParmsChangeLevel)( void ); */
|
|
62
|
+
parmsChangeLevel(): void;
|
|
63
|
+
/** const char *(*pfnGetGameDescription)( void ); */
|
|
64
|
+
getGameDescription(): string;
|
|
65
|
+
/** void (*pfnPlayerCustomization)( edict_t *pEntity, customization_t *pCustom ); */
|
|
66
|
+
playerCustomization(pEntity: Entity, pCustom: Customization): void;
|
|
67
|
+
/** void (*pfnSpectatorConnect)( edict_t *pEntity ); */
|
|
68
|
+
spectatorConnect(pEntity: Entity): void;
|
|
69
|
+
/** void (*pfnSpectatorDisconnect)( edict_t *pEntity ); */
|
|
70
|
+
spectatorDisconnect(pEntity: Entity): void;
|
|
71
|
+
/** void (*pfnSpectatorThink)( edict_t *pEntity ); */
|
|
72
|
+
spectatorThink(pEntity: Entity): void;
|
|
73
|
+
/** void (*pfnSys_Error)( const char *error_string ); */
|
|
74
|
+
sysError(error_string: string): void;
|
|
75
|
+
/** void (*pfnPM_Move)( struct playermove_s *ppmove, qboolean server ); */
|
|
76
|
+
pMMove(ppmove: PlayerMove, server: boolean): void;
|
|
77
|
+
/** void (*pfnPM_Init)( struct playermove_s *ppmove ); */
|
|
78
|
+
pMInit(ppmove: PlayerMove): void;
|
|
79
|
+
/** char (*pfnPM_FindTextureType)( const char *name ); */
|
|
80
|
+
pMFindTextureType(name: string): number;
|
|
81
|
+
/** void (*pfnSetupVisibility)( struct edict_s *pViewEntity, struct edict_s *pClient, unsigned char **pvs, unsigned char **pas ); */
|
|
82
|
+
setupVisibility(pViewEntity: Entity, pClient: Entity, pvs: number[], pas: number[]): void;
|
|
83
|
+
/** void (*pfnUpdateClientData) ( const struct edict_s *ent, int sendweapons, struct clientdata_s *cd ); */
|
|
84
|
+
updateClientData(ent: Entity, sendweapons: number, cd: ClientData): void;
|
|
85
|
+
/** int (*pfnAddToFullPack)( struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet ); */
|
|
86
|
+
addToFullPack(state: EntityState, e: number, ent: Entity, host: Entity, hostflags: number, player: number, pSet: number[]): number;
|
|
87
|
+
/** void (*pfnCreateBaseline)( int player, int eindex, struct entity_state_s *baseline, struct edict_s *entity, int playermodelindex, vec3_t player_mins, vec3_t player_maxs ); */
|
|
88
|
+
createBaseline(player: number, eindex: number, baseline: EntityState, entity: Entity, playermodelindex: number, player_mins: number[], player_maxs: number[]): void;
|
|
89
|
+
/** void (*pfnRegisterEncoders)( void ); */
|
|
90
|
+
registerEncoders(): void;
|
|
91
|
+
/** int (*pfnGetWeaponData)( struct edict_s *player, struct weapon_data_s *info ); */
|
|
92
|
+
getWeaponData(player: Entity, info: WeaponData): number;
|
|
93
|
+
/** void (*pfnCmdStart)( const edict_t *player, const struct usercmd_s *cmd, unsigned int random_seed ); */
|
|
94
|
+
cmdStart(player: Entity, cmd: UserCmd, random_seed: number): void;
|
|
95
|
+
/** void (*pfnCmdEnd)( const edict_t *player ); */
|
|
96
|
+
cmdEnd(player: Entity): void;
|
|
97
|
+
/** int (*pfnConnectionlessPacket )( const struct netadr_s *net_from, const char *args, char *response_buffer, int *response_buffer_size ); */
|
|
98
|
+
connectionlessPacket(net_from: NetAdr, args: string, response_buffer: string, response_buffer_size: number[]): number;
|
|
99
|
+
/** int (*pfnGetHullBounds) ( int hullnumber, float *mins, float *maxs ); */
|
|
100
|
+
getHullBounds(hullnumber: number, mins: number[], maxs: number[]): number;
|
|
101
|
+
/** void (*pfnCreateInstancedBaselines) ( void ); */
|
|
102
|
+
createInstancedBaselines(): void;
|
|
103
|
+
/** int (*pfnInconsistentFile)( const struct edict_s *player, const char *filename, char *disconnect_message ); */
|
|
104
|
+
inconsistentFile(player: Entity, filename: string, disconnect_message: string): number;
|
|
105
|
+
/** int (*pfnAllowLagCompensation)( void ); */
|
|
106
|
+
allowLagCompensation(): number;
|
|
107
|
+
}
|
|
108
|
+
const dll: DLL;
|
|
109
|
+
}
|