Security HUD
System Watchdog
×
Threads Scanned
-- / --
SYS. LOAD --%
AI SHIELD ACTIVE
DMCA Policy
×

📋 DMCA Compliance

This platform and community fully complies with the Digital Millennium Copyright Act (DMCA) and international copyright laws. We take all copyright protection seriously.

🛡️ Copyright Protection

If you believe a posted item belongs to you or violates your copyright, you may file a DMCA takedown request through our official channels. Upon receiving a valid claim, the infringing content will be removed within 24 hours.

What's new
×
Fiveguard
Status
Not open for further replies.

Aleks_

Gold Elite
Joined
Jun 24, 2021
Messages
60
Reaction score
200
Points
296
Location
Belfast
[PAID] Nopixel 4.0 Inventory System

Framework: QBCore & np-base

Contact: Ghost.#4736 or ghost_fmdev



Full QBCore framework compatibility
Modern SolidJS based UI with drag & drop interface
NoPixel 4.0 style item decay system with configurable decay rates
Specialized pocket slots for important items (ID, phone, tablet)
Physical 3D items appear in world when dropped
Optimized drop system with automatic ground item cleanup
Vehicle trunk & glovebox integration
Property/stash storage systems
Complete item decay exemption system for specific items
Comprehensive exports API for developers
Well structured TypeScript/JSX codebase
Backpack system for extra storage
Quality degradation affecting item functionality
Fully open-source and optimized for server performance
Always being improved & updated and 24/7 support

Preview Below:

 

xorathsad

Bronze Elite
Joined
Sep 20, 2021
Messages
29
Reaction score
3
Points
166
Location
Romania
scam, do not buy, it's actually NP code, not inspired, won't work.
 

Attachments

  • Screenshot 2025-05-06 233412.png
    Screenshot 2025-05-06 233412.png
    9.8 KB · Views: 125

Aleks_

Gold Elite
Joined
Jun 24, 2021
Messages
60
Reaction score
200
Points
296
Location
Belfast
scam, do not buy, it's actually NP code, not inspired, won't work.
Or maybe you are just incapable of setting up a new system. Don't buy scripts if you don't know anything about scripting :)
 

xorathsad

Bronze Elite
Joined
Sep 20, 2021
Messages
29
Reaction score
3
Points
166
Location
Romania
Yea, you are absolutely correct, I'm sorry, let me rephrase, it will not work with any known frameworks unless you are ready to put some hard work to it, It will work with np framework staring from 3.2 - 3.5 and upwards. Most of the essential code is obfuscated, quite a few missing dependencies and even if you manage to build the UI and the missing JS scripts as in client and server JS, this inventory won't integrate smoothly withing qbcore environment, due to it's name (qb-core has triggers sent to qb-inventory other scripts will search for qb-inventory) and if you think about replacing the name of the resource to qb-inventory it will still not work because all the triggers inside the inventory are actually np based (see the code examples from the "inspired resource"
Code:
async function displayActionbar(state: any) {
    await getActionbarItems()
    SendNUIMessage({
        event: 'inventory:toggleActionbar'
    });

    TriggerEvent('np-weapons:client:openActionBar')
}
We have no np-weapons we have qb-weapons, meaning that once you will build your client.js file your weapons wont save any ammunition, attachaments, skins, tints etc. If you grab your weapon from your inventory, you will have no functionality :)
Code:
    if (WeaponHash) {
        if (CurItemQuality > 0) {
            console.log(`[DEBUG] Equip WeaponHash: ${JSON.stringify(WeaponHash)}`);
            TriggerEvent('equipWeaponID', WeaponHash, ItemInfo.information, ItemInfo.id);
        }
        justUsed = false;
        useCounter = 0;
        lastCounter = 0;
        setTimeout(() => {
            TriggerEvent('AttachWeapons');
            TriggerEvent('np-hud:armed', 100);
        }, 1500);
        return;
    }
Here is more:
Code:
on('inventory:openTrunk', async(Parameters: any, Entity: any) => {
    inTrunk = true
    trunkPlate = GetVehicleNumberPlateText(Entity)

    RPC.execute('inventory:additionalInventoriesClear')
    const Inventory = await RPC.execute('inventory:getInventories', IsPedInVehicle(PlayerPedId(), GetVehiclePedIsIn(PlayerPedId(), false), false), GetVehicleNumberPlateText(GetVehiclePedIsIn(PlayerPedId(), false)), inTrunk, trunkPlate, await GetGroundLevel(GetEntityCoords(PlayerPedId()), "default"))

    SendNUIMessage({
        Inventory: Inventory,
    })

    SendNUIMessage({
        show: true,
        PlayerData: {
            character: {
                id: global.exports['isPed'].isPed('cid'),
                name: global.exports['isPed'].isPed('fullname'),
                cash: 0,
                personalVehicle: 'N/A',
                home: 'N/A',
                phone: global.exports['isPed'].isPed("phone_number")
            },
 
            settings: {
                holdToDrag: GetResourceKvpInt('inventory:holdToDrag'),
                shiftQuickMove: GetResourceKvpInt('inventory:shiftQuickMove')
            }
        }
    });

    global.exports.focusmanager.SetUIFocus(true, true)
})

export function trunkState() {
    inTrunk = false
}
Judging by this piece of code, without the resource isPed, you won't be able to display your phone number in the inventory, your characters full name and so on. But you did a little overide in the Inventory.ts which will handle that:
Code:
import { inTrunk, trunkPlate } from "./Trunk";
import { GetGroundLevel } from "../../client/controllers/Drops";
import { setClientInventory } from './../controllers/Exports'

RegisterCommand('giveitem', async(source,args) => { // example /giveitem [AMOUNT] phone (REMOVE BEFORE RELEASE THIS IS FOR TESTING)
    let data = {
        Item : args[0].toString(),
        Amount : args[1] || 1,
    }
    TriggerEvent('inventory:addItem', data)
} , false)

RegisterCommand('+inventory', async() => {
    const QBCore = exports['qb-core'].GetCoreObject()

    const playerData = QBCore.Functions.GetPlayerData();

    if (!playerData || !playerData.citizenid) {
        console.error("Critical Error: Player data not found!");
        return;
    }

    const characterId = playerData.citizenid;
    const fullname = `${playerData.charinfo.firstname} ${playerData.charinfo.lastname}`;
    const cash = playerData.money?.cash || 0;
    const phoneNumber = playerData.charinfo.phone || "N/A";

    let formattedPhoneNum = "N/A";
    if (phoneNumber !== "N/A") {
        formattedPhoneNum = `+1 (${phoneNumber.substring(0, 3)})-${phoneNumber.substring(3, 6)}-${phoneNumber.substring(6)}`;
    }

    RPC.execute('inventory:additionalInventoriesClear')

    const Inventory = await RPC.execute('inventory:getInventories', IsPedInVehicle(PlayerPedId(), GetVehiclePedIsIn(PlayerPedId(), false), false), GetVehicleNumberPlateText(GetVehiclePedIsIn(PlayerPedId(), false)), inTrunk, trunkPlate, await GetGroundLevel(GetEntityCoords(PlayerPedId()), "default"))

    setClientInventory(Array.isArray(Inventory) ? Inventory : [Inventory]);

    SendNUIMessage({
        Inventory: Inventory,
    });

    SendNUIMessage({
        show: true,
        PlayerData: {
            character: {
                id: characterId,
                name: fullname,
                cash: cash,
                personalVehicle: "Unknown", // You can add a vehicle here if you have a vehicle system.
                home: 'Unknown', // You can add a home here if you have a housing system.
                phone: formattedPhoneNum
            },
 
            settings: {
                holdToDrag: GetResourceKvpInt('inventory:holdToDrag'),
                shiftQuickMove: GetResourceKvpInt('inventory:shiftQuickMove')
            }
        }
    });

    global.exports.focusmanager.SetUIFocus(true, true)
}, false)

RegisterCommand('-inventory', async() => {}, false)

global.exports['qb-keybinds'].registerKeyMapping('inventory', 'Inventory', 'Open Inventory', '+inventory', '-inventory', 'K', true);

onNet('inventory:addItem', async(data: any) => {
    emit('inventory:sendNotification', data.Item, data.Amount, 'Added')
    RPC.execute('inventory:addItem', data)
})

Just to be clear, you didn't offered the correct way of building the inventory you skipped a few details, however I am a cloud developer for about 20+ years, I breath and live in JS/TS world, building some boilerplate it's a child play my friend. Building it is not the issue, the actual functionality is. You have added some functionality to it, by overiding the origianl NP logic. just to make it look like the actual resource is usable, but it's not 100% operational and WILL NOT work 100% out of the box with qbcore ! Maybe other incapable people like me, would like to have a look at "your resource" code so here it is ! €50 not that much for me, but it's sad to scam people and lie about it, at least own it like a bitch, have some balls :)



For anybody looking to build the actual inventory here are the actual steps:
  1. cd inventory
  2. npm install
  3. cd typescript
  4. npm install
  5. npm run build (if you get some errors about "sh: line 1: tsc: command not found" just type in "npm install --save-dev typescript" then retry npm run build
  6. cd ../web
  7. npm run build

Make sure you open each and every TS file and rewrite the code that is related to NL and make sure it's compatible with QB. You have to rebuild everything each time you modify the TS files. You actually don't need the other resources if you rewrite the TS code to adapt it to QBCore, those were added just to make it work :) Good luck !
 
Last edited:

Aleks_

Gold Elite
Joined
Jun 24, 2021
Messages
60
Reaction score
200
Points
296
Location
Belfast
Nice congratulations to you I am happy to hear you studied for over 20 years only to figure out how to build a script for FiveM 👏
 

Aleks_

Gold Elite
Joined
Jun 24, 2021
Messages
60
Reaction score
200
Points
296
Location
Belfast
This is a large and complex codebase and I’m handling it entirely on my own there's no team behind this. Some things will understandably be overlooked at times. I make updates when I can and I try to be transparent about what the resource does and doesn't do.

I'm open to critique, but there's a difference between giving feedback and being disrespectful. I’m happy to help anyone who reaches out with questions or issues just approach me like you would any other dev or creator, not with hostility....
 

xorathsad

Bronze Elite
Joined
Sep 20, 2021
Messages
29
Reaction score
3
Points
166
Location
Romania
Greetings again,


You’re contradicting yourself when you talk about honesty. You took the original NoPixel code, made a couple of tweaks here and there, and put a resource up for sale under the name "INSPIRED," which doesn’t work properly and doesn’t fully integrate into a server using the QBCore framework. There’s nothing inspired about that code. If the resource was called "leak," that would be a different story. On the Tebex website, there’s no mention that the resource you’re working on isn’t 100% functional. Moreover, you claim to provide updates when you can and to be transparent... about those updates, I’ve seen none. It’s been two months since I bought the package, and not a single update has been released. If we consider that the resource received its last update in March, we can say there hasn’t been an update in four months.
updates.png

This isn’t about a lack of respect, because based on your actions, you don’t deserve respect. Respect is earned :) If you’re seeking respect, get to work and completely overhaul the code, make it integrate perfectly into the QBCore ecosystem, stop lying, and I guarantee you’ll earn that respect. As for constructive criticism, it’s clear you can’t handle it, and that’s evident from your actions on this forum. Everything I’ve written only reflects the truth, so I understand why you’re upset and trying to mock me. That’s okay :)
Code:
[root@Rocky-9-latest-amd64-base ~]# grep -r "qb-" /root/NLRP/resources/inventory/
/root/NLRP/resources/inventory/typescript/src/server/server.ts:    const isAdmin = await global.exports['qb-core'].IsPlayerAdmin(source);
/root/NLRP/resources/inventory/typescript/src/server/server.ts:    const isAdmin = await global.exports['qb-core'].IsPlayerAdmin(source);
/root/NLRP/resources/inventory/typescript/src/server/controllers/Decay.ts:        const QBCore = global.exports['qb-core'].GetCoreObject();
/root/NLRP/resources/inventory/typescript/src/server/controllers/Decay.ts:        const QBCore = global.exports['qb-core'].GetCoreObject()
/root/NLRP/resources/inventory/typescript/src/server/controllers/GroundItemCleanup.ts:            const QBCore = global.exports['qb-core'].GetCoreObject();
/root/NLRP/resources/inventory/typescript/src/client/controllers/Inventory.ts:    const QBCore = exports['qb-core'].GetCoreObject()
/root/NLRP/resources/inventory/typescript/src/client/controllers/Inventory.ts:global.exports['qb-keybinds'].registerKeyMapping('inventory', 'Inventory', 'Open Inventory', '+inventory', '-inventory', 'K', true);
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:global.exports['qb-keybinds'].registerKeyMapping('ActionBar', 'Inventory', 'Show actionbar', '+actionBar', '-actionBar', 'TAB');
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:    global.exports['qb-keybinds'].registerKeyMapping('inventory', 'Inventory', `Actionbar Slot ${slot}`, `+useActionbar_${slot}`, '', slot, true);
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:    const QBCore = exports['qb-core'].GetCoreObject()
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:    // const ExampleFetchHome = exports['qb-houses'].GetPlayerHouseNumber()
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:    // const ExampleFetchPersonalVeh = exports['qb-vehicles'].GetPlayerVehicle()
grep: /root/NLRP/resources/inventory/web/src/assets/character.png: binary file matches
grep: /root/NLRP/resources/inventory/web/src/fonts/Gilroy/gilroy-regular-webfont.woff2: binary file matches
grep: /root/NLRP/resources/inventory/web/dist/assets/gilroy-regular-webfont-D4SNX1-i.woff2: binary file matches
grep: /root/NLRP/resources/inventory/web/dist/assets/character-NOJBPrM9.png: binary file matches
[root@Rocky-9-latest-amd64-base ~]#

NoPixel code:
Code:
[root@Rocky-9-latest-amd64-base ~]# grep -r "np-" /root/NLRP/resources/inventory/
/root/NLRP/resources/inventory/typescript/src/server/controllers/Actions.ts:            emit('np-objects:inv:DeleteObject', groundItemId, true);
/root/NLRP/resources/inventory/typescript/src/server/controllers/Actions.ts:                emit('np-objects:inv:DeleteObject', sourceItem[0].id, true);
/root/NLRP/resources/inventory/typescript/src/server/controllers/Actions.ts:            emit('np-objects:inv:DeleteObject', sourceItem[0].id, true);
/root/NLRP/resources/inventory/typescript/src/server/controllers/Functions.ts:                emit('np-objects:inv:prepareObject', fetchedItem.item_id, x, y, z, 0, {
/root/NLRP/resources/inventory/typescript/src/server/controllers/Functions.ts:        emit('np-objects:inv:DeleteObject', itemId, true);
/root/NLRP/resources/inventory/typescript/src/server/controllers/GroundItemCleanup.ts:                                emit('np-objects:inv:prepareObject', item.item_id, x, y, z, 0, {
/root/NLRP/resources/inventory/typescript/src/server/controllers/GroundItemCleanup.ts:                        emit('np-objects:inv:DeleteObject', item.id, true);
/root/NLRP/resources/inventory/typescript/src/client/modules/zones/index.ts:on("np-polyzone:enter", (zone: string, data?: any) => {
/root/NLRP/resources/inventory/typescript/src/client/modules/zones/index.ts:on("np-polyzone:exit", (zone: string, data?: any) => {
/root/NLRP/resources/inventory/typescript/src/client/modules/zones/index.ts:    exports["np-polyzone"].AddPolyZone(zone, vectors, opt);
/root/NLRP/resources/inventory/typescript/src/client/modules/zones/index.ts:    exports["np-polyzone"].AddBoxZone(zone, vectors, length, width, opt);
/root/NLRP/resources/inventory/typescript/src/client/modules/zones/index.ts:    exports["np-polytaget"].AddBoxZone(zone, vectors, length, width, opt);
/root/NLRP/resources/inventory/typescript/src/client/modules/zones/index.ts:    exports["np-polyzone"].AddCircleZone(zone, vectors, radius, opt);
/root/NLRP/resources/inventory/typescript/src/client/modules/zones/index.ts:    exports["np-polytarget"].AddCircleZone(zone, vectors, radius, opt);
/root/NLRP/resources/inventory/typescript/src/client/modules/zones/index.ts:    exports["np-polyzone"].AddEntityZone(zone, entity, opt);
/root/NLRP/resources/inventory/typescript/src/client/modules/zones/index.ts:    exports["np-polyzone"].RemoveZone(zone, id);
/root/NLRP/resources/inventory/typescript/src/client/modules/minigames.ts:    return globalThis.exports["np-heists"].BankMinigame(options);
/root/NLRP/resources/inventory/typescript/src/client/modules/minigames.ts:    return globalThis.exports["np-heists"].DDRMinigame(options);
/root/NLRP/resources/inventory/typescript/src/client/modules/minigames.ts:    return globalThis.exports["np-heists"].MazeMinigame(options);
/root/NLRP/resources/inventory/typescript/src/client/modules/minigames.ts:    return globalThis.exports["np-heists"].ThermiteMinigame(options);
/root/NLRP/resources/inventory/typescript/src/client/modules/minigames.ts:    return globalThis.exports["np-heists"].VarMinigame(options);
/root/NLRP/resources/inventory/typescript/src/client/modules/interface.ts:    globalThis.exports["np-interact"].AddPeekEntryByModel(pModels, pData, pOptions);
/root/NLRP/resources/inventory/typescript/src/client/modules/interface.ts:    globalThis.exports["np-interact"].AddPeekEntryByPolyTarget(pEvent, pData, pOptions);
/root/NLRP/resources/inventory/typescript/src/client/modules/interface.ts:    globalThis.exports["np-interact"].AddPeekEntryByFlag(pFlags, pData, pOptions);
/root/NLRP/resources/inventory/typescript/src/client/modules/interface.ts:    globalThis.exports["np-interact"].AddPeekEntryByEntityType(pType, pData, pOptions);
/root/NLRP/resources/inventory/typescript/src/client/modules/interface.ts:      globalThis.exports["np-taskbar"].taskBar(
/root/NLRP/resources/inventory/typescript/src/client/modules/interface.ts:      globalThis.exports["np-phone"].DoPhoneConfirmation(pTitle, pText, pIcon, resolve, pTimeout);
/root/NLRP/resources/inventory/typescript/src/client/modules/interface.ts:    globalThis.exports["np-ui"].SendUIMessage({
/root/NLRP/resources/inventory/typescript/src/client/modules/interface.ts:      source: "np-nui",
/root/NLRP/resources/inventory/typescript/src/client/modules/vehicles/index.ts:  Exports.Sync["np-vehicles"].TurnOnEngine(pVehicle);
/root/NLRP/resources/inventory/typescript/src/client/modules/vehicles/index.ts:  Exports.Sync["np-vehicles"].TurnOffEngine(pVehicle);
/root/NLRP/resources/inventory/typescript/src/client/modules/vehicles/index.ts:  return Exports.Sync["np-vehicles"].HasVehicleKey(pVehicle);
/root/NLRP/resources/inventory/typescript/src/client/modules/vehicles/index.ts:  Exports.Sync["np-vehicles"].SwapVehicleSeat(pSeat, pVehicle);
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:    TriggerEvent('np-weapons:client:openActionBar')
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:            TriggerEvent('np-hud:armed', 100);
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:        TriggerEvent("np-hunting:skinAnimal")
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:        TriggerEvent('np-burgershot:gettoy');
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:                        TriggerServerEvent("np-katana:cursedKatanaEquip", GetEntityCoords(PlayerPedId()));
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:                        TriggerEvent("np-katana:cursedKatanaEquipC");
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:    if (stolenItems[itemid] && exports["np-npcs"].isCloseToPawnPed()) {
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:                    // Sync.DeleteVehicle(wheelChair); (np-sync idk the name do later if needed)
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:        TriggerEvent('np-doors:unlockContainer1');
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:        TriggerEvent('np-doors:unlockContainer2');
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:        TriggerServerEvent("np-policeBadge:showBadge");
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:        TriggerEvent('np-robbery:usb');
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:        TriggerEvent('np-paleto:UseBlueLapTop');
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:        TriggerEvent("np-weed:plantSeed", itemid);
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:        TriggerEvent("np-weed:plantSeed", itemid);
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:        TriggerEvent("np-weed:plantSeed", itemid);
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:                    TriggerServerEvent('np-heists:bankTruckLog');
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:                    TriggerEvent('np-dispatch:bank_truck_robbery');
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:                        TriggerEvent('np-hud:show_hackerman');
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:                        exports['np-thermite'].OpenThermiteGame((success: boolean) => {
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:                                TriggerEvent('np-hud:hide_hackerman');
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:                                TriggerEvent("np-heists:start_hitting_truck", targetVehicle);
/root/NLRP/resources/inventory/typescript/src/client/controllers/Actionbar.ts:                                TriggerEvent('np-hud:hide_hackerman');
/root/NLRP/resources/inventory/typescript/src/client/controllers/Drops.ts:on("np-objects:objectCreated", (pData:any, entity:any) => {
/root/NLRP/resources/inventory/typescript/src/client/controllers/Drops.ts:onNet("np-objects:objectDeleted", function (dataa: any) {
[root@Rocky-9-latest-amd64-base ~]#

Now, that's all the code relevant to QB for your inventory. Let’s put aside this pointless personal flame for a moment and talk collegially. How can you claim that this resource works in the QB framework when over 80% of the vital functions are missing? You haven’t provided any evidence, just cheap mockery and personal attacks... which is why I’ve shared 'your' code so anyone can access it and verify for themselves. I wish you good luck !
 
Status
Not open for further replies.
Top