Razor64 Posted July 31, 2018 Share Posted July 31, 2018 Hola y buen dia, tengo un problema con script que lee mapas y almacena los datos en tablas, el problema está en que al ejecutar la funcion toda la informacion se almacena en la memoria RAM (pienso que asi es como trabaja) y no encuentro la forma correcta de vaciar esa memoria usada por el script, entonces esto provoca que al ejcutarse varias veces el mismo, se termine consumiendo la meroia del VPS hasta bloquearlo. He probado con varias formas pero ninguna parece funcionar, les adjunto toda la informacion y esperoque puedan ayudarme con este problema. local cacheRead = {} function readMapData(executeElement, mapName) cacheRead[executeElement] = { objects = {}; vehicles = {}; peds = {}; markers = {}; } local meta = xmlLoadFile(":"..mapName.."/meta.xml") if meta then for i, metaData in ipairs(xmlNodeGetChildren(meta)) do local metaTypeData = xmlNodeGetName(metaData) if metaTypeData == "map" then local metaMapFileMap = xmlNodeGetAttribute(metaData,"src") if metaMapFileMap then local mapFile = xmlLoadFile(":"..mapName.."/"..metaMapFileMap) if mapFile then for index, elementsMap in ipairs(xmlNodeGetChildren(mapFile)) do local mapTypeNode = xmlNodeGetName(elementsMap) if mapTypeNode == "object" then table.insert(cacheRead[executeElement]["objects"] ,{ modelId = tonumber(xmlNodeGetAttribute(elementsMap,"model")), interiorID = tonumber(xmlNodeGetAttribute(elementsMap, "interior")) or 0, posX = tonumber(xmlNodeGetAttribute(elementsMap,"posX")), posY = tonumber(xmlNodeGetAttribute(elementsMap,"posY")), posZ = tonumber(xmlNodeGetAttribute(elementsMap,"posZ")), rotX = tonumber(xmlNodeGetAttribute(elementsMap,"rotX")) or 0, rotY = tonumber(xmlNodeGetAttribute(elementsMap,"rotY")) or 0, rotZ = tonumber(xmlNodeGetAttribute(elementsMap,"rotZ")) or 0, }) elseif mapTypeNode == "vehicle" then table.insert(cacheRead[executeElement]["vehicles"] ,{ paintjobID = tonumber(xmlNodeGetAttribute(elementsMap,"paintjob")) or 3, interiorID = tonumber(xmlNodeGetAttribute(elementsMap, "interior")) or 0, dimensionID = tonumber(xmlNodeGetAttribute(elementsMap, "dimension")) or 0, modelID = tonumber(xmlNodeGetAttribute(elementsMap,"model")) or 411, plate = tonumber(xmlNodeGetAttribute(elementsMap,"plate")) or "LATIN-SV", posX = tonumber(xmlNodeGetAttribute(elementsMap,"posX")) or 0, posY = tonumber(xmlNodeGetAttribute(elementsMap,"posY")) or 0, posZ = tonumber(xmlNodeGetAttribute(elementsMap,"posZ")) or 0, rotX = tonumber(xmlNodeGetAttribute(elementsMap,"rotX")) or 0, rotY = tonumber(xmlNodeGetAttribute(elementsMap,"rotY")) or 0, rotZ = tonumber(xmlNodeGetAttribute(elementsMap,"rotZ")) or 0, }) elseif mapTypeNode == "ped" then table.insert(cacheRead[executeElement]["peds"] ,{ modelID = tonumber(xmlNodeGetAttribute(elementsMap,"model")) or 0, interiorID = tonumber(xmlNodeGetAttribute(elementsMap, "interior")) or 0, dimensionID = tonumber(xmlNodeGetAttribute(elementsMap, "dimension")) or 0, posX = tonumber(xmlNodeGetAttribute(elementsMap,"posX")) or 0, posY = tonumber(xmlNodeGetAttribute(elementsMap,"posY")) or 0, posZ = tonumber(xmlNodeGetAttribute(elementsMap,"posZ")) or 0, rotZ = tonumber(xmlNodeGetAttribute(elementsMap,"rotZ")) or 0, alpha = tonumber(xmlNodeGetAttribute(elementsMap,"alpha")) or 255, frozen = tonumber(xmlNodeGetAttribute(elementsMap,"frozen")) or "false", }) elseif mapTypeNode == "marker" then table.insert(cacheRead[executeElement]["markers"] ,{ theType = xmlNodeGetAttribute(elementsMap, "type"), interiorID = tonumber(xmlNodeGetAttribute(elementsMap, "interior")) or 0, posX = tonumber(xmlNodeGetAttribute(elementsMap, "posX")), posY = tonumber(xmlNodeGetAttribute(elementsMap, "posY")), posZ = tonumber(xmlNodeGetAttribute(elementsMap, "posZ")), rotX = tonumber(xmlNodeGetAttribute(elementsMap,"rotX")) or 0, rotY = tonumber(xmlNodeGetAttribute(elementsMap,"rotY")) or 0, rotZ = tonumber(xmlNodeGetAttribute(elementsMap,"rotZ")) or 0, size = tonumber(xmlNodeGetAttribute(elementsMap, "size")), color = xmlNodeGetAttribute(elementsMap, "color"), }) end end xmlSaveFile(mapFile) xmlUnloadFile(mapFile) else return false end end end end xmlSaveFile(meta) xmlUnloadFile(meta) outputDebugString('Fueron leidos los datos del mapa ( '..mapName..' ) correctamente' , 0, 0, 255, 0) meta = nil metaTypeData = nil metaMapFileMap = nil mapFile = nil return cacheRead[executeElement] else outputDebugString('Se produjo un error al leer los datos del mapa ( '..mapName..' )' , 0, 255, 0, 0) return false end end Link to comment
MisterQuestions Posted August 14, 2018 Share Posted August 14, 2018 Elimina el map cache cuando el mapa ya no se use? 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