[Ajuda] Melhor jeito
#1

Qual o melhor jeito de fazer um sistema de radar? Eu fiz um aqui apenas pra teste usando SetTimerEx, sу que apуs passar vбrias vezes nele, o servidor cai e manda isso para o server.log:
PHP код:
127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:24] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3192Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:25] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3372Limit3000/sec
[10:06:27] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3686Limit3000/sec
[10:06:27] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3686Limit3000/sec
[10:06:27] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3686Limit3000/sec
[10:06:27] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3686Limit3000/sec
[10:06:27] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3686Limit3000/sec
[10:06:28] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3686Limit3000/sec
[10:06:28] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3686Limit3000/sec
[10:06:28] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3686Limit3000/sec
[10:06:29] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:29] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:29] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:29] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:29] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:29] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:29] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 127.0.0.1:64904 (3850Limit3000/sec
[10:06:30] [warningclient exceeded 'ackslimit' 
Muitos desses.

Obs: O servidor cai atй no localhost.
Reply
#2

Sem o cуdigo fica complicado amiguinho...
Reply
#3

Quote:
Originally Posted by Kamper
Посмотреть сообщение
Sem o cуdigo fica complicado amiguinho...
Sim foi mal, esqueci.
PHP код:
public OnPlayerConnected(playerid)
{
SetTimerEx("Radar"501"i"playerid);
return 
1;
}
forward Radar();
public 
Radar(playerid)
{
new 
veloid;
for(new 
0MAX_PLAYERSi++)
{
if(
IsPlayerInRangeOfPoint(i52066.4827,1464.6696,10.2352))
{
if(
GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
veloid GetPlayerSpeed(itrue);
}
if(
veloid <=80)
{
format(Stringsizeof(String), "| RADAR | Vocк passou no radar a %ikm/h."veloid);
SendClientMessage(i0xFF0000AAString);
}
else
{
SendClientMessage(i0xFF0000AA"| RADAR | Vocк passou no radar a mais de 50km/h e por isso foi multado.");
}
}
}
return 
1;

Reply
#4

Isso acontence porque o cliente estб mandando muitas respostas de reconhecimento (acknowledgement) por coisas que vocк o manda fazer. Tente aumentar o tempo do timer, 50 ms nгo й bom, especialmente num servidor com vбrios jogadores, considerando que jб sгo muitas respostas de reconhecimento de um ъnico cliente. Mude o seu timer para 1 segundo (1000) e veja se muda algo. Tambйm recomendo usar foreach para seus player loops.

Tambйm percebi que vocк estб iniciando o timer ao conectar, isso nгo й bom, includindo que o timer tйm um player loop.
Reply
#5

Й um timer player mas ao mesmo tempo faz um loop pra todos?

Tenta assim:


PHP код:
public OnGameModeInit()
{
    
SetTimer("Radar"1000true);
    return 
1;
}
forward Radar(); 
public 
Radar() 
{
    for(new 
0MAX_PLAYERSi++) 
    {
        if(
GetPlayerState(i) == PLAYER_STATE_DRIVER)
        {
            if(
IsPlayerInRangeOfPoint(i5.02066.48271464.669610.2352)) 
            {
                static 
veloid;
                
veloid GetPlayerSpeed(itrue);
                if(
veloid >= 50)
                {
                    
SendClientMessage(i0xFF0000AA,"|RADAR| Vocк passou no radar a mais de 50km/h e por isso foi multado."); 
                    return 
1;
                }
                
format(Stringsizeof(String),"|RADAR| Vocкpassou no radar a %i km/h.",veloid); 
                
SendClientMessage(i0xFF0000AAString); 
            }
        }
    }
    return 
1;

Recomendo usar o foreach, pois ficar passando um loop por todos os players nгo й muito bom
Reply
#6

Quote:
Originally Posted by JPedro
Посмотреть сообщение
Й um timer player mas ao mesmo tempo faz um loop pra todos?

Tenta assim:


PHP код:
public OnGameModeInit()
{
    
SetTimer("Radar"1000true);
    return 
1;
}
forward Radar(); 
public 
Radar() 
{
    for(new 
0MAX_PLAYERSi++) 
    {
        if(
GetPlayerState(i) == PLAYER_STATE_DRIVER)
        {
            if(
IsPlayerInRangeOfPoint(i5.02066.48271464.669610.2352)) 
            {
                static 
veloid;
                
veloid GetPlayerSpeed(itrue);
                if(
veloid >= 50)
                {
                    
SendClientMessage(i0xFF0000AA,"|RADAR| Vocк passou no radar a mais de 50km/h e por isso foi multado."); 
                    return 
1;
                }
                
format(Stringsizeof(String),"|RADAR| Vocкpassou no radar a %i km/h.",veloid); 
                
SendClientMessage(i0xFF0000AAString); 
            }
        }
    }
    return 
1;

Recomendo usar o foreach, pois ficar passando um loop por todos os players nгo й muito bom
Sim, obrigado vou testar. Caso funcione, +REP.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)