Skip to content

tw.fw (Framework Bridge)

Cote : Shared (Client + Server)

Couche d'abstraction cross-framework. Detecte automatiquement le framework installe et fournit une API unifiee pour les donnees joueur, l'inventaire, l'argent et les metiers.

Alias : tw.fw est un raccourci pour tw.framework. Les deux sont interchangeables.

Frameworks supportes : VORP, RSG v1/v2, QBCore RedM, QRCore, RedEM:RP (ancien et 2023), RPX, TPZ-CORE, FRP.

Detection du framework

tw.fw:get()

Retourne la chaine d'identifiant du framework detecte.

Retour : string (ex: "vorp", "rsg", "qbcore", "redemrp", etc.)


tw.fw:is(name)

Verifie si le framework actuel correspond au nom donne.

ParametreTypeDescription
namestringIdentifiant du framework a verifier

Retour : boolean

Donnees joueur (Server)

tw.fw:getUser(source)

Retourne un objet UserClass pour le joueur.

ParametreTypeDescription
sourceintegerID serveur du joueur

Retour : UserClass (voir Methodes UserClass ci-dessous)


tw.fw:getUserIdentifiers(source)

Retourne les identifiants du joueur sans creer un UserClass complet.

ParametreTypeDescription
sourceintegerID serveur du joueur

Retour : table{ identifier = string, charid = string|integer }


tw.fw:getJob(source)

Retourne le nom du metier actuel du joueur.

ParametreTypeDescription
sourceintegerID serveur du joueur

Retour : string


tw.fw:getRPName(source)

Retourne le nom roleplay du joueur (prenom + nom).

ParametreTypeDescription
sourceintegerID serveur du joueur

Retour : string (ex: "John Smith")


tw.fw:getSteamIdentifier(source)

Retourne l'identifiant Steam du joueur.

ParametreTypeDescription
sourceintegerID serveur du joueur

Retour : string ("steam:xxxx" ou "Unknown")


tw.fw:onCharacterSelected(cb)

Enregistre un callback declenche lorsqu'un joueur selectionne un personnage.

ParametreTypeDescription
cbfunction(source)Callback recevant l'ID serveur du joueur

Donnees joueur (Client)

tw.fw:getMyIdentifiers()

Retourne les identifiants du joueur local.

Retour : table{ identifier = string, charid = string|integer }

Argent (Server)

tw.fw:addMoney(source, amount, moneyType)

Ajoute de l'argent a un joueur.

ParametreTypeDescription
sourceintegerID serveur du joueur
amountnumberMontant a ajouter
moneyTypeinteger0 = dollar, 1 = gold, 2 = rol

tw.fw:removeMoney(source, amount, moneyType)

Retire de l'argent a un joueur.

ParametreTypeDescription
sourceintegerID serveur du joueur
amountnumberMontant a retirer
moneyTypeinteger0 = dollar, 1 = gold, 2 = rol

tw.fw:canUserBuy(source, amount, moneyType, removeIfCan?)

Verifie si un joueur peut se permettre un achat. Retire optionnellement l'argent s'il le peut.

ParametreTypePar defautDescription
sourceintegerID serveur du joueur
amountnumberPrix a verifier
moneyTypeinteger0 = dollar, 1 = gold, 2 = rol
removeIfCanboolean?falseSi true, deduit l'argent quand l'achat est possible

Retour : boolean


tw.fw:canUserPayWith(source, prices, removeIfCan?)

Verifie si un joueur peut se permettre un achat multi-devises.

ParametreTypePar defautDescription
sourceintegerID serveur du joueur
pricestableTableau d'entrees { amount, moneyType }
removeIfCanboolean?falseSi true, deduit tous les montants quand l'achat est possible

Retour : boolean, integer|nil — indicateur de succes, et l'index de la premiere devise echouee si non affordable.


tw.fw:refundUserWith(source, prices)

Rembourse un achat multi-devises.

ParametreTypeDescription
sourceintegerID serveur du joueur
pricestableTableau d'entrees { amount, moneyType } (meme format que canUserPayWith)

Inventaire (Server)

tw.fw:giveItem(source, item, quantity, meta?)

Donne un objet a un joueur.

ParametreTypePar defautDescription
sourceintegerID serveur du joueur
itemstringNom de l'objet
quantityintegerQuantite a donner
metatable?nilMetadonnees de l'objet

Retour : booleanfalse si le joueur n'a pas de place.


tw.fw:removeItem(source, item, quantity, meta?)

Retire un objet d'un joueur.

ParametreTypePar defautDescription
sourceintegerID serveur du joueur
itemstringNom de l'objet
quantityintegerQuantite a retirer
metatable?nilMetadonnees de l'objet

tw.fw:canUseItem(source, item, amount, meta?, remove?)

Verifie si un joueur possede assez d'un objet. Le retire optionnellement.

ParametreTypePar defautDescription
sourceintegerID serveur du joueur
itemstringNom de l'objet
amountintegerQuantite requise
metatable?nilMetadonnees de l'objet
removeboolean?falseSi true, retire l'objet s'il est disponible

Retour : boolean


tw.fw:registerUseItem(item, closeAfterUsed?, callback)

Enregistre un handler d'objet utilisable.

ParametreTypePar defautDescription
itemstringNom de l'objet
closeAfterUsedboolean?falseFermer l'inventaire apres utilisation
callbackfunction(data)Handler appele lorsque l'objet est utilise

tw.fw:createInventory(invName, name, invConfig)

Cree un inventaire secondaire personnalise.

ParametreTypeDescription
invNamestringIdentifiant unique de l'inventaire
namestringLibelle d'affichage
invConfigtableConfiguration (voir ci-dessous)

Champs invConfig :

ChampTypeDescription
maxSlotsintegerNombre maximum de slots
maxWeightnumberPoids maximum
acceptWeaponsbooleanSi les armes peuvent etre stockees
sharedbooleanSi l'inventaire est partage entre les joueurs

tw.fw:removeInventory(invName)

Supprime un inventaire personnalise.

ParametreTypeDescription
invNamestringIdentifiant de l'inventaire

tw.fw:openInventory(source, invName)

Ouvre un inventaire personnalise pour un joueur.

ParametreTypeDescription
sourceintegerID serveur du joueur
invNamestringIdentifiant de l'inventaire

tw.fw:getItemData(item)

Retourne les metadonnees d'un objet depuis le registre d'objets du framework.

ParametreTypeDescription
itemstringNom de l'objet

Retour : table{ label = string, ... }


tw.fw:getItems()

Retourne tous les objets du registre d'objets du framework.

Retour : table

Methodes UserClass

Objet retourne par tw.fw:getUser(source).

user:getMoney(moneyType)

ParametreTypeDescription
moneyTypeinteger0 = dollar, 1 = gold, 2 = rol

Retour : number


user:addMoney(amount, moneyType)

ParametreTypeDescription
amountnumberMontant a ajouter
moneyTypeintegerType de devise

user:removeMoney(amount, moneyType)

ParametreTypeDescription
amountnumberMontant a retirer
moneyTypeintegerType de devise

user:getIdentifiers()

Retour : table{ identifier = string, charid = string|integer }


user:getJob()

Retour : string


user:getRPName()

Retour : string (ex: "John Smith")


user:canBuy(price, moneyType, removeIfCan?)

ParametreTypePar defautDescription
pricenumberPrix a verifier
moneyTypeintegerType de devise
removeIfCanboolean?falseDeduire l'argent si l'achat est possible

Retour : boolean

Exemples

Informations basiques du joueur

lua
-- server.lua
local user = tw.fw:getUser(source)
local name = user:getRPName()
local job = user:getJob()
local ids = user:getIdentifiers()

print(name .. " (" .. job .. ") — char: " .. ids.charid)

Flux d'achat

lua
-- server.lua
local price = 50
local user = tw.fw:getUser(source)

if not user:canBuy(price, 0, true) then
    tw.notif.rightError(source, "Not enough money")
    return
end

local success = tw.fw:giveItem(source, "bandage", 5)
if not success then
    user:addMoney(price, 0) -- remboursement
    tw.notif.rightError(source, "Inventory full")
    return
end

tw.notif.rightSuccess(source, "Purchased 5x Bandage")

Achat multi-devises

lua
-- server.lua
local prices = {
    { amount = 10, moneyType = 0 },  -- $10
    { amount = 2, moneyType = 1 },   -- 2 gold
}

local canPay, failIndex = tw.fw:canUserPayWith(source, prices, true)
if not canPay then
    tw.notif.rightError(source, "Not enough funds")
    return
end

Detecter le framework

lua
print("Running on: " .. tw.fw:get())

if tw.fw:is("vorp") then
    -- Logique specifique a VORP
end

Enregistrer un objet utilisable

lua
-- server.lua
tw.fw:registerUseItem("bandage", true, function(data)
    local source = data.source
    tw.fw:removeItem(source, "bandage", 1)
    -- logique de soin
end)

Identifiants cote client

lua
-- client.lua
local ids = tw.fw:getMyIdentifiers()
print("My char ID: " .. ids.charid)

Notes

  • Utilisez toujours tw.fw au lieu d'appeler directement les exports du framework. Cela garantit que votre code fonctionne sur tous les frameworks supportes.
  • Les valeurs de moneyType (0 = dollar, 1 = gold, 2 = rol) sont coherentes entre tous les frameworks.
  • giveItem retourne false lorsque l'inventaire du joueur est plein. Verifiez toujours la valeur de retour et gerez l'echec (ex: rembourser l'argent).
  • onCharacterSelected se declenche une fois par selection de personnage, y compris lors de la reconnexion.

Premium RedM Scripts — Multi-Framework