Jump to content

Data e o lag


Recommended Posts

Posted

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...

  • Moderators
Posted (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 by Lord Henry

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted
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?

Posted

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.

Please do not PM me with scripting related question nor support, use the forums instead.

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...