Jump to content

Data e o lag


Recommended Posts

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

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
  • Thanks 2
Link to comment
  • Moderators

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.

  • Thanks 1
Link to comment

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