aka Blue Posted July 12, 2016 Author Share Posted July 12, 2016 Hice dos partes, una en servidor y otra en cliente para usar el engineSetModelLODDistance. Ahora bien, ¿alguna idea para poder optimizarlo aún más o mejorarlo? Cliente: addEventHandler ( "onClientResourceStart", resourceRoot, function ( ) local objetos = getElementsByType ( "object" ) for i=1, #objetos do local v = objetos[i] local model = getElementModel(v) engineSetModelLODDistance(model, 100) -- Set maximum draw distance end end ) Servidor: local objetos = { } local mapas = { "barzumo.map", "ciudad.map", "concesabrina.map", "conce.map", "casastem.map", "ITV.map", "karts.map", "mapeozumo.map", "Prision.map", "Taller-LV.map", "Taller-MAACC.map", "ghetto.map" } addEventHandler ( "onResourceStart", resourceRoot, function ( ) for i=1, #mapas do local v = mapas[i] outputDebugString ( "Mapa: "..tostring ( v ).." cargado.", 3 ) local map = xmlLoadFile ( "mapas/"..v ) if map then local children = xmlNodeGetChildren ( map ) for i=1, #children do local value = children[i] if xmlNodeGetName ( value ) == "object" then table.insert ( objetos, { x = tonumber( xmlNodeGetAttribute( value, "posX" ) ), y = tonumber( xmlNodeGetAttribute( value, "posY" ) ), z = tonumber( xmlNodeGetAttribute( value, "posZ" ) ), rx = tonumber( xmlNodeGetAttribute( value, "rotX" ) ) or 0, ry = tonumber( xmlNodeGetAttribute( value, "rotY" ) ) or 0, rz = tonumber( xmlNodeGetAttribute( value, "rotZ" ) ) or 0, model = tonumber( xmlNodeGetAttribute( value, "model" ) ), interior = tonumber( xmlNodeGetAttribute( value, "interior" ) ) or 0, alpha = tonumber( xmlNodeGetAttribute( value, "alpha" ) ) or 255, scale = tonumber( xmlNodeGetAttribute( value, "scale" ) ) or 1, doublesided = xmlNodeGetAttribute( value, "doublesided" ) == "false" and 0 or 1, colision = xmlNodeGetAttribute( value, "collisions" ) == "false" and 0 or 1, dimension = tonumber( xmlNodeGetAttribute( value, "dimension" ) ) or 0, } ) else outputDebugString ( "Unsopported element: "..xmlNodeGetName ( value ), 2 ) end end end end for i=1, #objetos do local v = objetos [i] local x, y, z = v.x, v.y, v.z local rotx, roty, rotz = v.rx, v.ry, v.rz local model = v.model local interior = v.interior local alpha = v.alpha local scale = v.scale local doublesided = v.doublesided local collisions = v.colision local dimension = v.dimension object = createObject ( model, x, y, z ) if object then setElementRotation ( object, rotx, roty, rotz ) if doublesided == 1 then setElementDoubleSided ( object, true ) else setElementDoubleSided ( object, false ) end if collisions == 1 then setElementCollisionsEnabled ( object, true ) else setElementCollisionsEnabled ( object, false ) end setObjectScale ( object, scale ) setElementAlpha ( object, alpha ) setElementInterior ( object, interior ) setElementDimension ( object, dimension ) end end setFarClipDistance( 5000 ) setOcclusionsEnabled ( false ) end ) Link to comment
Tomas Posted July 12, 2016 Share Posted July 12, 2016 No lo hagas en el servidor, eso está causando el lag, cada elemento del servidor tendría que sincronizar toda la información de los mapas y es innecesario, hazlo en el cliente y verás que se soluciona el lag. Link to comment
aka Blue Posted July 12, 2016 Author Share Posted July 12, 2016 El problema está en que cuando lo paso a cliente no carga nada, no crea ningún objeto. Según el outputDebugString sí que carga los mapas pero no crea absolutamente nada, ningún objeto. ¿Alguna solucion?... El código es el de arriba. Link to comment
Tomas Posted July 12, 2016 Share Posted July 12, 2016 El problema está en que cuando lo paso a cliente no carga nada, no crea ningún objeto. Según el outputDebugString sí que carga los mapas pero no crea absolutamente nada, ningún objeto.¿Alguna solucion?... El código es el de arriba. En el client side para que se pueda leer un archivo lo tiene que tener descargado el cliente, tuviste eso en cuenta? Link to comment
aka Blue Posted July 12, 2016 Author Share Posted July 12, 2016 Uy, no, para nada. Entonces, añado los mapeos al meta.xml, no? Link to comment
Tomas Posted July 12, 2016 Share Posted July 12, 2016 Uy, no, para nada. Entonces, añado los mapeos al meta.xml, no? Yup. Link to comment
aka Blue Posted July 12, 2016 Author Share Posted July 12, 2016 Ahora veo un problema, pueden descargar los .map y quedarse con los mapeos, básicamente porque se añaden como file. ¿Algo que se pueda hacer al respecto? Y muchas gracias, ya está totalmente optimizado Link to comment
Tomas Posted July 13, 2016 Share Posted July 13, 2016 Ahora veo un problema, pueden descargar los .map y quedarse con los mapeos, básicamente porque se añaden como file. ¿Algo que se pueda hacer al respecto? Y muchas gracias, ya está totalmente optimizado Cargas los archivos desde el server-side (como lo estabas haciendo antes) y triggeas el createObject y sus funciones anidadas al cliente. Link to comment
Recommended Posts