SA-MP Forums Archive
[Ajuda] Melhor jeito - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Melhor jeito (/showthread.php?tid=629957)



Melhor jeito - Luiiiz - 06.03.2017

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.


Re: Melhor jeito - Kamper - 06.03.2017

Sem o cуdigo fica complicado amiguinho...


Re: Melhor jeito - Luiiiz - 06.03.2017

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;




Re: Melhor jeito - Jelly23 - 06.03.2017

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.


Re: Melhor jeito - JPedro - 06.03.2017

Й 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


Re: Melhor jeito - Luiiiz - 06.03.2017

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.