esx-framework について
esx-frameworkは、ESX LegacyのLuaリソースを作成・編集するためのスキルです。プレイヤーデータ、コールバック、イベント、ジョブ、金銭、アイテムに関するサーバー・クライアントAPIと安全規則を示します。
主な機能
- 01サーバー・クライアントAPIの指針
- 02xPlayerとPlayerDataの扱い
- 03コールバックとイベントのパターン
- 04ジョブ・金銭・アイテム・武器API
- 05セキュリティとLuaのベストプラクティス
活用シーン
- 01ESXリソースの作成・変更
- 02サーバー検証を伴う金銭・アイテム変更の実装
- 03コールバックや安全なクライアントイベントの追加
- 04クライアントとサーバーを分けた実行可能なLuaの作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ germanfndez/ fiveai-skills --skill esx-frameworkインストール後、Claude Code で/esx-frameworkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
rules/best-practices.mdclient-functions.mdcore-concepts.mdevents-callbacks.mdreference-links.mdserver-functions.mdxplayer-methods.md詳細
ESX Framework
ESX Legacy 用のサーバー/クライアント API:xPlayer、PlayerData、コールバック、イベント、ジョブ、所持金。
アクティベーション契約
ユーザーが ESX リソースを作成または編集する場合、xPlayer または ESX.PlayerData を扱う場合、ESX 経由でジョブ、所持金、アカウント、アイテム、武器を必要とする場合、または ESX のコールバック、イベント、ベストプラクティスについて質問する場合に、このスキルを読み込みます。
厳守事項
ESX = exports['es_extended']:getSharedObject()でオブジェクトを取得します。クライアントでは、ESX.PlayerDataを読み取る前にESXとESX.IsPlayerLoaded()を待ちます。xPlayerはサーバー側にのみ存在します(ESX.GetPlayerFromId(source))。ESX.PlayerDataはクライアント側にのみ存在します。- 常に nil チェックを行います。メソッドを呼び出す前に
if not xPlayer then return endを記述します。 - 所持金、アイテム、武器、ジョブ、メタデータの変更は、クライアント側ではなく、サーバー側で
xPlayer.*メソッドを使って行います。 addMoney、removeMoney、addAccountMoney、removeAccountMoneyにはreasonを渡します。- クライアントコールバック(
ESX.TriggerClientCallback、ESX.AwaitClientCallback)で、機密性の高い判断をしてはいけません。クライアントは回答を偽装できます。 - サーバーのみがトリガーできるクライアントイベントには
ESX.SecureNetEventを使います。 - 通知、メニュー、ダイアログ、プログレスバーには ESX UI より ox_lib を優先します。
PlayerPedId()をキャッシュし、esx:playerPedChangedで更新します。必要のないWait(0)ループは使いません。
判断基準
| 必要なこと | 使用するもの |
|---|---|
| クライアントからサーバーへデータを要求する | ESX.RegisterServerCallback + ESX.TriggerServerCallback |
| サーバーから 1 人のプレイヤーへイベントを送信する | xPlayer.triggerEvent(name, ...) |
| サーバー専用のクライアントイベント | クライアント側の ESX.SecureNetEvent(name, cb) |
| source/identifier からプレイヤーを検索する | ESX.GetPlayerFromId / ESX.GetPlayerFromIdentifier |
| ジョブなどでプレイヤーを絞り込む | ESX.GetExtendedPlayers(key, value) |
| 使用可能なアイテム | ESX.RegisterUsableItem(item, cb) |
| グループ指定の管理者コマンド | ESX.RegisterCommand(name, group, cb, allowConsole, suggestion) |
実行手順
- リソースより先に
es_extendedが起動することを確認し、サイドごとにESXを取得します。 - サイドを決めます。変更と検証はサーバー側、表示はクライアント側で行います。
xPlayerを取得して nil チェックを行い、クライアントから渡されるすべての引数を検証します。- 判断基準から呼び出し方法を選び、対応するルールファイルでシグネチャを確認します。
- 対応するイベントではなく、コールバックを使ってデータを返します。
出力契約
クライアント/サーバーの分割が明確で、xPlayer の nil チェックがあり、所持金操作に理由を指定した、実行可能な Lua を返します。ユーザーが別の方法を求めない限り、UI には ox_lib を使います。
参考資料
- rules/core-concepts.md — アーキテクチャ、PlayerData、xPlayer、起動フロー。
- rules/client-functions.md — クライアント側の ESX 関数とプレイヤーの状態。
- rules/server-functions.md — プレイヤーの取得、コールバック、コマンド、ジョブ、アイテム。
- rules/xplayer-methods.md — xPlayer の所持金、アカウント、インベントリ、武器、メタデータ。
- rules/events-callbacks.md — サーバー/クライアントのコールバック、イベント、SecureNetEvent。
- rules/best-practices.md — 命名、キャッシュ、ループ、セキュリティ、Lua 5.4。
- rules/reference-links.md — ESX の公式ドキュメントへのリンク。
上流ドキュメント:https://docs.esx-framework.org
コメント
Markdown 対応