fix: Befehlsausgabe in die F8-Konsole statt nur in die Serverkonsole (#81)

/tauchartikel und /tauchstand laufen jetzt ueber Diagnosebefehl: die Ausgabe geht an die F8-Konsole
des Aufrufers. Reine Konsolenbefehle sind fuer Admins im Spiel offen
(restricted group.admin, Betreiber 07.10.2026). print -> sag in den
betroffenen Dateien; ausserhalb eines Diagnosebefehls ist sag ein print.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
D4rkst3randClaude Opus 5.5 committed 2026-10-07 12:49:19 +02:00
1 parent db7cef893d
commit 056215d0ae
2 files changed
+22 -22

No files matched your search

+21 -22
View File
@@ -10,7 +10,8 @@
Geloeschtes zurueck"). Vorhandene Items werden NICHT angefasst - was im
Panel gepflegt ist, gewinnt.
NUR AN DER SERVERKONSOLE (restricted, source 0).
SERVERKONSOLE ODER ADMIN IM SPIEL (Diagnosebefehl, restricted group.admin,
seit 07.10.2026 - vorher nur source 0; Ausgabe in die F8-Konsole, #81).
Taucherflasche Kleidung (Kleiderladen, d4rk_garment -> item). Traegt
die Patrone in der Metadata. Gewicht GESETZT: Geraet
@@ -81,7 +82,7 @@ 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')
sag('^1 Kleidung: adminGarmentList antwortet nicht - UNGUELTIG, nichts angelegt.^7')
return
end
@@ -99,7 +100,7 @@ local function kleidungAnlegen()
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),
sag((' 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()
@@ -110,27 +111,26 @@ local function kleidungAnlegen()
})
end)
print((' Kleidung %-34s %s'):format(name,
sag((' 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
Diagnosebefehl('tauchartikel', { restricted = 'group.admin' }, function(source, args)
local nachziehen = args[1] == 'nachziehen'
if GetResourceState(ITEMS) ~= 'started' then
print('^1[d4rk_divegear] tauchartikel: d4rk_items laeuft nicht - nichts angelegt.^7')
sag('^1[d4rk_divegear] tauchartikel: d4rk_items laeuft nicht - nichts angelegt.^7')
return
end
local ok, zeilen = pcall(function() return exports[ITEMS]:adminItemList() end)
if not ok or type(zeilen) ~= 'table' then
print('^1[d4rk_divegear] tauchartikel: adminItemList antwortet nicht - UNGUELTIG, nichts angelegt.^7')
sag('^1[d4rk_divegear] tauchartikel: adminItemList antwortet nicht - UNGUELTIG, nichts angelegt.^7')
return
end
@@ -140,11 +140,11 @@ RegisterCommand('tauchartikel', function(source, args)
-- GEGENPROBE: eine leere Liste hiesse "d4rk_items kennt kein einziges
-- Item" - das ist nie wahr, sondern eine kaputte Antwort.
if next(da) == nil then
print('^1[d4rk_divegear] tauchartikel: adminItemList lieferte 0 Items - UNGUELTIG, nichts angelegt.^7')
sag('^1[d4rk_divegear] tauchartikel: adminItemList lieferte 0 Items - UNGUELTIG, nichts angelegt.^7')
return
end
print(('[d4rk_divegear] tauchartikel: %d Items in d4rk_item bekannt.'):format(#zeilen))
sag(('[d4rk_divegear] tauchartikel: %d Items in d4rk_item bekannt.'):format(#zeilen))
for _, it in ipairs(liste()) do
local sollExport = it.patrone and EXPORT or nil
@@ -155,9 +155,9 @@ RegisterCommand('tauchartikel', function(source, args)
local passt = tonumber(z.consume) == 0 and istExport == sollExport
if passt then
print((' %-20s vorhanden, passt'):format(it.name))
sag((' %-20s vorhanden, passt'):format(it.name))
elseif not nachziehen then
print((' %-20s ^3vorhanden, consume %s / Export %s - soll 0 / %s: tauchartikel nachziehen^7')
sag((' %-20s ^3vorhanden, consume %s / Export %s - soll 0 / %s: tauchartikel nachziehen^7')
:format(it.name, tostring(z.consume), tostring(istExport), tostring(sollExport)))
else
local w = {}
@@ -168,7 +168,7 @@ RegisterCommand('tauchartikel', function(source, args)
local okU, erfolg, grund = pcall(function() return exports[ITEMS]:adminItemUpdate(0, z.id, w) end)
print((' %-20s %s'):format(it.name,
sag((' %-20s %s'):format(it.name,
(okU and erfolg == true) and '^2nachgezogen (consume 0)^7'
or ('^1FEHLER: %s^7'):format(okU and tostring(grund) or tostring(erfolg))))
end
@@ -187,16 +187,16 @@ RegisterCommand('tauchartikel', function(source, args)
local okC, erfolg, grund = pcall(function() return exports[ITEMS]:adminItemCreate(0, werte) end)
print((' %-20s %s'):format(it.name,
sag((' %-20s %s'):format(it.name,
(okC and erfolg == true) and '^2angelegt^7'
or ('^1FEHLER: %s^7'):format(okC and tostring(grund) or tostring(erfolg))))
end
end
kleidungAnlegen()
end, true)
end)
--[[
/tauchstand <id> - WAS LIEGT IN DEN SLOTS? (29.09.2026, nur Serverkonsole)
/tauchstand <id> - WAS LIEGT IN DEN SLOTS? (29.09.2026; seit 07.10.2026 auch Admins im Spiel, F8)
Betreiber: "nachdem er durchgelaufen ist sagt er du traegst keine
taucherflasche". getWorn (server/main.lua) liest rigSlot und maskSlot -
@@ -204,23 +204,22 @@ end, true)
Patrone. Ein `clothing` mit der richtigen Kennung heisst: vor dem
/tauchartikel-Eintrag gekauft, die Optik stimmt, das Item nicht.
]]
RegisterCommand('tauchstand', function(source, args)
if source ~= 0 then return end
Diagnosebefehl('tauchstand', { restricted = 'group.admin' }, function(source, args)
local ziel = tonumber(args[1])
if not ziel or not GetPlayerName(ziel) then
print('[d4rk_divegear] tauchstand <server-id> - Spieler nicht gefunden.')
sag('[d4rk_divegear] tauchstand <server-id> - Spieler nicht gefunden.')
return
end
print(('[d4rk_divegear] tauchstand %d:'):format(ziel))
sag(('[d4rk_divegear] tauchstand %d:'):format(ziel))
for _, s in ipairs({ { 'Flasche', shared.rigSlot, shared.rigItem }, { 'Maske', shared.maskSlot, shared.maskItem } }) do
local slot = exports.d4rk_inventory:GetSlot(ziel, s[2])
local m = slot and slot.metadata or {}
print((' %-8s Slot %d: %s (soll %s) garment %s patrone %s oxygen %s'):format(s[1], s[2],
sag((' %-8s Slot %d: %s (soll %s) garment %s patrone %s oxygen %s'):format(s[1], s[2],
slot and slot.name or '<leer>', s[3], tostring(m.garment), tostring(m.patrone), tostring(m.oxygen)))
end
end, true)
end)