Confronto API tra Framework

INFO

Quando adatti uno script a un altro framework, cambiano le funzioni per giocatore, denaro, item e job. Questa nota mostra i pattern corrispondenti.

ObiettivoDettagli
Cosa imparerai• Pattern equivalenti ESX/QBCore/Qbox/ox
• Adattare uno script
• Evitare errori comuni
Prerequisiti• Introduzione framework (16/01)

1. Ottenere il Player Object

-- ESX (client)
local ESX = exports['es_extended']:getSharedObject()
 
-- ESX (server)
local xPlayer = ESX.GetPlayerFromId(source)
 
-- QBCore (server)
local Player = QBCore.Functions.GetPlayer(source)
 
-- Qbox/ox (server)
local player = Ox.GetPlayer(source)  -- o esx::GetPlayer, dipende dalla versione

2. Denaro

-- ESX
xPlayer.getMoney()          -- cash
xPlayer.getAccount('bank').money
xPlayer.addMoney(100)
xPlayer.removeMoney(50)
 
-- QBCore
Player.Functions.GetMoney('cash')
Player.Functions.GetMoney('bank')
Player.Functions.AddMoney('cash', 100)
Player.Functions.RemoveMoney('bank', 50)

3. Item

-- ESX (senza ox)
xPlayer.getInventoryItem('item')
xPlayer.addInventoryItem('item', 1)
xPlayer.removeInventoryItem('item', 1)
 
-- ESX (con ox_inventory) / Qbox
exports.ox_inventory:GetItem(source, 'item')
exports.ox_inventory:AddItem(source, 'item', 1)
exports.ox_inventory:RemoveItem(source, 'item', 1)
 
-- QBCore (qb-inventory)
Player.Functions.GetItemByName('item')
Player.Functions.AddItem('item', 1)
Player.Functions.RemoveItem('item', 1)

4. Job

-- ESX
local job = xPlayer.getJob()
xPlayer.setJob('police', 2)
 
-- QBCore
local job = Player.PlayerData.job
Player.Functions.SetJob('police', 2)

5. Eventi Client/Server (uguali ovunque)

La comunicazione eventi non cambia:

-- client
TriggerServerEvent('resource:event', data)
RegisterNetEvent('resource:event', function() end)
 
-- server
RegisterNetEvent('resource:event')
AddEventHandler('resource:event', function(data) end)

6. Callback

-- ESX
ESX.TriggerServerCallback('resource:callback', function(result) end, args)
 
-- ox_lib (funziona ovunque con ox_lib)
lib.callback.register('resource:callback', function(source, args) end)   -- server
lib.callback.await('resource:callback', args)                           -- client

7. Adattare uno Script (procedura)

  1. Trova tutte le funzioni del framework usate (xPlayer., QBCore., ecc.)
  2. Sostituiscile con l’equivalente del target (tabella sopra)
  3. Attenzione a: nome database, tabelle users/characters, identificatori
  4. Testa le funzioni di denaro/item/job una per una

WARNING

Il cambio framework non è solo sostituire funzioni: cambiano anche la struttura del DB (es. ESX usa identifier, QBCore usa citizenid) e le tabelle. Un porting superficiale produce bug economici.


Verifica

  • Tutte le chiamate framework sostituite
  • Database allineato (identifiers/tabelle)
  • Denaro/item/job testati
  • callback migrate a lib.callback o equivalente

TIP

Prossimo passo: 03 - Framework Agnostic


Torna alla: Indice Generale