ox_inventory Läden: data/shops.lua, RegisterShop und Markierungen

Wie man einen Laden in ox_inventory erstellt: der data/shops.lua Eintrag, Preise und Währung, Standorte und Ziele, Job-gesperrte Läden, RegisterShop von einer anderen Ressource und Markierungen.

Ein Laden in ox_inventory ist eine Liste von Gegenständen mit Preisen und einen oder mehreren Orte, wo Spieler ihn öffnen können. Du kannst eine Datei bearbeiten, oder den Laden von deiner eigenen Ressource registrieren. Dieser Artikel behandelt beide, plus Preise, Währungen, Job-Einschränkungen, ox_target und Markierungen.

Der Laden-Eintrag in data/shops.lua

Öffne ox_inventory/data/shops.lua. Jeder Laden ist eine Tabelle mit einem Laden-Typ als Schlüssel:

lua
return {
    General = {
        name = 'Shop',
        inventory = {
            { name = 'burger', price = 10 },
            { name = 'water', price = 5, count = 50 },
            { name = 'lockpick', price = 150 },
        },
        locations = {
            vec3(25.7, -1347.3, 29.5),
        },
    },
}

Der Schlüssel (General) ist der Laden-Typ. Die Felder:

Feld Bedeutung
name Titel, der oben im Laden angezeigt wird
inventory Die zum Verkauf stehenden Gegenstände
locations Koordinaten, wo Spieler den Laden öffnen können
targets Gleiche Idee, aber mit ox_target Boxen (siehe unten)
groups Jobs, die berechtigt sind, den Laden zu nutzen
blip Markierungs-Einstellungen

Prüfe die Standard-Einträge in deiner Kopie der Datei: Sie zeigen die genauen Felder, die deine Version unterstützt, und der beste Weg zu beginnen, ist einen zu kopieren und ihn zu ändern.

Achtung: Jeder Gegenstand-Name in inventory muss in data/items.lua existieren. Ein Laden, der einen fehlenden Gegenstand auflistet, kann sich nicht öffnen oder Fehler drucken. Siehe adding items to ox_inventory.

Gegenstände, Preise und Währung

Jede Zeile von inventory ist eine kleine Tabelle:

lua
inventory = {
    { name = 'water', price = 5 },
    { name = 'sandwich', price = 12, count = 20 },
    { name = 'lockpick', price = 150, currency = 'black_money' },
    { name = 'WEAPON_PISTOL', price = 2500, license = 'weapon' },
},
  • price ist, was eine Einheit kostet.
  • count ist der Bestand. Ohne ihn ist der Gegenstand unbegrenzt, und mit ihm geht der Bestand runter, wenn Spieler kaufen.
  • currency ist der Gegenstand, der dafür bezahlt. Es Standard zu Geld, und black_money ist eine häufige Alternative.
  • license fragt nach einem Lizenz-Gegenstand, bevor der Spieler kaufen darf.
  • grade beschränkt einen Gegenstand auf einen Mindest-Job-Rang, wenn der Laden groups verwendet.

Öffnen: Standorte und Ziele

Mit locations zeigt ox_inventory eine Interaktion bei diesen Koordinaten. Mit targets erstellt es stattdessen ox_target Boxen, was besser für einen Counter oder ein Fenster ist:

lua
targets = {
    {
        loc = vec3(25.7, -1347.3, 29.5),
        length = 0.7,
        width = 0.5,
        heading = 0.0,
        minZ = 29.0,
        maxZ = 31.0,
        distance = 1.5,
    },
},

ox_target muss laufen, damit dies funktioniert, da der Laden darauf angewiesen ist. Wenn du nur eine der beiden Wege möchtest, entferne die andere Tabelle.

Job-gesperrte Läden und Markierungen

Beschränke einen Laden auf einen Job mit groups, unter Verwendung von Job-Namen und Mindest-Graden:

lua
Police = {
    name = 'Police armory',
    groups = { police = 0 },
    inventory = {
        { name = 'WEAPON_STUNGUN', price = 0 },
        { name = 'ammo-9', price = 0, count = 200 },
    },
    locations = { vec3(480.2, -996.5, 30.7) },
},

Für eine Karten-Markierung, füge eine blip-Tabelle zum Laden hinzu:

lua
blip = { id = 59, colour = 69, scale = 0.8 },

id ist die Sprite-Nummer und colour die Farbnummer. Die Zahlen kommen aus den GTA Markierungs-Listen, und die gleiche Idee wird erklärt in creating blips in FiveM. Starte ox_inventory neu, um Dateiänderungen anzuwenden.

Registriere einen Laden von einer anderen Ressource

Wenn ein Laden von deinem eigenen Skript erstellt wird, beispielsweise von einem Business- oder Job-Ressource, bearbeite nicht data/shops.lua. Registriere ihn auf dem Server:

lua
-- server.lua of your resource
exports.ox_inventory:RegisterShop('Bakery', {
    name = 'Bakery',
    inventory = {
        { name = 'bread', price = 4 },
        { name = 'croissant', price = 6, count = 30 },
    },
    locations = {
        vec3(-1285.7, -1127.1, 6.8),
    },
})

RegisterShop(type, data) nimmt die Typ-String und die gleiche Tabelle wie in der Datei. Registriere sie, wenn die Ressource startet. Wenn ox_inventory neu startet, muss deine Ressource den Laden erneut registrieren, also registriere auf onServerResourceStart für ox_inventory auch:

lua
AddEventHandler('onServerResourceStart', function(resource)
    if resource == 'ox_inventory' then
        registerMyShops()
    end
end)

Öffne einen Laden vom Client

Wenn du keinen Standort oder Ziel auf dem Laden möchtest, oder du ihn von deiner eigenen Schnittstelle öffnen möchtest, verwende den Client-Export:

lua
exports.ox_inventory:openInventory('shop', { type = 'General', id = 1 })

type ist der Laden-Schlüssel. id ist die Position des Standortes in der locations (oder targets) Liste, beginnend bei 1. Wenn ein Laden einen Standort hat, verwende id = 1. Ein Laden ohne Standorte, der von Code registriert wurde, wird mit seinem Typ allein geöffnet, also teste deine Version, wenn id benötigt wird.

Tipp: Der Server prüft immer noch den Laden, wenn du ihn öffnest, also ein Client kann nicht von einem Job-Laden kaufen, den er keinen Job für hat.

Läden erstellen ohne Code zu bearbeiten

Wenn du viele Läden einrichtest, wird das Bearbeiten von Lua repetitiv. Shop Creator lässt dich Läden im Spiel erstellen.

Shop CreatorBau einen Shop in unter einer Minute — Besitzer, Angestellte, Tresore und Überfälle inklusive.ab 24,20 €Script ansehen →

Checkliste

Symptom Behebung
Laden wird nicht angezeigt Starte ox_inventory nach dem Bearbeiten von data/shops.lua neu
Laden öffnet sich leer oder Fehler Ein Gegenstand in inventory fehlt in data/items.lua
Kann nicht mit dem Laden interagieren Prüfe locations oder targets, und dass ox_target läuft
Falsche Währung Setze currency auf den Gegenstand-Eintrag
Job-Laden offen für alle Füge groups = { job = grade } hinzu
Registrierter Laden verloren nach Neustart Rufe RegisterShop erneut auf, wenn ox_inventory startet

Kurze Antworten

Wo füge ich einen Laden in ox_inventory hinzu?

In ox_inventory/data/shops.lua, als ein neuer Eintrag mit einem Namen, einer inventory-Liste und einem oder mehreren locations oder targets. Starte ox_inventory danach neu.

Kann ein Laden schwarzes Geld anstelle von Bargeld nehmen?

Ja. Setze currency = 'black_money' auf den Gegenstand-Eintrag, und der Laden berechnet diesen Gegenstand anstelle des Standard-Geldes.

Wie erstelle ich einen Laden aus meinem eigenen Skript?

Rufe exports.ox_inventory:RegisterShop(type, data) auf dem Server auf, dann öffne ihn vom Client mit exports.ox_inventory:openInventory('shop', { type = type }).

Scripts ohne dieses Problem

Shop CreatorBau einen Shop in unter einer Minute — Besitzer, Angestellte, Tresore und Überfälle inklusive.Script ansehen →Item Creator V2Erstelle nutzbare Items mit Animationen, Props, Effekten und mehr — ganz ohne Code.Script ansehen →

Weiterlesen