mcpField
F
fivem-dev

fivem-dev

github.com/melihbozkurt10開発9490 回インストール34 週間前に更新
リポジトリ

fivem-dev について

fivem-devは、LuaとNUI(JS/TS)でFiveMリソースを開発する方向けのドキュメント参照スキルです。QBox、QBCore、ESXに対応し、API使用前の公式資料による確認や、フレームワーク判定、開発パターンを扱います。

主な機能

  1. 01FiveMネイティブとフレームワーク資料の参照
  2. 02QBox、QBCore、ESXの判定
  3. 03LuaとNUI開発のガイド
  4. 04リソース構成と性能パターン
  5. 05サーバー側検証とセキュリティの重視

活用シーン

  1. 01FiveMネイティブ関数と引数の確認
  2. 02異なるフレームワーク向けのリソース開発
  3. 03NUIインターフェースの構築
  4. 04リソースの性能とセキュリティの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/melihbozkurt10/fivem-dev-plugin --skill fivem-dev

インストール後、Claude Code で/fivem-devを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.npmignore
README.md
.cursorrules
FIVEM_CURSOR_RULES.md
package.json
.claude-plugin/
marketplace.json
plugin.json
.github/workflows/
publish.yml
assets/
asset-discovery.md
commands/
fivem-dev.md
frameworks/
esx.md
qbox.md
framework-detection.md
qbcore.md
resources/
manifest.md
ox-lib-guide.md
scripting/
client-server.md
nui-guide.md
thread-management.md
lua-patterns.md
scripts/
install.js

詳細

FiveM 開発

FiveM リソース開発向けの動的ドキュメントオーケストレーターです。 Lua と NUI(JS/TS)を使用する QBox、QBCore、ESX フレームワークに対応しています。

基本方針

  1. 記憶せず、取得する - 常に信頼できる情報源から最新情報を取得します
  2. フレームワークに依存しない考え方 - パターンを理解し、フレームワークに合わせて応用します
  3. パフォーマンスを最優先する - FiveM のティック予算は厳格です
  4. セキュリティを重視する - サーバー側での検証は必須です

重要:ハルシネーション禁止ポリシー

ネイティブ関数、フレームワーク API、パラメーターを決して捏造したり、推測したりしないでください。

ルール:
  1. ネイティブ関数が不明な場合 → https://docs.fivem.net/natives/ から必ず取得してください
  2. フレームワーク API が不明な場合 → 公式ドキュメントから必ず取得してください
  3. 関数が存在しない場合 → 正直にユーザーに伝え、代替案を提示してください
  4. パラメーターが不明な場合 → 推測せず、ドキュメントを取得してください
ネイティブ関数や API の呼び出しを書く前に:
  • これは実在する FiveM ネイティブ関数ですか? → docs.fivem.net/natives で確認します
  • 関数名は正しいですか? → 正確なスペルを確認します
  • パラメーターは正しいですか? → パラメーターの順序と型を確認します
  • クライアント、サーバー、または両方で動作しますか? → 利用可能な環境を確認します
わからない場合:
"I'm not 100% certain about this native/API. Let me fetch the documentation..."
[Use WebFetch to get accurate info]
検証元:
種類情報源アクション
ネイティブ関数https://docs.fivem.net/natives/WebFetch またはユーザーに確認を依頼
QBox APIhttps://docs.qbox.re/WebFetch
QBCore APIhttps://docs.qbcore.org/WebFetch
ESX APIhttps://docs.esx-framework.org/WebFetch
ox_libhttps://overextended.dev/ox_libWebFetch
プロップ/車両https://forge.plebmasters.de/検索方法をユーザーに案内
例 - 誤り:
-- DON'T: Inventing a native that might not exist
SetPlayerInvincible(playerId, true)  -- Is this real? What are the params?
例 - 正しい:
-- DO: Use verified native with correct params
SetEntityInvincible(PlayerPedId(), true)  -- Verified at docs.fivem.net

コンテンツ一覧

リクエストに関連するファイルのみを読みます:

ファイル説明読むタイミング
frameworks/framework-detection.mdアクティブなフレームワークの検出新しいタスクの開始時
frameworks/qbox.mdQBox のエクスポート、パターンQBox プロジェクト
frameworks/qbcore.mdQBCore のイベント、エクスポートQBCore プロジェクト
frameworks/esx.mdESX xPlayer、イベントESX プロジェクト
scripting/lua-patterns.mdFiveM 向け Lua のイディオムLua の記述時
scripting/nui-guide.mdNUI の HTML/CSS/JS パターンUI の構築時
scripting/client-server.mdアーキテクチャパターン新しいリソース
scripting/thread-management.mdパフォーマンスパターン最適化時
resources/manifest.mdfxmanifest.lua リファレンスリソースの設定時
resources/ox-lib-guide.mdox_lib ユーティリティox_lib の使用時
assets/asset-discovery.mdGTA V アセットの検索プロップ、車両、ペッド

動的取得 - 判断フロー

ステップ 1:リクエストを分類する
ユーザーの質問アクション
ネイティブ関数(GetPlayerPed、CreateVehicle など)ネイティブ関数のドキュメントから取得
フレームワーク API(QBCore.Functions、ESX.GetPlayerData)フレームワークのドキュメントから取得
ox_lib の機能(lib.callback、lib.notify)ox_lib のドキュメントから取得
GTA V アセット(プロップ、車両、ペッドモデル)PlebMasters へ案内
リソースの構造、マニフェストローカルファイルを読む
ベストプラクティス、パターンローカルファイルを読む
ステップ 2:WebFetch の URL
ネイティブ関数

ベース URL: https://docs.fivem.net/natives/

WebFetch(
  url: "https://docs.fivem.net/natives/",
  prompt: "Find documentation for the native function '{FUNCTION_NAME}'.
           Include: parameters, return values, usage examples,
           client/server availability."
)

ネイティブ関数のカテゴリ:

カテゴリ含まれる関数
PLAYERGetPlayerPed、GetPlayerServerId、PlayerId
VEHICLECreateVehicle、SetVehicleMod、GetVehicleClass
PEDCreatePed、SetPedComponentVariation、IsPedInVehicle
ENTITYGetEntityCoords、SetEntityHeading、DeleteEntity
GRAPHICSDrawRect、DrawText3D、DrawMarker
UISetTextEntry、BeginTextCommandDisplayText
CAMCreateCam、SetCamActive、RenderScriptCams
AUDIOPlaySoundFrontend、PlayAmbientSpeech1
WEAPONGiveWeaponToPed、GetSelectedPedWeapon
CFXStatebags、サーバー固有のネイティブ関数
フレームワークのドキュメント

QBox:

WebFetch(
  url: "https://docs.qbox.re/",
  prompt: "Find documentation for QBox '{FEATURE}'.
           Include exports, events, and usage examples."
)

QBCore:

WebFetch(
  url: "https://docs.qbcore.org/qbcore-documentation/",
  prompt: "Find documentation for QBCore '{FEATURE}'.
           Include: function signature, parameters, examples."
)

ESX Legacy:

WebFetch(
  url: "https://docs.esx-framework.org/",
  prompt: "Find documentation for ESX '{FEATURE}'.
           Include: xPlayer methods, events, server/client functions."
)

ox_lib:

WebFetch(
  url: "https://overextended.dev/ox_lib",
  prompt: "Find documentation for ox_lib '{MODULE}'.
           Include: function signatures, options, examples."
)
アセットの検索

PlebMasters Forge:

WebFetch(
  url: "https://forge.plebmasters.de/",
  prompt: "Search for GTA V {ASSET_TYPE} matching '{SEARCH_TERM}'.
           Return model names/hashes that can be used in FiveM."
)

アセットの種類: オブジェクト、乗り物、ペッド、武器、服、アニメーション


リクエストルーター — パターンマッチング

ルール 1:ネイティブの検出

次の場合に検出します:

  • 特定のネイティブ名(GetPlayerPed、CreateVehicleのようなパスカルケース)
  • 「native function」、「GTA native」、「FiveM native」
  • ハッシュ参照(0x...)

アクション: https://docs.fivem.net/natives/から取得

ルール 2:フレームワーク API の検出

次の場合に検出します:

  • QBCore.Functions.*、QBCore.Player.*
  • exports.qbx_core:*、exports['qb-core']:*
  • ESX.Get*、xPlayer:*、ESX.RegisterServerCallback
  • exports.es_extended:*

アクション: フレームワークを検出 → 適切なドキュメントから取得

ルール 3:ox_lib の検出

次の場合に検出します:

  • lib.*関数
  • exports.ox_lib:*
  • モジュール:callback、notify、menu、context、progress、zones、target

アクション: https://overextended.dev/ox_libから取得

ルール 4:アセットの検索

次の場合に検出します:

  • 「What's the model for...」、「prop name for...」、「vehicle spawn name」
  • オブジェクトの配置、ペッドモデル、武器モデル

アクション: PlebMasters Forgeを案内し、使用例を提示

ルール 5:ローカルナレッジ

次の場合に検出します:

  • fxmanifest.luaの構造
  • クライアント/サーバーのパターン
  • スレッド管理
  • プロジェクトの構成

アクション: 関連するローカルのMarkdownファイルを読む


フレームワークの自動検出

タスクを開始するときに、プロジェクトファイルから有効なフレームワークを検出します。

fxmanifest.luaを確認
-- QBox indicators
dependency 'qbx_core'
dependency 'ox_lib'

-- QBCore indicators
dependency 'qb-core'

-- ESX indicators
dependency 'es_extended'
dependency 'esx_core'
コードのインポートを確認
-- QBox
local QBX = exports.qbx_core:GetCoreObject()

-- QBCore
local QBCore = exports['qb-core']:GetCoreObject()

-- ESX
local ESX = exports.es_extended:getSharedObject()

ベストプラクティス(クイックリファレンス)

パフォーマンスのルール
ルール理由
ループ内でWait(0)を避けるCPUを消費し、ラグの原因になります
プレイヤーのペッドをキャッシュするlocal ped = cache.ped or PlayerPedId()
ox_libのtargetを使う距離チェックより優れています
イベントよりStatebagを使う状態の同期がより効率的です
セキュリティのルール
ルール理由
サーバー側で検証するクライアントは改ざんされる可能性があります
プレイヤーの入力をサニタイズするインジェクションを防ぎます
コールバックを使うイベントの悪用を防ぎます
操作をレート制限するスパムや悪用を防ぎます
リソースの構成
resource_name/
├── fxmanifest.lua
├── config.lua
├── client/
│   └── main.lua
├── server/
│   └── main.lua
├── shared/
│   └── config.lua
└── html/              # NUI
    ├── index.html
    ├── style.css
    └── script.js

フレームワークに依存しないパターン

local Framework = {}

if GetResourceState('qbx_core') ~= 'missing' then
    Framework.Core = exports.qbx_core:GetCoreObject()
    Framework.Type = 'qbox'
elseif GetResourceState('qb-core') ~= 'missing' then
    Framework.Core = exports['qb-core']:GetCoreObject()
    Framework.Type = 'qbcore'
elseif GetResourceState('es_extended') ~= 'missing' then
    Framework.Core = exports.es_extended:getSharedObject()
    Framework.Type = 'esx'
end

return Framework

アンチパターン

しないことすること
while true do Wait(0)適切な待機処理またはイベントを使う
クライアントのデータを信頼する常にサーバーで検証する
フレームワークをハードコードする動的に検出する
毎フレームデータを取得する更新間隔を設けてキャッシュする
グローバル変数ローカル変数を使い、カプセル化する

関連スキル

必要なものスキル
NUIのデザインfrontend-design
データベース設計database-design
セキュリティ監査vulnerability-scanner
パフォーマンスperformance-profiling

コメント