fivem-nui について
FiveM リソース内の HTML、CSS、JavaScript インターフェースを作成・編集するスキルです。マニフェスト設定、Lua とブラウザー間の通信、コールバック、フォーカス管理、安全性の確認を扱います。
主な機能
- 01FiveM マニフェストと UI の設定
- 02Lua からブラウザーへのメッセージ送信
- 03NUI コールバック処理
- 04キーボードとカーソルのフォーカス制御
- 05クライアントとサーバーの検証指針
- 06デバッグとモックモードでのテスト
活用シーン
- 01FiveM リソースへのブラウザー UI の追加
- 02UI 操作と Lua コールバックの接続
- 03UI の開閉時におけるフォーカス管理
- 04サーバー側の状態変更前の UI データ検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ germanfndez/ fiveai-skills --skill fivem-nuiインストール後、Claude Code で/fivem-nuiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
rules/best-practices.mdfullscreen-nui.mdnui-callbacks.mdreference-links.mdsetup.md詳細
FiveM NUI
FiveM 向けの HTML/CSS/JS インターフェース:マニフェストの設定、Lua からブラウザーへのメッセージ、NUI コールバック、フォーカスの処理。
有効化の条件
ユーザーが FiveM UI の作成や編集を依頼した場合、リソース内に HTML/CSS/JS を記述する場合、ui_page を設定する場合、または SendNUIMessage、SetNUIFocus、RegisterNUICallback について質問した場合に、このスキルを読み込みます。
必須ルール
fxmanifest.luaでui_pageを宣言し、すべての UI ファイルをfilesに含めます。ファイルが不足していても、読み込みはエラーなく失敗します。- アセットは
https://cfx-nui-<resource>/pathで参照します。nui://プロトコルは非推奨です。 RegisterNUICallbackのハンドラーは必ずcb(...)(最低でもcb({}))を呼び出します。呼び出さないと、ブラウザーのリクエストがハングします。- ブラウザーからコールバックを呼び出すには、
fetch('https://' + GetParentResourceName() + '/<name>', { method: 'POST', body: JSON.stringify(...) })を使用します。URL の名前は登録した名前と完全に一致させます。 SetNUIFocus(keyboard, mouse):UI を閉じる際は、必ずSetNUIFocus(false, false)を呼び出します。- NUI コールバックはクライアント上で実行されます。データをクライアント側で検証し、状態を変更する前にサーバー側でも再検証します。UI から送られた価格、数量、ID は決して信用しません。
SendNUIMessageの呼び出しは最小限にします。フレームごとに送信するのではなく、更新をまとめて送信します。- F8 と Chrome DevTools でデバッグし、モックモードを使ってブラウザーでページをテストします。
判断基準
| 方向 | 方法 |
|---|---|
| Lua からブラウザー | SendNUIMessage({ type = ..., data = ... }) + window.addEventListener('message') |
| ブラウザーから Lua | https://<resource>/<callback> への fetch POST + RegisterNUICallback |
| ブラウザーからサーバーデータを要求 | Lua クライアントへのコールバックを経由し、その後サーバーコールバックを呼び出す |
| カーソルの表示/非表示 | SetNUIFocus(true, true) / SetNUIFocus(false, false) |
| キーボードのみ | SetNUIFocus(true, false) |
実行手順
- マニフェストに
ui_pageとfilesを追加します(rules/setup.md を参照)。 index.html、CSS、JS を作成し、typeをキーとしてmessageイベントをリッスンします。- UI からリクエスト可能なすべてのアクションに対して Lua コールバックを登録し、あらゆる経路で
cbを呼び出します。 - UI を開くときと閉じるときにフォーカスを管理し、閉じる操作として
Escapeを処理します。 - 状態を変更するアクションはサーバーに転送し、サーバー側で検証します。
出力の要件
マニフェストのエントリー、HTML/CSS/JS ファイル、およびコールバックとフォーカス処理を含む Lua クライアントスクリプトを返します。セキュリティに関わるロジックはサーバー側に保持します。
参考資料
- rules/setup.md — フォルダー構成、マニフェスト、ビルドツール、よくある間違い。
- rules/fullscreen-nui.md — SendNUIMessage、SetNUIFocus、フォーカススタック、アセット、DevTools。
- rules/nui-callbacks.md — RegisterNUICallback、fetch、非同期処理、エラー、セキュリティ。
- rules/best-practices.md — パフォーマンス、セキュリティ、状態、エラー処理、テスト。
- rules/reference-links.md — 公式ドキュメントとネイティブ関数のリファレンス。
上流ドキュメント:https://docs.fivem.net/docs/scripting-manual/nui-development/
コメント
Markdown 対応