qbcore-framework について
qbcore-framework は、qb-core リソースを開発・編集する開発者向けのスキルです。プレイヤーデータ、コールバック、サーバーとクライアントの役割を扱い、検証と状態管理を案内します。Qbox にそのまま適用しないよう注意を促します。
主な機能
- 01Player と PlayerData の使い方を案内
- 02コールバック、ジョブ、ギャング、金銭の説明
- 03アイテムとメタデータの管理方法
- 04サーバーとクライアントの役割分担
- 05入力検証と状態管理のルール
活用シーン
- 01qb-core リソースの作成・編集
- 02プレイヤーの金銭・ジョブ・ギャング処理の実装
- 03コールバックによるクライアントとサーバー間のデータ連携
- 04引数検証とプレイヤー状態設計の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ germanfndez/ fiveai-skills --skill qbcore-frameworkインストール後、Claude Code で/qbcore-frameworkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
rules/best-practices.mdcore-concepts.mdplayer-methods.mdreference-links.md詳細
QBCore Framework
qb-core 用のサーバー/クライアント API:Player オブジェクト、PlayerData、コールバック、ジョブ、ギャング、所持金、メタデータ。
アクティベーション条件
ユーザーが qb-core リソースを作成または編集する場合、Player/QBCore.PlayerData を扱う場合、QBCore を通じてジョブ、ギャング、所持金、アイテム、メタデータを必要とする場合、または QBCore のコールバック、イベント、ベストプラクティスについて質問する場合に、このスキルを読み込みます。
このスキルの対象は qb-core(qbcore-framework)です。ユーザーが Qbox(qbx_core、exports.qbx_core)を使用している場合、API は異なります。その旨を伝え、このスキルをそのまま適用しないでください。
必須ルール
local QBCore = exports['qb-core']:GetCoreObject()でコアを一度だけ取得します。関数を呼び出すたびに取得しないでください。Playerはサーバー上でのみ使用できます(QBCore.Functions.GetPlayer(source))。QBCore.PlayerDataはクライアント上でのみ使用でき、QBCore:Client:OnPlayerLoadedの後に値が設定されます。- 常に nil チェックを行います。メソッドを呼び出す前に
if not Player then return endを実行してください。 - 所持金、ジョブ、ギャング、アイテム、メタデータの変更は、クライアントからではなく、サーバー上で
Player.Functions.*を通じて行います。 AddMoney、RemoveMoney、SetMoneyにはreasonを渡します。- 各状態には、ステートバッグまたはイベントのどちらか一方のみを使用し、両方は使用しません。
- クライアントから渡される引数はすべてサーバー上で検証します。クライアントから送信された金額、価格、アイテム名を信用しないでください。
- 通知、メニュー、ダイアログ、プログレスバーには ox_lib を優先して使用します。
- ループでは動的な
Wait()値を使用します。フレームごとの処理が必要な場合を除き、Wait(0)は避けてください。
判断基準
| 必要な処理 | 使用する API |
|---|---|
| クライアントからサーバーにデータを要求する | QBCore.Functions.CreateCallback + QBCore.Functions.TriggerCallback |
| 所持金 | Player.Functions.AddMoney/RemoveMoney/SetMoney/GetMoney(moneyType, ...) |
| ジョブ/勤務状態/ギャング | Player.Functions.SetJob、SetJobDuty、SetGang |
| プレイヤーごとに永続化するフラグ | Player.Functions.SetMetaData/GetMetaData |
| アイテム(qb-inventory) | Player.Functions.AddItem/RemoveItem/GetItemByName/GetItemBySlot |
| 共有ランタイム状態 | ステートバッグ(rules/core-concepts.md を参照) |
実行手順
- リソースより先に
qb-coreが起動することを確認し、サーバー側とクライアント側それぞれでQBCoreをキャッシュします。 - 処理を行う側を決めます。変更と検証はサーバー側、表示はクライアント側で行います。
Playerを取得して nil チェックを行い、クライアントから渡される引数をすべて検証します。- 判断基準から呼び出す API を選び、シグネチャについて対応するルールファイルを確認します。
- イベントを組み合わせるのではなく、コールバックでデータを返します。
出力要件
実行可能な Lua コードを返します。クライアント側とサーバー側を明確に分け、Player の nil チェックを行い、所持金を操作する処理には理由を指定してください。ユーザーから別の指定がない限り、UI には ox_lib を使用します。
参考資料
- rules/core-concepts.md — アーキテクチャ、PlayerData、Player オブジェクト、イベント、ステートバッグ。
- rules/player-methods.md —
Player.Functionsによる所持金、ジョブ、ギャング、メタデータ、アイテムの操作。 - rules/best-practices.md — 命名、キャッシュ、Wait、状態管理、セキュリティ。
- rules/reference-links.md — QBCore の公式ドキュメントへのリンク。
上流のドキュメント:https://docs.qbcore.org