Jump to content

Ayuda con tablas


Razor64

Recommended Posts

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

 

pW9B22D.pngnaSorYM.pngMMvsmSK.png

Link to comment
  • 2 weeks later...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...