**Fivem-rpc:FiveM 的类型化 RPC**
**简介:**
fivem-rpc 是一个为 FiveM 开发的类型化 RPC(Remote Procedure Call)库,它将原始的 `emitNet`/`onNet` 调用替换为基于 Promise 的、类型化的过程。这有助于提高代码的可读性和可维护性。
**安装:**
“`bash
pnpm add fivem-rpc
“`
**配置:**
你需要通过扩展 `fivem-rpc/types` 中定义的接口来声明你的过程。服务器和客户端需要导入相同的接口声明。例如:
“`javascript
import type { RpcPayload } from “fivem-rpc/types”;
declare module “fivem-rpc/types” {
// … 其他接口定义 …
}
“`
**示例:**
以下是一个简单的使用示例:
**客户端到服务器:**
在服务器端注册一个处理程序:
“`javascript
import { initializeRpc } from “fivem-rpc/server”;
const { onClientRpc } = initializeRpc();
onClientRpc(“foo:getData”, async (source, { id }) => {
return { name: “bar” };
});
“`
在客户端调用该过程:
“`javascript
import { initializeRpc } from “fivem-rpc/client”;
const { callServerRpc } = initializeRpc();
const result = await callServerRpc(“foo:getData”, { id: 1 });
if (result.success) {
console.log(result.data.name);
}
“`
**服务器到客户端:**
在客户端注册一个处理程序:
“`javascript
import { initializeRpc } from “fivem-rpc/client”;
const { onServerRpc } = initializeRpc();
onServerRpc(“bar:notify”, async ({ message }) => {
console.log(message);
return { seen: true };
});
“`
在服务器端调用该过程:
“`javascript
import { callClientRpc } from “fivem-rpc/client”;
const { callClientRpc } = initializeRpc();
const result = await callClientRpc(playerId, “bar:notify”, { message: “hello” });
if (result.success) {
console.log(result.data.seen);
}
“`
**NUI 到客户端:**
在客户端注册一个处理程序:
“`javascript
import { onNuiRpc } from “fivem-rpc/nui”;
const { onNuiRpc } = initializeRpc();
onNuiRpc(“ui:getInfo”, async () => {
return { name: GetPlayerName(“-1”) };
});
“`
在 NUI 中调用该过程:
“`javascript
import { initializeRpc } from “fivem-rpc/nui”;
const { callClientRpc } = initializeRpc();
const result = await callClientRpc(“ui:getInfo”);
if (result.success) {
document.title = result.data.name;
}
“`
**NUI 到服务器:**
在客户端注册一个处理程序:
“`javascript
import { onClientRpc } from “fivem-rpc/nui”;
const { onClientRpc } = initializeRpc();
onClientRpc(“ui:show”, async ({ text }) => {
showNotification(text);
return { ok: true };
});
“`
在 NUI 中调用该过程:
“`javascript
import { callNuiRpc } from “fivem-rpc/nui”;
const { callNuiRpc } = initializeRpc();
const result = await callNuiRpc(“ui:show”, { text: “hello” });
if (result.success) {
console.log(result.data.ok);
}
“`
**删除处理程序:**
所有以 `onXxxRpc` 开头的函数都有一个对应的 `offXxxRpc` 函数。你可以仅使用过程名称来无条件删除处理程序,或者传递原始处理程序引用以仅在它仍然是当前注册的处理程序时才删除它。




![[ESX] Poud Mine – 适用于 Fivem 服务器的采矿扩展模块。fivem资源网-fivem插件网-fivem脚本-fivem技术-fivem分享FIVEM资源网](https://forum-cfx-re.akamaized.net/original/5X/3/2/1/8/32187f638d9dc2d57e79a381eafb06ea782fbd02.jpeg)
![[esx/qbcore]记分牌4种风格fivem资源网-fivem插件网-fivem脚本-fivem技术-fivem分享FIVEM资源网](https://forum-cfx-re.akamaized.net/optimized/5X/9/d/2/0/9d20e03f5c6b162c3cf2efd1e1045d24d657c757_2_1024x682.jpeg)
![[免费] MG Garages — FiveM 车库系统 | ESX & QBCorefivem资源网-fivem插件网-fivem脚本-fivem技术-fivem分享FIVEM资源网](https://forum-cfx-re.akamaized.net/original/5X/f/a/9/b/fa9bf93ce1386e1d8a503fe4e7beb6142ac40d16.jpeg)

![[免费] PUB YELLOW JACK | MLO [免费]fivem资源网-fivem插件网-fivem脚本-fivem技术-fivem分享FIVEM资源网](https://forum-cfx-re.akamaized.net/original/5X/0/0/b/a/00baa7001127e878383f160ac60a47bed82bdcd1.jpeg)
![[免费] 🎬 HKN Works | 欢迎界面fivem资源网-fivem插件网-fivem脚本-fivem技术-fivem分享FIVEM资源网](https://forum.cfx.re/images/emoji/twitter/clapper_board.png?v=15)





暂无评论内容