# Table of Contents - [BL Appearance WIP – Nextra](#bl-appearance-wip-nextra) - [Introduction – Nextra](#introduction-nextra) - [Qb – Nextra](#qb-nextra) - [About Byte Labs – Nextra](#about-byte-labs-nextra) - [Releases – Nextra](#releases-nextra) - [Qbx – Nextra](#qbx-nextra) - [Esx – Nextra](#esx-nextra) - [Client – Nextra](#client-nextra) - [Object Structures – Nextra](#object-structures-nextra) - [Migration – Nextra](#migration-nextra) - [OX Inventory – Nextra](#ox-inventory-nextra) - [Server – Nextra](#server-nextra) - [QB Inventory – Nextra](#qb-inventory-nextra) - [BL Bridge WIP – Nextra](#bl-bridge-wip-nextra) - [Event Triggers – Nextra](#event-triggers-nextra) - [Resources Using Bridge – Nextra](#resources-using-bridge-nextra) - [Interfaces – Nextra](#interfaces-nextra) - [Target – Nextra](#target-nextra) - [Client – Nextra](#client-nextra) - [Client – Nextra](#client-nextra) - [Server – Nextra](#server-nextra) - [Server – Nextra](#server-nextra) - [BL ID CARD – Nextra](#bl-id-card-nextra) - [esx – Nextra](#esx-nextra) - [qb – Nextra](#qb-nextra) - [Exports – Nextra](#exports-nextra) - [BL Svelte Template – Nextra](#bl-svelte-template-nextra) - [BL FISHING – Nextra](#bl-fishing-nextra) - [Circle Sum – Nextra](#circle-sum-nextra) - [Games Types – Nextra](#games-types-nextra) - [Hacking Games – Nextra](#hacking-games-nextra) - [Digit Dazzle – Nextra](#digit-dazzle-nextra) - [Lights Out – Nextra](#lights-out-nextra) - [Mine Sweeper – Nextra](#mine-sweeper-nextra) - [Path Find – Nextra](#path-find-nextra) - [Print Lock – Nextra](#print-lock-nextra) - [Untangle – Nextra](#untangle-nextra) - [Wave Match – Nextra](#wave-match-nextra) - [Word Wiz – Nextra](#word-wiz-nextra) - [Skill Checks – Nextra](#skill-checks-nextra) - [exports – Nextra](#exports-nextra) - [BL Sprites – Nextra](#bl-sprites-nextra) - [Template Guide – Nextra](#template-guide-nextra) - [BL UI WIP – Nextra](#bl-ui-wip-nextra) --- # BL Appearance WIP – Nextra Bl Appearance BL Appearance WIP ================= An extensive and modern Appearance resource for FiveM servers. Current Features: * Multi Framework Support (Ox, QB, ESX, ND, QBX, Custom) * Outfit system * Blacklist clothing system * Share and receive outfits system * Job Outfits system * Fully backwards compatible with `illenium`, `qb-clothing` and `esx_skin` Appearance resources [Github](https://github.com/Byte-Labs-Project/bl_appearance) [Releases](https://github.com/Byte-Labs-Project/bl_appearance/releases) Installation[](https://docs.byte-labs.net/bl_appearance#installation) ---------------------------------------------------------------------- ### Download the latest [release (opens in a new tab)](https://github.com/overextended/ox_lib/releases) of ox\_lib.[](https://docs.byte-labs.net/bl_appearance#download-the-latest-release-of-ox_lib) ### Download the latest [release (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_bridge) of BL Bridge.[](https://docs.byte-labs.net/bl_appearance#download-the-latest-release-of-bl-bridge) ### Download the latest [release (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_appearance/releases) of BL Appearance.[](https://docs.byte-labs.net/bl_appearance#download-the-latest-release-of-bl-appearance) ### Download the latest [release (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_sprites) of BL Sprites.[](https://docs.byte-labs.net/bl_appearance#download-the-latest-release-of-bl-sprites) ### Extract the contents of the zip file into your `resources` folder.[](https://docs.byte-labs.net/bl_appearance#extract-the-contents-of-the-zip-file-into-your-resources-folder) ### Run the SQL file in your database[](https://docs.byte-labs.net/bl_appearance#run-the-sql-file-in-your-database) * Download the `bl_appearance.sql` file from the [releases (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_appearance/releases) page. * Import the file into your database. ### Download [release (opens in a new tab)](https://github.com/Byte-Labs-Studio/bl_appearance/releases/latest) or Download the `fivem-builders` to build[](https://docs.byte-labs.net/bl_appearance#download-release-or-download-the-fivem-builders-to-build) * [`fivem-builders` (opens in a new tab)](https://github.com/Z3rio/fivem-builders) * Replace the contents of the `[builders]` directory with the downloaded files from `fivem-builders`. * **Relative Path:** `resources\[cfx-default]\[system]\[builders]` ### Add `ensure bl_appearance` to your `server.cfg` file.[](https://docs.byte-labs.net/bl_appearance#add-ensure-bl_appearance-to-your-servercfg-file) * `ox_lib` is required first. * `bl_bridge` is required second. * `bl_sprites` is required third. * `bl_appearance` is required fourth. ### Configure your previous appearance/clothing system[](https://docs.byte-labs.net/bl_appearance#configure-your-previous-appearanceclothing-system) * Go to `bl_appearance/data/config.lua` and configure the `bl_appearance` settings. ### Configure item[](https://docs.byte-labs.net/bl_appearance#configure-item) * If you want a usable item to apply outfits. Go to `bl_appearance/data/config.lua` and configure the `itemName` to you liking. * Save this [image (opens in a new tab)](https://imgur.com/a/oY0yocr) and put it in your inventory images * Navigate below for your inventory * [OX](https://docs.byte-labs.net/bl_appearance/inventory/ox_inventory) * [QB](https://docs.byte-labs.net/bl_appearance/inventory/qb-inventory) * We plan to expand this to be usable for all clothings, but for now this is the only feature available. ### Navigate below for your framework[](https://docs.byte-labs.net/bl_appearance#navigate-below-for-your-framework) * [QB](https://docs.byte-labs.net/bl_appearance/qb) * [QBX](https://docs.byte-labs.net/bl_appearance/qbx) * [ESX](https://docs.byte-labs.net/bl_appearance/esx) * [ND](https://docs.byte-labs.net/bl_appearance/nd) Note[](https://docs.byte-labs.net/bl_appearance#note) ------------------------------------------------------ * To open the menu using a command, use '/appearance' then the menu you want to open. The menu types are the same ones in your `data/menus.lua` file. Last updated on August 12, 2024 [Releases](https://docs.byte-labs.net/releases "Releases") [Esx](https://docs.byte-labs.net/bl_appearance/esx "Esx") --- # Introduction – Nextra Introduction Introduction ============ Welcome to Byte Labs, your ultimate destination for cutting-edge FiveM scripts that redefine the boundaries of virtual experiences. Your adventure begins with us – welcome to Byte Labs, where innovation knows no bounds. What is Byte Labs?[](https://docs.byte-labs.net/#what-is-byte-labs) -------------------------------------------------------------------- Byte Labs is both an [Open Source Organisation (opens in a new tab)](https://github.com/Byte-Labs-Studio) and a [Fivem Store (opens in a new tab)](https://store.byte-labs.net/) . Which both provides high quality resources for both server owners and developers. Byte Labs consist of a Core Team and a Community Team. The Core Team is responsible for the development of Byte Labs Flagship releases, while the Community Team consist of developers who are willing to contribute to the organisation both through releasing or heavily contributing to Open Source and/or releasing their own paid resources through the organisation. Either way, there is a level of standard that is met before anything is released under Byte Labs whether it is Open Source or Paid. Core Team[](https://docs.byte-labs.net/#core-team) --------------------------------------------------- ![](https://avatars.githubusercontent.com/u/103050557?v=4) Xirvin ![](https://avatars.githubusercontent.com/u/66181451?v=4) Frowmza Last updated on August 13, 2024 [Releases](https://docs.byte-labs.net/releases "Releases") --- # Qb – Nextra [Bl Appearance](https://docs.byte-labs.net/bl_appearance) Qb * * * QB Installation[](https://docs.byte-labs.net/bl_appearance/qb#qb-installation) ------------------------------------------------------------------------------- Follow Below for installation for a Fresh Installation.[](https://docs.byte-labs.net/bl_appearance/qb#follow-below-for-installation-for-a-fresh-installation) -------------------------------------------------------------------------------------------------------------------------------------------------------------- No backwards compatibility is required. ### 1\. Modify `qb-multicharacter` > `server`[](https://docs.byte-labs.net/bl_appearance/qb#1-modify-qb-multicharacter--server) * This is only for other resources that use this callback, but we wont use it anymore because we will call the export directly in the client. But its basically the same thing. * Go to the callback definition for `qb-multicharacter:server:getSkin` around `line 183` in `server/main.lua` and change it to: QBCore.Functions.CreateCallback("qb-multicharacter:server:getSkin", function(_, cb, cid) local appearance = exports.bl_appearance:GetPlayerAppearance(cid) if not appearance then return cb(nil) end cb(appearance.model, appearance.skin) end) ### 2\. Modify `qb-multicharacter` > `client`[](https://docs.byte-labs.net/bl_appearance/qb#2-modify-qb-multicharacter--client) * Go to the `cDataPed` callback around `line 206` in `client/main.lua` and replace the event with the following: RegisterNUICallback('cDataPed', function(nData, cb) local cData = nData.cData SetEntityAsMissionEntity(charPed, true, true) DeleteEntity(charPed) if cData ~= nil then if not cached_player_skins[cData.citizenid] then local resolved_data = exports.bl_appearance:GetPlayerPedAppearance(cData.citizenid) or {} local resolved_model = resolved_data.model cached_player_skins[cData.citizenid] = {model = resolved_model, data = resolved_data} end local model = cached_player_skins[cData.citizenid].model local data = cached_player_skins[cData.citizenid].data model = model ~= nil and tonumber(model) or false if model ~= nil then initializePedModel(model, data) else initializePedModel() end cb("ok") else initializePedModel() cb("ok") end end) * Modify `initializePedModel` around `line 34` in `client/main.lua` and replace it with the following: local function initializePedModel(model, data) CreateThread(function() if not model then model = joaat(randommodels[math.random(#randommodels)]) end loadModel(model) charPed = CreatePed(2, model, Config.PedCoords.x, Config.PedCoords.y, Config.PedCoords.z - 0.98, Config.PedCoords.w, false, true) SetPedComponentVariation(charPed, 0, 0, 0, 2) FreezeEntityPosition(charPed, false) SetEntityInvincible(charPed, true) PlaceObjectOnGroundProperly(charPed) SetBlockingOfNonTemporaryEvents(charPed, true) if data and data.model then exports.bl_appearance:SetPedAppearance(charPed, data) end end) end ### 3\. Remove previous dependencies[](https://docs.byte-labs.net/bl_appearance/qb#3-remove-previous-dependencies) * Remove `qb-clothing`, `illenium-appearance` or any other apperance resource you have. * Remove `qb-clothing` from the `dependencies` in `fxmanifest.lua` of `qb-houses` and `qb-apartments` * Remove any other appearance resources dependencies you had. Last updated on August 12, 2024 [Migration](https://docs.byte-labs.net/bl_appearance/migration "Migration") [Qbx](https://docs.byte-labs.net/bl_appearance/qbx "Qbx") --- # About Byte Labs – Nextra About Byte Labs =============== Our Vision[](https://docs.byte-labs.net/about#our-vision) ---------------------------------------------------------- At Byte Labs, we envision a thriving FiveM community where innovation and collaboration converge to push the boundaries of virtual experiences. Our mission is to be at the forefront of this movement, delivering high-quality resources that elevate the standards for both server owners and developers. Who We Are[](https://docs.byte-labs.net/about#who-we-are) ---------------------------------------------------------- Byte Labs is more than just a repository of scripts; it's a dynamic ecosystem comprising two integral components: an [Open Source Organization (opens in a new tab)](https://github.com/Byte-Labs-Studio) and a [FiveM Store (opens in a new tab)](https://store.byte-labs.net/) . This dual identity reflects our commitment to providing a diverse range of resources, accessible to everyone. ### Core Team[](https://docs.byte-labs.net/about#core-team) Meet the masterminds behind Byte Labs - our Core Team. These individuals are the architects of our flagship releases, driving innovation and ensuring that every resource meets the uncompromising standards set by Byte Labs. **Xirvin** ![Xirvin](https://avatars.githubusercontent.com/u/103050557?v=4) * _Role:_ Co-Founder and Co-Lead Developer **Frowmza** ![Frowmza](https://avatars.githubusercontent.com/u/66181451?v=4) * _Role:_ Co-Founder and Co-Lead Developer ### Community Team[](https://docs.byte-labs.net/about#community-team) Byte Labs thrives on community collaboration. Our Community Team consists of dedicated developers who actively contribute to the organization by releasing open source projects or offering their own premium resources through Byte Labs. Our Standards[](https://docs.byte-labs.net/about#our-standards) ---------------------------------------------------------------- Whether a project is open source or paid, Byte Labs adheres to a strict set of standards. Every release undergoes meticulous scrutiny to ensure it not only meets but exceeds the expectations of the FiveM community. We believe in quality, innovation, and a commitment to raising the bar for virtual experiences. Join us on this exciting journey at Byte Labs, where limitless possibilities await. Explore our open source contributions, discover premium resources on our store, and be a part of a community that's shaping the future of FiveM. Welcome to Byte Labs – where innovation knows no bounds. Last updated on August 8, 2024 --- # Releases – Nextra Releases Releases ======== Free and Open[](https://docs.byte-labs.net/releases#free-and-open) ------------------------------------------------------------------- ### [bl\_bridge (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_bridge) WIP[](https://docs.byte-labs.net/releases#bl_bridge-wip) A bridging resource for multiple frameworks. * Player * ESX, QB, Ox Core, ND, Custom * Target * ESX, QB Target, Ox Target, Custom * Interface * ESX, QB, Ox Lib, Custom * Inventory * ESX, QB, OX, PS, Custom ### [bl\_svelte\_template (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_svelte_template) [](https://docs.byte-labs.net/releases#bl_svelte_template) A template for creating FiveM resources using Svelte. Current Features: * Svelte 4.0. * Debug Menu for testing in browser. * Can add `buttons`, `sliders`, `inputs` to emulate data being sent from the client. * Can define Event Handlers that pretend its being received in the client and can send back data. * TailwindCSS. * Can use localhost in fxmanifest for Hot Reloading inside FiveM which is no different from built version. ### [bl\_ui (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_ui) WIP[](https://docs.byte-labs.net/releases#bl_ui-wip) A UI resource that consists of a unique variety of skill checks. * Skill Checks * Circle Progress * Progress * Number Slide * Key Circle * Key Spam * Rapid Lines * More to come... ### [bl\_vehiclemenu (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_vehiclemenu) [](https://docs.byte-labs.net/releases#bl_vehiclemenu) Advanced vehicle menu for FiveM. ### [bl\_idcard (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_idcard) [](https://docs.byte-labs.net/releases#bl_idcard) A customisable and immaculate ID card system for your FiveM server. * ESX, QB, ND, Custom Last updated on March 19, 2024 [Introduction](https://docs.byte-labs.net/ "Introduction") [Bl Appearance](https://docs.byte-labs.net/bl_appearance "Bl Appearance") --- # Qbx – Nextra [Bl Appearance](https://docs.byte-labs.net/bl_appearance) Qbx * * * QBX Installation[](https://docs.byte-labs.net/bl_appearance/qbx#qbx-installation) ---------------------------------------------------------------------------------- ### 1\. Modify `qbx_core > client > character.lua`[](https://docs.byte-labs.net/bl_appearance/qbx#1-modify-qbx_core--client--characterlua) * Modify `randomPed` Function around `line 145` with local function randomPed() local model = `mp_m_freemode_01` exports.bl_appearance:SetPedModel(cache.ped, model) end * Modify `previewPed` Function around `line 151` with local function previewPed(citizenId) if not citizenId then randomPed() return end local appearance = exports.bl_appearance:GetPlayerPedAppearance(citizenId) if appearance and appearance.model then pcall(function() exports.bl_appearance:SetPlayerPedAppearance(appearance) end) else randomPed() end end * You can choose to remove `randomPeds` in `line 9` because it is no longer used. ### 2\. Remove previous appearance resource[](https://docs.byte-labs.net/bl_appearance/qbx#2-remove-previous-appearance-resource) * Such as `illenium-appearance` Last updated on August 12, 2024 [Qb](https://docs.byte-labs.net/bl_appearance/qb "Qb") [Client](https://docs.byte-labs.net/bl_appearance/exports/client "Client") --- # Esx – Nextra [Bl Appearance](https://docs.byte-labs.net/bl_appearance) Esx * * * ESX Installation[](https://docs.byte-labs.net/bl_appearance/esx#esx-installation) ---------------------------------------------------------------------------------- ### Remove Current Resources[](https://docs.byte-labs.net/bl_appearance/esx#remove-current-resources) skinchanger esx_skin esx_barber esx_clothshop All esx_skin, skinchanger dependency ### Replace `esx_skin:getPlayerSkin` callback in `esx_identity > server > main.lua`[](https://docs.byte-labs.net/bl_appearance/esx#replace-esx_skingetplayerskin-callback-in-esx_identity--server--mainlua) * Note: This will change the return of the callback to the object structure of `TAppearance`. Go to `line 5` in `server/main.lua` and replace the following: ESX.RegisterServerCallback("esx_skin:getPlayerSkin", function(source, cb) local xPlayer = ESX.GetPlayerFromId(source) local id = xPlayer.identifier local appearance = exports.bl_appearance:GetPlayerAppearance(id) cb(appearance, appearance) end) ### Modify `esx_extended > server > main.lua > line 6`[](https://docs.byte-labs.net/bl_appearance/esx#modify-esx_extended--server--mainlua--line-6) From local loadPlayer = "SELECT `accounts`, `job`, `job_grade`, `group`, `position`, `inventory`, `skin`, `loadout`, `metadata`" To local loadPlayer = "SELECT `accounts`, `job`, `job_grade`, `group`, `position`, `inventory`, `loadout`, `metadata`" ### Modify `esx_multicharacter > server > main.lua > line 54`[](https://docs.byte-labs.net/bl_appearance/esx#modify-esx_multicharacter--server--mainlua--line-54) * Modify the `SetupCharacters` function with the following: local function SetupCharacters(source) while not databaseConnected do Wait(100) end local identifier = GetIdentifier(source) ESX.Players[identifier] = true local slots = MySQL.scalar.await("SELECT slots FROM multicharacter_slots WHERE identifier = ?", { identifier }) or SLOTS identifier = PREFIX .. "%:" .. identifier local result = MySQL.query.await("SELECT identifier, accounts, job, job_grade, firstname, lastname, dateofbirth, sex, disabled FROM users WHERE identifier LIKE ? LIMIT ?", { identifier, slots }) local characters if result then local characterCount = #result characters = table.create(0, characterCount) for i = 1, characterCount, 1 do local v = result[i] local job, grade = v.job or "unemployed", tostring(v.job_grade) if ESX.Jobs[job] and ESX.Jobs[job].grades[grade] then if job ~= "unemployed" then grade = ESX.Jobs[job].grades[grade].label else grade = "" end job = ESX.Jobs[job].label end local accounts = json.decode(v.accounts) local id = tonumber(string.sub(v.identifier, #PREFIX + 1, string.find(v.identifier, ":") - 1)) characters[id] = { id = id, bank = accounts.bank, money = accounts.money, job = job, job_grade = grade, firstname = v.firstname, lastname = v.lastname, dateofbirth = v.dateofbirth, skin = exports.bl_appearance:GetPlayerAppearance(v.identifier), disabled = v.disabled, sex = v.sex == "m" and TranslateCap("male") or TranslateCap("female"), } end end TriggerClientEvent("esx_multicharacter:SetupUI", source, characters, slots) end ### Modify `esx_multicharacter > client > main.lua` around `line 200` inside `SelectCharacterMenu` function[](https://docs.byte-labs.net/bl_appearance/esx#modify-esx_multicharacter--client--mainlua-around-line-200-inside-selectcharactermenu-function) * Replace the following: if not v.model and v.skin then if v.skin.model then v.model = v.skin.model elseif v.skin.sex == 1 then v.model = mp_f_freemode_01 else v.model = mp_m_freemode_01 end end With if not v.model and v.skin then if v.skin.model then v.model = v.skin.model else v.model = mp_m_freemode_01 end end ### Modify the `AddEventHandler` of `esx:playerLoaded` in `esx_multicharacter > client > main.lua` around `line 285` to the following:[](https://docs.byte-labs.net/bl_appearance/esx#modify-the-addeventhandler-of-esxplayerloaded-in-esx_multicharacter--client--mainlua-around-line-285-to-the-following) AddEventHandler("esx:playerLoaded", function(playerData, isNew, skin) local spawn = playerData.coords or Config.Spawn if isNew or not skin or #skin == 1 then local finished = false skin = Config.Default[playerData.sex] skin.sex = playerData.sex == "m" and 0 or 1 local model = skin.sex == 0 and mp_m_freemode_01 or mp_f_freemode_01 RequestModel(model) while not HasModelLoaded(model) do RequestModel(model) Wait(0) end SetPlayerModel(PlayerId(), model) SetModelAsNoLongerNeeded(model) exports.bl_appearance:InitialCreation(function() finished = true end) repeat Wait(200) until finished end DoScreenFadeOut(750) Wait(750) SetCamActive(cam, false) RenderScriptCams(false, false, 0, true, true) cam = nil local playerPed = PlayerPedId() FreezeEntityPosition(playerPed, true) SetEntityCoordsNoOffset(playerPed, spawn.x, spawn.y, spawn.z, false, false, false, true) SetEntityHeading(playerPed, spawn.heading) if not isNew then TriggerEvent("skinchanger:loadSkin", skin or Characters[spawned].skin) end Wait(500) DoScreenFadeIn(750) Wait(750) repeat Wait(200) until not IsScreenFadedOut() TriggerServerEvent("esx:onPlayerSpawn") TriggerEvent("esx:onPlayerSpawn") TriggerEvent("playerSpawned") TriggerEvent("esx:restoreLoadout") Characters, hidePlayers = {}, false end) Last updated on August 18, 2024 [Bl Appearance](https://docs.byte-labs.net/bl_appearance "Bl Appearance") [Migration](https://docs.byte-labs.net/bl_appearance/migration "Migration") --- # Client – Nextra [Bl Appearance](https://docs.byte-labs.net/bl_appearance) exports Client Client Appearance Exports ========================= Below are the appearance exports that are available to use in your resource. From the client side. ### InitialCreation[](https://docs.byte-labs.net/bl_appearance/exports/client#initialcreation) * This function will set the position of the player ped and menu for them to create their appearance. * The argument is a callback function that will be called when the player has created their appearance. exports.bl_appearance:InitialCreation(cb: function) ### OpenMenu[](https://docs.byte-labs.net/bl_appearance/exports/client#openmenu) * This function will open the menu for the player. * The argument is the menu type to open. * Parameters: * menuType: string The menu type to open. exports.bl_appearance:OpenMenu(menuType: string) * You can also emulate opening a zone which opens up more options, like blacklisted clothings. exports.bl_appearance:OpenMenu({ type = "appearance", -- types from your data/menus.lua jobs = {'police'} }) Setters[](https://docs.byte-labs.net/bl_appearance/exports/client#setters) --------------------------------------------------------------------------- ### SetPlayerPedAppearance[](https://docs.byte-labs.net/bl_appearance/exports/client#setplayerpedappearance) * This function will set the appearance for the player ped. Includes proper handling of the `PlayerPedId` reset. * If appearance is not provided, it will fetch the appearance from the database using the player's `identifier`. * Parameters: * appearance: [TAppearance](https://docs.byte-labs.net/bl_appearance/exports/types#TAppearance) The appearance to set the player ped to. exports.bl_appearance:SetPlayerPedAppearance(appearance?: TAppearance) ### SetPedAppearance[](https://docs.byte-labs.net/bl_appearance/exports/client#setpedappearance) * This function will set the appearance of a specific ped. If the player ped is passed in, it will redirect to `SetPlayerPedAppearance` automatically. * If appearance is not provided, it will return early before anything else happens. * Parameters: * ped: number Any valid Ped Id. * * appearance: [TAppearance](https://docs.byte-labs.net/bl_appearance/exports/types#TAppearance) : The appearance to set the ped to. exports.bl_appearance:SetPedAppearance(ped: number, appearance: TAppearance) ### SetPedSkin[](https://docs.byte-labs.net/bl_appearance/exports/client#setpedskin) * This function will set the skin of the ped. * This will not change the clothes of the ped. * Parameters: * ped: number Any valid Ped Id. * skin: [TSkin](https://docs.byte-labs.net/bl_appearance/exports/types#TSkin) The skin to set the ped to. exports.bl_appearance:SetPedSkin(ped: number, skin: TSkin) ### SetPedClothes[](https://docs.byte-labs.net/bl_appearance/exports/client#setpedclothes) * This function will set the clothes of for the ped. * This will not change the skin of the ped. * Parameters: * ped: number Any valid Ped Id. * clothes: [TClothes](https://docs.byte-labs.net/bl_appearance/exports/types#TClothes) The clothes to set the ped to. exports.bl_appearance:SetPedClothes(ped: number, clothes: TClothes) ### SetPedTattoos[](https://docs.byte-labs.net/bl_appearance/exports/client#setpedtattoos) * This function will set the tattoos of the ped. * Parameters: * ped: number Any valid Ped Id. * tattoo: [TTattoos](https://docs.byte-labs.net/bl_appearance/exports/types#TTattoo) The tattoos to set the ped to. exports.bl_appearance:SetPedTattoos(ped: number, tattoos: TTattoo[]) ### SetPedHairColors[](https://docs.byte-labs.net/bl_appearance/exports/client#setpedhaircolors) * This function will set the hair colors of the ped. * Parameters: * ped: number Any valid Ped Id. * hairColor: [THairColor](https://docs.byte-labs.net/bl_appearance/exports/types#THairColor) The hair color to set the ped to. exports.bl_appearance:SetPedHairColors(ped: number, hairColor: THairColor) ### SetPedHeadOverlay[](https://docs.byte-labs.net/bl_appearance/exports/client#setpedheadoverlay) * This function will set the head overlay of the ped. * Parameters: * ped: number Any valid Ped Id. * headOverlay: [THeadOverlay](https://docs.byte-labs.net/bl_appearance/exports/types#THeadOverlay) The head overlay to set the ped to. exports.bl_appearance:SetPedHeadOverlay(ped: number, headOverlay: THeadOverlay) ### SetPedHeadBlend[](https://docs.byte-labs.net/bl_appearance/exports/client#setpedheadblend) * This function will set the head blend of the ped. * Parameters: * ped: number Any valid Ped Id. * headBlend: [THeadBlend](https://docs.byte-labs.net/bl_appearance/exports/types#THeadBlend) The head blend to set the ped to. exports.bl_appearance:SetPedHeadBlend(ped: number, headBlend: THeadBlend) ### SetPedFaceFeature[](https://docs.byte-labs.net/bl_appearance/exports/client#setpedfacefeature) * This function will set a specific face feature of the ped. * Parameters: * ped: number Any valid Ped Id. * feature: [TValue](https://docs.byte-labs.net/bl_appearance/exports/types#TValue) The face feature to set the ped to. exports.bl_appearance:SetPedFaceFeature(ped: number, feature: TValue) ### SetPedFaceFeatures[](https://docs.byte-labs.net/bl_appearance/exports/client#setpedfacefeatures) * This function will set the face features of the ped. * Parameters: * ped: number Any valid Ped Id. * faceFeatures: [TFaceFeature](https://docs.byte-labs.net/bl_appearance/exports/types#TFaceFeature) The face feature to set the ped to. exports.bl_appearance:SetPedFaceFeatures(ped: number, feature: TFaceFeature) ### SetPedModel[](https://docs.byte-labs.net/bl_appearance/exports/client#setpedmodel) * This function will set the model of the ped. * Parameters: * ped: number Any valid Ped Id. * data: number | string | [TAppearance](https://docs.byte-labs.net/bl_appearance/exports/types#TAppearance) The model to set the ped to. If a number is passed in, it will set the ped to that model. If a string is passed in, it will set the ped to the hash. If a TAppearance is passed in, it will apply the model with the headblend and head structure of the appearance. exports.bl_appearance:SetPedModel(ped: number, data: number | string | TAppearance) ### SetPedProp[](https://docs.byte-labs.net/bl_appearance/exports/client#setpedprop) * This function will set a specific prop of the ped. * Parameters: * ped: number Any valid Ped Id. * data: [TValue](https://docs.byte-labs.net/bl_appearance/exports/types#TValue) The prop to set the ped to. exports.bl_appearance:SetPedProp(ped: number, prop: TValue) ### SetPedDrawable[](https://docs.byte-labs.net/bl_appearance/exports/client#setpeddrawable) * This function will set a specific drawable of the ped. * Parameters: * ped: number Any valid Ped Id. * data: [TValue](https://docs.byte-labs.net/bl_appearance/exports/types#TValue) The drawable to set the ped to. exports.bl_appearance:SetPedDrawable(ped: number, data: TValue) Getters[](https://docs.byte-labs.net/bl_appearance/exports/client#getters) --------------------------------------------------------------------------- ### GetPlayerPedAppearance[](https://docs.byte-labs.net/bl_appearance/exports/client#getplayerpedappearance) * This function will return the appearance of the player ped. * The argument is the frameworkID of the player. But if its not provided, it will return the player's appearance. * Parameters: * frameworkID: number The frameworkID of the player. * Return: [TAppearance](https://docs.byte-labs.net/bl_appearance/exports/types#TAppearance) The appearance of the player ped. exports.bl_appearance:GetPlayerPedAppearance(frameworkID?: number): TAppearance ### GetPedAppearance[](https://docs.byte-labs.net/bl_appearance/exports/client#getpedappearance) * This function will return the appearance of a ped. This is an async function. * Parameters: * ped: number Any valid Ped Id. * Return: [TAppearance](https://docs.byte-labs.net/bl_appearance/exports/types#TAppearance) The appearance of the ped. exports.bl_appearance:GetPedAppearance(ped: number): TAppearance ### GetPedSkin[](https://docs.byte-labs.net/bl_appearance/exports/client#getpedskin) * This function will return the skin of a ped. * Parameters: * ped: number Any valid Ped Id. * Return: [TSkin](https://docs.byte-labs.net/bl_appearance/exports/types#TSkin) The skin of the ped. exports.bl_appearance:GetPedSkin(ped: number): TSkin ### GetDrawables[](https://docs.byte-labs.net/bl_appearance/exports/client#getdrawables) * This function will return the clothes of a ped. * Parameters: * ped: number Any valid Ped Id. * Return: [TClothes](https://docs.byte-labs.net/bl_appearance/exports/types#TClothes) The clothes of the ped. exports.bl_appearance:GetDrawables(ped: number): TClothes ### GetPlayerTattoos[](https://docs.byte-labs.net/bl_appearance/exports/client#getplayertattoos) * This function will return the tattoos of the player. There is no ped version of this function. * Parameters: * ped: number Any valid Ped Id. * Return: [TTattoos](https://docs.byte-labs.net/bl_appearance/exports/types#TTattoo) The tattoos of the ped. exports.bl_appearance:GetPlayerTattoos(ped: number): TTattoo[] ### GetPedHairColor[](https://docs.byte-labs.net/bl_appearance/exports/client#getpedhaircolor) * This function will return the hair color of a ped. * Parameters: * ped: number Any valid Ped Id. * Return: [THairColor](https://docs.byte-labs.net/bl_appearance/exports/types#THairColor) The hair color of the ped. exports.bl_appearance:GetPedHairColor(ped: number): THairColor ### GetPedHeadOverlay[](https://docs.byte-labs.net/bl_appearance/exports/client#getpedheadoverlay) * This function will return the head overlay of a ped. * Parameters: * ped: number Any valid Ped Id. * Return: [THeadOverlay](https://docs.byte-labs.net/bl_appearance/exports/types#THeadOverlay) The head overlay of the ped. exports.bl_appearance:GetPedHeadOverlay(ped: number): THeadOverlay ### GetPedHeadBlend[](https://docs.byte-labs.net/bl_appearance/exports/client#getpedheadblend) * This function will return the head blend of a ped. * Parameters: * ped: number Any valid Ped Id. * Return: [THeadBlend](https://docs.byte-labs.net/bl_appearance/exports/types#THeadBlend) The head blend of the ped. exports.bl_appearance:GetPedHeadBlend(ped: number): THeadBlend ### GetPedHeadStructure[](https://docs.byte-labs.net/bl_appearance/exports/client#getpedheadstructure) * This function will return the head structure of a ped. * Parameters: * ped: number Any valid Ped Id. * Return: [THeadStructure](https://docs.byte-labs.net/bl_appearance/exports/types#THeadStructure) The head structure of the ped. exports.bl_appearance:GetPedHeadStructure(ped: number): THeadStructure ### GetPedProps[](https://docs.byte-labs.net/bl_appearance/exports/client#getpedprops) * This function will return the props of a ped. * Parameters: * ped: number Any valid Ped Id. * Return: [TProps](https://docs.byte-labs.net/bl_appearance/exports/types#TProps) The props of the ped. exports.bl_appearance:GetPedProps(ped: number): TProps ### GetPedDrawables[](https://docs.byte-labs.net/bl_appearance/exports/client#getpeddrawables) * This function will return the drawables of a ped. * Parameters: * ped: number Any valid Ped Id. * Return: [TDrawables](https://docs.byte-labs.net/bl_appearance/exports/types#TDrawables) The drawables of the ped. exports.bl_appearance:GetPedDrawables(ped: number): TDrawables Last updated on August 12, 2024 [Qbx](https://docs.byte-labs.net/bl_appearance/qbx "Qbx") [Object Structures](https://docs.byte-labs.net/bl_appearance/exports/types "Object Structures") --- # Object Structures – Nextra [Bl Appearance](https://docs.byte-labs.net/bl_appearance) exports Object Structures Structures ========== Below are the structures of the appearance objects. It is useful to know if you want to use the appearance exports. Appearance for exports[](https://docs.byte-labs.net/bl_appearance/exports/types#appearance-for-exports) -------------------------------------------------------------------------------------------------------- Below are the structures of the appearance objects. It is useful to know if you want to use the appearance exports. ### TAppearance[](https://docs.byte-labs.net/bl_appearance/exports/types#tappearance) type TAppearance = TClothes & TSkin & { tattoos?: TTattoo[] // These are only needed to open the Menu. In the future, this will be refactored to be its own type modelIndex?: number outfits?: Outfit[] } ### TClothes[](https://docs.byte-labs.net/bl_appearance/exports/types#tclothes) type TClothes = { headOverlay: THeadOverlay drawables: TDrawables props: TProps } ### TSkin[](https://docs.byte-labs.net/bl_appearance/exports/types#tskin) type TSkin = { headBlend: THeadBlend headStructure: THeadStructure hairColor: THairColor model: number } ### TTattoo[](https://docs.byte-labs.net/bl_appearance/exports/types#ttattoo) type TTattoo = { zoneIndex: number dlcIndex: number tattoo: TTattooEntry id: number } ### Outfit[](https://docs.byte-labs.net/bl_appearance/exports/types#outfit) interface Outfit { id?: number | string, label: string, outfit: TOutfitData, jobname?: string, job?: { name: string, rank: number } | null } ### TOutfitData[](https://docs.byte-labs.net/bl_appearance/exports/types#toutfitdata) type TOutfitData = { headOverlay: THeadOverlay drawables: TDrawables props: TProps; job?: { name: string, rank: number } | null; } ### TProps[](https://docs.byte-labs.net/bl_appearance/exports/types#tprops) type TProps = { [key: string]: TValue } ### TDrawables[](https://docs.byte-labs.net/bl_appearance/exports/types#tdrawables) type TDrawables = { [key: string]: TValue } ### THeadStructure[](https://docs.byte-labs.net/bl_appearance/exports/types#theadstructure) type THeadStructure = { [key: string]: TValue } ### THeadOverlay[](https://docs.byte-labs.net/bl_appearance/exports/types#theadoverlay) interface HeadOverlayData { id: string; index: number; overlayValue?: number; colourinterface?: number; colourType?: number; firstColor?: number; secondColor?: number; overlayOpacity?: number; hairColor?: number hairHighlight?: number eyeColor?: number }; type THeadOverlay = { [key: string]: HeadOverlayData } ### THairColor[](https://docs.byte-labs.net/bl_appearance/exports/types#thaircolor) type THairColor = { highlight: number color: number } ### THeadBlend[](https://docs.byte-labs.net/bl_appearance/exports/types#theadblend) type THeadBlend = { skinSecond: number skinThird: number shapeSecond: number shapeThird: number shapeFirst: number hasParent: boolean skinMix: number shapeMix: number thirdMix: number skinFirst: number } ### TTattooEntry[](https://docs.byte-labs.net/bl_appearance/exports/types#ttattooentry) type TTattooEntry = { label: string hash: number zone: number dlc?: string } ### TValue[](https://docs.byte-labs.net/bl_appearance/exports/types#tvalue) type TValue = { index: number value: number id?: string texture?: number } Last updated on August 12, 2024 [Client](https://docs.byte-labs.net/bl_appearance/exports/client "Client") [Server](https://docs.byte-labs.net/bl_appearance/exports/server "Server") --- # Migration – Nextra [Bl Appearance](https://docs.byte-labs.net/bl_appearance) Migration To migrate old skins, start by launching the Illenium appearance script and then connect to the server solo. Once connected, use the command /migrate `(make sure you have old appearance configured in the settings)`. After the migration is complete, you should see a print in console telling you number of characters migrated, then you can remove the old appearance script and switch to using only bl\_appearance. Last updated on August 7, 2024 [Esx](https://docs.byte-labs.net/bl_appearance/esx "Esx") [Qb](https://docs.byte-labs.net/bl_appearance/qb "Qb") --- # OX Inventory – Nextra [Bl Appearance](https://docs.byte-labs.net/bl_appearance) inventory OX Inventory OX Inventory ============ Below are the steps to add item to your OX inventory. Add Item[](https://docs.byte-labs.net/bl_appearance/inventory/ox_inventory#add-item) ------------------------------------------------------------------------------------- clothes = { label = "clothes", weight = 1000, stack = false, description = "A mix of clothes to wear", }, Last updated on August 12, 2024 [Server](https://docs.byte-labs.net/bl_appearance/exports/server "Server") [QB Inventory](https://docs.byte-labs.net/bl_appearance/inventory/qb-inventory "QB Inventory") --- # Server – Nextra [Bl Appearance](https://docs.byte-labs.net/bl_appearance) exports Server Server Appearance Exports ========================= Below are the appearance exports that are available to use in your resource. From the server side. Getters[](https://docs.byte-labs.net/bl_appearance/exports/server#getters) --------------------------------------------------------------------------- ### GetPlayerAppearance[](https://docs.byte-labs.net/bl_appearance/exports/server#getplayerappearance) * This function will return the appearance of the player. * The argument is the frameworkID of the player. But if its not provided, it will return the player's appearance. * Parameters: * frameworkID: number The frameworkID of the player. * Return: [TAppearance](https://docs.byte-labs.net/bl_appearance/exports/types#TAppearance) The appearance of the player ped. exports.bl_appearance:GetPlayerAppearance(frameworkID: number): TAppearance ### GetPlayerSkin[](https://docs.byte-labs.net/bl_appearance/exports/server#getplayerskin) * This function will return the skin of the player. * The argument is the frameworkID of the player. But if its not provided, it will return the player's skin. * Parameters: * frameworkID: number The frameworkID of the player. * Return: [TSkin](https://docs.byte-labs.net/bl_appearance/exports/types#TSkin) The skin of the player ped. exports.bl_appearance:GetPlayerSkin(frameworkID: number): TSkin ### GetPlayerClothes[](https://docs.byte-labs.net/bl_appearance/exports/server#getplayerclothes) * This function will return the clothes of the player. * The argument is the frameworkID of the player. But if its not provided, it will return the player's clothes. * Parameters: * frameworkID: number The frameworkID of the player. * Return: [TClothes](https://docs.byte-labs.net/bl_appearance/exports/types#TClothes) The clothes of the player ped. exports.bl_appearance:GetPlayerClothes(frameworkID: number): TClothes ### GetPlayerTattoos[](https://docs.byte-labs.net/bl_appearance/exports/server#getplayertattoos) * This function will return the tattoos of the player. * The argument is the frameworkID of the player. But if its not provided, it will return the player's tattoos. * Parameters: * frameworkID: number The frameworkID of the player. * Return: [TTattoos](https://docs.byte-labs.net/bl_appearance/exports/types#TTattoo) The tattoos of the ped. exports.bl_appearance:GetPlayerTattoos(frameworkID: number): TTattoo[] Savers[](https://docs.byte-labs.net/bl_appearance/exports/server#savers) ------------------------------------------------------------------------- ### SavePlayerAppearance[](https://docs.byte-labs.net/bl_appearance/exports/server#saveplayerappearance) * This function will save the appearance of the player. * The argument is the frameworkID of the player. But if its not provided, it will save the player's appearance. * Parameters: * frameworkID: number The frameworkID of the player. * appearance: [TAppearance](https://docs.byte-labs.net/bl_appearance/exports/types#TAppearance) The appearance to save. exports.bl_appearance:SavePlayerAppearance(frameworkID: number, appearance: TAppearance) ### SavePlayerSkin[](https://docs.byte-labs.net/bl_appearance/exports/server#saveplayerskin) * This function will save the skin of the player. * The argument is the frameworkID of the player. But if its not provided, it will save the player's skin. * Parameters: * frameworkID: number The frameworkID of the player. * skin: [TSkin](https://docs.byte-labs.net/bl_appearance/exports/types#TSkin) The skin to save. exports.bl_appearance:SavePlayerSkin(frameworkID: number, skin: TSkin) ### SavePlayerClothes[](https://docs.byte-labs.net/bl_appearance/exports/server#saveplayerclothes) * This function will save the clothes of the player. * The argument is the frameworkID of the player. But if its not provided, it will save the player's clothes. * Parameters: * frameworkID: number The frameworkID of the player. * clothes: [TClothes](https://docs.byte-labs.net/bl_appearance/exports/types#TClothes) The clothes to save. exports.bl_appearance:SavePlayerClothes(frameworkID: number, clothes: TClothes) ### SavePlayerTattoos[](https://docs.byte-labs.net/bl_appearance/exports/server#saveplayertattoos) * This function will save the tattoos of the player. * The argument is the frameworkID of the player. But if its not provided, it will save the player's tattoos. * Parameters: * frameworkID: number The frameworkID of the player. * tattoos: [TTattoos](https://docs.byte-labs.net/bl_appearance/exports/types#TTattoo) The tattoos to save. exports.bl_appearance:SavePlayerTattoos(frameworkID: number, tattoos: TTattoo[]) Last updated on August 12, 2024 [Object Structures](https://docs.byte-labs.net/bl_appearance/exports/types "Object Structures") [OX Inventory](https://docs.byte-labs.net/bl_appearance/inventory/ox_inventory "OX Inventory") --- # QB Inventory – Nextra [Bl Appearance](https://docs.byte-labs.net/bl_appearance) inventory QB Inventory QB Inventory ============ Below are the steps to add item to your QB inventory. Add Item[](https://docs.byte-labs.net/bl_appearance/inventory/qb-inventory#add-item) ------------------------------------------------------------------------------------- ["clothes"] = { ["name"] = "clothes", ["label"] = "Clothes", ["weight"] = 1000, ["type"] = "item", ["image"] = "clothes.png", ["useable"] = true, ["shouldClose"] = true, ["description"] = "A mix of clothes to wear" } Last updated on August 12, 2024 [OX Inventory](https://docs.byte-labs.net/bl_appearance/inventory/ox_inventory "OX Inventory") [Bl Bridge](https://docs.byte-labs.net/bl_bridge "Bl Bridge") --- # BL Bridge WIP – Nextra Bl Bridge BL Bridge WIP ============= A highly useful resource for FiveM servers that allows you to easily create resources with that are compatible with `esx` `qb` and `ox`. Current Features: * Core: `ox`, `qb`, `esx` * Target: `ox`, `qb` * Progressbar: `ox`, `qb` * Notification: `ox`, `qb` * Context Menu: `ox`, `qb` * Radial Menu: `ox`, `qb` [Github](https://github.com/Byte-Labs-Project/bl_bridge) [Releases](https://github.com/Byte-Labs-Project/bl_bridge/releases) Integration[](https://docs.byte-labs.net/bl_bridge#integration) ---------------------------------------------------------------- Insert the code below into your fxmanifest.lua if you want to use it for development purposes. client_scripts '@bl_bridge/imports/client.lua', server_scripts '@bl_bridge/imports/server.lua', Installation[](https://docs.byte-labs.net/bl_bridge#installation) ------------------------------------------------------------------ ### Download the latest [release (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_bridge/releases) of BL Bridge.[](https://docs.byte-labs.net/bl_bridge#download-the-latest-release-of-bl-bridge) ### Extract the contents of the zip file into your `resources` folder.[](https://docs.byte-labs.net/bl_bridge#extract-the-contents-of-the-zip-file-into-your-resources-folder) ### Add `ensure bl_bridge` to your `server.cfg` file.[](https://docs.byte-labs.net/bl_bridge#add-ensure-bl_bridge-to-your-servercfg-file) ### Copy these convars to your cfg file and configure them to your liking.[](https://docs.byte-labs.net/bl_bridge#copy-these-convars-to-your-cfg-file-and-configure-them-to-your-liking) # Frameworks 'ox' | 'qb' | 'esx' | 'qbx' setr bl:framework 'qb' # Inventories 'ox' | 'qb' | 'esx' | 'ps' | 'qs' | 'none' setr bl:inventory 'ox' # Context 'ox' | 'qb' setr bl:context 'ox' # Target 'ox' | 'qb' setr bl:target 'ox' # Progress 'ox' | 'qb' setr bl:progressbar 'ox' # Radial 'ox' | 'qb' setr bl:radial 'ox' # Notification 'ox' | 'qb' | 'esx' setr bl:notify 'ox' # TextUI 'ox' | 'qb' | 'esx' setr bl:textui 'ox' Last updated on December 7, 2024 [QB Inventory](https://docs.byte-labs.net/bl_appearance/inventory/qb-inventory "QB Inventory") [Events](https://docs.byte-labs.net/bl_bridge/events "Events") --- # Event Triggers – Nextra [Bl Bridge](https://docs.byte-labs.net/bl_bridge) Events Event Triggers ============== ### Player Loaded Event[](https://docs.byte-labs.net/bl_bridge/events#player-loaded-event) AddEventHandler('bl_bridge:client:playerLoaded', function() print('loaded') end) ### Player UnLoaded Event[](https://docs.byte-labs.net/bl_bridge/events#player-unloaded-event) AddEventHandler('bl_bridge:client:playerUnloaded', function() print('unloaded') end) ### Job Update Event[](https://docs.byte-labs.net/bl_bridge/events#job-update-event) AddEventHandler('bl_bridge:client:jobUpdated', function(job) end) #### Job Information[](https://docs.byte-labs.net/bl_bridge/events#job-information) * **Name**: `job.name` The name of the job. * **Label**: `job.label` The label or display name for the job. * **On Duty**: `job.onduty` Boolean indicating if the job is currently on duty. * **Type**: `job.type` The type/category of the job. * **Is Boss**: `job.isboss` Boolean indicating if the job role is a boss. * **Grade**: * **Name**: `job.grade.level` The name of the grade/level within the job. * **Label**: `job.grade.name` The label or display name of the grade. * **Salary**: `job.payment` The salary associated with the grade. ### Gang Update Event[](https://docs.byte-labs.net/bl_bridge/events#gang-update-event) AddEventHandler('bl_bridge:client:gangUpdated', function(gang) end) #### Gang Information[](https://docs.byte-labs.net/bl_bridge/events#gang-information) * **Name**: `gang.name` The name of the gang. * **Label**: `gang.label` The label or display name for the gang. * **Is Boss**: `gang.isboss` Boolean indicating if the gang role is a boss. * **Grade**: * **Name**: `gang.grade.level` The name of the grade/level within the gang. * **Label**: `gang.grade.label` The label or display name of the grade. Last updated on September 8, 2024 [Bl Bridge](https://docs.byte-labs.net/bl_bridge "Bl Bridge") [Interfaces](https://docs.byte-labs.net/bl_bridge/interface "Interfaces") --- # Resources Using Bridge – Nextra [Bl Bridge](https://docs.byte-labs.net/bl_bridge) Resources Using Bridge Resources Using Bridge ====================== Below is a list of amazing (non Byte Labs) resources that are using the bridge. If you are using the bridge and want your resource to be listed here, please open a PR on this repository. Free Resources[](https://docs.byte-labs.net/bl_bridge/resources#free-resources) -------------------------------------------------------------------------------- * [Advanced Radio Script (opens in a new tab)](https://github.com/SOH69/mm_radio) by [MM Development (opens in a new tab)](https://discord.gg/pyqx3jHCzG) * [Dealer Script (opens in a new tab)](https://github.com/StrixLuca/sl_dealer) by \[Strixluca\] Paid Resources[](https://docs.byte-labs.net/bl_bridge/resources#paid-resources) -------------------------------------------------------------------------------- * [Animal Control (opens in a new tab)](https://store.razedrp.com/package/6292387) by [Razed RP (opens in a new tab)](https://store.razedrp.com/) Last updated on November 22, 2024 [Interfaces](https://docs.byte-labs.net/bl_bridge/interface "Interfaces") [Target](https://docs.byte-labs.net/bl_bridge/target "Target") --- # Interfaces – Nextra [Bl Bridge](https://docs.byte-labs.net/bl_bridge) Interfaces Bridge Interfaces ================= Overview[](https://docs.byte-labs.net/bl_bridge/interface#overview) -------------------------------------------------------------------- Includes a bridge for the following: * Notification * Context Menu * Progressbar * Text UI Notification[](https://docs.byte-labs.net/bl_bridge/interface#notification) ---------------------------------------------------------------------------- local notify = Framework.notify or exports.bl_bridge:notify() --client notify({ title = 'Notification description', type = 'success', duration = 1000 }) --server notify(source, { title = 'Notification description', type = 'success' duration = 1000 }) * title?: `string` * type?: `'inform'` or `'error'` or `'success'`or `'warning'` * duration?: `number` Context Menu[](https://docs.byte-labs.net/bl_bridge/interface#context-menu) ---------------------------------------------------------------------------- local context = Framework.context or exports.bl_bridge:context() context.openContext(data) context.closeContext() * title: `string` * isMenuHeader: `boolean` * description?: `string` * icon?: `string` * onSelect?: `function` * event?: `string` * serverEvent?: `string` * disabled?: `boolean` * event?: `string` * args?: `any` Progress Bar[](https://docs.byte-labs.net/bl_bridge/interface#progress-bar) ---------------------------------------------------------------------------- local progressbar = Framework.progressbar or exports.bl_bridge:progressbar() progressbar.showProgress({ duration = 3000, label = '', canCancel? = true, useWhileDead? = false, disableControl? = { move = true, car = true, mouse = true, combat = true, }, animation = { dict = '' clip = '' flag = 0 }, prop = { model = '' bone = 0 pos = vector3(0.0, 0.0, 0.0) rot = vector3(0.0, 0.0, 0.0) } }) progressbar.isProgressActive() -- return if progress is ative progressbar.cancelProgress() -- cancel current progress Text UI[](https://docs.byte-labs.net/bl_bridge/interface#text-ui) ------------------------------------------------------------------ local textui = Framework.textui or exports.bl_bridge:textui() textui.showTextUI(text, position) textui.hideTextUI() -- hide current textui textui.isTextUIOpen()-- return if textui is ative * text: `string` * position: `right` | `left` | `top` Last updated on April 23, 2024 [Events](https://docs.byte-labs.net/bl_bridge/events "Events") [Resources Using Bridge](https://docs.byte-labs.net/bl_bridge/resources "Resources Using Bridge") --- # Target – Nextra [Bl Bridge](https://docs.byte-labs.net/bl_bridge) Target Bridge Target ============= Overview[](https://docs.byte-labs.net/bl_bridge/target#overview) ----------------------------------------------------------------- Target: * Box Zone * Circle Zone * Local Entity * Entity * Remove Zone * Remove Entity * Remove Local Entity Usage[](https://docs.byte-labs.net/bl_bridge/target#usage) ----------------------------------------------------------- -- Example local target = Framework.target or exports.bl_bridge:target() local selectOptions = { { label = "W", icon = "fa-solid fa-scissors", onSelect = function() print("first") end }, { label = "Destroy", icon = "fa-regular fa-eye", onSelect = function() print("second") end } } local zoneOptions = { coords = vector3(428, -973.44, 30.71), size = vector3(2, 2, 2), rotation = 90, distance = 5.0, debug = true, options = selectOptions } local id = target.addBoxZone(zoneOptions) local id = target.addCircleZone(zoneOptions) target.removeZone(id) target.addLocalEntity({ entity = entity, options = selectOptions }) target.addEntity({ entity = entity, options = selectOptions }) target.removeLocalEntity(entity, names) target.removeEntity(entity, names) Options ### Entity[](https://docs.byte-labs.net/bl_bridge/target#entity) * entity: `ent` * distance?: `number` ### Zone[](https://docs.byte-labs.net/bl_bridge/target#zone) * label: `string` * coords: `vector3` * size: `vector3` * rotation?: `number` * distance?: `number` * drawSprite?: `boolean` * icon?: `string` * debug?: `boolean` * options?: `table` ### options[](https://docs.byte-labs.net/bl_bridge/target#options) * label: `string` * onSelect?: `function` * distance?: `number` * serverEvent? `string` * event? `string` * canInteract?: `function` * groups?: `{[job] = [grade]}` Last updated on March 18, 2024 [Resources Using Bridge](https://docs.byte-labs.net/bl_bridge/resources "Resources Using Bridge") [Client](https://docs.byte-labs.net/bl_bridge/Inventory/client "Client") --- # Client – Nextra [Bl Bridge](https://docs.byte-labs.net/bl_bridge) Inventory Client --import local inventory = Framework.inventory or exports.bl_bridge:inventory() openInventory[](https://docs.byte-labs.net/bl_bridge/Inventory/client#openinventory) ------------------------------------------------------------------------------------- ### (Note: you need to register inventory with server `registerInventory` before using this)[](https://docs.byte-labs.net/bl_bridge/Inventory/client#note-you-need-to-register-inventory-with-server-registerinventory-before-using-this) inventory.openInventory(invType, id) * id: `string` * invType: `shop` | `stash` ### hasItem[](https://docs.byte-labs.net/bl_bridge/Inventory/client#hasitem) inventory.hasItem(itemName, itemCount) * itemName: `string` * itemCount: `number` ### playerItems[](https://docs.byte-labs.net/bl_bridge/Inventory/client#playeritems) inventory.playerItems() -- return player items Last updated on March 18, 2024 [Target](https://docs.byte-labs.net/bl_bridge/target "Target") [Server](https://docs.byte-labs.net/bl_bridge/Inventory/server "Server") --- # Client – Nextra [Bl Bridge](https://docs.byte-labs.net/bl_bridge) core Client Usage[](https://docs.byte-labs.net/bl_bridge/core/client#usage) ---------------------------------------------------------------- --import local core = Framework.core or exports.bl_bridge:core() ### Player Data[](https://docs.byte-labs.net/bl_bridge/core/client#player-data) local player = core.getPlayerData() print(player.cid) print(player.money) -- cash print(player.inventory) print(player.job) print(player.firstName) print(player.lastName) print(player.phone) print(player.gender) print(player.dob) * player: * cid: `string` * money: `number` * inventory: `table` * job: `table` (look `core/server#job`) * firstName: `string` * lastName: `string` * phone: `string` * gender: `male` | `female` * dob: `string` Last updated on March 18, 2024 [Server](https://docs.byte-labs.net/bl_bridge/Inventory/server "Server") [Server](https://docs.byte-labs.net/bl_bridge/core/server "Server") --- # Server – Nextra [Bl Bridge](https://docs.byte-labs.net/bl_bridge) Inventory Server --import local core = Framework.core or exports.bl_bridge:core() local inventory = Framework.inventory or exports.bl_bridge:inventory() ### Player Items interactions[](https://docs.byte-labs.net/bl_bridge/Inventory/server#player-items-interactions) local player = core.GetPlayer(source) player.addItem(item, amount, metadata, slot) player.removeItem(item, amount, slot) player.getItem(item) player.items -- get player items * source: `number` * item: `string` * amount: `number` * metadata: `table` * slot: `number` RegisterUsableItem[](https://docs.byte-labs.net/bl_bridge/Inventory/server#registerusableitem) ----------------------------------------------------------------------------------------------- core.RegisterUsableItem(item, cb) * item: `string` * cb: `function(source, slotId, metadata)` registerInventory[](https://docs.byte-labs.net/bl_bridge/Inventory/server#registerinventory) --------------------------------------------------------------------------------------------- inventory.registerInventory(id, { type = invType, name = name, items = items, maxWeight = maxWeight, slots = slots }) * id: `string` * invType: `shop` | `stash` * name?: `string` * items?: `itemsData` as ox (this will not work on `stash` type) * maxWeight?: `number` (this will not work on `shop` type) * slots?: `number` (this will not work on `shop` type) Last updated on August 18, 2024 [Client](https://docs.byte-labs.net/bl_bridge/Inventory/client "Client") [Client](https://docs.byte-labs.net/bl_bridge/core/client "Client") --- # Server – Nextra [Bl Bridge](https://docs.byte-labs.net/bl_bridge) core Server Usage[](https://docs.byte-labs.net/bl_bridge/core/server#usage) ---------------------------------------------------------------- --import local core = Framework.core or exports.bl_bridge:core() Player[](https://docs.byte-labs.net/bl_bridge/core/server#player) ------------------------------------------------------------------ ### Balance[](https://docs.byte-labs.net/bl_bridge/core/server#balance) local player = core.GetPlayer(src) player.getBalance(type --[['cash' | 'bank']]) player.removeBalance(type, amount) player.addBalance(type, amount) * type: `cash` | `bank` * amount: `number` ### Job[](https://docs.byte-labs.net/bl_bridge/core/server#job) local player = core.GetPlayer(src) player.setJob(job, grade) local job = player.job print(job) --[[\ job.name\ job.label, \ job.onDuty, \ job.isBoss, \ job.grade.name,\ job.grade.label,\ job.payment\ ]] * job: `string` * grade: `number` * job data: * name: `string` * label: `string` * onDuty?: `boolean` * isBoss: `boolean` * grade: * name: `number` * label: `string` * payment?: `number` ### PlayerData[](https://docs.byte-labs.net/bl_bridge/core/server#playerdata) local player = core.GetPlayer(src) local name = player.name -- char full name local id = player.id -- char id/citizenid/cid local gender = player.gender local dob = player.dob Core[](https://docs.byte-labs.net/bl_bridge/core/server#core) -------------------------------------------------------------- core.CommandAdd(name, permission, cb) core.RegisterUsableItem(name, cb) Last updated on July 30, 2024 [Client](https://docs.byte-labs.net/bl_bridge/core/client "Client") [Bl Fishing](https://docs.byte-labs.net/bl_fishing "Bl Fishing") --- # BL ID CARD – Nextra Bl Idcard BL ID CARD ========== A customisable and immaculate ID card system for your FiveM server. [Github](https://github.com/Byte-Labs-Project/bl_idcard) [Releases](https://github.com/Byte-Labs-Project/bl_idcard/releases) Installation[](https://docs.byte-labs.net/bl_idcard#installation) ------------------------------------------------------------------ ### Download the latest [release (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_idcard) of BL IDCARD.[](https://docs.byte-labs.net/bl_idcard#download-the-latest-release-of-bl-idcard) ### Download the latest [release (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_bridge) of BL Bridge and its dependencies.[](https://docs.byte-labs.net/bl_idcard#download-the-latest-release-of-bl-bridge-and-its-dependencies) ### Extract the contents of the zip file into your `resources` folder.[](https://docs.byte-labs.net/bl_idcard#extract-the-contents-of-the-zip-file-into-your-resources-folder) ### Add `ensure bl_idcard` to your `server.cfg` file.[](https://docs.byte-labs.net/bl_idcard#add-ensure-bl_idcard-to-your-servercfg-file) ### Follow the instructions for your framework below.[](https://docs.byte-labs.net/bl_idcard#follow-the-instructions-for-your-framework-below) ### Configure the `shared/config.lua` file to your liking.[](https://docs.byte-labs.net/bl_idcard#configure-the-sharedconfiglua-file-to-your-liking) Last updated on March 19, 2024 [Bl Fishing](https://docs.byte-labs.net/bl_fishing "Bl Fishing") [esx](https://docs.byte-labs.net/bl_idcard/esx "esx") --- # esx – Nextra [Bl Idcard](https://docs.byte-labs.net/bl_idcard) esx Instructions[](https://docs.byte-labs.net/bl_idcard/esx#instructions) ---------------------------------------------------------------------- Database[](https://docs.byte-labs.net/bl_idcard/esx#database) -------------------------------------------------------------- * Insert this query INSERT INTO items (name, label, weight, rare, can_remove) VALUES ('id_card', 'Id Card', 1, 0, 1), ('driver_license', 'Driver License', 1, 0, 1), ('weaponlicense', 'Weapon License', 1, 0, 1); esx\_multicharacter[](https://docs.byte-labs.net/bl_idcard/esx#esx_multicharacter) ----------------------------------------------------------------------------------- * Replace [esx\_identity:completedRegistration (opens in a new tab)](https://github.com/esx-framework/esx_core/blob/main/%5Bcore%5D/esx_multicharacter/server/main.lua#L228-L232) event with AddEventHandler('esx_identity:completedRegistration', function(source, data) TriggerEvent('esx:onPlayerJoined', source, PREFIX..awaitingRegistration[source], data) awaitingRegistration[source] = nil ESX.Players[GetIdentifier(source)] = true exports.bl_idcard:createLicense(source, {'id_card', 'driver_license'}) end) esx\_license[](https://docs.byte-labs.net/bl_idcard/esx#esx_license) --------------------------------------------------------------------- * Replace [esx\_license:addLicense (opens in a new tab)](https://github.com/esx-framework/esx_license/blob/main/server/main.lua#L86) event with RegisterNetEvent('esx_license:addLicense', function(target, licenseType, cb) local xPlayer = ESX.GetPlayerFromId(target) if xPlayer then if isValidLicense(licenseType) then exports.bl_idcard:createLicense(source, licenseType) AddLicense(xPlayer.getIdentifier(), licenseType, cb) else print(('[esx_license]: Missing license type in db ^5%s^0 or someone try to use lua executor ID: ^5%s^0'):format(licenseType, target)) end end end) Last updated on March 19, 2024 [Bl Idcard](https://docs.byte-labs.net/bl_idcard "Bl Idcard") [qb](https://docs.byte-labs.net/bl_idcard/qb "qb") --- # qb – Nextra [Bl Idcard](https://docs.byte-labs.net/bl_idcard) qb Instructions[](https://docs.byte-labs.net/bl_idcard/qb#instructions) --------------------------------------------------------------------- qb-multicharacter[](https://docs.byte-labs.net/bl_idcard/qb#qb-multicharacter) ------------------------------------------------------------------------------- * Replace [GiveStarterItems (opens in a new tab)](https://github.com/qbcore-framework/qb-multicharacter/blob/main/server/main.lua#L6) function with local function GiveStarterItems(source) local src = source local Player = QBCore.Functions.GetPlayer(src) for _, v in pairs(QBCore.Shared.StarterItems) do if v.item == "id_card" or v.item == "driver_license" then exports.bl_idcard:createLicense(source, v.item) else Player.Functions.AddItem(v.item, v.amount) end end end qb-inventory[](https://docs.byte-labs.net/bl_idcard/qb#qb-inventory) --------------------------------------------------------------------- * Delete 'driver\_license' [CreateUsableItem (opens in a new tab)](https://github.com/qbcore-framework/qb-inventory/blob/main/server/main.lua#L2452) * Delete 'id\_card' [CreateUsableItem (opens in a new tab)](https://github.com/qbcore-framework/qb-inventory/blob/main/server/main.lua#L2475) * Replace in command [giveitem (opens in a new tab)](https://github.com/qbcore-framework/qb-inventory/blob/main/server/main.lua#L2379C4-L2390C41) if itemData['name'] == 'id_card' or itemData['name'] == 'driver_license' or itemData['name'] == 'weaponlicense' or itemData['name'] == 'lawyerpass' then exports.bl_idcard:createLicense(source, itemData['name']) qb-cityhall[](https://docs.byte-labs.net/bl_idcard/qb#qb-cityhall) ------------------------------------------------------------------- * Replace [giveStarterItems (opens in a new tab)](https://github.com/qbcore-framework/qb-cityhall/blob/main/server/main.lua#L19) function with local function giveStarterItems() local Player = QBCore.Functions.GetPlayer(source) if not Player then return end for _, v in pairs(QBCore.Shared.StarterItems) do if v.item == "id_card" or v.item == "driver_license" then exports.bl_idcard:createLicense(source, v.item) else Player.Functions.AddItem(v.item, v.amount) end end end * Replace [qb-cityhall:server:requestId (opens in a new tab)](https://github.com/qbcore-framework/qb-cityhall/blob/main/server/main.lua#L49) event with RegisterNetEvent('qb-cityhall:server:requestId', function(item, hall) local src = source local Player = QBCore.Functions.GetPlayer(src) if not Player then return end local itemInfo = Config.Cityhalls[hall].licenses[item] if not Player.Functions.RemoveMoney('cash', itemInfo.cost, 'cityhall id') then return TriggerClientEvent('QBCore:Notify', src, ('You don\'t have enough money on you, you need %s cash'):format(itemInfo.cost), 'error') end exports.bl_idcard:createLicense(src, item) end) Last updated on March 19, 2024 [esx](https://docs.byte-labs.net/bl_idcard/esx "esx") [Bl Sprites](https://docs.byte-labs.net/bl_sprites "Bl Sprites") --- # Exports – Nextra [Bl Sprites](https://docs.byte-labs.net/bl_sprites) Exports Exports ======= Options[](https://docs.byte-labs.net/bl_sprites/sprites#options) ----------------------------------------------------------------- * coords: `vector3` * key?: `string` * shape?: `circle` | `square` | `hex` * spriteIndicator?: `boolean` * colour?: `table` rgba `{0, 0, 255, 255}` * onEnter?: `function` * onExit?: `function` * nearby?: `function`, onTick * distance?: `number` * canInteract? : `function` * boneId: `number`, will work and require for `spriteOnBone` * entity: `entityId`, will work and require for `spriteOnBone` and `spriteOnEntity` Usage[](https://docs.byte-labs.net/bl_sprites/sprites#usage) ------------------------------------------------------------- local bl_sprites = exports.bl_sprites bl_sprites:sprite(options) bl_sprites:spriteOnEntity(options) local sprite = bl_sprites:spriteOnBone(options) sprite:removeSprite() sprite:updateTargetData(key, value) * options: `table` * sprite: `class` * key: `string` options index * value: `any` options value Last updated on February 12, 2024 [Bl Sprites](https://docs.byte-labs.net/bl_sprites "Bl Sprites") [Bl Svelte Template](https://docs.byte-labs.net/bl_svelte_template "Bl Svelte Template") --- # BL Svelte Template – Nextra Bl Svelte Template BL Svelte Template ================== A template for creating FiveM resources using Svelte. Current Features: * Svelte 4.0. * Debug Menu for testing in browser. * Can add `buttons`, `sliders`, `inputs` to emulate data being sent from the client. * Can define Event Handlers that pretend its being received in the client and can send back data. * TailwindCSS. * Can use localhost in fxmanifest for Hot Reloading inside FiveM which is no different from built version. [Github](https://github.com/Byte-Labs-Project/bl_svelte_template) [Releases](https://github.com/Byte-Labs-Project/bl_svelte_template/releases) Installation[](https://docs.byte-labs.net/bl_svelte_template#installation) --------------------------------------------------------------------------- ### Open the repo of the [Svelte Template (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_svelte_template) and click "Use this template".[](https://docs.byte-labs.net/bl_svelte_template#open-the-repo-of-the-svelte-template-and-click-use-this-template) ![usetempalte](https://cdn.discordapp.com/attachments/1143458172129005619/1180393086430482452/image.png?ex=657d41ba&is=656accba&hm=2b8a931e6dbe6cc3ed93cd7ea1635fa6b16bb48f54ca780a825ebd8dcc37f49b&) ### Set Up your new repo.[](https://docs.byte-labs.net/bl_svelte_template#set-up-your-new-repo) ### Open your new repo in VSCode.[](https://docs.byte-labs.net/bl_svelte_template#open-your-new-repo-in-vscode) ### Initialise[](https://docs.byte-labs.net/bl_svelte_template#initialise) Open a new terminal and run `pnpm install` or `npm install`. ### Run Development server[](https://docs.byte-labs.net/bl_svelte_template#run-development-server) `pnpm run dev` or `npm run dev` to start the development server. ### Setting Up listeners[](https://docs.byte-labs.net/bl_svelte_template#setting-up-listeners) `web > utils > listeners.ts` is where you can add your event handlers that will always be listening for events from the client. ### Setting Up Debug listeners[](https://docs.byte-labs.net/bl_svelte_template#setting-up-debug-listeners) `web > utils > debug > receivers.ts` are the events that will emulate a client `RegisterNUICallback` and can optionally send back data after processing it. ### Setting Up Debug senders[](https://docs.byte-labs.net/bl_svelte_template#setting-up-debug-senders) `web > utils > debug > senders.ts` is where you can add your debug menu items that will show up in the debug menu when in the browser. Last updated on December 2, 2023 [Exports](https://docs.byte-labs.net/bl_sprites/sprites "Exports") [Template Guide](https://docs.byte-labs.net/bl_svelte_template/guide "Template Guide") --- # BL FISHING – Nextra Bl Fishing BL FISHING ========== [**Preview** (opens in a new tab)](https://www.youtube.com/watch?v=bRI-jsMl8_o) [](https://docs.byte-labs.net/bl_fishing#preview) ---------------------------------------------------------------------------------------------------------------------------------- Installation[](https://docs.byte-labs.net/bl_fishing#installation) ------------------------------------------------------------------- ### Download the latest from [Keymaster (opens in a new tab)](https://keymaster.fivem.net/) .[](https://docs.byte-labs.net/bl_fishing#download-the-latest-from-keymaster) ### Download dependencies[](https://docs.byte-labs.net/bl_fishing#download-dependencies) #### [**ox\_lib** (opens in a new tab)](https://github.com/overextended/ox_lib/releases/download/v3.27.0/ox_lib.zip) [](https://docs.byte-labs.net/bl_fishing#ox_lib) #### [**bl\_bridge** (opens in a new tab)](https://github.com/Byte-Labs-Studio/bl_bridge) [](https://docs.byte-labs.net/bl_fishing#bl_bridge) #### [**bl\_sprites** (opens in a new tab)](https://github.com/Byte-Labs-Studio/bl_sprites) [](https://docs.byte-labs.net/bl_fishing#bl_sprites) #### [**bl\_dialog** (opens in a new tab)](https://github.com/Byte-Labs-Studio/bl_dialog/releases/download/v1.1.0/bl_dialog.zip) [](https://docs.byte-labs.net/bl_fishing#bl_dialog) ### Extract the contents of the zip file into your `resources` folder.[](https://docs.byte-labs.net/bl_fishing#extract-the-contents-of-the-zip-file-into-your-resources-folder) ### Add `ensure bl_fishing` and dependencies to your `server.cfg` file.[](https://docs.byte-labs.net/bl_fishing#add-ensure-bl_fishing-and-dependencies-to-your-servercfg-file) ### Add items images you can find in `bl_fishing/images`[](https://docs.byte-labs.net/bl_fishing#add-items-images-you-can-find-in-bl_fishingimages) ### Add needed items you can find below[](https://docs.byte-labs.net/bl_fishing#add-needed-items-you-can-find-below) Items ===== OX items data[](https://docs.byte-labs.net/bl_fishing#ox-items-data) --------------------------------------------------------------------- -- rod ["fishing_rod"] = { label = "Fishing Rod", weight = 5000, stack = false, close = false, description = "Fishing Rod?.", }, -- baits ["worm"] = { label = "Worm", weight = 100, stack = true, close = false, description = "A wriggling bait that fish find irresistible. Perfect for freshwater catches.", }, ["minnows"] = { label = "Minnows", weight = 100, stack = true, close = false, description = "A small, lively bait fish. Great for attracting larger predators.", }, ["fakefish"] = { label = "Fake Fish", weight = 100, stack = true, close = false, description = "A clever imitation of a small fish. Use it to fool even the wisest catches.", }, ["cutbait"] = { label = "Cut Bait", weight = 100, stack = true, close = false, description = "Chunks of bait fish, ideal for luring in bigger game from the depths.", }, ["camp_fire"] = { label = "Camp Fire", weight = 100, stack = true, close = false, description = "Camp Fire.", }, --baits farm ["wormspowder"] = { label = "Worms Powder", weight = 100, stack = true, close = false, description = "Finely ground worms, ideal for enhancing your bait and luring in a wider range of fish.", }, ["minnowstrap"] = { label = "Minnows Trap", weight = 100, stack = true, close = false, description = "A handy trap designed to catch minnows effortlessly. A must-have for any serious angler.", }, --fishes ["fish_1"] = { label = "Silver Small Fish", weight = 100, stack = true, close = false, description = "A shimmering small fish with a sleek silver sheen. Ideal for quick catches and lively presentations.", }, ["fish_2"] = { label = "Bronze Small Fish", weight = 100, stack = true, close = false, description = "A hardy small fish adorned with a rich bronze hue. Perfect for attracting a variety of freshwater species.", }, ["fish_3"] = { label = "Gold Small Fish", weight = 100, stack = true, close = false, description = "A vibrant small fish with a lustrous gold finish. Great for adding a touch of brilliance to your bait.", }, ["fish_4"] = { label = "Silver Medium Fish", weight = 100, stack = true, close = false, description = "A medium-sized fish with a striking silver appearance. Excellent for targeting both small and medium predators.", }, ["fish_5"] = { label = "Bronze Medium Fish", weight = 100, stack = true, close = false, description = "A robust medium fish featuring a deep bronze coloration. Perfect for enticing larger freshwater catches.", }, ["fish_6"] = { label = "Gold Medium Fish", weight = 100, stack = true, close = false, description = "A medium fish with a brilliant gold shine. Ideal for attracting a diverse range of fish species.", }, ["fish_7"] = { label = "Silver Big Fish", weight = 100, stack = true, close = false, description = "A large fish boasting a dazzling silver exterior. Perfect for hooking the biggest and most elusive catches.", }, ["fish_8"] = { label = "Bronze Big Fish", weight = 100, stack = true, close = false, description = "A substantial big fish with a commanding bronze presence. Excellent for luring in the toughest predators.", }, ["fish_9"] = { label = "Gold Big Fish", weight = 100, stack = true, close = false, description = "A majestic big fish featuring a radiant gold finish. Ideal for attracting the most prized and rare catches.", }, QB items data[](https://docs.byte-labs.net/bl_fishing#qb-items-data) --------------------------------------------------------------------- -- rod ['fishing_rod'] = { ['name'] = 'fishing_rod', ['label'] = 'Fishing Rod', ['weight'] = 5000, ['type'] = 'item', ['image'] = 'fishing_rod.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Fishing Rod?.' }, -- baits ['worm'] = { ['name'] = 'worm', ['label'] = 'Worm', ['weight'] = 100, ['type'] = 'item', ['image'] = 'worm.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A wriggling bait that fish find irresistible. Perfect for freshwater catches.' }, ['minnows'] = { ['name'] = 'minnows', ['label'] = 'Minnows', ['weight'] = 100, ['type'] = 'item', ['image'] = 'minnows.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A small, lively bait fish. Great for attracting larger predators.' }, ['fakefish'] = { ['name'] = 'fakefish', ['label'] = 'Fake Fish', ['weight'] = 100, ['type'] = 'item', ['image'] = 'fakefish.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A clever imitation of a small fish. Use it to fool even the wisest catches.' }, ['cutbait'] = { ['name'] = 'cutbait', ['label'] = 'Cut Bait', ['weight'] = 100, ['type'] = 'item', ['image'] = 'cutbait.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Chunks of bait fish, ideal for luring in bigger game from the depths.' }, ['camp_fire'] = { ['name'] = 'camp_fire', ['label'] = 'Camp Fire', ['weight'] = 100, ['type'] = 'item', ['image'] = 'camp_fire.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Camp Fire.' }, -- baits farm ['wormspowder'] = { ['name'] = 'wormspowder', ['label'] = 'Worms Powder', ['weight'] = 100, ['type'] = 'item', ['image'] = 'wormspowder.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Finely ground worms, ideal for enhancing your bait and luring in a wider range of fish.' }, ['minnowstrap'] = { ['name'] = 'minnowstrap', ['label'] = 'Minnows Trap', ['weight'] = 100, ['type'] = 'item', ['image'] = 'minnowstrap.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A handy trap designed to catch minnows effortlessly. A must-have for any serious angler.' }, -- fishes ['fish_1'] = { ['name'] = 'fish_1', ['label'] = 'Silver Small Fish', ['weight'] = 100, ['type'] = 'item', ['image'] = 'fish_1.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A shimmering small fish with a sleek silver sheen. Ideal for quick catches and lively presentations.' }, ['fish_2'] = { ['name'] = 'fish_2', ['label'] = 'Bronze Small Fish', ['weight'] = 100, ['type'] = 'item', ['image'] = 'fish_2.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A hardy small fish adorned with a rich bronze hue. Perfect for attracting a variety of freshwater species.' }, ['fish_3'] = { ['name'] = 'fish_3', ['label'] = 'Gold Small Fish', ['weight'] = 100, ['type'] = 'item', ['image'] = 'fish_3.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A vibrant small fish with a lustrous gold finish. Great for adding a touch of brilliance to your bait.' }, ['fish_4'] = { ['name'] = 'fish_4', ['label'] = 'Silver Medium Fish', ['weight'] = 100, ['type'] = 'item', ['image'] = 'fish_4.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A medium-sized fish with a striking silver appearance. Excellent for targeting both small and medium predators.' }, ['fish_5'] = { ['name'] = 'fish_5', ['label'] = 'Bronze Medium Fish', ['weight'] = 100, ['type'] = 'item', ['image'] = 'fish_5.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A robust medium fish featuring a deep bronze coloration. Perfect for enticing larger freshwater catches.' }, ['fish_6'] = { ['name'] = 'fish_6', ['label'] = 'Gold Medium Fish', ['weight'] = 100, ['type'] = 'item', ['image'] = 'fish_6.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A medium fish with a brilliant gold shine. Ideal for attracting a diverse range of fish species.' }, ['fish_7'] = { ['name'] = 'fish_7', ['label'] = 'Silver Big Fish', ['weight'] = 100, ['type'] = 'item', ['image'] = 'fish_7.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A large fish boasting a dazzling silver exterior. Perfect for hooking the biggest and most elusive catches.' }, ['fish_8'] = { ['name'] = 'fish_8', ['label'] = 'Bronze Big Fish', ['weight'] = 100, ['type'] = 'item', ['image'] = 'fish_8.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A substantial big fish with a commanding bronze presence. Excellent for luring in the toughest predators.' }, ['fish_9'] = { ['name'] = 'fish_9', ['label'] = 'Gold Big Fish', ['weight'] = 100, ['type'] = 'item', ['image'] = 'fish_9.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A majestic big fish featuring a radiant gold finish. Ideal for attracting the most prized and rare catches.' } Last updated on December 20, 2024 [Server](https://docs.byte-labs.net/bl_bridge/core/server "Server") [Bl Idcard](https://docs.byte-labs.net/bl_idcard "Bl Idcard") --- # Circle Sum – Nextra [Bl UI](https://docs.byte-labs.net/bl_ui) [Hacking Games](https://docs.byte-labs.net/bl_ui/hacking) Circle Sum Circle Sum[](https://docs.byte-labs.net/bl_ui/hacking/CircleSum#circle-sum) ---------------------------------------------------------------------------- The player must press the key when the the segment is inside the target zone. local success = exports.bl_ui:CircleSum(iterations, config) * iterations: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * config: `LengthConfig` #### Example[](https://docs.byte-labs.net/bl_ui/hacking/CircleSum#example) local success = exports.bl_ui:CircleSum(3, { length = 4, duration = 5000, }) #### Preview[](https://docs.byte-labs.net/bl_ui/hacking/CircleSum#preview) ![CircleSumExample](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FCircleSum.175e3952.png&w=1200&q=75) Last updated on October 8, 2024 [Hacking Games](https://docs.byte-labs.net/bl_ui/hacking "Hacking Games") [Digit Dazzle](https://docs.byte-labs.net/bl_ui/hacking/DigitDazzle "Digit Dazzle") --- # Games Types – Nextra [Bl UI](https://docs.byte-labs.net/bl_ui) Games Types Types[](https://docs.byte-labs.net/bl_ui/types#types) ------------------------------------------------------ ### **DifficultyConfig**[](https://docs.byte-labs.net/bl_ui/types#difficultyconfig) * **difficulty**: `number` The difficulty of the game (1-100). ### **KeyDifficultyConfig**[](https://docs.byte-labs.net/bl_ui/types#keydifficultyconfig) * **difficulty**: `number` The difficulty of the game (1-100). * **numberOfKeys**: `number` The amount of keys to press. ### **LengthConfig**[](https://docs.byte-labs.net/bl_ui/types#lengthconfig) * **length**: `number` The length of the circle's cuts. * **duration**: `number` Duration before the game closes. ### **LevelConfig**[](https://docs.byte-labs.net/bl_ui/types#levelconfig) * **level**: `number` The level of the game. * **duration**: `number` Duration before the game closes. ### **GridConfig**[](https://docs.byte-labs.net/bl_ui/types#gridconfig) * **grid**: `number` The size of the grid. * **duration**: `number` Duration before the game closes. * **target**: `number` The targets to play. If its an array, the first number is the min target and the second is the max target. when randomized. * **previewDuration**: `number?` For mineSweeper: preview duration (time for red mines preview to hide). ### **NodeConfig**[](https://docs.byte-labs.net/bl_ui/types#nodeconfig) * **numberOfNodes**: `number` The number of nodes. * **duration**: `number` Duration before the game closes. Last updated on October 11, 2024 [Bl UI](https://docs.byte-labs.net/bl_ui "Bl UI") [Hacking Games](https://docs.byte-labs.net/bl_ui/hacking "Hacking Games") --- # Hacking Games – Nextra [Bl UI](https://docs.byte-labs.net/bl_ui) Hacking Games Last updated on October 8, 2024 [Games Types](https://docs.byte-labs.net/bl_ui/types "Games Types") [Circle Sum](https://docs.byte-labs.net/bl_ui/hacking/CircleSum "Circle Sum") --- # Digit Dazzle – Nextra [Bl UI](https://docs.byte-labs.net/bl_ui) [Hacking Games](https://docs.byte-labs.net/bl_ui/hacking) Digit Dazzle Digit Dazzle[](https://docs.byte-labs.net/bl_ui/hacking/DigitDazzle#digit-dazzle) ---------------------------------------------------------------------------------- The player must press the key when the the segment is inside the target zone. local success = exports.bl_ui:DigitDazzle(iterations, config) * iterations: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * config: `LengthConfig` #### Example[](https://docs.byte-labs.net/bl_ui/hacking/DigitDazzle#example) local success = exports.bl_ui:DigitDazzle(3, { length = 4, duration = 5000, }) #### Preview[](https://docs.byte-labs.net/bl_ui/hacking/DigitDazzle#preview) ![DigitDazzleExample](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FDigitDazzle.860cac27.png&w=1080&q=75) Last updated on October 8, 2024 [Circle Sum](https://docs.byte-labs.net/bl_ui/hacking/CircleSum "Circle Sum") [Lights Out](https://docs.byte-labs.net/bl_ui/hacking/LightsOut "Lights Out") --- # Lights Out – Nextra [Bl UI](https://docs.byte-labs.net/bl_ui) [Hacking Games](https://docs.byte-labs.net/bl_ui/hacking) Lights Out Lights Out[](https://docs.byte-labs.net/bl_ui/hacking/LightsOut#lights-out) ---------------------------------------------------------------------------- The player must press the key when the the segment is inside the target zone. local success = exports.bl_ui:LightsOut(iterations, config) * iterations: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * config: `LevelConfig` #### Example[](https://docs.byte-labs.net/bl_ui/hacking/LightsOut#example) local success = exports.bl_ui:LightsOut(3, { level = 2, duration = 5000, }) #### Preview[](https://docs.byte-labs.net/bl_ui/hacking/LightsOut#preview) ![LightsOutExample](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FLightsOut.d1e92ddc.png&w=1200&q=75) Last updated on October 8, 2024 [Digit Dazzle](https://docs.byte-labs.net/bl_ui/hacking/DigitDazzle "Digit Dazzle") [Mine Sweeper](https://docs.byte-labs.net/bl_ui/hacking/MineSweeper "Mine Sweeper") --- # Mine Sweeper – Nextra [Bl UI](https://docs.byte-labs.net/bl_ui) [Hacking Games](https://docs.byte-labs.net/bl_ui/hacking) Mine Sweeper Mine Sweeper[](https://docs.byte-labs.net/bl_ui/hacking/MineSweeper#mine-sweeper) ---------------------------------------------------------------------------------- The player must press the key when the the segment is inside the target zone. local success = exports.bl_ui:MineSweeper(iterations, config) * iterations: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * config: `GridConfig` #### Example[](https://docs.byte-labs.net/bl_ui/hacking/MineSweeper#example) local success = exports.bl_ui:MineSweeper(3, { grid = 4, -- grid 4x4 duration = 10000, -- 10sec to fail target = 4, --target you need to remember previewDuration = 2000 --preview duration (time for red mines preview to hide) }) #### Preview[](https://docs.byte-labs.net/bl_ui/hacking/MineSweeper#preview) ![MineSweeperExample](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FMineSweeper.c1534545.png&w=1200&q=75) Last updated on October 11, 2024 [Lights Out](https://docs.byte-labs.net/bl_ui/hacking/LightsOut "Lights Out") [Path Find](https://docs.byte-labs.net/bl_ui/hacking/PathFind "Path Find") --- # Path Find – Nextra [Bl UI](https://docs.byte-labs.net/bl_ui) [Hacking Games](https://docs.byte-labs.net/bl_ui/hacking) Path Find Path Find[](https://docs.byte-labs.net/bl_ui/hacking/PathFind#path-find) ------------------------------------------------------------------------- The player must press the key when the the segment is inside the target zone. local success = exports.bl_ui:PathFind(iterations, config) * iterations: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * config: `NodeConfig` #### Example[](https://docs.byte-labs.net/bl_ui/hacking/PathFind#example) local success = exports.bl_ui:PathFind(3, { numberOfNodes = 10, duration = 5000, }) #### Preview[](https://docs.byte-labs.net/bl_ui/hacking/PathFind#preview) ![PathFindExample](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FPathFind.92a5ee80.png&w=1920&q=75) Last updated on October 8, 2024 [Mine Sweeper](https://docs.byte-labs.net/bl_ui/hacking/MineSweeper "Mine Sweeper") [Print Lock](https://docs.byte-labs.net/bl_ui/hacking/PrintLock "Print Lock") --- # Print Lock – Nextra [Bl UI](https://docs.byte-labs.net/bl_ui) [Hacking Games](https://docs.byte-labs.net/bl_ui/hacking) Print Lock Print Lock[](https://docs.byte-labs.net/bl_ui/hacking/PrintLock#print-lock) ---------------------------------------------------------------------------- The player must press the key when the the segment is inside the target zone. local success = exports.bl_ui:PrintLock(iterations, config) * iterations: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * config: `GridConfig` #### Example[](https://docs.byte-labs.net/bl_ui/hacking/PrintLock#example) local success = exports.bl_ui:PrintLock(3, { grid = 4, duration = 5000, target = 4 }) #### Preview[](https://docs.byte-labs.net/bl_ui/hacking/PrintLock#preview) ![PrintLockExample](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FPrintLock.7c847465.png&w=1920&q=75) Last updated on October 8, 2024 [Path Find](https://docs.byte-labs.net/bl_ui/hacking/PathFind "Path Find") [Untangle](https://docs.byte-labs.net/bl_ui/hacking/Untangle "Untangle") --- # Untangle – Nextra [Bl UI](https://docs.byte-labs.net/bl_ui) [Hacking Games](https://docs.byte-labs.net/bl_ui/hacking) Untangle Untangle[](https://docs.byte-labs.net/bl_ui/hacking/Untangle#untangle) ----------------------------------------------------------------------- The player must press the key when the the segment is inside the target zone. local success = exports.bl_ui:Untangle(iterations, config) * iterations: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * config: `NodeConfig` #### Example[](https://docs.byte-labs.net/bl_ui/hacking/Untangle#example) local success = exports.bl_ui:Untangle(3, { numberOfNodes = 10, duration = 5000, }) #### Preview[](https://docs.byte-labs.net/bl_ui/hacking/Untangle#preview) ![UntangleExample](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FUntangle.f57b2dae.png&w=1920&q=75) Last updated on October 8, 2024 [Print Lock](https://docs.byte-labs.net/bl_ui/hacking/PrintLock "Print Lock") [Wave Match](https://docs.byte-labs.net/bl_ui/hacking/WaveMatch "Wave Match") --- # Wave Match – Nextra [Bl UI](https://docs.byte-labs.net/bl_ui) [Hacking Games](https://docs.byte-labs.net/bl_ui/hacking) Wave Match Wave Match[](https://docs.byte-labs.net/bl_ui/hacking/WaveMatch#wave-match) ---------------------------------------------------------------------------- The player must press the key when the the segment is inside the target zone. local success = exports.bl_ui:WaveMatch(iterations, config) * iterations: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * config: `table` * duration: `number` #### Example[](https://docs.byte-labs.net/bl_ui/hacking/WaveMatch#example) local success = exports.bl_ui:WaveMatch(3, { duration = 5000, }) #### Preview[](https://docs.byte-labs.net/bl_ui/hacking/WaveMatch#preview) ![WaveMatchExample](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FWaveMatch.a37e7e25.png&w=1920&q=75) Last updated on October 8, 2024 [Untangle](https://docs.byte-labs.net/bl_ui/hacking/Untangle "Untangle") [Word Wiz](https://docs.byte-labs.net/bl_ui/hacking/WordWiz "Word Wiz") --- # Word Wiz – Nextra [Bl UI](https://docs.byte-labs.net/bl_ui) [Hacking Games](https://docs.byte-labs.net/bl_ui/hacking) Word Wiz Word Wiz[](https://docs.byte-labs.net/bl_ui/hacking/WordWiz#word-wiz) ---------------------------------------------------------------------- The player must press the key when the the segment is inside the target zone. local success = exports.bl_ui:WordWiz(iterations, config) * iterations: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * config: `LengthConfig` #### Example[](https://docs.byte-labs.net/bl_ui/hacking/WordWiz#example) local success = exports.bl_ui:WordWiz(3, { length = 4, duration = 5000, }) #### Preview[](https://docs.byte-labs.net/bl_ui/hacking/WordWiz#preview) ![WordWizExample](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FWordWiz.6429e8b6.png&w=1080&q=75) Last updated on October 8, 2024 [Wave Match](https://docs.byte-labs.net/bl_ui/hacking/WaveMatch "Wave Match") [Skill Checks](https://docs.byte-labs.net/bl_ui/games "Skill Checks") --- # Skill Checks – Nextra [Bl UI](https://docs.byte-labs.net/bl_ui) Skill Checks Minigames ========= If you are planning on having minigames all throughout your resource, you should consider the following. local bl_ui = exports.bl_ui So that you can easily access the minigames like following. Circle Progress[](https://docs.byte-labs.net/bl_ui/games#circle-progress) -------------------------------------------------------------------------- The player must press the key when the the segment is inside the target zone. local success = bl_ui:CircleProgress(iterations, difficulty) * iterations?: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * difficulty?: `number` (`1-100`) is the difficulty of the minigame, this will affect the speed of the circle. * 50 is the default difficulty. * Possible Keys: * `1` `2` `3` `4` ![circleProgressExample](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FcircleProg.2ee236c9.png&w=640&q=75) Progress[](https://docs.byte-labs.net/bl_ui/games#progress) ------------------------------------------------------------ The player must press the key when the the segment is inside the target zone. local success = bl_ui:Progress(iterations, difficulty) * iterations?: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * difficulty?: `number` (`1-100`) is the difficulty of the minigame, this will affect the speed of the circle. * 50 is the default difficulty. * Possible Keys: * `1` `2` `3` `4` ![progress](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fprog.b5872b4b.png&w=1080&q=75) Key Spam[](https://docs.byte-labs.net/bl_ui/games#key-spam) ------------------------------------------------------------ The player must press the key shown as fast as possible to try and fill the circle before the time runs out. local success = bl_ui:KeySpam(iterations, difficulty) * iterations?: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * difficulty?: `number` (`1-100`) is the difficulty of the minigame, this will affect the speed of the circle. * 50 is the default difficulty. * Possible Keys: * `W` `A` `S` `D` ![keySpam](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FkeySpam.de981274.png&w=640&q=75) Key Circle[](https://docs.byte-labs.net/bl_ui/games#key-circle) ---------------------------------------------------------------- The player must press both of the keys shown as fast as possible before the time for that stage runs out. local success = bl_ui:KeyCircle(iterations, difficulty, numberOfKeys) * iterations?: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * difficulty?: `number` (`1-100`) is the difficulty of the minigame, this will affect the speed of the circle. * 50 is the default difficulty. * numberOfKeys?: `number` is the amount of set of keys the player has to press. * 3 is the default amount of keys. * Possible Keys: * Set 1: `W` `A` `S` `D` * Set 2: `I` `J` `K` `L` ![keyCircle](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FkeyCircle.b85efdbd.png&w=640&q=75) Number Slide[](https://docs.byte-labs.net/bl_ui/games#number-slide) -------------------------------------------------------------------- The player must press the number inside the zone before it leaves. local success = bl_ui:NumberSlide(iterations, difficulty, numberOfKeys) * iterations?: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * difficulty?: `number` (`1-100`) is the difficulty of the minigame, this will affect the speed of the circle. * 50 is the default difficulty. * numberOfKeys?: `number` is the amount of set of keys the player has to press. * 3 is the default amount of keys. * Possible Keys: * `1` `2` `3` `4` ![numberslide](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FnumberSlide.7df3e52e.png&w=1080&q=75) Rapid Lines[](https://docs.byte-labs.net/bl_ui/games#rapid-lines) ------------------------------------------------------------------ The player must press the key when the the line is inside the target zone. local success = bl_ui:RapidLines(iterations, difficulty, numberOfLines) * iterations?: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * difficulty?: `number` (`1-100`) is the difficulty of the minigame, this will affect the speed of the circle. * 50 is the default difficulty. * numberOfLines?: `number` is the amount of lines the player has to complete. * 5 is the default amount of lines. * Possible Keys: * `E` ![rapidlines](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FrapidLines.ad4f667d.png&w=1080&q=75) Circle Shake[](https://docs.byte-labs.net/bl_ui/games#circle-shake) -------------------------------------------------------------------- Component shakes when the user segment is over an invisible target. local success = bl_ui:CircleShake(iterations, difficulty, numberOfStages) * iterations?: `number` is the amount of iterations the player has to complete. * 1 is the default iteration. * difficulty?: `number` (`1-100`) is the difficulty of the minigame, this will affect the size of the invisible target. * 50 is the default difficulty. * numberOfStages?: `number` is the amount of set of stages the player has to press. * 3 is the default amount of keys. ![circleshake](https://docs.byte-labs.net/_next/image?url=%2F_next%2Fstatic%2Fmedia%2FcircleShake.5bc26fc4.png&w=640&q=75) Last updated on March 18, 2024 [Word Wiz](https://docs.byte-labs.net/bl_ui/hacking/WordWiz "Word Wiz") [exports](https://docs.byte-labs.net/bl_dialog/exports "exports") --- # exports – Nextra bl\_dialog exports Data type[](https://docs.byte-labs.net/bl_dialog/exports#data-type) -------------------------------------------------------------------- --- @class Button --- @field label string --- @field id string|number? (optional) --- @field onSelect function? (optional) --- @field close boolean? (optional) --- @field nextDialog string? (optional) --- @class dialog --- @field job string --- @field id string --- @field ped number? --- @field name string --- @field text string --- @field buttons Button[] showDialog[](https://docs.byte-labs.net/bl_dialog/exports#showdialog) ---------------------------------------------------------------------- exports.bl_dialog:showDialog(data) #### data: `table`[](https://docs.byte-labs.net/bl_dialog/exports#data-table) * **ped**: `number` (`handle`) The handle representing the ped (pedestrian character). * **dialog**: `table` * **id**: `string | number` A unique identifier for the dialog, used to control which dialog is active. * **job**: `string` The label for the ped's job or role. * **name**: `string` The name of the ped. * **text**: `string` The content of the dialog text. * **textSpeed**: `number?` The text writing speed, measured in milliseconds per character. Default: 25ms. * **buttons**: `array` of `table` A list of buttons associated with the dialog. Each button can have the following properties: * **label**: `string` The text displayed on the button. * **id?**: `string | number` (optional) An optional unique identifier for the button. * **nextDialog?**: `string` (optional) If specified, opens the dialog with the given ID. * **close?**: `boolean` (optional) Indicates whether the dialog should be closed when this button is pressed. * **onSelect?**: `function(switchDialog: function)` (optional) A callback function triggered when the button is selected. The function receives the dialog data as a parameter. Example: function(switchDialog) switchDialog(dialogId) end * **return**: `string | number` The ID of the last button that closed the dialog. switchDialog[](https://docs.byte-labs.net/bl_dialog/exports#switchdialog) -------------------------------------------------------------------------- exports.bl_dialog:switchDialog(dialogId) #### dialogId: `number|string`[](https://docs.byte-labs.net/bl_dialog/exports#dialogid-numberstring) Example ======= local lastButtonId = exports.bl_dialog:showDialog({ ped = ped, dialog = { { id = 'initial_fish_talk', job = 'Fisher Man', name = 'Robert', text = 'first dialog', buttons = { { id = 'leave1', label = 'Switch', nextDialog = 'fish_catalog', -- switch to second dialog onSelect = function(switchDialog) if not canSwitchToLastDialog then -- do something here switchDialog('fish_talk_end') -- switch to third dialog end }, }, }, { id = 'fish_catalog', job = 'Fisher Man', name = 'Robert', text = 'second dialog', buttons = { { id = 'leave2', label = 'Switch', nextDialog = 'initial_fish_talk', }, }, }, { id = 'fish_talk_end', job = 'Fisher Man', name = 'Robert', text = 'third dialog', buttons = { { id = 'end', label = 'End conversation', --end conversation close = true, }, }, }, } }) -- lastButtonId should be == `end` exports.bl_dialog:switchDialog(dialogId) Last updated on November 21, 2024 [Skill Checks](https://docs.byte-labs.net/bl_ui/games "Skill Checks") --- # BL Sprites – Nextra Bl Sprites BL Sprites ========== Interactive and smooth indicators for your players in FiveM. [Github](https://github.com/Byte-Labs-Studio/bl_sprites) [Releases](https://github.com/Byte-Labs-Studio/bl_sprites/releases) Installation[](https://docs.byte-labs.net/bl_sprites#installation) ------------------------------------------------------------------- ### Download the latest [release (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_sprites/releases) of BL Sprites.[](https://docs.byte-labs.net/bl_sprites#download-the-latest-release-of-bl-sprites) ### Extract the contents of the zip file into your `resources` folder.[](https://docs.byte-labs.net/bl_sprites#extract-the-contents-of-the-zip-file-into-your-resources-folder) ### Add `ensure bl_sprites` to your `server.cfg` file.[](https://docs.byte-labs.net/bl_sprites#add-ensure-bl_sprites-to-your-servercfg-file) ### Configure the `client/modules/config.lua` file to your liking.[](https://docs.byte-labs.net/bl_sprites#configure-the-clientmodulesconfiglua-file-to-your-liking) [qb](https://docs.byte-labs.net/bl_idcard/qb "qb") [Exports](https://docs.byte-labs.net/bl_sprites/sprites "Exports") --- # Template Guide – Nextra [Bl Svelte Template](https://docs.byte-labs.net/bl_svelte_template) Template Guide Template Guide ============== Below is a list of functions that are available to use in your template. Configure[](https://docs.byte-labs.net/bl_svelte_template/guide#configure) --------------------------------------------------------------------------- In `app.svelte` there is an object that you can configure. CONFIG.set({ fallbackResourceName: 'debug', allowEscapeKey: true, }); * fallbackResourceName: `string` The resource name to use if the resource name is not found while using localhost in the game. * allowEscapeKey: `boolean` Allow the escape key to close the UI. Client[](https://docs.byte-labs.net/bl_svelte_template/guide#client) --------------------------------------------------------------------- ### SendNUIEvent[](https://docs.byte-labs.net/bl_svelte_template/guide#sendnuievent) This is basically a shorthand for `SendNUIMessage` but it will automatically structure the data for you suitable for the UI. SendNUIEvent(event, data) * event: `string` The event name to send to the NUI * data: `any` The data to send to the NUI UI[](https://docs.byte-labs.net/bl_svelte_template/guide#ui) ------------------------------------------------------------- ### SendEvent[](https://docs.byte-labs.net/bl_svelte_template/guide#sendevent) Send an event to the Client SendEvent(event, data); * event: `string` The event name to send to the client * data: `any` The data to send to the client ### TempReceiveEvent[](https://docs.byte-labs.net/bl_svelte_template/guide#tempreceiveevent) A disposable listener for an event from the Client. YOU MUST DISPOSE. IF NOT THE LISTENER WILL KEEP LISTENING AND WILL CAUSE MEMORY LEAKS. // Listen for the event const dispose = TempReceiveEvent(event, callback); // Dispose the listener dispose(); * event: `string` The event name to listen for * callback: `function` The callback to run when the event is received Return: * dispose: `function` The function to call to dispose the listener ### Note[](https://docs.byte-labs.net/bl_svelte_template/guide#note) There are other functions available but as a developer using the template properly, you dont really need to use them. These functions include: * `ReceiveEvent` * `DebugEventSend` * `DebugEventReceive` * `DebugEventCallback` [Bl Svelte Template](https://docs.byte-labs.net/bl_svelte_template "Bl Svelte Template") [Bl UI](https://docs.byte-labs.net/bl_ui "Bl UI") --- # BL UI WIP – Nextra Bl UI BL UI WIP ========= A collection of Skill Check minigames for FiveM made in Svelte. [Github](https://github.com/Byte-Labs-Project/bl_ui) [Releases](https://github.com/Byte-Labs-Project/bl_ui/releases) Installation[](https://docs.byte-labs.net/bl_ui#installation) -------------------------------------------------------------- ### Download the latest [release (opens in a new tab)](https://github.com/Byte-Labs-Project/bl_ui/releases) of BL UI.[](https://docs.byte-labs.net/bl_ui#download-the-latest-release-of-bl-ui) ### Extract the contents of the zip file into your `resources` folder.[](https://docs.byte-labs.net/bl_ui#extract-the-contents-of-the-zip-file-into-your-resources-folder) ### Add `ensure bl_ui` to your `server.cfg` file.[](https://docs.byte-labs.net/bl_ui#add-ensure-bl_ui-to-your-servercfg-file) ### Configure the `config.lua` file to your liking.[](https://docs.byte-labs.net/bl_ui#configure-the-configlua-file-to-your-liking) [Template Guide](https://docs.byte-labs.net/bl_svelte_template/guide "Template Guide") [Games Types](https://docs.byte-labs.net/bl_ui/types "Games Types") ---