fivem-ts-rpc
v1.0.8
Published
A TypeScript library for creating RPC servers and clients in FiveM.
Readme
fivem-ts-rpc
A lightweight TypeScript library for type-safe Remote Procedure Calls (RPC) between server and client in FiveM.
Installation
npm install fivem-ts-rpcOverview
fivem-ts-rpc provides a simple RPC object on both the server and client sides, allowing you to:
- Register handlers that respond to calls from the other side.
- Call procedures on the other side and
awaittheir results.
Usage
Client → Server
Server — register a handler:
// server/index.ts
import { RPC } from "fivem-ts-rpc/server";
RPC.register("getPlayerMoney", () => {
return 1000;
});Client — call the server:
// client/index.ts
import { RPC } from "fivem-ts-rpc/client";
const money = await RPC.call("getPlayerMoney");
console.log(money); // 1000Server → Client
Client — register a handler:
// client/index.ts
import { RPC } from "fivem-ts-rpc/client";
RPC.register("getLocalPlayerName", () => {
return GetPlayerName(PlayerId());
});Server — call a specific client by their source:
// server/index.ts
import { RPC } from "fivem-ts-rpc/server";
const playerName = await RPC.call("getLocalPlayerName", source);
console.log(playerName); // e.g. "Gabriel"API
RPC.register(name, callback)
Registers a handler for an incoming RPC call. The callback can be synchronous or async.
| Parameter | Type | Description |
|------------|----------------------------|---------------------------|
| name | string | Unique name for the RPC. |
| callback | (...args: any[]) => any | Handler function. |
RPC.call(name, ...args) — Client
Calls a registered handler on the server and returns a Promise that resolves with the handler's return value.
| Parameter | Type | Description |
|-----------|----------|--------------------------|
| name | string | Name of the server RPC. |
| ...args | any[] | Arguments for the handler. |
RPC.call(name, src, ...args) — Server
Calls a registered handler on a specific client by their network source ID.
| Parameter | Type | Description |
|-----------|----------|------------------------------------|
| name | string | Name of the client RPC. |
| src | number | Player network source ID. |
| ...args | any[] | Arguments for the handler. |
How It Works
Internally the library uses FiveM's emitNet / onNet events to route calls and responses:
| Direction | Call event | Response event |
|-----------------|---------------------|-------------------------|
| Client → Server | rpc:server:call | rpc:server:response |
| Server → Client | rpc:client:call | rpc:client:response |
Each call is assigned a random numeric ID so concurrent calls are resolved independently.
License
MIT — Gabriel Xisto
