From the reference libraryRedM

Framework Class

jo_libs/modules/framework-bridge/framework.md

Framework Class

A powerfull library to build a script compatible with all Frameworks. The module architecture is based on a folder structure, with one folder per framework. With this structure, the data from one framework can't intefere with date from another one.

::: info The framework is automatically detected once the module is started based on resource in the server. ::: ::: tip If you have a custom framework, you can overwrite methods by added the one you want edit inside _custom/FrameworkClass.lua file. :::

:::details List of compatible frameworks

  • VORP
  • RedEM:RP old
  • RedEM:RP 2023 (reboot)
  • QBR
  • QR
  • RSG
  • RPX
  • TPZ :::

Configuration Variables (Convars)

Convar Side Type Default Description
jo_libs:framework <Badge type="shared" text="Shared" /> String false Force the framework

jo.framework Methods > <Badge type="client" text="Client" /> jo.framework:getMyIdentifiers()

<!-- @include: ./slots/headers.md#client|jo.framework:getMyIdentifiers -->

A function to get the user identifiers <br>

<!-- @include: ./slots/descriptions.md#client|jo.framework:getMyIdentifiers -->

jo.framework Methods > <Badge type="client" text="Client" /> jo.framework:getMyIdentifiers() > Syntax

jo.framework:getMyIdentifiers()

<!-- @include: ./slots/examples.md#client|jo.framework:getMyIdentifiers -->

<!-- @include: ./slots/footers.md#client|jo.framework:getMyIdentifiers -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:addItemInInventory()

<!-- @include: ./slots/headers.md#FrameworkClass|jo.framework:addItemInInventory -->

Adds a specific item to a custom inventory with optional metadata and wait parameter <br>

<!-- @include: ./slots/descriptions.md#FrameworkClass|jo.framework:addItemInInventory -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:addItemInInventory() > Syntax

jo.framework:addItemInInventory(source, invId, item, quantity, metadata, needWait)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:addItemInInventory() > Parameters

source : integer

The source ID of the player

invId : string

The unique ID of the inventory

item : string

The name of the item

quantity : integer

The quantity of the item

metadata : table <BadgeOptional />

The metadata of the item

needWait : boolean <BadgeOptional />

If need to wait after the SQL insertion <br> default:false

<!-- @include: ./slots/examples.md#FrameworkClass|jo.framework:addItemInInventory -->

<!-- @include: ./slots/footers.md#FrameworkClass|jo.framework:addItemInInventory -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:addMoney()

<!-- @include: ./slots/headers.md#server|jo.framework:addMoney -->

A function to give money to a player <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:addMoney -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:addMoney() > Syntax

jo.framework:addMoney(source, amount, moneyType)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:addMoney() > Parameters

source : integer

The source ID of the player

amount : number

The amount of money to add

moneyType : integer <BadgeOptional />

0: dollar, 1: gold, 2: rol <br> default:0

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:addMoney() > Return Value

Type : boolean

Return true if the money is successfully added

<!-- @include: ./slots/examples.md#server|jo.framework:addMoney -->

<!-- @include: ./slots/footers.md#server|jo.framework:addMoney -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUseItem()

<!-- @include: ./slots/headers.md#FrameworkClass|jo.framework:canUseItem -->

Checks if a player has the required quantity of a specific item in their inventory and optionally removes it <br>

<!-- @include: ./slots/descriptions.md#FrameworkClass|jo.framework:canUseItem -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUseItem() > Syntax

jo.framework:canUseItem(source, item, amount, meta, remove)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUseItem() > Parameters

source : integer

The source ID of the player

item : string

The name of the item need to use

amount : integer

The quantity of the item

meta : table <BadgeOptional />

The metadata of the item

remove : boolean <BadgeOptional />

If the item has to be removed <br> default:false

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUseItem() > Return Value

Type : boolean

Return true if the player has enough quantity of the item

<!-- @include: ./slots/examples.md#FrameworkClass|jo.framework:canUseItem -->

<!-- @include: ./slots/footers.md#FrameworkClass|jo.framework:canUseItem -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUserBuy()

<!-- @include: ./slots/headers.md#server|jo.framework:canUserBuy -->

Checks if a player has sufficient funds of a specified currency type <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:canUserBuy -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUserBuy() > Syntax

jo.framework:canUserBuy(source, amount, moneyType, removeIfCan)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUserBuy() > Parameters

source : integer

The source ID of the player

amount : number

The amount of money the player needs to have <br> {money = 10.5, gold = 3, rol = 1.5}

moneyType : integer|string <BadgeOptional />

0: dollar, 1: gold, 2: rol <br> default:1

removeIfCan : boolean <BadgeOptional />

Remove the money if the player has enough <br> default:false

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUserBuy() > Return Value

Type : boolean

Returns true if the player has more money than the amount

<!-- @include: ./slots/examples.md#server|jo.framework:canUserBuy -->

<!-- @include: ./slots/footers.md#server|jo.framework:canUserBuy -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUserPayWith()

<!-- @include: ./slots/headers.md#server|jo.framework:canUserPayWith -->

A function that checks if a player can pay multiple prices <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:canUserPayWith -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUserPayWith() > Syntax

jo.framework:canUserPayWith(source, prices, removeIfCan)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUserPayWith() > Parameters

source : integer

The source ID of the player

prices : table

The prices to check

removeIfCan : boolean <BadgeOptional />

Remove the prices if the player can pay

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUserPayWith() > Return Value

Type : boolean,

<!-- @include: ./slots/examples.md#server|jo.framework:canUserPayWith -->

<!-- @include: ./slots/footers.md#server|jo.framework:canUserPayWith -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:createInventory()

<!-- @include: ./slots/headers.md#FrameworkClass|jo.framework:createInventory -->

Creates a custom inventory with configurable slots, weight limits, and item restrictions <br>

<!-- @include: ./slots/descriptions.md#FrameworkClass|jo.framework:createInventory -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:createInventory() > Syntax

jo.framework:createInventory(invName, name, invConfig)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:createInventory() > Parameters

invName : string

Unique id of the inventory

name : string

Label of the inventory

invConfig : table

Configuration of the inventory

invConfig.maxSlots : integer - Max slot of the inventory

invConfig.maxWeight : float - Max weight of the inventory

invConfig.acceptWeapons : boolean - Whether the inventory accepts weapons <BadgeOptional />

invConfig.shared : boolean - If the inventory is shared between players <BadgeOptional />

invConfig.ignoreStackLimit : boolean - If the inventory can overcoming stack limits <BadgeOptional />

invConfig.whitelist : table - Restrict the list of items that can be put in the inventory <BadgeOptional />

invConfig.whitelistˌ_x_ˌitem : string - Name of the whitelisted item

invConfig.whitelistˌ_x_ˌlimit : integer - Stack limit of this item

<!-- @include: ./slots/examples.md#FrameworkClass|jo.framework:createInventory -->

<!-- @include: ./slots/footers.md#FrameworkClass|jo.framework:createInventory -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:get()

<!-- @include: ./slots/headers.md#server|jo.framework:get -->

Returns the name of the current active framework being used <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:get -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:get() > Syntax

jo.framework:get()

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:get() > Return Value

Type : string

Return the name of the current framework : <br> "VORP" or "RedEM" or "RedEM2023" or "qbr" or "rsg" or "qr" or "rpx"

<!-- @include: ./slots/examples.md#server|jo.framework:get -->

<!-- @include: ./slots/footers.md#server|jo.framework:get -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getItemsFromInventory()

<!-- @include: ./slots/headers.md#FrameworkClass|jo.framework:getItemsFromInventory -->

Retrieves all items from a specific inventory with their quantities and metadata <br>

<!-- @include: ./slots/descriptions.md#FrameworkClass|jo.framework:getItemsFromInventory -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getItemsFromInventory() > Syntax

jo.framework:getItemsFromInventory(invId)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getItemsFromInventory() > Parameters

invId : string

The unique ID of the inventory

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getItemsFromInventory() > Return Value

Type : table

Return the list of items with structure : <br> item.amount : integer - The amount of the item<br> item.id : integer - The id of the item<br>item.item : string - The name of the item<br>item.metadata : table - The metadata of the item<br>

<!-- @include: ./slots/examples.md#FrameworkClass|jo.framework:getItemsFromInventory -->

<!-- @include: ./slots/footers.md#FrameworkClass|jo.framework:getItemsFromInventory -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getJob()

<!-- @include: ./slots/headers.md#server|jo.framework:getJob -->

Returns the current job assigned to a player <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:getJob -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getJob() > Syntax

jo.framework:getJob(source)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getJob() > Parameters

source : integer

The source ID of the player

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getJob() > Return Value

Type : string

Return the job name of the player

<!-- @include: ./slots/examples.md#server|jo.framework:getJob -->

<!-- @include: ./slots/footers.md#server|jo.framework:getJob -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getRPName()

<!-- @include: ./slots/headers.md#server|jo.framework:getRPName -->

Returns the roleplay name (first and last name) of the player <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:getRPName -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getRPName() > Syntax

jo.framework:getRPName(source)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getRPName() > Parameters

source : integer

The source ID of the player

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getRPName() > Return Value

Type : string

Return the formatted first and last name of the player

<!-- @include: ./slots/examples.md#server|jo.framework:getRPName -->

<!-- @include: ./slots/footers.md#server|jo.framework:getRPName -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getSourceFromIdentifiers()

<!-- @include: ./slots/headers.md#server|jo.framework:getSourceFromIdentifiers -->

Retrieves the source ID from identifiers <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:getSourceFromIdentifiers -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getSourceFromIdentifiers() > Syntax

jo.framework:getSourceFromIdentifiers(identifier, charid)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getSourceFromIdentifiers() > Parameters

identifier : string

The identifier to search for

charid : string

The character ID to search for

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getSourceFromIdentifiers() > Return Value

Type : integer|boolean

Return the source ID if found, otherwise return false

<!-- @include: ./slots/examples.md#server|jo.framework:getSourceFromIdentifiers -->

<!-- @include: ./slots/footers.md#server|jo.framework:getSourceFromIdentifiers -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUser()

<!-- @include: ./slots/headers.md#server|jo.framework:getUser -->

Retrieves a player's full UserClass object containing all player data and methods <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:getUser -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUser() > Syntax

jo.framework:getUser(source)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUser() > Parameters

source : integer

The source ID of the player

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUser() > Return Value

Type : UserClass

Return a User class object containing player data and methods

<!-- @include: ./slots/examples.md#server|jo.framework:getUser -->

<!-- @include: ./slots/footers.md#server|jo.framework:getUser -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUserClothes()

<!-- @include: ./slots/headers.md#server|jo.framework:getUserClothes -->

Retrieves a player's clothing data with standardized category names <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:getUserClothes -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUserClothes() > Syntax

jo.framework:getUserClothes(source)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUserClothes() > Parameters

source : integer

The source ID of the player

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUserClothes() > Return Value

Type : table

Return the list of clothes with standardized categories and properties

<!-- @include: ./slots/examples.md#server|jo.framework:getUserClothes -->

<!-- @include: ./slots/footers.md#server|jo.framework:getUserClothes -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUserIdentifiers()

<!-- @include: ./slots/headers.md#server|jo.framework:getUserIdentifiers -->

Retrieves all identifiers associated with a player <br> Shortcut for jo.framework.UserClass:getIdentifiers() method <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:getUserIdentifiers -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUserIdentifiers() > Syntax

jo.framework:getUserIdentifiers(source)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUserIdentifiers() > Parameters

source : integer

The source ID of the player

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUserIdentifiers() > Return Value

Type : table

Return the player's identifiers <br> identifiers.identifier - Unique identifier of the player <br> identifiers.charid - Unique id of the player

<!-- @include: ./slots/examples.md#server|jo.framework:getUserIdentifiers -->

<!-- @include: ./slots/footers.md#server|jo.framework:getUserIdentifiers -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUserSkin()

<!-- @include: ./slots/headers.md#server|jo.framework:getUserSkin -->

Retrieves a player's skin data with standardized properties and formatting <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:getUserSkin -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUserSkin() > Syntax

jo.framework:getUserSkin(source)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUserSkin() > Parameters

source : integer

The source ID of the player

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getUserSkin() > Return Value

Type : table

Return the skin data

<!-- @include: ./slots/examples.md#server|jo.framework:getUserSkin -->

<!-- @include: ./slots/footers.md#server|jo.framework:getUserSkin -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:giveItem()

<!-- @include: ./slots/headers.md#FrameworkClass|jo.framework:giveItem -->

Adds an item to a player's inventory with optional metadata <br>

<!-- @include: ./slots/descriptions.md#FrameworkClass|jo.framework:giveItem -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:giveItem() > Syntax

jo.framework:giveItem(source, item, quantity, meta)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:giveItem() > Parameters

source : integer

The source ID of the player

item : string

The name of the item

quantity : integer

The amount of the item to give

meta : table <BadgeOptional />

The metadata of the item

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:giveItem() > Return Value

Type : boolean

Return true if the item is successfully given

<!-- @include: ./slots/examples.md#FrameworkClass|jo.framework:giveItem -->

<!-- @include: ./slots/footers.md#FrameworkClass|jo.framework:giveItem -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:is()

<!-- @include: ./slots/headers.md#server|jo.framework:is -->

Compares the current framework with a specified framework name <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:is -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:is() > Syntax

jo.framework:is(name)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:is() > Parameters

name : string

The name of the framework to check against <br> Supported frameworks : <br> "VORP" or "RedEM" or "RedEM2023" or "qbr" or "rsg" or "qr" or "rpx"

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:is() > Return Value

Type : boolean

Return true if the current framework matches the name

<!-- @include: ./slots/examples.md#server|jo.framework:is -->

<!-- @include: ./slots/footers.md#server|jo.framework:is -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:listenItemRemoved()

<!-- @include: ./slots/headers.md#server|jo.framework:listenItemRemoved -->

Listen when an item is removed of the player inventory <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:listenItemRemoved -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:listenItemRemoved() > Syntax

jo.framework:listenItemRemoved(...)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:listenItemRemoved() > Parameters

item : string|function

The name of the item

callback : function

The function fired after remove the item <br> 1st argument: source <br> 2nd argument: the quantity removed <br> 3rd argument: metadata of the item <br> 4th argument: reason of the removal

<!-- @include: ./slots/examples.md#server|jo.framework:listenItemRemoved -->

<!-- @include: ./slots/footers.md#server|jo.framework:listenItemRemoved -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:mergeInventoriesConfiguration()

<!-- @include: ./slots/headers.md#server|jo.framework:mergeInventoriesConfiguration -->

Merge inventory configuration <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:mergeInventoriesConfiguration -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:mergeInventoriesConfiguration() > Syntax

jo.framework:mergeInventoriesConfiguration(...)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:mergeInventoriesConfiguration() > Parameters

... : table

The inventory configurations to merge

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:mergeInventoriesConfiguration() > Return Value

Type : table

The merged inventory configuration

<!-- @include: ./slots/examples.md#server|jo.framework:mergeInventoriesConfiguration -->

<!-- @include: ./slots/footers.md#server|jo.framework:mergeInventoriesConfiguration -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:onCharacterSelected()

<!-- @include: ./slots/headers.md#FrameworkClass|jo.framework:onCharacterSelected -->

Callback when a character is selected <br>

<!-- @include: ./slots/descriptions.md#FrameworkClass|jo.framework:onCharacterSelected -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:onCharacterSelected() > Syntax

jo.framework:onCharacterSelected(cb)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:onCharacterSelected() > Parameters

cb : function

The callback function triggered when the character is selected

<!-- @include: ./slots/examples.md#FrameworkClass|jo.framework:onCharacterSelected -->

<!-- @include: ./slots/footers.md#FrameworkClass|jo.framework:onCharacterSelected -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:openInventory()

<!-- @include: ./slots/headers.md#FrameworkClass|jo.framework:openInventory -->

Opens a specific inventory <br>

<!-- @include: ./slots/descriptions.md#FrameworkClass|jo.framework:openInventory -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:openInventory() > Syntax

jo.framework:openInventory(source, invName)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:openInventory() > Parameters

source : integer

The source ID of the player

invName : string

The unique ID of the inventory

<!-- @include: ./slots/examples.md#FrameworkClass|jo.framework:openInventory -->

<!-- @include: ./slots/footers.md#FrameworkClass|jo.framework:openInventory -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:refundUserWith()

<!-- @include: ./slots/headers.md#server|jo.framework:refundUserWith -->

A function to refund a player with multiple prices <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:refundUserWith -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:refundUserWith() > Syntax

jo.framework:refundUserWith(source, prices)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:refundUserWith() > Parameters

source : integer

The source ID of the player

prices : table

The prices to refund

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:refundUserWith() > Return Value

Type : nil

<!-- @include: ./slots/examples.md#server|jo.framework:refundUserWith -->

<!-- @include: ./slots/footers.md#server|jo.framework:refundUserWith -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:registerUseItem()

<!-- @include: ./slots/headers.md#FrameworkClass|jo.framework:registerUseItem -->

Registers an item as usable and attaches a callback function that executes when the item is used <br>

<!-- @include: ./slots/descriptions.md#FrameworkClass|jo.framework:registerUseItem -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:registerUseItem() > Syntax

jo.framework:registerUseItem(item, closeAfterUsed, callback)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:registerUseItem() > Parameters

item : string

The name of the item

closeAfterUsed : boolean <BadgeOptional />

If the inventory needs to be closed after using the item <br> default:true

callback : function

The function fired after use the item <br> 1st argument: source <br> 2nd argument: metadata of the item

<!-- @include: ./slots/examples.md#FrameworkClass|jo.framework:registerUseItem -->

<!-- @include: ./slots/footers.md#FrameworkClass|jo.framework:registerUseItem -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeInventory()

<!-- @include: ./slots/headers.md#FrameworkClass|jo.framework:removeInventory -->

Removes an inventory from the server cache, useful for reloading inventory data from the database <br>

<!-- @include: ./slots/descriptions.md#FrameworkClass|jo.framework:removeInventory -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeInventory() > Syntax

jo.framework:removeInventory(invName)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeInventory() > Parameters

invName : string

Unique id of the inventory

<!-- @include: ./slots/examples.md#FrameworkClass|jo.framework:removeInventory -->

<!-- @include: ./slots/footers.md#FrameworkClass|jo.framework:removeInventory -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeItem()

<!-- @include: ./slots/headers.md#server|jo.framework:removeItem -->

A function to remove an item from a player's inventory if they have enough quantity <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:removeItem -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeItem() > Syntax

jo.framework:removeItem(source, item, quantity, meta)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeItem() > Parameters

source : integer

The source ID of the player

item : string

The name of the item to remove

quantity : integer

The quantity of the item to remove

meta : table <BadgeOptional />

The metadata of the item

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeItem() > Return Value

Type : boolean

Return true if the item is successfully removed

<!-- @include: ./slots/examples.md#server|jo.framework:removeItem -->

<!-- @include: ./slots/footers.md#server|jo.framework:removeItem -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeMoney()

<!-- @include: ./slots/headers.md#server|jo.framework:removeMoney -->

A function to remove money from a player's account <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:removeMoney -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeMoney() > Syntax

jo.framework:removeMoney(source, amount, moneyType)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeMoney() > Parameters

source : integer

The source ID of the player

amount : number

The amount of money to remove

moneyType : integer <BadgeOptional />

0: dollar, 1: gold, 2: rol <br> default:0

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeMoney() > Return Value

Type : boolean

Return true if the money is successfully removed

<!-- @include: ./slots/examples.md#server|jo.framework:removeMoney -->

<!-- @include: ./slots/footers.md#server|jo.framework:removeMoney -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:revertClothes()

<!-- @include: ./slots/headers.md#server|jo.framework:revertClothes -->

Converts standardized clothing data back to framework-specific format <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:revertClothes -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:revertClothes() > Syntax

jo.framework:revertClothes(standard)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:revertClothes() > Parameters

standard : table

The standardized clothes data

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:revertClothes() > Return Value

Type : table

Return clothes data with framework-specific keys

<!-- @include: ./slots/examples.md#server|jo.framework:revertClothes -->

<!-- @include: ./slots/footers.md#server|jo.framework:revertClothes -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:revertSkin()

<!-- @include: ./slots/headers.md#server|jo.framework:revertSkin -->

Converts standardized skin data back to framework-specific format <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:revertSkin -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:revertSkin() > Syntax

jo.framework:revertSkin(standard)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:revertSkin() > Parameters

standard : table

The standardized skin data

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:revertSkin() > Return Value

Type : table

Return skin data with framework-specific keys

<!-- @include: ./slots/examples.md#server|jo.framework:revertSkin -->

<!-- @include: ./slots/footers.md#server|jo.framework:revertSkin -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:standardizeClothes()

<!-- @include: ./slots/headers.md#server|jo.framework:standardizeClothes -->

Converts framework-specific clothing data to a standardized format <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:standardizeClothes -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:standardizeClothes() > Syntax

jo.framework:standardizeClothes(clothes)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:standardizeClothes() > Parameters

clothes : table

The framework-specific clothes data

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:standardizeClothes() > Return Value

Type : table

Return clothes data with standardized keys and structure

<!-- @include: ./slots/examples.md#server|jo.framework:standardizeClothes -->

<!-- @include: ./slots/footers.md#server|jo.framework:standardizeClothes -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:standardizeSkin()

<!-- @include: ./slots/headers.md#server|jo.framework:standardizeSkin -->

Converts framework-specific skin data to a standardized format <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:standardizeSkin -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:standardizeSkin() > Syntax

jo.framework:standardizeSkin(skin)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:standardizeSkin() > Parameters

skin : table

The framework-specific skin data

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:standardizeSkin() > Return Value

Type : table

Return skin data with standardized keys for components, overlays, and expressions

<!-- @include: ./slots/examples.md#server|jo.framework:standardizeSkin -->

<!-- @include: ./slots/footers.md#server|jo.framework:standardizeSkin -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:updateUserClothes()

<!-- @include: ./slots/headers.md#server|jo.framework:updateUserClothes -->

Save new clothes. <br> The function has two ways to work: <br>

  • With 2 arguments to save multiple clothes <br>
  • With 3 arguments to save one piece of clothing <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:updateUserClothes -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:updateUserClothes() > Syntax

jo.framework:updateUserClothes(...)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:updateUserClothes() > Parameters

source : integer

The source ID of the player

clothes : table

The list of clothes to apply or the category name

value : table <BadgeOptional />

The clothing data if updating a single category

overwrite : boolean <BadgeOptional />

If true, the new value overwrites the previous clothes. Else, it's merged

<!-- @include: ./slots/examples.md#server|jo.framework:updateUserClothes -->

<!-- @include: ./slots/footers.md#server|jo.framework:updateUserClothes -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:updateUserSkin()

<!-- @include: ./slots/headers.md#server|jo.framework:updateUserSkin -->

Save new skin values. <br> The function has two ways to work: <br>

  • With 3 arguments to save multiple skin data <br>
  • With 4 arguments to save only one skin data <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:updateUserSkin -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:updateUserSkin() > Syntax

jo.framework:updateUserSkin(...)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:updateUserSkin() > Parameters

source : integer

The source ID of the player

skinData : table

The list of skin data with category for key and skin data for value

category : string

The category of the skin data

data : table

The skin data

overwrite : boolean <BadgeOptional />

If true, the new value overwrites the previous skin. Else, it's merged

<!-- @include: ./slots/examples.md#server|jo.framework:updateUserSkin -->

<!-- @include: ./slots/footers.md#server|jo.framework:updateUserSkin -->


jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:getItemData()

<!-- @include: ./slots/headers.md#shared|jo.framework:getItemData -->

A function to get an item data <br>

<!-- @include: ./slots/descriptions.md#shared|jo.framework:getItemData -->

jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:getItemData() > Syntax

jo.framework:getItemData(item)

jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:getItemData() > Parameters

item : string

The name of the item

jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:getItemData() > Return Value

Type : table|false

The item data or false if not found

<!-- @include: ./slots/examples.md#shared|jo.framework:getItemData -->

<!-- @include: ./slots/footers.md#shared|jo.framework:getItemData -->


jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:getItems()

<!-- @include: ./slots/headers.md#shared|jo.framework:getItems -->

A function to get the list of items <br>

<!-- @include: ./slots/descriptions.md#shared|jo.framework:getItems -->

jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:getItems() > Syntax

jo.framework:getItems()

jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:getItems() > Return Value

Type : table

The list of items

<!-- @include: ./slots/examples.md#shared|jo.framework:getItems -->

<!-- @include: ./slots/footers.md#shared|jo.framework:getItems -->


UserClass Methods

Documentation for the User

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:onCharacterSelected()

<!-- @include: ./slots/headers.md#server|jo.framework:onCharacterSelected -->

Callback when a character is selected <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:onCharacterSelected -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:onCharacterSelected() > Parameters

cb : function

The callback function triggered when the character is selected, contains (source:integer, isNew:boolean)

<!-- @include: ./slots/examples.md#server|jo.framework:onCharacterSelected -->

<!-- @include: ./slots/footers.md#server|jo.framework:onCharacterSelected -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:addItemInInventory()

<!-- @include: ./slots/headers.md#server|jo.framework:addItemInInventory -->

Adds a specific item to a custom inventory with optional metadata and wait parameter <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:addItemInInventory -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:addItemInInventory() > Parameters

source : integer

The source ID of the player

invId : string

The unique ID of the inventory

item : string

The name of the item

quantity : integer

The quantity of the item

metadata : table <BadgeOptional />

The metadata of the item

needWait : boolean <BadgeOptional />

If need to wait after the SQL insertion <br> default:false

<!-- @include: ./slots/examples.md#server|jo.framework:addItemInInventory -->

<!-- @include: ./slots/footers.md#server|jo.framework:addItemInInventory -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUseItem()

<!-- @include: ./slots/headers.md#server|jo.framework:canUseItem -->

Checks if a player has the required quantity of a specific item in their inventory and optionally removes it <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:canUseItem -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:canUseItem() > Return Value

Type : boolean

Return true if the player has enough quantity of the item

<!-- @include: ./slots/examples.md#server|jo.framework:canUseItem -->

<!-- @include: ./slots/footers.md#server|jo.framework:canUseItem -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:createInventory()

<!-- @include: ./slots/headers.md#server|jo.framework:createInventory -->

Creates a custom inventory with configurable slots, weight limits, and item restrictions <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:createInventory -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:createInventory() > Parameters

invName : string

Unique id of the inventory

name : string

Label of the inventory

invConfig : table

Configuration of the inventory

invConfig.maxSlots : integer - Max slot of the inventory

invConfig.maxWeight : float - Max weight of the inventory

invConfig.acceptWeapons : boolean - Whether the inventory accepts weapons <BadgeOptional />

invConfig.shared : boolean - If the inventory is shared between players <BadgeOptional />

invConfig.ignoreStackLimit : boolean - If the inventory can overcoming stack limits <BadgeOptional />

invConfig.whitelist : table - Restrict the list of items that can be put in the inventory <BadgeOptional />

invConfig.whitelistˌ_x_ˌitem : string - Name of the whitelisted item

invConfig.whitelistˌ_x_ˌlimit : integer - Stack limit of this item

<!-- @include: ./slots/examples.md#server|jo.framework:createInventory -->

<!-- @include: ./slots/footers.md#server|jo.framework:createInventory -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getItemsFromInventory()

<!-- @include: ./slots/headers.md#server|jo.framework:getItemsFromInventory -->

Retrieves all items from a specific inventory with their quantities and metadata <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:getItemsFromInventory -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getItemsFromInventory() > Return Value

Type : table

Return the list of items with structure : <br> item.amount : integer - The amount of the item<br> item.id : integer - The id of the item<br>item.item : string - The name of the item<br>item.metadata : table - The metadata of the item<br>

<!-- @include: ./slots/examples.md#server|jo.framework:getItemsFromInventory -->

<!-- @include: ./slots/footers.md#server|jo.framework:getItemsFromInventory -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:giveItem()

<!-- @include: ./slots/headers.md#server|jo.framework:giveItem -->

Adds an item to a player's inventory with optional metadata <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:giveItem -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:giveItem() > Return Value

Type : boolean

Return true if the item is successfully given

<!-- @include: ./slots/examples.md#server|jo.framework:giveItem -->

<!-- @include: ./slots/footers.md#server|jo.framework:giveItem -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:openInventory()

<!-- @include: ./slots/headers.md#server|jo.framework:openInventory -->

Opens a specific inventory <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:openInventory -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:openInventory() > Parameters

source : integer

The source ID of the player

invName : string

The unique ID of the inventory

<!-- @include: ./slots/examples.md#server|jo.framework:openInventory -->

<!-- @include: ./slots/footers.md#server|jo.framework:openInventory -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:registerUseItem()

<!-- @include: ./slots/headers.md#server|jo.framework:registerUseItem -->

Registers an item as usable and attaches a callback function that executes when the item is used <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:registerUseItem -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:registerUseItem() > Parameters

item : string

The name of the item

closeAfterUsed : boolean <BadgeOptional />

If the inventory needs to be closed after using the item <br> default:true

callback : function

The function fired after use the item <br> 1st argument: source <br> 2nd argument: metadata of the item

<!-- @include: ./slots/examples.md#server|jo.framework:registerUseItem -->

<!-- @include: ./slots/footers.md#server|jo.framework:registerUseItem -->


jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeInventory()

<!-- @include: ./slots/headers.md#server|jo.framework:removeInventory -->

Removes an inventory from the server cache, useful for reloading inventory data from the database <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:removeInventory -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:removeInventory() > Parameters

invName : string

Unique id of the inventory

<!-- @include: ./slots/examples.md#server|jo.framework:removeInventory -->

<!-- @include: ./slots/footers.md#server|jo.framework:removeInventory -->


jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:getItems() > Return Value

Type : table

The list of items

<!-- @include: ./slots/examples.md#shared|jo.framework:getItems -->

<!-- @include: ./slots/footers.md#shared|jo.framework:getItems -->


jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:loadInventoryFiles()

<!-- @include: ./slots/headers.md#shared|jo.framework:loadInventoryFiles -->

<!-- @include: ./slots/descriptions.md#shared|jo.framework:loadInventoryFiles -->

jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:loadInventoryFiles() > Syntax

jo.framework:loadInventoryFiles(file)

<!-- @include: ./slots/examples.md#shared|jo.framework:loadInventoryFiles -->

<!-- @include: ./slots/footers.md#shared|jo.framework:loadInventoryFiles -->


UserClass Methods

Documentation for the User

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getItemCount()

<!-- @include: ./slots/headers.md#server|jo.framework:getItemCount -->

Gets the quantity of a specific item in a player's inventory <br>

<!-- @include: ./slots/descriptions.md#server|jo.framework:getItemCount -->

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getItemCount() > Syntax

jo.framework:getItemCount(source, item, meta)

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getItemCount() > Parameters

source : integer

The source ID of the player

item : string

The name of the item

meta : table <BadgeOptional />

The metadata of the item

jo.framework Methods > <Badge type="server" text="Server" /> jo.framework:getItemCount() > Return Value

Type : integer

Return the total quantity of the item in the player's inventory

<!-- @include: ./slots/examples.md#server|jo.framework:getItemCount -->

<!-- @include: ./slots/footers.md#server|jo.framework:getItemCount -->


jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:addItemDataToPrice()

<!-- @include: ./slots/headers.md#shared|jo.framework:addItemDataToPrice -->

A function to add inventory item data to every item cost inside a price <br>

<!-- @include: ./slots/descriptions.md#shared|jo.framework:addItemDataToPrice -->

jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:addItemDataToPrice() > Syntax

jo.framework:addItemDataToPrice(price)

jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:addItemDataToPrice() > Parameters

price : table

The price to augment

jo.framework Methods > <Badge type="shared" text="Shared" /> jo.framework:addItemDataToPrice() > Return Value

Type : table

The mutated price

<!-- @include: ./slots/examples.md#shared|jo.framework:addItemDataToPrice -->

<!-- @include: ./slots/footers.md#shared|jo.framework:addItemDataToPrice -->


Back to documentation