Homer Simpson Posted January 4, 2020 Share Posted January 4, 2020 Bueno, os explico estoy intentando hacer un sistema en entornos en mi servidor pero tengo 2 problemas y son los siguientes : No detecta la ID y el texto, la ID se inserta en la base de datos pero el texto no. Espero que puedan ayudarme, gracias. local elements = { } local function loadText( id, text, x, y, z, interior, dimension ) local element = createElement( "3dtext" ) setElementPosition( element, x, y, z ) setElementInterior( element, interior ) setElementDimension( element, dimension ) setElementData( element, "text", tostring( text ) ) elements[ id ] = element end addEventHandler( "onResourceStart", resourceRoot, function( ) local result = dbPoll(dbQuery(handler, "SELECT * FROM 3dtext ORDER BY textID ASC" ),-1) if result then for key, data in ipairs( result ) do loadText( data.textID, data.text, data.x, data.y, data.z, data.interior, data.dimension ) end end end ) local function createxto(player,cmd,textID,...) if GetElementData(player,"NivelAdmin", 5) then local text = table.concat( { ... }, " " ) local x, y, z = getElementPosition( player ) local insertid = dbExec ( handler, "INSERT INTO `3dtext`(`text`, `x`, `y`, `z`, `interior`, `dimension`) VALUES (?,?,?,?,?,?)", text, x, y, z, getElementInterior( player ),getElementDimension( player ) ) if insertid then loadText( insertid, text, x, y, z, getElementInterior( player ), getElementDimension( player ) ) outputChatBox( "Texto creado. (ID " .. insertid .. ")", player, 0, 255, 0 ) else outputDebugString( e ) outputChatBox( "Error MYSQL.", player, 255, 0, 0 ) end else outputChatBox( "Comando: /" .. cmd .. " [texto]", player, 255, 255, 255 ) end end addCommandHandler("creartextoentorno",createxto) En el debugscript me da el siguiente error : Que en la línea 37 : attempt to concatenate local 'insertid' (a boolean value) Y así es como se crea : https://imgur.com/2Je5B9T 1 Link to comment
Enargy, Posted January 4, 2020 Share Posted January 4, 2020 Me tomé la libertad de organizar mejor tu código, no está probado pero el código se ve "bien". local elements = { } local function loadText(id, text, x, y, z, interior, dimension, saveInDB) if id and elements[id] then return false end if type(x) ~= "number" or type(y) ~= "number" or type(z) ~= "number" then return false end if saveInDB then if not handler then return false end dbExec(handler, "INSERT INTO `3dtext`(`textID`, `text`, `x`, `y`, `z`, `interior`, `dimension`) VALUES (?,?,?,?,?,?,?)", id, text, x, y, z, interior, dimension) end interior = interior or 0 dimension = dimension or 0 elements[id] = createElement("3dtext") setElementPosition(elements[id], x, y, z) setElementInterior(elements[id], interior) setElementDimension(elements[id], dimension) setElementData(elements[id], "text", tostring(text)) return elements[id] end addEventHandler("onResourceStart", resourceRoot, function() local qh = dbQuery(handler, "SELECT * FROM 3dtext ORDER BY textID ASC") local result = qh and dbPoll(qh, -1) if result then for key, data in ipairs(result) do loadText(data.textID, data.text, data.x, data.y, data.z, data.interior, data.dimension, false) end end end ) local function createxto(player, cmd, textID, ...) if textID then if ((getElementData(player, "NivelAdmin", 5) or 0) == 5) then if textID and elements[textID] then outputChatBox( "Esta ID ya existe!", player, 255, 0, 0 ) return end local text = table.concat({ ... }, " ") local x, y, z = getElementPosition(player) loadText(textID, text, x, y, z, getElementInterior(player), getElementDimension(player), true) outputChatBox("Texto creado. (ID " .. textID .. ")", player, 0, 255, 0) else outputChatBox("No tienes permiso para usar este comando!", player, 255, 255, 255) end else outputChatBox("Comando: /" .. cmd .. " [ID] [texto]", player, 255, 255, 255) end end addCommandHandler("creartextoentorno", createxto) 1 Link to comment
Homer Simpson Posted January 4, 2020 Author Share Posted January 4, 2020 Muchisimas gracias 1 Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now