From daefe46cb860b3ba2a32ef9cdb5e08a4868818ba Mon Sep 17 00:00:00 2001 From: D4rkst3r Date: Tue, 29 Sep 2026 00:10:11 +0200 Subject: [PATCH] feat: Taucherflasche und Maske im Kleiderladen (Modell m) Gemessen am 29.09.2026 (/d4rk_kleidungsstand, Betreiber): Flasche m:c:8:mp_m_christmas2017:1 (Unterhemd, Slot 31), Maske m:p:1:mp_m_christmas2017:0 - ein PROP im Brillenslot 27, nicht die Maskenkomponente (angenommen war 29). texture -1: alle 26 Farben. /tauchartikel legt die d4rk_garment-Zeilen auf Zuruf an. Modell f fehlt. Co-Authored-By: Claude Opus 5.5 (1M context) --- config/shared.lua | 20 +++++++++++++++---- server/artikel.lua | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/config/shared.lua b/config/shared.lua index 917f2ed..d169bb5 100644 --- a/config/shared.lua +++ b/config/shared.lua @@ -36,9 +36,11 @@ local config = { --- patrone = Name aus tanks (unten), oxygen = Restsekunden. --- maskItem die Tauchmaske aus dem Kleiderladen. --- rigSlot / maskSlot wo sie getragen werden - d4rk_inventory - --- shared/d4rk_slots.lua:71-96: 31 Unterhemd (Komponente 8), - --- 29 Maske (Komponente 1). Welche Komponente die GTA-Taucherflasche - --- wirklich ist, steht erst nach der Messung (Schritt 0) fest. + --- shared/d4rk_slots.lua:71-96. GEMESSEN am 29.09.2026 mit + --- /d4rk_kleidungsstand (Betreiber, Modell m): + --- Flasche m:c:8:mp_m_christmas2017:1 -> 31 Unterhemd (Komponente 8) + --- Maske m:p:1:mp_m_christmas2017:0 -> 27 Brille (PROP 1, nicht + --- die Maskenkomponente 1 - angenommen war Slot 29) --- --- Die fuenf `tanks` sind jetzt PATRONEN: Items im Inventar, die man an der --- getragenen Flasche tauscht (Patrone benutzen). Die alten Props und das @@ -46,7 +48,17 @@ local config = { rigItem = 'diving_tank', maskItem = 'diving_mask', rigSlot = 31, - maskSlot = 29, + maskSlot = 27, + + --- Die Kleidungsstuecke im Kleiderladen, die statt `clothing` das Item + --- ausgeben (d4rk_garment.item, angelegt mit /tauchartikel). drawable ist + --- der LOKALE Index in der Sammlung, texture -1 = alle Farben. + --- Weiblich (f): NOCH NICHT GEMESSEN - dort gibt es die Items erst, wenn + --- die Kennungen hier stehen. + kleidung = { + { pedset = 'm', komponente = 'c:8', collection = 'mp_m_christmas2017', drawable = 1, item = 'diving_tank' }, + { pedset = 'm', komponente = 'p:1', collection = 'mp_m_christmas2017', drawable = 0, item = 'diving_mask' }, + }, --- Das Fuell-Item. NICHT ANGELEGT: Nachfuellen kommt spaeter ueber einen --- Shop oder Crafting (Betreiber, 28.09.2026). Der Weg bleibt stehen, damit diff --git a/server/artikel.lua b/server/artikel.lua index a50e961..f73f5c7 100644 --- a/server/artikel.lua +++ b/server/artikel.lua @@ -71,6 +71,52 @@ local function liste() return l end +--[[ + DIE KLEIDUNGSEINTRAEGE (d4rk_garment) - 29.09.2026. Ohne sie gibt der + Kleiderladen fuer Flasche und Maske `clothing` aus statt der Items + (d4rk_inventory d4rkStueckGeben -> d4rk_items GarmentInfo). Wie die Items: + nur auf Zuruf, vorhandene Zeilen werden nicht angefasst. +]] +local function kleidungAnlegen() + local ok, zeilen = pcall(function() return exports[ITEMS]:adminGarmentList() end) + + if not ok or type(zeilen) ~= 'table' then + print('^1 Kleidung: adminGarmentList antwortet nicht - UNGUELTIG, nichts angelegt.^7') + return + end + + for _, k in ipairs(shared.kleidung or {}) do + local vorhanden + + for _, z in ipairs(zeilen) do + if z.pedset == k.pedset and (z.collection or '') == k.collection + and tonumber(z.drawable) == k.drawable and tonumber(z.texture) == -1 then + vorhanden = z + break + end + end + + local name = ('%s %s %s:%d'):format(k.pedset, k.komponente, k.collection, k.drawable) + + if vorhanden then + print((' Kleidung %-34s vorhanden (Item %s)%s'):format(name, tostring(vorhanden.item), + vorhanden.item == k.item and '' or ' ^3- soll ' .. k.item .. ', im Panel pruefen^7')) + else + local okC, erfolg, grund = pcall(function() + return exports[ITEMS]:adminGarmentCreate(0, { + pedset = k.pedset, komponente = k.komponente, collection = k.collection, + drawable = k.drawable, texture = -1, + label = locale('artikel.' .. k.item .. '.name'), item = k.item, aktiv = true, + }) + end) + + print((' Kleidung %-34s %s'):format(name, + (okC and erfolg == true) and '^2angelegt -> ' .. k.item .. '^7' + or ('^1FEHLER: %s^7'):format(okC and tostring(grund) or tostring(erfolg)))) + end + end +end + RegisterCommand('tauchartikel', function(source, args) if source ~= 0 then return end @@ -146,4 +192,6 @@ RegisterCommand('tauchartikel', function(source, args) or ('^1FEHLER: %s^7'):format(okC and tostring(grund) or tostring(erfolg)))) end end + + kleidungAnlegen() end, true)