GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Myk3L le 27 Octobre 2010, 15:12:35

Titre: Anti-Afk et Anti-Flood, une idée ?
Posté par: Myk3L le 27 Octobre 2010, 15:12:35
Salut !

C'est encore moi :)

J'ai un petit soucis concernant les anti-afk et anti-flood

J'en ai installé un mais il bug donc ... j'ai envie d'en faire un moi même mais je ne sais pas comment m'y prendre, quelqu'un aurait une idée ?
Titre: Re : Anti-Afk et Anti-Flood, une idée ?
Posté par: scott1 le 27 Octobre 2010, 15:44:07
tu lance un timer tout les x minute il récupère la position d'un joueur, la stock dans des variable, quand il la récupère xmin après si s'est la même tu le kick

S'est schématique ^^
Titre: Re : Anti-Afk et Anti-Flood, une idée ?
Posté par: Ssk le 27 Octobre 2010, 16:23:40
( Y a pas de timestamp sur samp ^^ )


Sinon, pour l'antiafk tu peut utiliser la callback OnPlayerKeyStateChange ( je ne suis plus sûr du nom )
Titre: Re : Re : Anti-Afk et Anti-Flood, une idée ?
Posté par: scott1 le 27 Octobre 2010, 16:26:28
( Y a pas de timestamp sur samp ^^ )


Sinon, pour l'antiafk tu peut utiliser la callback OnPlayerKeyStateChange ( je ne suis plus sûr du nom )

ça sera lourd
Titre: Re : Anti-Afk et Anti-Flood, une idée ?
Posté par: Ssk le 27 Octobre 2010, 16:27:29
Pas du tout, au contraire même.



EDIT: Voila un aperçu:


new AFKTimer[ MAX_PLAYERS ];


#define     MINUTE_AFK  1




public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if( newkeys == 0 )
{
    AFKTimer[ playerid ] = SetTimerEx( "AFK", MINUTE_AFK * 60000, false, "i", playerid );
}
else
{
    KillTimer( AFKTimer[ playerid ] );
}

return 1;
}

AFK( playerid )
{
Kick( playerid );
}
Titre: Re : Anti-Afk et Anti-Flood, une idée ?
Posté par: chneubeul le 27 Octobre 2010, 16:56:08
On peut même faire plus simple,

Tu créé ta variable,  Afk[MAX_PLAYERS]; par exemple puis dans les callbacks, onplayerkeystatechange, onplayertext, tu va venir mettre afk[playerid] = 0; en parallèle, tu as un timer qui compte par exemple tous les secondes ( souvent on a ça pour checké plein de truc donc tu met dedans t'économiseras un timer ^^) ça rajoute +1 à la variable, et si il arrive par exemple à 600 ( soit 10 minutes ) hop tu le kick pour afk.

Simple non ? :D
Titre: Re : Anti-Afk et Anti-Flood, une idée ?
Posté par: Ssk le 27 Octobre 2010, 17:05:38
bah avec mon code c'est mieux :p


Je peut même faire en sorte d'éviter de créer la fonction AFK

en changeant cette ligne

AFKTimer[ playerid ] = SetTimerEx( "AFK", MINUTE_AFK * 60000, false, "i", playerid );
par

AFKTimer[ playerid ] = SetTimerEx( "Kick", MINUTE_AFK * 60000, false, "i", playerid );
Titre: Re : Anti-Afk et Anti-Flood, une idée ?
Posté par: chneubeul le 27 Octobre 2010, 17:16:14
Pas con !  :cheers
Titre: Re : Re : Anti-Afk et Anti-Flood, une idée ?
Posté par: S!m le 27 Octobre 2010, 19:40:17
Salut,

bah avec mon code c'est mieux :p


Je peut même faire en sorte d'éviter de créer la fonction AFK

en changeant cette ligne

AFKTimer[ playerid ] = SetTimerEx( "AFK", MINUTE_AFK * 60000, false, "i", playerid );
par

AFKTimer[ playerid ] = SetTimerEx( "Kick", MINUTE_AFK * 60000, false, "i", playerid );

par contre le joueur ne saura pas ce qui lui est arrivé.

À noter que de nombreuses actions ne requièrent pas les touches. Par exemple, une personne en passager dans un véhicule qui ne fait que regarder autour en parlant. Personnellement je combinerais avec plein de callback en faisant un seul timer très simple:

en haut: new gAFKTime[MAX_PLAYERS];
dans OnGameModeInit -> SetTimer de 1seconde qui se répète
chaque callback importante -> gAFKTime[playerid] = ton temps en secondes avant action
ta fonction de ton timer:
public core_AFKSystem()
{
    for(new playerid = 0; playerid != MAX_PLAYERS; playerid++)
    {
        if(IsPlayerConnected(playerid))
        {
            gAFKTime[playerid]--;
            if(gAFKTime[playerid] == 0)
            {
                //action AFK
            }
        }
    }
    return 1;
}

sans oublier d'initialiser la variable dans OnPlayerConnect (et OnPlayerDisconnect)

++Sim++
Titre: Re : Anti-Afk et Anti-Flood, une idée ?
Posté par: Myk3L le 27 Octobre 2010, 20:48:12
J'aime bien ta fonction Sim mais quand tu dis "SetTimer de 1seconde qui se répète" comment je fais pour le faire se répéter ?