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
| Parameter | Typ | Beschreibung |
|---|---|---|
source | integer | Die Server-ID des Spielers. |
items | string / table | Ein Item-Name, ein einzelnes Item-Objekt oder eine Liste von Objekten. |
Rückgabewerte
success(boolean):true, wenn alle Bedingungen erfüllt sind, sonstfalse.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.
Docs