Гайд WalkBot [INDIGO] другой

Новая ава блеять
Забаненный
Статус
Оффлайн
Регистрация
14 Янв 2018
Сообщения
89
Реакции[?]
235
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Увидел гайд Nixer и решил слить своего WalkBot'a

1.Settings.cpp:
Код:
    namespace WalkBot
    {
        bool WalkBot = false;
        bool Bunnyhop = false;
        float Distance = 0;
        int Turn = 0;
    }
2.Settings.h:
Код:
  namespace WalkBot
    {
        extern bool WalkBot;
        extern bool Bunnyhop;
        extern float Distance;
        extern int Turn;
    }
3.Client.cpp:
Код:
ImGui::Checkbox("Walkbot", &Settings::WalkBot::WalkBot);
                ImGui::Checkbox("Bunnyhop", &Settings::WalkBot::Bunnyhop);
                ImGui::Text("Distance to Wall");
                ImGui::SliderFloat("%##float", &Settings::WalkBot::Distance, 0, 500, "%.1f", (1.0f));
                ImGui::Text("Degrees Turn");
                ImGui::SliderInt("%##int", &Settings::WalkBot::Turn, -180, 180, "%.1f");
4.Misc.cpp:
Код:
void CMisc::Walkbot(CUserCmd* cmd, Vector& OrigAng)
{

    bool walkbotBefore = false;
    CBaseEntity* local = (CBaseEntity*)Interfaces::EntityList()->GetClientEntity(Interfaces::Engine()->GetLocalPlayer());
    Vector viewangles;
    Interfaces::Engine()->GetViewAngles(viewangles);

    static int OldMouseX = OrigAng.y;
    int mousedx = OldMouseX - OrigAng.y;

    auto fDistanceToWall = [&](Vector diff = Vector(0, 0, 0))->float {
        auto tmpviewangles = viewangles + diff;
        trace_t tr;
        Ray_t ray;
        CTraceFilter filter;
        filter.pSkip = local;
        Vector begin = local->GetEyePosition(), t, end;
        AngleVectors4(tmpviewangles, t);
        NormalizeInOut(t, end);
        end *= 8192.0f;
        end += begin;
        ray.Init(begin, end);
        Interfaces::EngineTrace()->TraceRay(ray, 0x4600400B, &filter, &tr);
        return (begin - tr.endpos).Size();
    };

    static float old1, old2, old3;
    if (local->GetVelocity().Length() < 3)
    {
        viewangles.y += 2.0f;
    }
    float Distances = Settings::WalkBot::Distance;
    if (fDistanceToWall() < Distances) // we are near to some wall
    {
        int turn = Settings::WalkBot::Turn;
        float negativeDist = fDistanceToWall(Vector(0, -1, 0)), positiveDist = fDistanceToWall(Vector(0, 1, 0));
        if (abs(negativeDist - positiveDist) < 1.0f)
        {
            viewangles.y += turn;
        }
        else
        {
            viewangles.y += positiveDist < negativeDist ? -1 : 1;
        }
    }
    if (Settings::WalkBot::Bunnyhop)
    {
        if ((local->GetFlags() & FL_ONGROUND))
            cmd->buttons |= IN_JUMP;
        else
        {
            cmd->buttons |= IN_DUCK;
            cmd->buttons &= ~IN_FORWARD;
        }

    }


    if (abs(viewangles.x) > 0)
        viewangles.x = 1;

    while (viewangles.y > 180.0f)
        viewangles.y -= 360.0f;
    while (viewangles.y < -180.0f)
        viewangles.y += 360.0f;

    Interfaces::Engine()->SetViewAngles(viewangles);

    if (!walkbotBefore)
    {
        cmd->forwardmove = 450.f;
        walkbotBefore = true;
    }

    else if (walkbotBefore)
    {
        walkbotBefore = false;
        cmd->forwardmove = 450.f;
    }
}
5.Misc.h:
Код:
    void Walkbot(CUserCmd * cmd, Vector & OrigAng);
6.
Hook_CreateMove:
Код:
 auto origAng = cmd->viewangles;
 if (Settings::WalkBot::WalkBot)
      Client::g_pMisc->Walkbot(pCmd, origAng);
7.Engine.cpp:
Код:
void SinCos2(float a, float* s, float*c)
{
*s = sin(a);
*c = cos(a);
}
void NormalizeInOut(Vector &vIn, Vector &vOut)
{
float flLen = vIn.Length();
if (flLen == 0) {
vOut.Init(0, 0, 1);
return;
}
flLen = 1 / flLen;
vOut.Init(vIn.x * flLen, vIn.y * flLen, vIn.z * flLen);
}
void AngleVectors4(const Vector& qAngles, Vector& vecForward)
{
float sp, sy, cp, cy;
SinCos2((float)(qAngles[1] * (M_PI / 180.f)), &sy, &cy);
SinCos2((float)(qAngles[0] * (M_PI / 180.f)), &sp, &cp);
vecForward[0] = cp * cy;
vecForward[1] = cp * sy;
vecForward[2] = -sp;
}
8.Engine.h:
Код:
    void SinCos2(float a, float * s, float * c);
    void NormalizeInOut(Vector & vIn, Vector & vOut);
    void AngleVectors4(const Vector & qAngles, Vector & vecForward);
9.Vector.hpp:
Код:
        float Vector::Size()
        {
            return sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2));
        }
Вот и весь код.
Спастил из Astrium
 
Забаненный
Статус
Оффлайн
Регистрация
3 Июн 2018
Сообщения
29
Реакции[?]
7
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Работает only dust 2?
 
Новая ава блеять
Забаненный
Статус
Оффлайн
Регистрация
14 Янв 2018
Сообщения
89
Реакции[?]
235
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Участник
Статус
Оффлайн
Регистрация
23 Фев 2017
Сообщения
612
Реакции[?]
507
Поинты[?]
0
if (abs(viewangles.x) > 0) viewangles.x = 1;
Смысла мало. Модуль даст тебе всегда число больше 0, кроме 0. Т.е если viewangles.x = 0 , то тогда условие будет верным. Исправить можно так:
Код:
if(viewangles.x != 0)
...
Бля, ну это перебор уже:
Код:
if(walkbotBefore) // значение true
else // значение false
Тоже самое, что и с первым, нужна просто проверка на ноль без abs
if (abs(negativeDist - positiveDist) < 1.0f)
А над pow для 2ой степени я вообще проорал.
return sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2));
Читаем статью и пастим нормальную функцию sqrt
Код:
return sqrt(x*x + y*y + z*z);
Оператор умножение работает быстрее чем функция
 
Сверху Снизу