esx-framework

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

ESX Framework Development

ESX Framework 开发

This skill provides guidelines and patterns for developing resources using the ESX Framework (Legacy).
本技能提供了使用**ESX Framework(Legacy版本)**开发资源的指南和模式。

1. Core Object Retrieval

1. 核心对象获取

ESX Legacy (New Way):
lua
local ESX = exports["es_extended"]:getSharedObject()
Legacy / Backwards Compatible:
lua
local ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
ESX Legacy(新方式):
lua
local ESX = exports["es_extended"]:getSharedObject()
兼容旧版本方式:
lua
local ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)

2. Key Concepts

2. 核心概念

Player Data (Server-side)

玩家数据(服务器端)

  • xPlayer: The main object for player interaction server-side.
  • ESX.GetPlayerFromId(source): Retrieves the xPlayer object.
  • xPlayer Methods:
    xPlayer.addMoney
    ,
    xPlayer.setJob
    ,
    xPlayer.addInventoryItem
    .
  • xPlayer:服务器端用于玩家交互的主要对象。
  • ESX.GetPlayerFromId(source):获取xPlayer对象。
  • xPlayer方法
    xPlayer.addMoney
    ,
    xPlayer.setJob
    ,
    xPlayer.addInventoryItem

Callbacks (Server -> Client Data)

回调(服务器→客户端数据)

  • ESX.RegisterServerCallback (Server): Respond to client requests.
  • ESX.TriggerServerCallback (Client): Request data from server.
  • ESX.RegisterServerCallback(服务器端):响应客户端请求。
  • ESX.TriggerServerCallback(客户端):向服务器请求数据。

Items & Database

物品与数据库

  • Items are defined in the database (
    items
    table) or
    ox_inventory
    .
  • Database typically uses oxmysql.
  • 物品定义在数据库(
    items
    表)或
    ox_inventory
    中。
  • 数据库通常使用oxmysql

3. Standard Resource Structure

3. 标准资源结构

my-resource/
├── fxmanifest.lua
├── config.lua
├── client/
│   └── main.lua
├── server/
│   └── main.lua
└── locales/
    └── en.lua
my-resource/
├── fxmanifest.lua
├── config.lua
├── client/
│   └── main.lua
├── server/
│   └── main.lua
└── locales/
    └── en.lua

4. Best Practices

4. 最佳实践

  1. Use New Exports: Prefer
    exports["es_extended"]:getSharedObject()
    over the event trigger.
  2. Validate xPlayer: Always check
    if xPlayer then
    before using it.
  3. Secure Events: Use
    ESX.SecureNetEvent
    (if available) or manual checks.
  4. OneSync: Develop with OneSync Infinity in mind (server-side entity creation).
  1. 使用新导出方式:优先使用
    exports["es_extended"]:getSharedObject()
    而非事件触发方式。
  2. 验证xPlayer:在使用xPlayer前始终检查
    if xPlayer then
  3. 安全事件:使用
    ESX.SecureNetEvent
    (如果可用)或手动检查。
  4. OneSync:开发时考虑OneSync Infinity(服务器端实体创建)。

5. Documentation

5. 文档