Jump to content
  • 0

pomoc AntiBreak, anticheat


Honza_585

Dotaz

Ahoj chtěl jsem se zeptat na jeden bug..

Udělal jsem AntiBreak, ale když jsem daleko a dám na hráče goto nebo se teleportuju na SF,apod tak mě to detekuje jako podezřelý na AirBreak, , poradili bys mi? Posílám kod:

Pokud by to šlo udělat nějak jinak, jednodušeji, lépe, budu rád když se o ton podělíte,

díky

 

public antiairbrk(playerid)
{
    new Float:xt,Float:yt,Float:zt;
    GetPlayerPos(playerid,xt,yt,zt);
    if(!IsPlayerInAirPlane(playerid))
    {
        if(xo[playerid] != 0.0 || yo[playerid] != 0.0 || zo[playerid] != 0.0)
        {
            new Float:xs,Float:ys,Float:zs;
            xs = GetPlayerMoveCount(xo[playerid],xt);
            ys = GetPlayerMoveCount(yo[playerid],yt);
            zs = GetPlayerMoveCount(zo[playerid],zt);
            if(xs >= 16.5 || ys >= 16.5 || zs >= 16.5)
            {
                if(xs <= 50.0)
                {
                    SendClientMessage(playerid,RED,"Byl jste vyhozen, z podezření na AirBreak");
                    new name[255];
                    GetPlayerName(playerid,name,sizeof(name));
                    new out[800];
                    format(out,sizeof(out),"[GAIB] Hráč %s byl vyhozen ze serveru",name);
                    SendClientMessageToAll(RED,out);
                    //Kick(playerid);
                }
            }
        }
    }
    GetPlayerPos(playerid,xo[playerid],yo[playerid],zo[playerid]);
    return 1;
}


stock Float:GetPlayerMoveCount(Float:oldd,Float:neww)
{
    new Float:ret;
    if(oldd < neww)
    {
        ret = neww - oldd;
    }
    else if(neww > oldd)
    {
        ret = oldd - neww;
    }
    else if(neww == oldd)
    {
        ret = 0;
    }
    return ret;
}
 
Edited by Hip
formátování kódu
Link to comment
Share on other sites

1 odpověd na tuto otázku

Recommended Posts

  • 0

Ahoj,
predpokladám, že v scriptoch, kde máš goto/warpy, sa používa na zmenu pozície funkcia SetPlayerPos. Potrebuješ docieliť, aby sa pri každom volaní SetPlayerPos aktualizovali hodnoty v premenných xo, yo a zo. Vyriešiš to pomocou tzv. hookovania funkcií. Tanga má o tom návod: https://pawno.cz/index.php?/topic/54592-hookovanie-funkcií-callbackov/

Chceš teda vytvoriť niečo takéto:

stock SetPlayerPosEx(playerid, Float:x, Float:y, Float:z)
{
    // Update premenných xo, yo, zo
    xo[playerid] = x;
    yo[playerid] = y;
    zo[playerid] = z;

    // Volanie pôvodnej SetPlayerPos
    return SetPlayerPos(playerid, x, y, z);
}

#if defined _ALS_SetPlayerPos
  #undef SetPlayerPos
#else
  #define _ALS_SetPlayerPos
#endif
#define SetPlayerPos SetPlayerPosEx

Máš antiairbrk v rovnakom móde/filterscripte ako goto a warpy? Ak nie, pravdepodobne budeš musieť ešte čarovať s includami a CallRemoteFunction.

Edited by DuFF
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...