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
trueif 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
trueif 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
trueif 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
trueif 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
trueif 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
trueif 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
trueif 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
trueif 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
trueif 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 -->