DocumentationÉcrire son provider

Écrire son provider

Tout ce qui relie le téléphone à votre serveur vit dans zs-phone/bridge/. Ce dossier est livré en clair, jamais obfusqué, et jamais écrasé par une mise à jour automatique : vos modifications survivent aux versions.

Organisation

code
bridge/
  shared/detect.lua              résolution des sélecteurs 'auto'
  client/
    lib/                         helpers partagés
    defaults/                    valeurs par défaut (ne pas modifier)
    framework/<framework>/       core, vehicles, services
    inventory/  housing/  voice/
  server/
    lib/  defaults/
    framework/<framework>/       core, money, vehicles, services
    banking/  billing/  society/  housing/  inventory/  voice/

Le principe

Le cœur du téléphone n'appelle jamais votre framework directement : il appelle des tables de fonctions.

TableDomaine
BridgeIdentité, nom, métier, admin, notifications, item utilisable
MoneyArgent en poche (liquide, banque, sale)
BankingComptes, IBAN, virements, historique
BillingFactures
SocietyMétiers, grades, employés, caisse, service
GarageVéhicules
HousingPropriétés et résidents
InventoryItem téléphone, métadonnées
VoiceCanaux d'appel

Chaque fonction a une valeur par défaut inoffensive dans bridge/*/defaults/. Un provider absent ou cassé dégrade la fonctionnalité, il ne fait pas planter le téléphone.

Ajouter un framework

Créez un dossier à votre nom et une garde en première ligne de chaque fichier :

lua
-- bridge/server/framework/monframework/core.lua
if Bridge.framework ~= 'monframework' then return end

--- @param src number
--- @return string|nil
function Bridge.getOwnerKey(src)
    return exports.monframework:GetIdentifier(src)
end

--- @param src number
--- @return string firstname
--- @return string lastname
function Bridge.getCharacterName(src)
    local player <const> = exports.monframework:GetPlayer(src)
    if not player then return '', '' end
    return player.firstname, player.lastname
end

Puis déclarez-le :

lua
Config.Phone.Framework = 'monframework'

Ajouter une banque, un housing, un inventaire

Même principe, avec la garde correspondante :

lua
if Bridge.banking ~= 'mabanque' then return end
if Bridge.housing ~= 'monhousing' then return end
if Bridge.inventory ~= 'moninventaire' then return end
if Bridge.voice ~= 'mavoix' then return end

Le plus simple reste de copier le provider existant le plus proche du vôtre et d'en adapter les appels.

Deux règles à respecter

Le return de garde doit être indenté et sans valeur. return seul, jamais return quelquechose en début de ligne : le processus de build interprète cette forme différemment.

Un helper appelé au chargement va dans lib/. Les fichiers d'un même dossier sont chargés dans l'ordre ASCII, où les majuscules précèdent l'underscore — un helper nommé _helper.lua se chargerait après Renewed-Banking.lua. Les dossiers lib/ sont déclarés avant tous les providers dans le manifeste.

Vérifier

Au démarrage, la console indique quel provider a été retenu sur chaque axe :

code
[zs-phone] framework=monframework inventory=ox_inventory housing=false garage=native banking=internal billing=internal society=internal voice=pma

Si votre provider n'apparaît pas, c'est que la garde ne correspond pas à la valeur de Config.Phone.*.

DMCA.com Protection Status