Пример #1
0
    public static bool IsFlying(BasePlayer ply, TickInterpolator ticks, float deltaTime)
    {
        ply.flyhackPauseTime = Mathf.Max(0f, ply.flyhackPauseTime - deltaTime);
        if (ply.flyhackPauseTime > 0f)
        {
            return(false);
        }
        if (ConVar.AntiHack.flyhack_protection <= 0)
        {
            return(false);
        }
        ticks.Reset();
        if (!ticks.HasNext())
        {
            return(false);
        }
        bool      flag      = ply.transform.parent == null;
        Matrix4x4 matrix4x4 = (flag ? Matrix4x4.identity : ply.transform.parent.localToWorldMatrix);
        Vector3   vector3   = (flag ? ticks.StartPoint : matrix4x4.MultiplyPoint3x4(ticks.StartPoint));
        Vector3   vector31  = (flag ? ticks.EndPoint : matrix4x4.MultiplyPoint3x4(ticks.EndPoint));

        if (ConVar.AntiHack.flyhack_protection >= 3)
        {
            float single = Mathf.Max(ConVar.AntiHack.flyhack_stepsize, 0.1f);
            int   num    = Mathf.Max(ConVar.AntiHack.flyhack_maxsteps, 1);
            single = Mathf.Max(ticks.Length / (float)num, single);
            while (ticks.MoveNext(single))
            {
                vector31 = (flag ? ticks.CurrentPoint : matrix4x4.MultiplyPoint3x4(ticks.CurrentPoint));
                if (AntiHack.TestFlying(ply, vector3, vector31, true))
                {
                    return(true);
                }
                vector3 = vector31;
            }
        }
        else if (ConVar.AntiHack.flyhack_protection >= 2)
        {
            if (AntiHack.TestFlying(ply, vector3, vector31, true))
            {
                return(true);
            }
        }
        else if (AntiHack.TestFlying(ply, vector3, vector31, false))
        {
            return(true);
        }
        return(false);
    }
Пример #2
0
    public static bool IsFlying(BasePlayer ply, TickInterpolator ticks, float deltaTime)
    {
        ply.flyhackPauseTime = Mathf.Max(0.0f, ply.flyhackPauseTime - deltaTime);
        if ((double)ply.flyhackPauseTime > 0.0 || ConVar.AntiHack.flyhack_protection <= 0)
        {
            return(false);
        }
        ticks.Reset();
        if (!ticks.HasNext())
        {
            return(false);
        }
        bool      flag      = Object.op_Equality((Object)((Component)ply).get_transform().get_parent(), (Object)null);
        Matrix4x4 matrix4x4 = flag ? Matrix4x4.get_identity() : ((Component)ply).get_transform().get_parent().get_localToWorldMatrix();
        Vector3   oldPos    = flag ? ticks.StartPoint : ((Matrix4x4) ref matrix4x4).MultiplyPoint3x4(ticks.StartPoint);
        Vector3   newPos1   = flag ? ticks.EndPoint : ((Matrix4x4) ref matrix4x4).MultiplyPoint3x4(ticks.EndPoint);

        if (ConVar.AntiHack.flyhack_protection >= 3)
        {
            float num1     = Mathf.Max(ConVar.AntiHack.flyhack_stepsize, 0.1f);
            int   num2     = Mathf.Max(ConVar.AntiHack.flyhack_maxsteps, 1);
            float distance = Mathf.Max(ticks.Length / (float)num2, num1);
            while (ticks.MoveNext(distance))
            {
                Vector3 newPos2 = flag ? ticks.CurrentPoint : ((Matrix4x4) ref matrix4x4).MultiplyPoint3x4(ticks.CurrentPoint);
                if (AntiHack.TestFlying(ply, oldPos, newPos2, true))
                {
                    return(true);
                }
                oldPos = newPos2;
            }
        }
        else if (ConVar.AntiHack.flyhack_protection >= 2)
        {
            if (AntiHack.TestFlying(ply, oldPos, newPos1, true))
            {
                return(true);
            }
        }
        else if (AntiHack.TestFlying(ply, oldPos, newPos1, false))
        {
            return(true);
        }
        return(false);
    }