Bug ao Contar players! -
best95 - 01.08.2016
esta contando somente os tres primeiro que logam...
pawn Код:
ContarJogadores()
{
new Jogadores = 0;
for(new i = 0; i < MAX_PLAYERS; ++i){
if(IsPlayerConnected(i))
Jogadores++;
}
return Jogadores;
}
forward PlayersOnline(playerid);
public PlayersOnline(playerid)
{
format(String, sizeof(String), "%d/%d", ContarJogadores(), MAX_PLAYERS);
TextDrawSetString(Players, String);
return 1;
}
Re: Bug ao Contar players! -
Mark009 - 01.08.2016
Код HTML:
ContarJogadores()
{
new Jogadores = 0;
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
Jogadores++;
}
}
return Jogadores;
}
Re: Bug ao Contar players! -
F1N4L - 01.08.2016
@Mark009
Faltou declarar a var
j
@topic
Aparentemente nгo estб errado.
Faзa algo prбtico evitando um timer, coisa realmente simples:
Код:
new Jogadores, String[8], Text:Players;
public OnPlayerConnect(playerid)
{
Jogadores ++;
format(String, sizeof(String), "%03d/%03d", Jogadores, MAX_PLAYERS);
TextDrawSetString(Players, String);
return true;
}
public OnPlayerDisconnect(playerid, reason)
{
Jogadores --;
format(String, sizeof(String), "%03d/%03d", Jogadores, MAX_PLAYERS);
TextDrawSetString(Players, String);
return true;
}
Desta maneira nгo precisamos verificar a cada segundo, somente ao conectar e desconectar!
Re: Bug ao Contar players! -
WLSF - 01.08.2016
best95, Ambas as 2 soluзхes postadas acima estгo corretas, e melhores que a sua em questхes de performance.
Sу gostaria de enfatizar que a resposta do F1N4L parece ser a mais bacana, eu havia publicado um source desse estilo no meu pastebin 3 anos atrбs, que era exatamente oque eu usava nos meus projetos:
http://pastebin.com/YTjkqu9M
Se vocк for calcular o quгo melhor й isso, imagina o seguinte:
Toda vez que um usuбrio efetuar login, ele vai somar + 1 na variбvel global jogadores, oque й uma operaзгo normal, simples e rбpida pro processador.
A partir do momento que vocк comeзa a rodar um loop no seu cуdigo, vocк comeзa a deixar seu cуdigo mais lento, pois vocк vai rodar MAX_PLAYERS que й equivalente ao numero maxplayers do seu server config.
Imagina se for MAX_PLAYERS = 500, vocк vai rodar 500 vezes pra saber quantos users estгo logados.
Imagina agora se o seu server receber 1 login por min, vocк vai executar 500 vezes essa mesma estrutura por min (500/min), impedindo o resto do cуdigo que deveria receber prioridade de ser executado, pois pawn nгo й multi-threading.
No total de 10 min vocк teria 10x500 = 5000
Se pra tudo no seu servidor, vocк pensar em loop/if-else, quando chegar a hora de colocar seu GM online, vocк vai notar que seu GM nгo aguenta nada de users onlines, e vai exigir que vocк gaste bem mais com servidores, e qualquer /ping na tentativa de simular um DOS no seu server vai fazer ele cair, sem contar as possibilidades de crashs
+ rep pros que responderam
Re: Bug ao Contar players! -
best95 - 01.08.2016
warning 203: symbol is never used: "ContarJogadores"
Re: Bug ao Contar players! -
F1N4L - 01.08.2016
Apague essa var, ou substitua a que eu criei (Jogadores) por esta.
Nгo sei se vai usar o meu sistema, mas como @WLSF comentou, evitar um loop, aparentemente em um timer, vai ser algo relativamente rбpido comparado com o seu sistema.
Re: Bug ao Contar players! -
best95 - 01.08.2016
nгo funciona este modo FINAL. ja ate desisti pq ja tentei de tudo ou da um bug ou da outro..
Re: Bug ao Contar players! -
best95 - 01.08.2016
ja arrumei.
Re: Bug ao Contar players! -
BobbMarley - 01.08.2016
o esquema й criar um sistema que pega o ip fixo do cara, onde localisa atй a cidade onde ele mora e tals mas isso pra uma base de um banco de dados. assim vocк iria conhecer melhor os players e o problema de contar iria acabar
Re: Bug ao Contar players! -
best95 - 01.08.2016
@TOPICO FECHADO!