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:
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
inventorymuss indata/items.luaexistieren. 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:
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' },
},priceist, was eine Einheit kostet.countist der Bestand. Ohne ihn ist der Gegenstand unbegrenzt, und mit ihm geht der Bestand runter, wenn Spieler kaufen.currencyist der Gegenstand, der dafür bezahlt. Es Standard zu Geld, undblack_moneyist eine häufige Alternative.licensefragt nach einem Lizenz-Gegenstand, bevor der Spieler kaufen darf.gradebeschränkt einen Gegenstand auf einen Mindest-Job-Rang, wenn der Ladengroupsverwendet.
Ö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:
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:
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:
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:
-- 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:
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:
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 }).
