Skip to main content

[NodeMod Core]

/ .. / default

Class: default

Defined in: src/utils/util.ts:48

Comprehensive utility class providing helper functions for entity management, player communication, and low-level entity data manipulation. Includes automatic player connection tracking and various convenience methods for common server operations.

Example

// Send chat message to player
const player = nodemod.players[0];
nodemodCore.util.sendChat('Welcome to the server!', player);

// Show HUD text with custom styling
nodemodCore.util.showHudText(player, 'Health\: 100', {
x\: 100, y\: 200, r\: 255, g\: 0, b\: 0
});

// Get player connection info
const playerInfo = nodemodCore.util.getConnectedPlayersInfo();
playerInfo.forEach(info => {
console.log(`${info.name} (${info.steamId}) from ${info.ipAddress}`);
});

// Debug entity data
nodemodCore.util.dumpOffsets(player, 1000);

Constructors

Constructor

new default(msgService): NodemodUtil

Defined in: src/utils/util.ts:60

Creates a new NodemodUtil instance. Automatically sets up player connection tracking.

Parameters

msgService

default

Message service for network communication

Returns

NodemodUtil

Properties

msg

private msg: default

Defined in: src/utils/util.ts:50

Message service for network communication

playerIpMap

private playerIpMap: Map<number, string>

Defined in: src/utils/util.ts:52

Map storing player IP addresses by entity index

Methods

setupPlayerTracking()

private setupPlayerTracking(): void

Defined in: src/utils/util.ts:65

Returns

void

forceEntityId()

forceEntityId(entity): null | number

Defined in: src/utils/util.ts:93

Converts an entity reference to its numeric index. Handles both entity objects and numeric indices safely.

Parameters

entity

Entity object, numeric index, or null

null | number | Entity

Returns

null | number

Entity index number or null if invalid

Example

const player = nodemod.players[0];
const playerId = nodemodCore.util.forceEntityId(player);
console.log(`Player ID\: ${playerId}`);

forceEntityObject()

forceEntityObject(entity?): null | Entity

Defined in: src/utils/util.ts:116

Converts an entity reference to an entity object. Handles both entity objects and numeric indices safely.

Parameters

entity?

Entity object, numeric index, or null

null | number | Entity

Returns

null | Entity

Entity object or null if invalid

Example

const entityObj = nodemodCore.util.forceEntityObject(1);
if (entityObj) {
console.log(`Entity name\: ${entityObj.netname}`);
}

sendChat()

sendChat(message, target): void

Defined in: src/utils/util.ts:144

Sends a chat message to a specific player or all players. Automatically handles multi-line messages by splitting on newlines.

Parameters

message

string

Message text to send (supports newlines)

target

Target player entity/index, or null for all players

null | number | Entity

Returns

void

Example

// Send to specific player
const player = nodemod.players[0];
nodemodCore.util.sendChat('Welcome back!', player);

// Send multi-line message
nodemodCore.util.sendChat('Line 1\\nLine 2\\nLine 3', player);

// Broadcast to all players
nodemodCore.util.sendChat('Server announcement', null);

showHudText()

showHudText(entity, text, options?): void

Defined in: src/utils/util.ts:181

Displays HUD text to one or more players with optional styling. Supports both simple text display and advanced positioned text with colors.

Parameters

entity

Target entity, array of entities, or entity index

number | Entity | Entity[]

text

string

Text to display on the HUD

options?

Optional positioning and color settings

null | HudTextOptions

Returns

void

Example

// Simple HUD message
nodemodCore.util.showHudText(player, 'Health\: 100');

// Styled HUD message at specific position
nodemodCore.util.showHudText(player, 'LOW HEALTH!', {
x\: 100, y\: 300, r\: 255, g\: 0, b\: 0
});

// Show to multiple players
nodemodCore.util.showHudText([player1, player2], 'Round starts soon');

rainbowizeString()

rainbowizeString(text): string

Defined in: src/utils/util.ts:224

Parameters

text

string

Returns

string

messageClient()

messageClient(client, message): void

Defined in: src/utils/util.ts:229

Parameters

client

Entity

message

string

Returns

void

messageAll()

messageAll(message): void

Defined in: src/utils/util.ts:233

Parameters

message

string

Returns

void

isValidEntity()

isValidEntity(entity): boolean

Defined in: src/utils/util.ts:240

Parameters

entity

Entity

Returns

boolean

getUserId()

getUserId(player): number

Defined in: src/utils/util.ts:245

Parameters

player

Entity

Returns

number

getSteamId()

getSteamId(player): string

Defined in: src/utils/util.ts:249

Parameters

player

Entity

Returns

string

getIpAddress()

getIpAddress(player): string

Defined in: src/utils/util.ts:254

Parameters

player

Entity

Returns

string

getConnectedPlayersInfo()

getConnectedPlayersInfo(): object[]

Defined in: src/utils/util.ts:280

Gets detailed information about all connected players. Includes entity references, names, IDs, and network information.

Returns

object[]

Array of player information objects

Example

const players = nodemodCore.util.getConnectedPlayersInfo();
console.log(`${players.length} players connected\:`);

players.forEach(player => {
console.log(`${player.name} (${player.steamId}) from ${player.ipAddress}`);

// Check if player is admin
if (isAdminSteamId(player.steamId)) {
nodemodCore.util.sendChat('Welcome back, admin!', player.entity);
}
});

clearPlayerTracking()

clearPlayerTracking(): void

Defined in: src/utils/util.ts:300

Clear all tracked player connection data (manual cleanup) Use this to reset the IP tracking map if needed

Returns

void

readInt32LE()

readInt32LE(entity, offset): null | number

Defined in: src/utils/util.ts:310

Read a 32-bit little-endian integer from entity private data

Parameters

entity

Entity

The entity to read from

offset

number

The byte offset to read from

Returns

null | number

The integer value or null if buffer is invalid

writeInt32LE()

writeInt32LE(entity, offset, value): void

Defined in: src/utils/util.ts:322

Write a 32-bit little-endian integer to entity private data

Parameters

entity

Entity

The entity to write to

offset

number

The byte offset to write to

value

number

The integer value to write

Returns

void

dumpOffsets()

dumpOffsets(entity, maxOffset): void

Defined in: src/utils/util.ts:332

Dump all non-zero private data values for an entity (debugging utility)

Parameters

entity

Entity

The entity to dump data for

maxOffset

number = 10000

Maximum offset to check (default 10000)

Returns

void

searchOffsets()

searchOffsets(entity, searchValue, start, maxOffset): void

Defined in: src/utils/util.ts:352

Search for specific values in entity private data (debugging utility)

Parameters

entity

Entity

The entity to search

searchValue

number

The value to search for

start

number = 0

Starting offset (default 0)

maxOffset

number = 2000

Maximum offset to search (default 2000)

Returns

void