Ошибка

Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2018
Сообщения
141
Реакции[?]
20
Поинты[?]
0

Короче ошибка начинает происходить в выделенной строчке и всех следующих связанных с localplayer (Ошибка C2027 использование неопределенного типа "Engine::CBaseEntity")

Определял так CBaseEntity* localplayer = (CBaseEntity*)Interfaces::EntityList()->GetClientEntity(Interfaces::Engine()->GetLocalPlayer());
Еще по разному определял в итоге нифига

Как нужно обьявить чтобы не было такой ошибки?
 
Последнее редактирование:
Премиум
Статус
Оффлайн
Регистрация
25 Авг 2017
Сообщения
557
Реакции[?]
220
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2018
Сообщения
141
Реакции[?]
20
Поинты[?]
0
Дай полный скрин/листинг того, что делаешь.
В Misc.h впихнул static void функцию, в которой попытался определить это CBaseEntity* localplayer = (CBaseEntity*)Interfaces::EntityList()->GetClientEntity(Interfaces::Engine()->GetLocalPlayer());
В итоге получаю ошибки неопределенного типа
 
Премиум
Статус
Оффлайн
Регистрация
25 Авг 2017
Сообщения
557
Реакции[?]
220
Поинты[?]
0
В Misc.h впихнул static void функцию, в которой попытался определить это CBaseEntity* localplayer = (CBaseEntity*)Interfaces::EntityList()->GetClientEntity(Interfaces::Engine()->GetLocalPlayer());
В итоге получаю ошибки неопределенного типа
Эм...Зачем?
Объясни просто, что ты хочешь сделать.
 
Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2018
Сообщения
141
Реакции[?]
20
Поинты[?]
0
Переписывал функцию под сдк, вот изначальная функция:
(Она находиться в Misc.h в изначальном коде, так как там нету Misc.cpp)
У меня же есть Misc.cpp
Хоть код и не очень, но можно будет доработать.

static void Walkbot(Vector& OrigAng)
{
bool walkbotBefore = false;
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 = localplayer;
Vector begin = localplayer->GetEyePosition(), t, end;
AngleVectors2(tmpviewangles, t);
NormalizeInOut(t, end);
end *= 8192.0f;
end += begin;
ray.Init(begin, end);
Interfaces::pTrace->TraceRay(ray, 0x4600400B, &filter, &tr);
return (begin - tr.endpos).Size();
};
static float old1, old2, old3;
if (localplayer->GetVecVelocity().Length() < 3)
{
viewangles.y += 2.0f;
}
float Distances = Settings::Misc::flDistance;
if (fDistanceToWall() < Distances) // we are near to some wall
{
int turn = Settings::Misc::iTurn;
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::Misc::Bunnyhop)
{
if ((localplayer->GetFlags() & FL_ONGROUND))
pCmd->buttons |= IN_JUMP;
else
{
pCmd->buttons |= IN_DUCK;
pCmd->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)
{
pCmd->forwardmove = 450.f;
walkbotBefore = true;
}
else if (walkbotBefore)
{
walkbotBefore = false;
pCmd->forwardmove = 450.f;
}
}

Для определение приходилось дописывать в код
CBaseEntity* localplayer = (CBaseEntity*)Interfaces::EntityList()->GetClientEntity(Interfaces::Engine()->GetLocalPlayer()); - Писало ошибку
CUserCmd* pCmd; - Тут конечно все нормально

Проблема в том что когда я все переписал и засунул это в Misc.h, то он пишет на localplayer'a это "использование неопределенного типа "Engine::CBaseEntity"

Ну я переносил ее конечно в Misc.cpp, в итоге краш при заходе на карту.

Вот
 
Последнее редактирование модератором:
Премиум
Статус
Оффлайн
Регистрация
25 Авг 2017
Сообщения
557
Реакции[?]
220
Поинты[?]
0
Последнее редактирование модератором:
Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2018
Сообщения
141
Реакции[?]
20
Поинты[?]
0
Я все прописывал именно внутри static void, не помогало, прописывал вне static void - не помогало, тупо эта ошибка
Тупо сидел и везде где только можно пихал, писало эту хрень

Функция localplayer'a, которую я взял находиться в разных срр файлах (ну типо определение такое же), но когда я вставляю ее в .h пишет такую ошибку
Я говорю про ту что ты мне кинул выше
 
Последнее редактирование модератором:
Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2018
Сообщения
141
Реакции[?]
20
Поинты[?]
0
Вот

Ошибки:
Код Misc.h
Код:
#pragma once

#include "../../Engine/Engine.h"
#include "../../SDK/Spoofed.h"

class CMisc
{
public:
    void OnRender();
    void OnCreateMove( CUserCmd* pCmd );
    void FrameStageNotify(ClientFrameStage_t Stage);
#define POSTPROCESS_VALUE
    void OnDrawModelExecute();
    void OnPlaySound( const char* pszSoundName );
    static 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);
    }

    static void SinCos(float a, float* s, float*c)
    {
        *s = sin(a);
        *c = cos(a);
    }
    static void AngleVectors2(const Vector& qAngles, Vector& vecForward)
    {
        float sp, sy, cp, cy;
        SinCos((float)(qAngles[1] * (M_PI / 180.f)), &sy, &cy);
        SinCos((float)(qAngles[0] * (M_PI / 180.f)), &sp, &cp);

        vecForward[0] = cp*cy;
        vecForward[1] = cp*sy;
        vecForward[2] = -sp;
    }


    static void Walkbot(Vector & OrigAng)
    {
        CBaseEntity* localplayer = (CBaseEntity*)Interfaces::EntityList()->GetClientEntity(Interfaces::Engine()->GetLocalPlayer());
        CUserCmd* pCmd;
        bool walkbotBefore = false;
        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 = localplayer;
            Vector begin = localplayer->GetEyePosition(), t, end;
            AngleVectors2(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 (localplayer->GetVecVelocity().Length() < 3)
        {
            viewangles.y += 2.0f;
        }
        float Distances = Settings::Misc::flDistance;
        if (fDistanceToWall() < Distances) // we are near to some wall
        {
            int turn = Settings::Misc::iTurn;
            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::Misc::misc_Bhop)
        {
            if ((localplayer->GetFlags() & FL_ONGROUND))
                pCmd->buttons |= IN_JUMP;
            else
            {
                pCmd->buttons |= IN_DUCK;
                pCmd->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;

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

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

        else if (walkbotBefore)
        {
            walkbotBefore = false;
            pCmd->forwardmove = 450.f;
        }
    }
    void OnOverrideView( CViewSetup* pSetup );
    void OnGetViewModelFOV( float& fov );

    vector<int> GetObservervators( int playerId );
    void OnRenderSpectatorList();
};
Код который я вставляю в Enity.h (для вектора локалплеера)
Код:
Vector GetVecVelocity()
        {
            return *(Vector*)((DWORD)this + 0x110);
        }
Код который вставил в Vector.hpp (Для вектора Size)
Код:
vec_t NormalizeInPlace();
float Vector::Size()
{
return sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2));
}
Vector Normalized() const;
Ну и в Settings вставляю просто значение и extren значение
Код:
bool bWalkBot;
float flDistance = 0;
int iTurn = 0;
Это все что я изменил
Ну или на скрин:
В конечно итоге ошибку выдает мое определение локалплеера, а как пофиксить это я не знаю реально (я про ошибки на первом скрине), они начинают сыпаться после строки
 
Последнее редактирование модератором:
Премиум
Статус
Оффлайн
Регистрация
25 Авг 2017
Сообщения
557
Реакции[?]
220
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2018
Сообщения
141
Реакции[?]
20
Поинты[?]
0
Отделяй интерфейс от реализации класса. Естественно он не найдёт тип, который тебе нужен с такой записью
Тобишь вне класса Misc записать static void?
Всм, как я тогда вызывать функцию то буду? Я уже пытался ее отдельно оперделить крашило
 
Последнее редактирование:
Премиум
Статус
Оффлайн
Регистрация
25 Авг 2017
Сообщения
557
Реакции[?]
220
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2018
Сообщения
141
Реакции[?]
20
Поинты[?]
0
Дебажь, вариант только один.
Мне кажеться проблема во мне, можешь сказать как нужно опеределить функцию и все что к ней подвязано?
В отдельно cpp файле?
Или кинь пример из кода как
 
Последнее редактирование модератором:
Эксперт
Статус
Оффлайн
Регистрация
12 Июн 2014
Сообщения
999
Реакции[?]
1,209
Поинты[?]
3K
ТС, тебе помощь нужна или друг по переписке?
прекращайте общаться с хайдами. если так продолжится, то буду воспринимать как флуд со всеми вытекающими.
 
comeback?
Участник
Статус
Оффлайн
Регистрация
14 Янв 2017
Сообщения
581
Реакции[?]
197
Поинты[?]
0
Создай внутри этой функции

Код:
auto* locplayer = (cbaseentity*)entitylist->getcliententity(engine->getlocalplayer());
Либо
cbaseentity* locplayer = Global::localplayer; (если ты делал неймспейс глобал)
 
Забаненный
Статус
Оффлайн
Регистрация
3 Авг 2016
Сообщения
51
Реакции[?]
12
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Омг, у него просто не CBaseEntity а IClientEntity, или C_BaseEntity
 
Сверху Снизу