Hallo ihr lieben,
Ich hab ein Problem und zwar möchte ich die Terminals und Cams auf der Datenbank des Servers haben. Es geht also um eine MySQL Datenbank die auch schon eingerichtet ist usw usw...
Auf dem Server ist das Module installiert und läuft auch schon. Nur iwie will da was nicht so richtig gehen und da ist bei mir mein fachwissen auch wieder weg -.-
Es geht um folgende Funktion:
function cctvDB(action, id, data)
if action == "create" then
local checkT = mysql_query(handler, "SELECT name, loc, interior, restricted, access, options from cctvterminals")
if not checkT then
local alter = mysql_query(handler, "SELECT name from cctvterminals")
if not alter then
mysql1 = mysql_query(handler, "CREATE TABLE cctvterminals (name TEXT, loc TEXT, interior INTEGER, restricted INTEGER, access TEXT, options TEXT) DEFAULT CHARSET=latin1")
outputChatBox("CCTV: DB: Created terminal table", root, 0, 222, 222, true)
else
mysql = mysql_query(handler, "ALTER TABLE cctvterminals ADD COLUMN options TEXT DEFAULT '0'")
outputChatBox("CCTV: DB: Updated terminal table structure", root, 0, 222, 222, true)
end
end
local checkC = mysql_query(handler, "SELECT name, type, terminal, loc, interior, target, color, scan, zoom, motor, options from cctvcameras")
if not checkC then
local alter = mysql_query(handler, "SELECT name from cctvcameras")
if not alter then
mysql6 = mysql_query(handler, "CREATE TABLE cctvcameras (name TEXT, type INTEGER, terminal TEXT, loc TEXT, interior INTEGER, target TEXT, color TEXT, scan TEXT, zoom BOOL, motor BOOL, options TEXT) DEFAULT CHARSET=latin1")
outputChatBox("CCTV: DB: Created camera table", root, 0, 222, 222, true)
else
mysq4 = mysql_query(handler, "ALTER TABLE cctvcameras ADD COLUMN options TEXT DEFAULT '0'")
outputChatBox("CCTV: DB: Updated camera table structure", root, 0, 222, 222, true)
end
end
elseif action == "load" then
cctvT = nil
cctvC = nil
cctvT = {}
cctvC = {}
term = mysql_query(handler, "SELECT name, loc, interior, restricted, access, options from cctvterminals")
if #term > 0 then
for id,terminal in ipairs(term) do
cctvT[terminal.name] = {}
cctvT[terminal.name].name = terminal.name
cctvT[terminal.name].x = tonumber(gettok(terminal.loc,1,32))
cctvT[terminal.name].y = tonumber(gettok(terminal.loc,2,32))
cctvT[terminal.name].z = tonumber(gettok(terminal.loc,3,32))
cctvT[terminal.name].rz = tonumber(gettok(terminal.loc,4,32))
cctvT[terminal.name].mr = tonumber(gettok(terminal.loc,5,32)) or 1
cctvT[terminal.name].mg = tonumber(gettok(terminal.loc,6,32)) or 200
cctvT[terminal.name].mb = tonumber(gettok(terminal.loc,7,32)) or 200
cctvT[terminal.name].ma = tonumber(gettok(terminal.loc,8,32)) or 127
cctvT[terminal.name].dimension = tonumber(gettok(terminal.loc,9,32)) or 0
cctvT[terminal.name].interior = tonumber(terminal.interior)
cctvT[terminal.name].restricted = tonumber(terminal.restricted)
cctvT[terminal.name].access = tostring(terminal.access)
cctvT[terminal.name].onlymarker = tonumber(gettok(terminal.options,1,32)) or 0
cctvT[terminal.name].markersize = tonumber(gettok(terminal.options,2,32)) or 2
cctvT[terminal.name].camcount = 0
end
end
local cams = mysql_query(handler, "SELECT name, type, terminal, loc, interior, target, color, scan, zoom, motor, options from cctvcameras")
if #cams > 0 then
for id,camera in ipairs(cams) do
cctvC[camera.name] = {}
cctvC[camera.name].name = camera.name
cctvC[camera.name].type = tonumber(camera.type)
cctvC[camera.name].terminal = camera.terminal
cctvC[camera.name].x = tonumber(gettok(camera.loc,1,32))
cctvC[camera.name].y = tonumber(gettok(camera.loc,2,32))
cctvC[camera.name].z = tonumber(gettok(camera.loc,3,32))
cctvC[camera.name].dimension = tonumber(gettok(camera.loc,4,32)) or 0
cctvC[camera.name].interior = tonumber(camera.interior)
cctvC[camera.name].angle = tonumber(gettok(camera.target,1,32))
cctvC[camera.name].height = tonumber(gettok(camera.target,2,32))
cctvC[camera.name].fov = tonumber(gettok(camera.target,3,32))
cctvC[camera.name].r = tonumber(gettok(camera.color,1,32))
cctvC[camera.name].g = tonumber(gettok(camera.color,2,32))
cctvC[camera.name].b = tonumber(gettok(camera.color,3,32))
cctvC[camera.name].scanlines = tonumber(gettok(camera.scan,1,32))
cctvC[camera.name].scansize = tonumber(gettok(camera.scan,2,32))
cctvC[camera.name].flicker = tonumber(gettok(camera.scan,3,32))
cctvC[camera.name].ir = tonumber(gettok(camera.scan,4,32) or 0)
cctvC[camera.name].nv = tonumber(gettok(camera.scan,5,32) or 0)
cctvC[camera.name].zoom = camera.zoom
cctvC[camera.name].motor = camera.motor
if cctvT[camera.terminal] then cctvT[camera.terminal].camcount = cctvT[camera.terminal].camcount + 1 end
end
end
elseif action == "addcam" then
local cname = id
local ctype = data.type
local cterminal = data.terminal
local cloc = data.x.." "..data.y.." "..data.z.." "..data.dimension
local cinterior = data.interior
local ctarget = data.angle.." "..data.height.." "..data.fov
local ccolor = data.r.." "..data.g.." "..data.b
local cscan = data.scanlines.." "..data.scansize.." "..data.flicker.." "..data.ir.." "..data.nv
local zoom = tonumber(data.zoom)
local motor = tonumber(data.motor)
local opts = "0"
mysql11 = mysql_query(handler, "DELETE FROM cctvcameras WHERE name = '"..id.."'")
mysql11 = mysql_query(handler, "INSERT INTO cctvcameras (name, type, terminal, loc, interior, target, color, scan, zoom, motor, options) VALUES ('"..cname.."', '"..ctype.."', '"..cterminal.."', '"..cloc.."', '"..cinterior.."', '"..ctarget.."', '"..ccolor.."', '"..cscan.."', '"..zoom.."', '"..motor.."', '"..opts.."'")
elseif action == "delcam" then
executeSQLDelete("cctvcameras", "name = '"..id.."'")
elseif action == "addterm" then
local tname = id
local tloc = data.x.." "..data.y.." "..data.z.." "..data.rz.." "..data.mr.." "..data.mg.." "..data.mb.." "..data.ma.." "..data.dimension
local tinterior = data.interior
local trestricted = data.restricted
local taccess = tostring(data.access)
local toptions = data.onlymarker.." "..data.markersize
executeSQLDelete("cctvterminals", "name = '"..id.."'")
executeSQLInsert("cctvterminals", "'"..tname.."', '"..tloc.."', '"..tinterior.."', '"..trestricted.."', '"..taccess.."', '"..toptions.."'")
elseif action == "delterm" then
executeSQLDelete("cctvterminals", "name = '"..id.."'")
elseif action == "reset" then
executeSQLDropTable("cctvcameras")
executeSQLDropTable("cctvterminals")
cctvDB("create")
end
end
Alles anzeigen
Es ist noch nicht alles geändert worden also net wundern *rolleyes*
Beim starten kommt folgender Fehler und Auswurf:
Zitat[19:29:15] restart: Resource restarting...
[19:29:15] Stopping cctv
[19:29:15] Starting cctv
[19:29:15] INFO: [CCTV] Verbindung zur Datenbank erfolgreich abgeschlossen
[19:29:15] ERROR: cctv/cctv.lua:84: attempt to get length of global 'term' (a userdata value)
[19:29:15] cctv restarted successfully
Jetzt die Frage: Wie muss ich das dann jetzt umändern das es geht?
Die Tabellen werden alle erstellt also das klappt nur werden die nicht gefüllt mit Daten *thumbdown*
Danke für eure Antworten