-- ===================================================================== -- aether-admin / Modul: Immobilien -- -- Solange kein eigenständiges Immobilien-Resource läuft, verwaltet das -- Panel die Objekte. Der Besitzer ist ein Charakter aus aether_characters. -- ===================================================================== Admin = Admin or {} Admin.Kern.Registriere('immobilien', 'laden', function(handelnder, daten) local liste = MySQL.query.await([[ SELECT i.id, i.name, i.ort, i.preis, i.besitzer, CONCAT(c.firstname, ' ', c.lastname) AS besitzerName FROM aether_admin_properties i LEFT JOIN aether_characters c ON c.id = i.besitzer ORDER BY i.id ]]) or {} -- Online-Charaktere zur Auswahl als Besitzer local online = {} local alle = exports['aether-core']:HoleAlleSpieler() or {} for _, d in pairs(alle) do online[#online + 1] = { charakterId = d.charakterId, name = (d.vorname or '?') .. ' ' .. (d.nachname or ''), } end return { immobilien = liste, spieler = online, rechte = Admin.Kern.RechteAbbild(handelnder.quelle) } end) Admin.Kern.Registriere('immobilien', 'zuweisen', function(handelnder, daten) local id = tonumber(daten.id) if not id then return nil, 'Ungültige Kennung.' end local besitzer = tonumber(daten.besitzer) -- nil = frei MySQL.update.await('UPDATE aether_admin_properties SET besitzer = ? WHERE id = ?', { besitzer, id }) Admin.Log.Schreibe(handelnder, 'Immobilie zugewiesen', 'Objekt #' .. id, besitzer and ('Charakter #' .. besitzer) or 'frei') return { ok = true } end) Admin.Kern.Registriere('immobilien', 'raeumen', function(handelnder, daten) local id = tonumber(daten.id) if not id then return nil, 'Ungültige Kennung.' end MySQL.update.await('UPDATE aether_admin_properties SET besitzer = NULL WHERE id = ?', { id }) Admin.Log.Schreibe(handelnder, 'Immobilie geräumt', 'Objekt #' .. id) return { ok = true } end)