GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Komolos le 21 Novembre 2010, 22:27:45

Titre: Anti-Ping qui ne fonctionne pas
Posté par: Komolos le 21 Novembre 2010, 22:27:45
Bonsoir,

J'ai mon anti-ping, que j'ai crée, mais je pence que je l'est mal placé, je l'est mis avec une autre fonctions que j'ai trouvés et que j'ai amelioré voici le code :

public OnRconLoginAttempt(ip[], password[], success)
{
    if(!success)
    {
        printf("FAILED RCON LOGIN BY IP %s USING PASSWORD %s", ip, password);
        new pip[16];
        new string[256];
        new sendername[MAX_PLAYER_NAME];
        for(new i=0; i<MAX_PLAYERS; i++)
        {
if(IsPlayerConnected(i))
{
            GetPlayerIp(i, pip, sizeof(pip));
            if(!strcmp(ip, pip, true))
            {
    format(string, sizeof(string), "[ANTI-CHEAT]: %s à était kick par l'Anti-Cheat, Raison: Tentative d'accèder au Rcon", sendername);
Kick(i);
SendClientMessageToAll(COLOR_LIGHTRED, string);

            }
    }
                  new ping;
              ping = GetPlayerPing(i);
       if(ping > MAX_PING)
    {
       if(gPlayerLogged[i] == 1)
                {
       format(string, sizeof(string), "[ANTI-CHEAT]: %s à était kick par l'Anti-Cheat, Raison: Ping Trop élévés", sendername);
   Kick(i);
  SendClientMessageToAll(COLOR_LIGHTRED, string);
}
}
        }
    }
    return 1;
}


Merci d'avance, j'ai biensur déclaré le #define Max_Ping
Titre: Re : Anti-Ping qui ne fonctionne pas
Posté par: cristab le 21 Novembre 2010, 22:34:23
ton code na rien a faire dans cette callback
Titre: Re : Anti-Ping qui ne fonctionne pas
Posté par: Gilux le 21 Novembre 2010, 22:38:45
Déjà, il y a une mauvaise indentation, ca n'arrange pas les choses  :happy

Et effectivement, ton pingtest est mal placé, tu dois utiliser un timer.

Dans OnGameModeInit, insère cette instruction :
SetTimer("pingtest",10000,true);Ceci va créer un timer qui appellera la callback "pingtest" qu'il va falloir déclarer en haut du script : (Sous les includes)
forward pingtest();

Ensuite, tu n'as plus qu'a créer ton pingtest :

<?php

public pingtest()
{
     for(new 
iMAX_PLAYERSi++)
     {
           if(
GetPlayerPing(i) > 500// 500 par exemple, modifie à ta guise  
           
{
                 
SendClientMessageToAll(0xFF0000FF,"%s kické pour ping trop élevé"); // Texte formaté au préalable comme tu l'as fait
                 
Kick(i);
           }
      }
}     

Ce code vérifiera toutes les 10 secondes parmi tous les joueurs, pour voir si l'un des joueurs a un ping supérieur à 500, et le kickera.

++