Isso vai dar Lag? -
Ever_SH - 03.01.2016
Estou com uma dъvida, geralmente os cуdigos que faзo, funcionam, sу que sempre faзo eles do pior jeito possнvel(menos otimizado).
Primeiramente, eu criei uma Callback chamada "Update", ela й chamada a cada segundo, e toda vez que ela й chamada, passa um loop em todos os players, e faz coisas como diminuir tempo preso, atualizar velocimetro e etc.
Estб certo este jeito? Ou devo criar um timer para cada jogador quando ele se conecta? Assim evitando um Loop a cada 1 segundo.
Essa foi uma dъvida pequena, agr tem a dъvida que foi o motivo de eu criar o tуpico, eu gostaria que sempre que alguйm fosse em frente alguma porta, Aparecesse uma mensagem(GameText), escrito /entrar.
Eu fiz o seguinte:
PHP Code:
//...
for(new Proc = 0; Proc < MAX_EMRESAS; Proc++)
{
if(IsPlayerInRangeOfPoint(playerid, 2, EntradaEmpresas[Proc][EmpX], EntradaEmpresas[Proc][EmpY], EntradaEmpresas[Proc][EmpZ]))
{
GameTextForPlayer(playerid, "/Entrar", 1000, 5);
return 1;
}
}
//...
O problema й que, a cada segundo, a Callback Update й chamada, e dб um loop em todos os player online, e a cada volta desse loop, acontece mais um loop para ver se o player estб perto de uma das entradas.
Obs: MAX_EMPRESAS й igual 200.
Tem algum jeito de fazer isso, sem causar lag?
Re: Isso vai dar Lag? -
connork - 03.01.2016
Por que ao invйs de utilizar checagens de бreas em loop nгo utiliza a Streamer? (Se jб houver o uso dela em seu game-mode).
Nгo vai prejudicar em nada o desempenho. Й mais simples e bem melhor do que ficar utilizando timers para isto.
Code:
CreateDynamicCylinder(Float:x, Float:y, Float:minz, Float:maxz, Float:size, worldid = -1, interiorid = -1, playerid = -1);
OnPlayerEnterDynamicArea(playerid, areaid);
nPlayerLeaveDynamicArea(playerid, areaid);
Re: Isso vai dar Lag? -
Shadoww5 - 03.01.2016
Acredito que nгo hб necessidade de ficar tгo pirado com esse negуcio de "otimizaзгo". Seu servidor nгo deve ter uns 200 jogadores, de modo que o lag nгo й tгo perceptнvel. A outra opзгo para a sua CallBackUpdate й colocar no OnPlayerUpdate, mas esta й atualizada com ainda mais frequкncia. Acho que o cуdigo deve permanecer como estб.
Re: Isso vai dar Lag? -
Ever_SH - 03.01.2016
Quote:
Originally Posted by connork
Por que ao invйs de utilizar checagens de бreas em loop nгo utiliza a Streamer? (Se jб houver o uso dela em seu game-mode).
Nгo vai prejudicar em nada o desempenho. Й mais simples e bem melhor do que ficar utilizando timers para isto.
Code:
CreateDynamicCylinder(Float:x, Float:y, Float:minz, Float:maxz, Float:size, worldid = -1, interiorid = -1, playerid = -1);
OnPlayerEnterDynamicArea(playerid, areaid);
nPlayerLeaveDynamicArea(playerid, areaid);
|
Ok, eu nгo conhecia essa funзгo, vou tentar usar ela.
Quote:
Originally Posted by Shadoww5
Acredito que nгo hб necessidade de ficar tгo pirado com esse negуcio de "otimizaзгo". Seu servidor nгo deve ter uns 200 jogadores
|
Nem abriu, й apenas um projeto ainda, mas de qualquer forma, eu gostaria de ter ele feito da melhor forma possivel
Re: Isso vai dar Lag? -
arakuta - 03.01.2016
Vocк deveria usar gettime para calcular intervalos de tempo, e nгo timers.
Re: Isso vai dar Lag? -
CaioTJF - 03.01.2016
Sempre usei timers de um segundo pra fazer essas coisas e nunca tive problemas
Mas й bom vocк criar sу um.
Re: Isso vai dar Lag? -
JonathanFeitosa - 03.01.2016
Bem, й bem melhor utilizar SetTimerEx do que SetTimer com Loop, sem dъvida alguma. Ainda mais para aqueles que ainda utilizam MAX_PLAYERS ao invйs de GetPlayerPoolSize.
Re: Isso vai dar Lag? -
Ever_SH - 03.01.2016
Quote:
Originally Posted by JonathanFeitosa
Bem, й bem melhor utilizar SetTimerEx do que SetTimer com Loop, sem dъvida alguma. Ainda mais para aqueles que ainda utilizam MAX_PLAYERS ao invйs de GetPlayerPoolSize.
|
Era exatamente essa uma das minhas dъvidas, eu atй uso GetPlayerPoolSize, mas ainda tinha duvida se eu deveria usar SetTimer com Loop ou SetTimerEx quando alguem conecta.
Re: Isso vai dar Lag? -
GabrielCOP - 04.01.2016
Й claro que nгo, mano; o cara sу envia uma mensagem (gametext).