fivem-development

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

FiveM Development — vRP

FiveM 开发 — vRP

Arquitetura do Framework

框架架构

A vRP Creative Network é baseada em Lua 5.4 com comunicação via Proxy (server-to-server) e Tunnel (client-server).
vRP Creative Network 基于 Lua 5.4 构建,通过 Proxy(服务器到服务器)和 Tunnel(客户端到服务器)实现通信。

Natives FiveM — Fonte Oficial

FiveM 原生函数 — 官方来源

Fonte oficial de natives:
官方原生函数来源:

Suporte Creative v5 e vRPEX (variações antigas)

支持Creative v5与vRPEX(旧版本变体)

As versões antigas mantêm a mesma lógica e boas práticas, mas mudam nomes de funções e arquivos.
  • Creative v5: core em
    camelCase
    ,
    modules/group.lua
    , configs em
    config/*.lua
    .
  • vRPEX: core clássico (
    getUserId
    ,
    getUserSource
    ,
    getUsers
    , etc.) e configs em
    cfg/*.lua
    .
Veja o mapeamento completo em reference.md.
旧版本保留相同逻辑与最佳实践,但函数名和文件名有所变化。
  • Creative v5:核心采用
    camelCase
    命名,模块文件为
    modules/group.lua
    ,配置文件位于
    config/*.lua
  • vRPEX:经典核心(包含
    getUserId
    getUserSource
    getUsers
    等函数),配置文件位于
    cfg/*.lua
完整映射关系请查看reference.md

Conceitos-chave

核心概念

ConceitoDescrição
PassportID único do personagem (equivalente a
user_id
em outras vRPs)
SourceID da conexão do jogador no servidor (muda a cada reconexão)
DatatableTabela em memória com dados do personagem (inventário, posição, skin, etc.)
CharactersTabela global server-side indexada por
source
com dados do personagem
SourcesTabela global
Sources[Passport] = source
para lookup reverso
概念描述
Passport角色唯一ID(等同于其他vRP框架中的
user_id
Source玩家在服务器中的连接ID(每次重连都会变化)
Datatable存储角色数据的内存表(包含库存、位置、外观等信息)
Characters服务器端全局表,通过
source
索引角色数据
Sources全局表
Sources[Passport] = source
,用于反向查询

Fluxo de identificação

身份验证流程

lua
-- Server-side: obter Passport a partir do source
local Passport = vRP.Passport(source)

-- Server-side: obter source a partir do Passport
local source = vRP.Source(Passport)

-- Server-side: obter Datatable do personagem
local Datatable = vRP.Datatable(Passport)

-- Server-side: obter inventário
local Inventory = vRP.Inventory(Passport)
lua
-- Server-side: 通过source获取Passport
local Passport = vRP.Passport(source)

-- Server-side: 通过Passport获取source
local source = vRP.Source(Passport)

-- Server-side: 获取角色的Datatable
local Datatable = vRP.Datatable(Passport)

-- Server-side: 获取角色库存
local Inventory = vRP.Inventory(Passport)

Sistema Proxy/Tunnel

Proxy/Tunnel 系统

lua
-- Em qualquer resource SERVER-SIDE, obter acesso à vRP:
local Proxy = module("vrp", "lib/Proxy")
vRP = Proxy.getInterface("vRP")

-- Em qualquer resource CLIENT-SIDE:
local Tunnel = module("vrp", "lib/Tunnel")
local Proxy = module("vrp", "lib/Proxy")
vRPS = Tunnel.getInterface("vRP")  -- chamar funções do server

-- Expor funções do seu resource (server):
myResource = {}
Proxy.addInterface("myResource", myResource)
Tunnel.bindInterface("myResource", myResource)
lua
-- 在任意SERVER-SIDE资源中,获取vRP访问权限:
local Proxy = module("vrp", "lib/Proxy")
vRP = Proxy.getInterface("vRP")

-- 在任意CLIENT-SIDE资源中:
local Tunnel = module("vrp", "lib/Tunnel")
local Proxy = module("vrp", "lib/Proxy")
vRPS = Tunnel.getInterface("vRP")  -- 调用服务器端函数

-- 暴露自定义资源的函数(服务器端):
myResource = {}
Proxy.addInterface("myResource", myResource)
Tunnel.bindInterface("myResource", myResource)

Regra de fire-and-forget

即发即弃(fire-and-forget)规则

Prefixar chamada Tunnel com
_
para não aguardar resposta:
lua
-- Aguarda resposta (bloqueante)
local result = vRP.Generateitem(Passport,"water",1)

-- Fire-and-forget (não bloqueia)
vRP._Generateitem(Passport,"water",1)
在Tunnel调用前添加
_
前缀,无需等待响应:
lua
-- 等待响应(阻塞式)
local result = vRP.Generateitem(Passport,"water",1)

-- 即发即弃(非阻塞)
vRP._Generateitem(Passport,"water",1)

API Principal (Server-side)

核心API(服务器端)

Jogador/Identidade

玩家/身份管理

FunçãoParâmetrosRetornoDescrição
vRP.Passport(source)
sourcePassport|falseObtém Passport do jogador
vRP.Source(Passport)
Passportsource|nilObtém source do Passport
vRP.Datatable(Passport)
Passporttable|falseDados em memória do personagem
vRP.Inventory(Passport)
PassporttableInventário do personagem
vRP.Identity(Passport)
Passporttable|falseDados do personagem (name, name2, bank, phone, etc.)
vRP.FullName(source)
sourcestring|falseNome completo do personagem
vRP.Players()
tableRetorna
Sources
(Passport→source)
vRP.Kick(source, Reason)
source, stringKicka o jogador
vRP.Teleport(source, x, y, z)
source, coordsTeleporta o jogador
vRP.GetEntityCoords(source)
sourcevector3Coordenadas do jogador
vRP.ModelPlayer(source)
sourcestringModelo do ped (mp_m/mp_f)
函数参数返回值描述
vRP.Passport(source)
sourcePassport|false获取玩家的Passport
vRP.Source(Passport)
Passportsource|nil通过Passport获取source
vRP.Datatable(Passport)
Passporttable|false获取角色的内存数据
vRP.Inventory(Passport)
Passporttable获取角色库存
vRP.Identity(Passport)
Passporttable|false获取角色身份数据(姓名、姓氏、银行余额、手机号等)
vRP.FullName(source)
sourcestring|false获取角色全名
vRP.Players()
table返回
Sources
表(Passport→source映射)
vRP.Kick(source, Reason)
source, string踢出玩家
vRP.Teleport(source, x, y, z)
source, 坐标传送玩家
vRP.GetEntityCoords(source)
sourcevector3获取玩家坐标
vRP.ModelPlayer(source)
sourcestring获取玩家模型(mp_m/mp_f)

Dinheiro

货币管理

FunçãoParâmetrosRetornoDescrição
vRP.GetBank(source)
sourcenumberSaldo bancário
vRP.GiveBank(Passport, Amount)
Passport, numberAdiciona dinheiro ao banco
vRP.RemoveBank(Passport, Amount)
Passport, numberRemove dinheiro do banco
vRP.PaymentBank(Passport, Amount)
Passport, numberboolPaga com banco (verifica saldo)
vRP.PaymentMoney(Passport, Amount)
Passport, numberboolPaga com dinheiro em espécie
vRP.PaymentFull(Passport, Amount)
Passport, numberboolTenta espécie, depois banco
vRP.PaymentDirty(Passport, Amount)
Passport, numberboolPaga com dinheiro sujo
vRP.WithdrawCash(Passport, Amount)
Passport, numberboolSaque bancário
vRP.PaymentGems(Passport, Amount)
Passport, numberboolPaga com gemas
vRP.GetCoins(Passport)
PassportnumberObtém coins
vRP.AddCoins(Passport, Amount)
Passport, numberboolAdiciona coins
vRP.RemCoins(Passport, Amount)
Passport, numberboolRemove coins
函数参数返回值描述
vRP.GetBank(source)
sourcenumber获取银行余额
vRP.GiveBank(Passport, Amount)
Passport, number增加银行存款
vRP.RemoveBank(Passport, Amount)
Passport, number扣除银行存款
vRP.PaymentBank(Passport, Amount)
Passport, numberbool使用银行支付(会检查余额)
vRP.PaymentMoney(Passport, Amount)
Passport, numberbool使用现金支付
vRP.PaymentFull(Passport, Amount)
Passport, numberbool优先使用现金,不足则从银行扣除
vRP.PaymentDirty(Passport, Amount)
Passport, numberbool使用黑钱支付
vRP.WithdrawCash(Passport, Amount)
Passport, numberbool从银行取现
vRP.PaymentGems(Passport, Amount)
Passport, numberbool使用宝石支付
vRP.GetCoins(Passport)
Passportnumber获取硬币数量
vRP.AddCoins(Passport, Amount)
Passport, numberbool增加硬币数量
vRP.RemCoins(Passport, Amount)
Passport, numberbool扣除硬币数量

Inventário

库存管理

FunçãoParâmetrosRetornoDescrição
vRP.GiveItem(Passport, Item, Amount, Notify, Slot)
...Dá item (sem durabilidade)
vRP.GenerateItem(Passport, Item, Amount, Notify, Slot)
...Dá item (com durabilidade/charges)
vRP.TakeItem(Passport, Item, Amount, Notify, Slot)
...boolRemove item (retorna sucesso)
vRP.RemoveItem(Passport, Item, Amount, Notify)
...Remove item (sem retorno)
vRP.ItemAmount(Passport, Item)
Passport, stringnumberQuantidade do item
vRP.ConsultItem(Passport, Item, Amount)
...boolVerifica se tem a quantidade
vRP.InventoryWeight(Passport)
PassportnumberPeso atual
vRP.GetWeight(Passport)
PassportnumberPeso máximo
vRP.SetWeight(Passport, Amount)
Passport, numberAdiciona ao peso máximo
vRP.MaxItens(Passport, Item, Amount)
...boolVerifica limite máximo do item
vRP.ClearInventory(Passport)
PassportLimpa inventário
函数参数返回值描述
vRP.GiveItem(Passport, Item, Amount, Notify, Slot)
...发放物品(无耐久度)
vRP.GenerateItem(Passport, Item, Amount, Notify, Slot)
...发放物品(带耐久度/使用次数)
vRP.TakeItem(Passport, Item, Amount, Notify, Slot)
...bool移除物品(返回操作是否成功)
vRP.RemoveItem(Passport, Item, Amount, Notify)
...移除物品(无返回值)
vRP.ItemAmount(Passport, Item)
Passport, stringnumber获取物品数量
vRP.ConsultItem(Passport, Item, Amount)
...bool检查是否拥有指定数量的物品
vRP.InventoryWeight(Passport)
Passportnumber获取当前库存重量
vRP.GetWeight(Passport)
Passportnumber获取最大库存重量
vRP.SetWeight(Passport, Amount)
Passport, number增加最大库存重量
vRP.MaxItens(Passport, Item, Amount)
...bool检查物品是否达到携带上限
vRP.ClearInventory(Passport)
Passport清空库存

Grupos/Permissões

群组/权限管理

FunçãoParâmetrosRetornoDescrição
vRP.HasPermission(Passport, Permission, Level)
...boolVerifica permissão direta
vRP.HasGroup(Passport, Permission, Level)
...boolVerifica grupo (inclui parents)
vRP.HasService(Passport, Permission)
...boolVerifica se está em serviço
vRP.SetPermission(Passport, Permission, Level, Mode)
...Define permissão
vRP.RemovePermission(Passport, Permission)
...Remove permissão
vRP.ServiceToggle(Source, Passport, Permission, Silenced)
...Toggle serviço
vRP.NumPermission(Permission, Level)
...table, numberPlayers no serviço
vRP.CheckGroup(Passport, Type)
...boolVerifica grupo por tipo
vRP.HasAction(Passport)
PassportboolVerifica ação policial
vRP.SetAction(Passport, Status)
...Define status de ação
函数参数返回值描述
vRP.HasPermission(Passport, Permission, Level)
...bool检查是否拥有直接权限
vRP.HasGroup(Passport, Permission, Level)
...bool检查是否拥有群组权限(包含父群组)
vRP.HasService(Passport, Permission)
...bool检查是否处于服务状态
vRP.SetPermission(Passport, Permission, Level, Mode)
...设置权限
vRP.RemovePermission(Passport, Permission)
...移除权限
vRP.ServiceToggle(Source, Passport, Permission, Silenced)
...切换服务状态
vRP.NumPermission(Permission, Level)
...table, number获取处于该服务的玩家列表及数量
vRP.CheckGroup(Passport, Type)
...bool按类型检查群组
vRP.HasAction(Passport)
Passportbool检查是否处于警察行动状态
vRP.SetAction(Passport, Status)
...设置行动状态

Sobrevivência

生存系统

FunçãoParâmetrosDescrição
vRP.UpgradeHunger(Passport, Amount)
...Aumenta fome
vRP.DowngradeHunger(Passport, Amount)
...Diminui fome
vRP.UpgradeThirst(Passport, Amount)
...Aumenta sede
vRP.DowngradeThirst(Passport, Amount)
...Diminui sede
vRP.UpgradeInfection(Passport, Amount)
...Aumenta infecção
vRP.DowngradeInfection(Passport, Amount)
...Diminui infecção
vRP.Revive(source, Health)
...Revive jogador
函数参数描述
vRP.UpgradeHunger(Passport, Amount)
...增加饥饿值
vRP.DowngradeHunger(Passport, Amount)
...减少饥饿值
vRP.UpgradeThirst(Passport, Amount)
...增加口渴值
vRP.DowngradeThirst(Passport, Amount)
...减少口渴值
vRP.UpgradeInfection(Passport, Amount)
...增加感染值
vRP.DowngradeInfection(Passport, Amount)
...减少感染值
vRP.Revive(source, Health)
...复活玩家

Banco de Dados

数据库操作

lua
-- Registrar query preparada
vRP.Prepare("nome/query", "SELECT * FROM tabela WHERE id = @id")

-- Executar query
local result = vRP.Query("nome/query", { id = 123 })
Usa oxmysql internamente. Parâmetros com
@nome
.
lua
-- 注册预编译查询
vRP.Prepare("nome/query", "SELECT * FROM tabela WHERE id = @id")

-- 执行查询
local result = vRP.Query("nome/query", { id = 123 })
内部使用 oxmysql,参数使用
@nome
格式。

Dados Persistentes

持久化数据

lua
-- Server Data (entitydata — dados globais)
local data = vRP.GetSrvData("ChaveUnica")
vRP.SetSrvData("ChaveUnica", { campo = "valor" })

-- Player Data (playerdata — dados por jogador)
local data = vRP.UserData(Passport, "chave")
vRP.setUData(Passport, "chave", json.encode(dados))
lua
-- 服务器数据(entitydata — 全局数据)
local data = vRP.GetSrvData("ChaveUnica")
vRP.SetSrvData("ChaveUnica", { campo = "valor" })

-- 玩家数据(playerdata — 按玩家存储)
local data = vRP.UserData(Passport, "chave")
vRP.setUData(Passport, "chave", json.encode(dados))

Utilitários Globais

全局工具函数

FunçãoDescrição
parseInt(value)
Converte para inteiro (mín. 0)
parseFormat(value)
Formata número com separador de milhar
splitString(str, symbol)
Divide string por separador
SplitOne(name)
Primeiro elemento do split
sanitizeString(str, chars, allow)
Filtra caracteres
CompleteTimers(seconds)
Formata tempo completo em HTML
MinimalTimers(seconds)
Formata tempo resumido
CountTable(table)
Conta itens na tabela
async(func)
Executa função assíncrona
函数描述
parseInt(value)
转换为整数(最小值为0)
parseFormat(value)
为数字添加千位分隔符
splitString(str, symbol)
按分隔符分割字符串
SplitOne(name)
获取分割后的第一个元素
sanitizeString(str, chars, allow)
过滤字符串中的指定字符
CompleteTimers(seconds)
将秒数格式化为完整的HTML时间显示
MinimalTimers(seconds)
将秒数格式化为简洁的时间显示
CountTable(table)
统计表中的元素数量
async(func)
执行异步函数

Comunicação Client-Server

客户端-服务器通信

Eventos de Notificação

通知事件

lua
-- Server-side: notificação simples
TriggerClientEvent("Notify", source, "success", "Mensagem.", false, 5000)
-- Tipos: "success", "important", "negado"

-- Server-side: notificação de item
TriggerClientEvent("NotifyItens", source, { "+", "itemIndex", "quantidade", "Nome do Item" })
-- "+" para ganho, "-" para perda
lua
-- Server-side: 简单通知
TriggerClientEvent("Notify", source, "success", "消息内容。", false, 5000)
-- 类型:"success"、"important"、"negado"

-- Server-side: 物品通知
TriggerClientEvent("NotifyItens", source, { "+", "itemIndex", "数量", "物品名称" })
-- "+"代表获得物品,"-"代表失去物品

Eventos Importantes

重要事件

EventoLadoDescrição
"Connect"
ServerJogador escolheu personagem
(Passport, Source)
"Disconnect"
ServerJogador desconectou
(Passport, Source)
"CharacterChosen"
ServerPersonagem escolhido
(Passport, source)
"vRP:Active"
ClientJogador ativado
(source, Passport, Nome)
事件运行端描述
"Connect"
Server玩家选择角色时触发
(Passport, Source)
"Disconnect"
Server玩家断开连接时触发
(Passport, Source)
"CharacterChosen"
Server玩家选定角色时触发
(Passport, source)
"vRP:Active"
Client玩家激活时触发
(source, Passport, 姓名)

Regras Críticas de Performance (Resumo)

关键性能优化规则(摘要)

Seguir SEMPRE estas regras ao escrever código:
  1. Tunnel vs Evento: Use
    TriggerServerEvent
    /
    TriggerClientEvent
    quando NÃO precisa de retorno. Use Tunnel apenas quando PRECISA de retorno.
  2. Sleep dinâmico: NUNCA
    Wait(0)
    fixo. Ajuste baseado no estado (dist < 20 =
    0
    , dist < 50 =
    500
    , senão =
    1000
    +).
  3. Chamadas no mesmo ambiente: Chame funções diretamente. NUNCA use
    TriggerEvent()
    para chamar no mesmo side.
  4. Sem chamadas remotas em loops: Não use Tunnel/Eventos em loops < 5 segundos. Prefira batch ou delta.
  5. Payloads pequenos: Envie apenas a mudança, não dados completos. Limite de ~8KB por evento.
  6. Cache: Use
    exports.cacheaside:Get()
    para consultas repetidas ao banco. Nunca query no banco em loop.
  7. SafeEvent (server): Todo evento que dá dinheiro/item/vantagem DEVE passar por
    exports["cerberus"]:SafeEvent(source, "nomeEvento", { time = N })
    .
  8. SetCooldown (client): Ações repetitivas no client (abrir menu, usar item) devem usar
    exports["cerberus"]:SetCooldown("nome", ms)
    .
  9. Tabelas > if/else: Para 3+ condições, use tabela de lookup (O(1)) ao invés de cadeias if/elseif.
  10. Proteger nil: Sempre verificar variáveis antes de concatenar. Usar
    or ""
    como fallback.
编写代码时必须遵守以下规则:
  1. Tunnel与事件选择:无需返回值时使用
    TriggerServerEvent
    /
    TriggerClientEvent
    ;仅当需要返回值时使用Tunnel。
  2. 动态Sleep:禁止固定使用
    Wait(0)
    ,需根据状态调整(距离<20时用
    0
    ,距离<50时用
    500
    ,否则用
    1000
    +)。
  3. 同环境函数调用:直接调用函数,禁止在同一端使用
    TriggerEvent()
    调用函数。
  4. 循环中避免远程调用:禁止在间隔小于5秒的循环中使用Tunnel/事件,优先使用批量处理或增量更新。
  5. 小负载传输:仅发送变更数据,而非完整数据集,单次事件负载限制约8KB。
  6. 缓存使用:重复查询数据库时使用
    exports.cacheaside:Get()
    ,禁止在循环中查询数据库。
  7. SafeEvent(服务器端):所有涉及货币/物品/优势的事件必须通过
    exports["cerberus"]:SafeEvent(source, "nomeEvento", { time = N })
    验证。
  8. SetCooldown(客户端):客户端重复操作(如打开菜单、使用物品)需使用
    exports["cerberus"]:SetCooldown("nome", ms)
    设置冷却。
  9. 表查询替代if/else:当条件超过3个时,使用表查询(O(1)复杂度)替代if/elseif链式判断。
  10. 空值保护:拼接变量前必须检查是否为nil,使用
    or ""
    作为 fallback。

Construção de UI (React + Vite)

UI构建(React + Vite)

Stack: React 18 + TypeScript + Vite + Tailwind CSS + Zustand.
Regras fundamentais:
  • base: "./"
    no vite.config.ts (OBRIGATÓRIO para FiveM)
  • Usar
    rem
    para TODOS os tamanhos — NUNCA
    px
    para layout
  • Media queries no
    html
    font-size para escalar com resolução do jogador
  • Tailwind v4 usa OKLCH e o CEF do FiveM não suporta. Use Tailwind v3.4.17.
  • PROIBIDO:
    backdrop-filter: blur()
    ,
    filter: blur()
    ,
    filter: drop-shadow()
    — causam queda de FPS
  • PROIBIDO: framer-motion, GSAP, react-spring — libs de animação pesadas
  • Usar CSS transitions/keyframes puras para animações
  • Módulos independentes (Notify, Progress) fora do VisibilityProvider
  • Interface principal dentro do VisibilityProvider com NuiFocus
  • overflow: hidden
    e
    user-select: none
    globais
  • isEnvBrowser()
    para mock de dados no dev
  • Comunicação:
    observe()
    para ouvir NUI,
    Post.create()
    para enviar callbacks
Para guia completo de UI: ui-guide.md
技术栈:React 18 + TypeScript + Vite + Tailwind CSS + Zustand。
核心规则
  • vite.config.ts中必须设置
    base: "./"
    (FiveM要求)
  • 所有布局尺寸使用
    rem
    ,禁止使用
    px
  • 通过
    html
    字体大小的媒体查询适配玩家分辨率
  • Tailwind v4 使用OKLCH颜色模型,但FiveM的CEF不支持,必须使用Tailwind v3.4.17
  • 禁止使用:
    backdrop-filter: blur()
    filter: blur()
    filter: drop-shadow()
    —— 会导致帧率下降
  • 禁止使用:framer-motion、GSAP、react-spring —— 这些动画库性能开销大
  • 使用纯CSS transitions/keyframes实现动画
  • 独立模块(Notify、Progress)需放在VisibilityProvider外部
  • 主界面需放在带有NuiFocus的VisibilityProvider内部
  • 全局设置
    overflow: hidden
    user-select: none
  • 使用
    isEnvBrowser()
    在开发环境中模拟数据
  • 通信方式:使用
    observe()
    监听NUI,使用
    Post.create()
    发送回调
完整UI开发指南请查看ui-guide.md

Referências Adicionais

附加参考

  • Para guia de construção de UI (React + Vite + FiveM): ui-guide.md
  • Para boas práticas detalhadas (performance, segurança, cache): best-practices.md
  • Para API completa e detalhada: reference.md
  • Para exemplos de código: examples.md
  • Para templates de resources: templates.md
  • Para padrões e convenções: patterns.md
  • FiveM UI构建指南(React + Vite):ui-guide.md
  • 详细最佳实践(性能、安全、缓存):best-practices.md
  • 完整API文档:reference.md
  • 代码示例:examples.md
  • 资源模板:templates.md
  • 模式与规范:patterns.md

Recursos Externos (Download)

外部资源(下载)

Use estes repositórios oficiais quando o projeto mencionar dependências:
  • cacheaside
    (cache em memória):
    git@github.com:proelias7/cacheaside.git
  • cerberus
    (anti-exploit + cooldowns):
    git@github.com:proelias7/cerberus.git
当项目涉及依赖时,请使用以下官方仓库:
  • cacheaside
    (内存缓存):
    git@github.com:proelias7/cacheaside.git
  • cerberus
    (反作弊 + 冷却系统):
    git@github.com:proelias7/cerberus.git

Compatibilidade vRPex

vRPex兼容性

A vRP Creative Network possui aliases de compatibilidade com a vRP clássica:
vRPex (antigo)Creative Network (atual)
getUserId
Passport
getUserSource
Source
getUserIdentity
Identity
getUserDataTable
Datatable
hasGroup
HasGroup
hasPermission
HasPermission
giveInventoryItem
GiveItem
tryGetInventoryItem
TakeItem
getInventoryItemAmount
ItemAmount
giveMoney
GiveBank
tryFullPayment
PaymentFull
getBankMoney
GetBank
query
/
execute
Query
prepare
Prepare
SEMPRE use os nomes nativos da Creative Network (coluna direita), não os aliases.
vRP Creative Network 提供与经典vRPex的兼容别名:
vRPex(旧版)Creative Network(当前版)
getUserId
Passport
getUserSource
Source
getUserIdentity
Identity
getUserDataTable
Datatable
hasGroup
HasGroup
hasPermission
HasPermission
giveInventoryItem
GiveItem
tryGetInventoryItem
TakeItem
getInventoryItemAmount
ItemAmount
giveMoney
GiveBank
tryFullPayment
PaymentFull
getBankMoney
GetBank
query
/
execute
Query
prepare
Prepare
必须使用Creative Network的原生函数名(右列),禁止使用兼容别名