-- ===================================================================== -- Aether Inventory — Item-Registry und Slot-Aufteilung -- Wird auf Client und Server geladen. Der Server rechnet damit -- (Gewicht, Stapelbarkeit), der Client zeigt sie nur an. -- ===================================================================== Inventar = Inventar or {} -- --------------------------------------------------------------------- -- Grenzen -- --------------------------------------------------------------------- Inventar.MAX_GEWICHT = 30.0 -- Traglast in Kilogramm Inventar.TASCHE_SLOTS = 25 -- Plaetze in der Tasche Inventar.HOTBAR_SLOTS = 5 -- Plaetze in der Schnellleiste Inventar.AUFHEB_WEITE = 3.0 -- Reichweite zum Aufheben (Meter) Inventar.GEBEN_WEITE = 3.0 -- Reichweite zum Geben (Meter) Inventar.BODEN_SICHT = 15.0 -- Sichtweite fuer Items in der Inventarliste (Meter) -- --------------------------------------------------------------------- -- Fallengelassene Items (sichtbare Kartons in der Welt) -- --------------------------------------------------------------------- -- Einheitliche Props: Beim Fallenlassen wird zufaellig einer davon gewaehlt Inventar.DROP_PROPS = { 'prop_cardbordbox_03a', 'prop_cardbordbox_04a', 'prop_cardbordbox_05a', } Inventar.DROP_SPAWN_WEITE = 30.0 -- Ab dieser Entfernung wird der Karton erzeugt Inventar.DROP_HINWEIS = 1.8 -- Entfernung, ab der „E zum Aufheben" erscheint Inventar.DROP_MAX_STUNDEN = 48 -- Nach dieser Zeit werden Drops aufgeraeumt (0 = nie) -- --------------------------------------------------------------------- -- Slot-Aufteilung -- Alles liegt in einer Tabelle; die Slotnummer bestimmt den Bereich. -- --------------------------------------------------------------------- Inventar.BEREICH = { tasche = { von = 0, bis = 24 }, -- 0–24 hotbar = { von = 100, bis = 104 }, -- 100–104 equip = { von = 200, bis = 204 }, -- 200–204 } -- Zuordnung der Ausruestungs-Slots zu ihren Slotnummern Inventar.EQUIP_SLOTS = { helm = 200, brust = 201, hose = 202, schuhe = 203, schmuck = 204, } --- Liefert den Bereichsnamen zu einer Slotnummer --- @param slot number Slotnummer --- @return string|nil 'tasche' | 'hotbar' | 'equip' function Inventar.BereichVon(slot) for name, bereich in pairs(Inventar.BEREICH) do if slot >= bereich.von and slot <= bereich.bis then return name end end return nil end --- Liefert den Ausruestungs-Schluessel zu einer Slotnummer (z. B. 'brust') --- @param slot number Slotnummer --- @return string|nil function Inventar.EquipSchluessel(slot) for schluessel, nummer in pairs(Inventar.EQUIP_SLOTS) do if nummer == slot then return schluessel end end return nil end -- --------------------------------------------------------------------- -- Item-Registry -- gewicht = Kilogramm pro Stueck -- stapelbar = mehrere Stueck in einem Slot -- slot = passt nur in diesen Ausruestungs-Slot -- nutzbar = kann benutzt werden -- wirkung = was beim Benutzen passiert (vom Server ausgewertet) -- --------------------------------------------------------------------- Inventar.Items = { pistole = { name = 'Pistole P99', icon = '🔫', kat = 'Waffe', gewicht = 1.2, rar = 'epic', waffe = true, beschreibung = 'Halbautomatische 9mm-Pistole. Registrierte Feuerwaffe.', }, munition9 = { name = '9mm Munition', icon = '🧨', kat = 'Munition', gewicht = 0.01, rar = 'common', stapelbar = true, beschreibung = 'Standard-Patronen für 9mm-Waffen.', }, handy = { name = 'Smartphone', icon = '📱', kat = 'Elektronik', gewicht = 0.3, rar = 'rare', komponenten = { 'SIM-Karte', 'Akku' }, nutzbar = true, beschreibung = 'Modernes Smartphone. Enthält verbaute Komponenten.', }, wasser = { name = 'Wasserflasche', icon = '🥤', kat = 'Nahrung', gewicht = 0.5, rar = 'common', stapelbar = true, verbrauchbar = true, nutzbar = true, wirkung = { art = 'durst', menge = 25 }, beschreibung = 'Löscht den Durst. +25 Durst.', }, sandwich = { name = 'Sandwich', icon = '🥪', kat = 'Nahrung', gewicht = 0.2, rar = 'common', stapelbar = true, verbrauchbar = true, nutzbar = true, wirkung = { art = 'hunger', menge = 30 }, beschreibung = 'Stillt den Hunger. +30 Hunger.', }, verband = { name = 'Verband', icon = '🩹', kat = 'Medizin', gewicht = 0.1, rar = 'uncommon', stapelbar = true, verbrauchbar = true, nutzbar = true, wirkung = { art = 'leben', menge = 25 }, beschreibung = 'Stoppt Blutungen und heilt leichte Wunden.', }, tablette = { name = 'Schmerztabletten', icon = '💊', kat = 'Medizin', gewicht = 0.02, rar = 'common', stapelbar = true, verbrauchbar = true, nutzbar = true, wirkung = { art = 'leben', menge = 10 }, beschreibung = 'Lindert Schmerzen kurzfristig.', }, funk = { name = 'Funkgerät', icon = '📻', kat = 'Elektronik', gewicht = 0.4, rar = 'uncommon', nutzbar = true, beschreibung = 'Kurzstrecken-Funk für die Kommunikation.', }, dietrich = { name = 'Dietrich', icon = '🗝️', kat = 'Werkzeug', gewicht = 0.05, rar = 'uncommon', stapelbar = true, beschreibung = 'Zum Öffnen einfacher Schlösser. Kann brechen.', }, reparaturkit = { name = 'Reparaturkit', icon = '🧰', kat = 'Werkzeug', gewicht = 2.0, rar = 'uncommon', nutzbar = true, beschreibung = 'Repariert Fahrzeuge notdürftig.', }, bargeld = { name = 'Bargeld', icon = '💵', kat = 'Wertsache', gewicht = 0, rar = 'legendary', stapelbar = true, beschreibung = 'Sauberes Bargeld.', }, goldkette = { name = 'Goldkette', icon = '📿', kat = 'Schmuck', gewicht = 0.15, rar = 'epic', slot = 'schmuck', beschreibung = 'Massive Goldkette. Ein echter Hingucker.', }, helm = { name = 'Ballistikhelm', icon = '⛑️', kat = 'Ausrüstung', gewicht = 1.0, rar = 'uncommon', slot = 'helm', beschreibung = 'Schützt den Kopf vor Treffern.', }, weste = { name = 'Schutzweste', icon = '🦺', kat = 'Ausrüstung', gewicht = 3.5, rar = 'rare', slot = 'brust', beschreibung = 'Kugelsichere Weste. Reduziert Schaden am Oberkörper.', }, jeans = { name = 'Jeans', icon = '👖', kat = 'Kleidung', gewicht = 0.6, rar = 'common', slot = 'hose', beschreibung = 'Robuste Jeans.', }, sneaker = { name = 'Sneaker', icon = '👟', kat = 'Kleidung', gewicht = 0.8, rar = 'common', slot = 'schuhe', beschreibung = 'Bequeme Sneaker.', }, -- --- Weitere Waren aus dem Laden ------------------------------------- cola = { name = 'Cola', icon = '🥫', kat = 'Nahrung', gewicht = 0.4, rar = 'common', stapelbar = true, verbrauchbar = true, nutzbar = true, wirkung = { art = 'durst', menge = 20 }, beschreibung = 'Eiskalt, koffeinhaltig.', }, energy = { name = 'Energydrink', icon = '⚡', kat = 'Nahrung', gewicht = 0.4, rar = 'common', stapelbar = true, verbrauchbar = true, nutzbar = true, wirkung = { art = 'ausdauer', menge = 40 }, beschreibung = 'Gibt Extra-Ausdauer.', }, kaffee = { name = 'Kaffee to go', icon = '☕', kat = 'Nahrung', gewicht = 0.3, rar = 'common', stapelbar = true, verbrauchbar = true, nutzbar = true, wirkung = { art = 'ausdauer', menge = 25 }, beschreibung = 'Wach werden.', }, chips = { name = 'Chips', icon = '🍟', kat = 'Nahrung', gewicht = 0.2, rar = 'common', stapelbar = true, verbrauchbar = true, nutzbar = true, wirkung = { art = 'hunger', menge = 15 }, beschreibung = 'Knuspriger Snack.', }, schoko = { name = 'Schokoriegel', icon = '🍫', kat = 'Nahrung', gewicht = 0.1, rar = 'common', stapelbar = true, verbrauchbar = true, nutzbar = true, wirkung = { art = 'hunger', menge = 12 }, beschreibung = 'Süße Energie.', }, burger = { name = 'Burger', icon = '🍔', kat = 'Nahrung', gewicht = 0.3, rar = 'common', stapelbar = true, verbrauchbar = true, nutzbar = true, wirkung = { art = 'hunger', menge = 45 }, beschreibung = 'Deftige Mahlzeit.', }, medkit = { name = 'Erste-Hilfe-Kit', icon = '🧳', kat = 'Medizin', gewicht = 1.5, rar = 'rare', stapelbar = true, verbrauchbar = true, nutzbar = true, wirkung = { art = 'leben', menge = 60 }, beschreibung = 'Behandelt schwere Wunden.', }, kabel = { name = 'Kabelbinder', icon = '🔗', kat = 'Werkzeug', gewicht = 0.1, rar = 'common', stapelbar = true, beschreibung = 'Vielseitig einsetzbar.', }, lampe = { name = 'Taschenlampe', icon = '🔦', kat = 'Werkzeug', gewicht = 0.3, rar = 'common', nutzbar = true, beschreibung = 'Leuchtet den Weg.', }, sim = { name = 'SIM-Karte', icon = '📶', kat = 'Elektronik', gewicht = 0.01, rar = 'common', stapelbar = true, beschreibung = 'Wird fürs Handy benötigt.', }, akku = { name = 'Akku', icon = '🔋', kat = 'Elektronik', gewicht = 0.1, rar = 'common', stapelbar = true, beschreibung = 'Ersatz-Akku fürs Handy.', }, boerse = { name = 'Börse', icon = '👛', kat = 'Zubehör', gewicht = 0.2, rar = 'uncommon', beschreibung = 'Fasst bis zu 10 Dokumente.', }, rucksack = { name = 'Rucksack', icon = '🎒', kat = 'Zubehör', gewicht = 0.6, rar = 'uncommon', beschreibung = 'Erhöht die Tragekapazität.', }, -- --- Waffen und Zubehoer (Ammu-Nation) ------------------------------- smg = { name = 'MP5 (MPX)', icon = '🔫', kat = 'Waffe', gewicht = 3.0, rar = 'legendary', waffe = true, beschreibung = 'Maschinenpistole. Registrierte Feuerwaffe.', }, flinte = { name = 'Schrotflinte 870', icon = '🔫', kat = 'Waffe', gewicht = 3.6, rar = 'epic', waffe = true, beschreibung = 'Pump-Action Shotgun. Registrierte Feuerwaffe.', }, schrot12 = { name = 'Schrot 12/70', icon = '🧨', kat = 'Munition', gewicht = 0.04, rar = 'common', stapelbar = true, beschreibung = 'Schrotpatronen für Flinten.', }, schalldaempfer = { name = 'Schalldämpfer', icon = '🔇', kat = 'Aufsatz', gewicht = 0.2, rar = 'rare', beschreibung = 'Dämpft den Mündungsknall.', }, waffenlampe = { name = 'Waffenlampe', icon = '🔦', kat = 'Aufsatz', gewicht = 0.15, rar = 'uncommon', beschreibung = 'Taktische Beleuchtung.', }, laservisier = { name = 'Laservisier', icon = '🎯', kat = 'Aufsatz', gewicht = 0.15, rar = 'uncommon', beschreibung = 'Bessere Zielerfassung.', }, } -- Startausruestung eines frisch erstellten Charakters Inventar.StartItems = { { item = 'handy', menge = 1, slot = 0 }, { item = 'wasser', menge = 2, slot = 1 }, { item = 'sandwich', menge = 1, slot = 2 }, { item = 'jeans', menge = 1, slot = Inventar.EQUIP_SLOTS.hose }, { item = 'sneaker', menge = 1, slot = Inventar.EQUIP_SLOTS.schuhe }, } --- Liefert die Definition eines Items --- @param kennung string Item-Kennung --- @return table|nil function Inventar.HoleItem(kennung) return Inventar.Items[kennung] end