zMpyster Posted February 23, 2019 Share Posted February 23, 2019 Estou criando um servidor e queria usar alguns accountsDatas só que tenho medo de fazer o script e o server começar a lagar dps de um tempo, o meu server atualmente é de 200 slots e hd ilimitado, estou usando + ou - uns 50 setAccountData, na WIKI diz que tem que tomar cuidado com a quantidade de datas usadas, queria que alguém me desse um valor ou então me falasse como posso verificar se o server estiver lagando será por causa dos accountsDatas, o meu server não está lagando, más quero prevenir... Link to comment
Other Languages Moderators Lord Henry Posted February 23, 2019 Other Languages Moderators Share Posted February 23, 2019 (edited) Use o resource ipb que já vem instalado no servidor. Ele mostra quanto cada resource está consumindo do seu servidor. Pra abrir a interface dele use /ipb Edited February 23, 2019 by Lord Henry 2 Link to comment
zMpyster Posted February 23, 2019 Author Share Posted February 23, 2019 11 minutes ago, Lord Henry said: Use o resource ipb que já vem instalado no servidor. Ele mostra quanto cada resource está consumindo do seu servidor. Pra abrir a interface dele use /ipb Tem alguma taxa considerada muito alta ou alta? Link to comment
DNL291 Posted February 23, 2019 Share Posted February 23, 2019 Account-data é utilizado para salvar e carregar os dados. Se vai pesar no banco de dados setando várias vezes, aí eu não sei se vai mesmo afetar ou o quanto vai afeitar. Você pode otimizar o salvamento definindo múltiplos valores para um registro, exemplo: local x,y,z = getElementPosition(thePlayer) local _,_,rot = getElementRotation(thePlayer) local acc = getPlayerAccount(thePlayer) -- não recomendado setAccountData( acc, "player_x", tostring(x) ) setAccountData( acc, "player_y", tostring(y) ) setAccountData( acc, "player_y", tostring(z) ) setAccountData( acc, "player_rot", tostring(rot) ) Otimizando: local x,y,z = getElementPosition(thePlayer) local _,_,rot = getElementRotation(thePlayer) local acc = getPlayerAccount(thePlayer) -- Com JSON setAccountData( acc, "player_pos", toJSON( {x, y, z, rot} ) ) -- Ou: setAccountData( acc, "player_pos", tostring(x)..", "..tostring(y)..", "..tostring(z)..", "..tostring(rot) ) Você pode usar esta função para reduzir o tamanho decimal: https://wiki.multitheftauto.com/wiki/Math.round; Ou a função Lua string.format() Com string.format: local p_pos = string.format( "%.4f,%.4f,%.4f,%.4f", x,y,z,rot ) -- salvando na conta: setAccountData( acc, "player_pos", p_pos ) Obtendo os valores separados por vírgula e JSON: local playerPosData = getAccountData( acc, "player_pos" ) if playerPosData then local pos = split( playerPosData, ',' ) local x,y,z,rot = pos[1], pos[2], pos[3], pos[4] end -- Obtendo os valores salvos com JSON: local playerPosData = getAccountData( acc, "player_pos" ) if playerPosData then local pos = fromJSON( playerPosData ) local x,y,z,rot = pos[1], pos[2], pos[3], pos[4] end Saí um pouco do assunto. Mas voltando ao que você mencionou da Wiki sobre account-data: Na verdade isso se aplica ao element-data, é recomendado evitar o excesso de setElementData sincronizado entre client/server para ter o menor uso de tráfego de rede. E também substituir o seu uso por tabelas preferencialmente. Para ver o desemprenho/performance dos seus scripts tem o resource ipb já mencionado e o performancebrowser que você pode analisar também o lado cliente. Sobre usar 50 account-data, sinceramente eu nunca usei essa quantidade em cada conta, você pode reduzir a quantidade de registros por fazer uma compactação com os métodos mostrados acima. Você também pode optar pelo banco de dados SQL. 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