Skip to content

datanodes ​

Observe incoming data nodes and work with their copied payloads.

These APIs attach to Harmony's existing verified receive paths. They expose fixed incoming filters and deferred observations. They do not expose packet sending, a live node mutation interface, or Lua execution inside a network hook.

Data-node API ​

datanodes.available ​

Alias of clone/sync availability.

text
datanodes.available()

Returns: Boolean

datanodes.block ​

Registers an incoming data-node filter.

text
datanodes.block(filter)

Returns: RuleId

datanodes.unblock ​

Same script-owned rule removal as clone_sync.unblock.

text
datanodes.unblock(rule_id)

Returns: Nothing

datanodes.on_receive ​

Sets this script's single node observer, replacing the previous callback.

text
datanodes.on_receive(callback)

Returns: Nothing

datanodes.kind ​

Named node-kind constants.

text
datanodes.kind

Returns: Table

datanodes.size ​

Known copied payload size, in bytes, for each corresponding kind name.

text
datanodes.size

Returns: Table

Node-kind constants ​

Access kinds as datanodes.kind.Name and sizes as datanodes.size.Name. Use the runtime size table; do not invent field offsets or assume these layouts apply to another game build.

ValueNameValueName
0PedCreation10VehicleAppearance
1AnimalCreation11VehicleGadgets
2VehicleCreation12PhysicalAttachment
3PlayerCreation13PedAttachment
4PlayerAppearance14ProjectileCreation
5PedTasks15TrainState
6PedTaskSpecific16PlayerWanted
7PedTaskSequence17PropSetCreation
8VehicleTask18PickupCreation
9ObjectTask19ObjectCreation