-Rex- Posted July 28, 2016 Posted July 28, 2016 Bueno como dicen algunos en el foro, Que los elementData ocupan muchos recursos. Pensaba que en vez de usar setElementData, se pueda Almacenar todo en una tabla. Y quisiera saber que ocupa mas recursos, Usar setElementData para guardar Datos o Usar Tablas? PD: Estoy tratando de optimizar mi DayZ
Enargy, Posted July 28, 2016 Posted July 28, 2016 los elementData consumen cpu porque tiene que sincronizarse ambos lados (cliente y servidor), pero al usar setElementData hay un argumento que funciona para manipular esa sincronización, si lo pasas a false solamente el valor va ser asignado en el lado donde está y no podrá leerse el dato desde el otro lado. Al usar tabla es lo mismo que setElementData sin haberse sincronizado. setElementData(element, "dataname", toJSON({"valor1", "valor2", "valor3"}), false) -- ó tabla = {"valor1", "valor2", "valor3"}
-Rex- Posted July 28, 2016 Author Posted July 28, 2016 los elementData consumen cpu porque tiene que sincronizarse ambos lados (cliente y servidor), pero al usar setElementData hay un argumento que funciona para manipular esa sincronización, si lo pasas a false solamente el valor va ser asignado en el lado donde está y no podrá leerse el dato desde el otro lado. Al usar tabla es lo mismo que setElementData sin haberse sincronizado. setElementData(element, "dataname", toJSON({"valor1", "valor2", "valor3"}), false) -- ó tabla = {"valor1", "valor2", "valor3"} Entonces eso significa, que saldría lo mismo usando tablas?
EstrategiaGTA Posted July 28, 2016 Posted July 28, 2016 Yo te recomendaría en la medida de lo posible utilizar tablas. Utiliza elementData cuando necesites acceder a esos datos desde otro resource, o desde el otro lado (client-server).
Enargy, Posted July 28, 2016 Posted July 28, 2016 los elementData consumen cpu porque tiene que sincronizarse ambos lados (cliente y servidor), pero al usar setElementData hay un argumento que funciona para manipular esa sincronización, si lo pasas a false solamente el valor va ser asignado en el lado donde está y no podrá leerse el dato desde el otro lado. Al usar tabla es lo mismo que setElementData sin haberse sincronizado. setElementData(element, "dataname", toJSON({"valor1", "valor2", "valor3"}), false) -- ó tabla = {"valor1", "valor2", "valor3"} Entonces eso significa, que saldría lo mismo usando tablas? Si, salvo que al usar el método de setElementData que te di tendrías que llamar dos funciones al momento de leer la tabla, getElementData y fromJSON. es mas practico y eficiente para mi usar tablas comunes
MisterQuestions Posted July 30, 2016 Posted July 30, 2016 Usar setElementData, con una tabla si tiene bastantes datos no creo sea conveniente. Esto se debe a que cuando se setea un dato ya sea en el cliente o el servidor, se sincronizan. Y por ende consume un ancho de banda, y si no es nada ligero, no será conveniente.
Enargy, Posted July 30, 2016 Posted July 30, 2016 Usar setElementData, con una tabla si tiene bastantes datos no creo sea conveniente.Esto se debe a que cuando se setea un dato ya sea en el cliente o el servidor, se sincronizan. Y por ende consume un ancho de banda, y si no es nada ligero, no será conveniente. Para eso esta la opción de activar o desactivar dicha sincronización.
aka Blue Posted July 30, 2016 Posted July 30, 2016 Yo uso los elementData para cosas pequeñas (valores numéricos más que nada), aunque si lo quieres optimizado, usa tablas, es bastante recomendable. Yo las uso de esta forma: local p = { } -- Cuando entra, por ejemplo p[ player ].sed = tonumber( sed ) p[ player ].hambre = tonumber( hambre ) -- Get valores function getSed( player ) if player then local sed = p[ player ].sed if sed then return sed end return false end return false end function getHambre( player ) if player then local hambre = p[ player ].hambre if hambre then return hambre end return false end return false end
-Rex- Posted July 30, 2016 Author Posted July 30, 2016 Para que tantos return? Basta con uno. local p = { } -- Cuando entra, por ejemplo p[ player ].sed = tonumber( sed ) p[ player ].hambre = tonumber( hambre ) -- Get valores function getSed( player ) if player then local sed = p[ player ].sed if sed then return sed end end end function getHambre( player ) if player then local hambre = p[ player ].hambre if hambre then return hambre end end end
aka Blue Posted July 30, 2016 Posted July 30, 2016 Es para enviar false en caso de que no se haya usado correctamente la función, pero claro, eso es gusto de cada uno.
Tomas Posted July 30, 2016 Posted July 30, 2016 Es para enviar false en caso de que no se haya usado correctamente la función, pero claro, eso es gusto de cada uno. function getSed( player ) return player and p[ player ].sed or false end Mas simple.
Recommended Posts