Tablet System
- Resource
fh_tablet- Version
- 1.0.0
- Framework
- ESX
- Kræver
- ox_liboxmysqlox_inventoryfh_lib (medfølger)
Tablet System er en moderne tablet med hjemmeskærm, notifikationer og en skjult kriminel side, der låses op med et krypteret USB-stik. Andre scripts kan tilføje deres egne apps med én export.
Installation
1. Start scriptet
fh_lib følger med og skal starte før tabletten:
ensure fh_lib
ensure fh_tabletTabellen til notifikationer oprettes automatisk.
2. Tilføj items
Tilføj begge items i ox_inventory/data/items.lua:
['tablet'] = {
label = 'Tablet',
weight = 500,
stack = false,
close = true,
description = 'Apps til virksomheder, kriminelle og meget mere',
client = {
export = 'fh_tablet.useTablet',
},
},
['usb_crypto'] = {
label = 'Krypteret USB-stik',
weight = 20,
stack = false,
close = true,
description = 'Et sort stik uden mærke',
},3. Test i spillet
/giveitem <id> tablet 1
/giveitem <id> usb_crypto 1Den skjulte side
Apps på den skjulte side kræver et usb_crypto-stik i inventaret. Første gang stikket bruges, vælger spilleren selv en PIN-kode.
- Tre forkerte PIN-koder i træk sletter stikket.
- Hold tænd-knappen inde for at skifte straks tilbage til den normale side.
Indstillinger
Indstillingerne ligger i config.lua.
| Indstilling | Standard | Beskrivelse |
|---|---|---|
Config.Emote | 'tablet' | Emote fra fh_emotes, mens tabletten er åben. '' slår det fra |
Config.Animation | Tablet i hånden | Animationen, når fh_emotes ikke kører |
Config.Shadow.item | 'usb_crypto' | Itemet, der låser den skjulte side op |
Config.Shadow.pinLength | 4 | Antal cifre i PIN-koden |
Config.Shadow.maxAttempts | 3 | Forkerte forsøg, før stikket slettes |
Config.Shadow.panicHold | 600 | Millisekunder, tænd-knappen skal holdes inde |
Config.Notifications.keepDays | 7 | Dage, notifikationer gemmes |
Config.Notifications.max | 30 | Højeste antal notifikationer pr. karakter |
Farver og skrifttype ændrer du under Farver og tema.
For udviklere
Tilføj en app
Kald AddApp fra klienten. Tilføj også appen igen, når tabletten genstarter:
local function addApp()
exports.fh_tablet:AddApp({
identifier = 'min_app',
name = 'Min app',
description = 'Kort beskrivelse',
ui = 'ui/index.html',
icon = 'fa-solid fa-star',
color = '#e62e3d',
})
end
CreateThread(addApp)
AddEventHandler('onResourceStart', function(resource)
if resource == 'fh_tablet' then addApp() end
end)| Felt | Beskrivelse |
|---|---|
identifier | Unikt navn. Påkrævet |
ui | Sti i din resource eller en fuld URL. Påkrævet |
name | Navnet på hjemmeskærmen |
description | Kort beskrivelse |
icon | Font Awesome-ikon eller billed-URL |
color | Ikonets baggrund |
jobs | Kun synlig for disse jobs, for eksempel { 'police' } |
items | Kun synlig med disse items |
gang | true viser appen kun for bandemedlemmer (kræver Gang System) |
shadow | true viser appen kun på den skjulte side |
order | Placering på hjemmeskærmen |
dock | true giver en fast plads i docken |
Vigtigt
Apps med shadow = true bør tjekke exports.fh_tablet:IsShadow(source) i deres server-callbacks. Ellers kan de kaldes uden stikket.
Appens HTML
Indlæs tablettens SDK og UI-kit i index.html:
<link rel="stylesheet" href="https://cfx-nui-fh_tablet/html/ui.css">
<script src="https://cfx-nui-fh_tablet/html/sdk.js"></script>
<script src="https://cfx-nui-fh_tablet/html/ui.js"></script>| Funktion | Beskrivelse |
|---|---|
fetchNui(event, data) | Kalder RegisterNUICallback(event) i din egen resource |
FhTablet.onReady(cb) | Kører, når appen er åbnet. Giver { theme, player, shadow } |
FhTablet.onMessage(cb) | Modtager data fra SendAppMessage |
FhTablet.notify(text, type) | Viser en notifikation: info, success, warning eller error |
FhTablet.home() | Går til hjemmeskærmen |
FhTablet.close() | Lukker tabletten |
Et kort over GTA V findes i https://cfx-nui-fh_tablet/html/map.js.
Exports
| Export | Side | Beskrivelse |
|---|---|---|
AddApp(data) | Klient | Tilføjer en app |
RemoveApp(identifier) | Klient | Fjerner en app |
Open() / Close() | Klient | Åbner eller lukker tabletten |
IsOpen() | Klient | Er tabletten åben? |
IsShadow() | Klient | Er den skjulte side låst op? |
SendAppMessage(identifier, data) | Klient | Sender data til en apps side |
SetAppBadge(identifier, count) | Klient | Tal på app-ikonet. 0 skjuler det |
Notify(target, app, text, title) | Server | Notifikation til source eller en identifier, også offline |
SetBadge(source, app, count) | Server | Tal på app-ikonet for en spiller |
IsShadow(source) | Server | Har spilleren låst den skjulte side op og stikket på sig? |
Ændringer
1.0.0 (1. november 2026)
- Første udgivelse.