Skip to content
On this page

SNSUtils.itemCheck

Dieses Modul bietet Hilfsfunktionen für das Inventory-System, um Item-Bestände und Metadaten effizient zu prüfen.

Überprüft, ob ein Spieler ein oder mehrere Items besitzt. Dabei können spezifische Mengen und Metadaten (wie Labels, Haltbarkeit oder Beschreibungen) gefordert werden.

Einbindung ins fxmanifest:

lua
server_script {
    '@sns_utils/scripts_server/itemCheck.lua',
}

Aufruf (Serverseitig)

lua
local success, message = SNSUtils.itemCheck(source, items)

Parameter

ParameterTypBeschreibung
sourceintegerDie Server-ID des Spielers.
itemsstring / tableEin Item-Name, ein einzelnes Item-Objekt oder eine Liste von Objekten.

Rückgabewerte

  • success (boolean): true, wenn alle Bedingungen erfüllt sind, sonst false.
  • message (string): Eine Fehlermeldung bei Misserfolg oder "Erfolgreich".

Nutzungsbeispiele

1. Einfache Prüfung (Nur Item-Name)

Prüft lediglich, ob der Spieler mindestens ein Exemplar besitzt.

lua
local success, message = SNSUtils.itemCheck(1, "bread")

if success then
    print("Spieler hat Brot!")
else
    print(message) -- "Du besitzt das Item 'bread' nicht."
end

2. Prüfung mit Menge und Metadaten

Nützlich für spezifische Items wie Möbel oder Gerichte mit bestimmten metadaten.

lua
local itemData = { 
    item = "allFurniture", 
    amount = 1, 
    metadata = { label = "Gepolsterte Bank 4" } 
}

local success, message = SNSUtils.itemCheck(1, itemData)
DebugPrint(message)

if not success then
    Print("Du hast nicht genug 'allFurniture' mit den erforderlichen Eigenschaften...")
end

3. Mehrere Items gleichzeitig prüfen

Ideal für Crafting-Rezepte oder Quest-Abgaben.

lua
local recipe = {
    { item = "iron_ingot", amount = 5 },
    { item = "wood_plank", amount = 2 },
    { item = "rare_gem", amount = 1, metadata = { quality = "shiny" } }
}

local success, message = SNSUtils.itemCheck(1, recipe)

if success then
    -- Alle Items vorhanden, fahre fort...
else
    -- Gibt genau aus, welches Item fehlt
    Print("Fehlgeschlagen: " .. message)
end


Logik der Metadaten-Prüfung

Die Funktion nutzt einen Subset-Abgleich. Das bedeutet:

  • Es werden nur die Keys verglichen, die du in deiner Anfrage (metadata) definierst.
  • Zusätzliche Daten, die das Item im Inventar hat (z.B. zusätzliche Beschreibungen), werden ignoriert, solange deine geforderten Werte übereinstimmen.

Released under the GNU General Public License v2.0.