KiritoAguiar Posted September 16, 2021 Share Posted September 16, 2021 Então eu to fazendo um script e me bateu uma duvida se eu criar um settimer q se repete infinito a cada 1 segundo, isso pode causar lag no server/host do servidor? ou é só doideira? Link to comment
Other Languages Moderators androksi Posted September 16, 2021 Other Languages Moderators Share Posted September 16, 2021 Olá! Off-topic: Pedi para moverem o seu tópico da seção Inglesa para a nossa, Portuguesa. Acredito que você tenha errado aí o botão. On-topic: Isso vai depender do que o setTimer está processando. Por exemplo, digamos que seja isto: setTimer(function() outputChatBox("* Enviando mensagem para todos os jogadores a cada segundo!", root, 255, 255, 255, true) end, 1000, 0) Com certeza não vai causar impacto algum no servidor. É apenas uma linha de código, e a função é bem simples. Agora, se você deseja usar um laço de repetição em todos os jogadores e processar banco de dados junto, ou sei lá mais o que - daí sim nós teremos um problema. Um grande problema, aliás. Não sei qual é o seu nível de experiência com a linguagem Lua, nem com a base do MTA:SA. Mesmo que seja bastante, ainda assim não seria suficiente para realizar as devidas otimizações. Uma boa solução possível é usar a lib Async (link1, link2). Ela cria uma thread para processar os dados, de maneira lenta e sem causar problemas de desempenho no servidor. Digamos que você tenha uma tabela e queira usar o async. Você usaria desta maneira: setTimer(function() local players = getElementsByType("player") Async:foreach(players, false, function(player) local playerName = getPlayerName(player) outputChatBox("* Este é o seu nickname: " .. playerName, player, 255, 255, 255, true) end) end, 1000, 0) Os parâmetros do método foreach são: Uma tabela - Usei a tabela de jogadores mesmo, como exemplo Um valor true ou false - Sinalizando se a tabela é pairs ou ipairs Uma função - Que recebe no parâmetro o valor de cada iteração (também há o segundo parâmetro, que seria o índice. Optei por não utilizar) Caso tenha ficado alguma dúvida, só perguntar. 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