Другое С/С++ Вопрос - Ответ

Krisp

Новичок
23
1
А чё тут конкретно вписать надо?

code:
#pragma once
#include "PluginBase.h"
#include "RenderWare.h"

class CVector {
public:
    float x, y, z;

    CVector();
    CVector(float X, float Y, float Z);

    inline CVector(CVector const& src) {
        x = src.x; y = src.y; z = src.z;
    }

    inline CVector(RwV3d const &right) {
        FromRwV3d(right);
    }

    // Returns length of vector
    float Magnitude();

    // Returns length of 2d vector
    float Magnitude2D();

    // Normalises a vector
    void Normalise();

    // Normalises a vector and returns length
    float NormaliseAndMag();

    // Performs cross calculation
    void Cross(const CVector& left, const CVector &right);

    // Adds left + right and stores result
    void Sum(const CVector& left, const CVector &right);

    // Subtracts left - right and stores result
    void Difference(const CVector& left, const CVector &right);

    void operator=(const CVector& right);
    void operator+=(const CVector& right);
    void operator-=(const CVector& right);
    void operator *= (float multiplier);
    void operator /= (float divisor);

    // matrix * vector multiplication
    void FromMultiply(class CMatrix  const& matrix, CVector const& vector);
    void FromMultiply3x3(class CMatrix  const& matrix, CVector const& vector);

    inline void Set(float X, float Y, float Z) {
        x = X; y = Y; z = Z;
    }

    inline RwV3d ToRwV3d() const {
        return{ x, y, z };
    }

    inline void FromRwV3d(RwV3d const &rwvec) {
        x = rwvec.x; y = rwvec.y; z = rwvec.z;
    }
};

inline CVector operator-(const CVector& vecOne, const CVector& vecTwo) {
    return CVector(vecOne.x - vecTwo.x, vecOne.y - vecTwo.y, vecOne.z - vecTwo.z);
}

inline CVector operator+(const CVector& vecOne, const CVector& vecTwo) {
    return CVector(vecOne.x + vecTwo.x, vecOne.y + vecTwo.y, vecOne.z + vecTwo.z);
}

inline CVector operator*(const CVector& vec, float multiplier) {
    return CVector(vec.x * multiplier, vec.y * multiplier, vec.z * multiplier);
}

inline CVector operator*(float multiplier, const CVector& vec) {
    return CVector(vec.x * multiplier, vec.y * multiplier, vec.z * multiplier);
}

inline float DistanceBetweenPoints(const CVector &pointOne, const CVector &pointTwo) {
    CVector diff = pointTwo - pointOne;
    return diff.Magnitude();
}



VALIDATE_SIZE(CVector, 0xC);
 

SR_team

like pancake
BH Team
4,805
6,478
А чё тут конкретно вписать надо?

code:
#pragma once
#include "PluginBase.h"
#include "RenderWare.h"

class CVector {
public:
    float x, y, z;

    CVector();
    CVector(float X, float Y, float Z);

    inline CVector(CVector const& src) {
        x = src.x; y = src.y; z = src.z;
    }

    inline CVector(RwV3d const &right) {
        FromRwV3d(right);
    }

    // Returns length of vector
    float Magnitude();

    // Returns length of 2d vector
    float Magnitude2D();

    // Normalises a vector
    void Normalise();

    // Normalises a vector and returns length
    float NormaliseAndMag();

    // Performs cross calculation
    void Cross(const CVector& left, const CVector &right);

    // Adds left + right and stores result
    void Sum(const CVector& left, const CVector &right);

    // Subtracts left - right and stores result
    void Difference(const CVector& left, const CVector &right);

    void operator=(const CVector& right);
    void operator+=(const CVector& right);
    void operator-=(const CVector& right);
    void operator *= (float multiplier);
    void operator /= (float divisor);

    // matrix * vector multiplication
    void FromMultiply(class CMatrix  const& matrix, CVector const& vector);
    void FromMultiply3x3(class CMatrix  const& matrix, CVector const& vector);

    inline void Set(float X, float Y, float Z) {
        x = X; y = Y; z = Z;
    }

    inline RwV3d ToRwV3d() const {
        return{ x, y, z };
    }

    inline void FromRwV3d(RwV3d const &rwvec) {
        x = rwvec.x; y = rwvec.y; z = rwvec.z;
    }
};

inline CVector operator-(const CVector& vecOne, const CVector& vecTwo) {
    return CVector(vecOne.x - vecTwo.x, vecOne.y - vecTwo.y, vecOne.z - vecTwo.z);
}

inline CVector operator+(const CVector& vecOne, const CVector& vecTwo) {
    return CVector(vecOne.x + vecTwo.x, vecOne.y + vecTwo.y, vecOne.z + vecTwo.z);
}

inline CVector operator*(const CVector& vec, float multiplier) {
    return CVector(vec.x * multiplier, vec.y * multiplier, vec.z * multiplier);
}

inline CVector operator*(float multiplier, const CVector& vec) {
    return CVector(vec.x * multiplier, vec.y * multiplier, vec.z * multiplier);
}

inline float DistanceBetweenPoints(const CVector &pointOne, const CVector &pointTwo) {
    CVector diff = pointTwo - pointOne;
    return diff.Magnitude();
}



VALIDATE_SIZE(CVector, 0xC);
Тут надо прочитать 7 строку, и использовать CVector::y, а не CVector::fY
 

AdCKuY_DpO4uLa

Адский дрочер
Друг
317
675

|| NN - NoName ||

Известный
1,049
635
Долго искал и до сих пор ищу ответ на интересующий меня вопрос.

Суть вопроса: как мне подключить SAMP-api к проекту?

Вот у меня есть SAMP-api. Что мне делать дальше? Как его подключить к моему проекту?
1627078556312.png


Мне нужно только 0.3.7-R1
 

.deserve

Участник
32
36
Долго искал и до сих пор ищу ответ на интересующий меня вопрос.

Суть вопроса: как мне подключить SAMP-api к проекту?

Вот у меня есть SAMP-api. Что мне делать дальше? Как его подключить к моему проекту? Посмотреть вложение 106715

Мне нужно только 0.3.7-R1
Я не совсем понимаю что ты тогда мог искать, если не смог найти как подключить статическую/динамическую библиотеку к своему проекту.

Я не знаю, что это за проект и что он генерит, но тебе в любом случае нужно подключить хидеры (.h files) в свой проект, а после этого скомпилить проект и подключить библиотеку к проекту, в зависимости от того че там и от того че ты хочешь. Если статика - то делать особо нечего, в msdn даже есть: тык
А если динамическая, то тебе решать как ты хочешь юзать её функции и как ее подключать. Но они все равно объявлены в header files, поэтому их тебе нужно все равно подключать. А далее смотришь тут
По твоим хотелкам дальше - либо явное связывание, либо неявное, либо если тебе надо чтобы все шло по маслу до того как ты вызовешь функцию из библиотеки, то используй отложенную загрузку (только не с kernel32.dll, но тебе её и не нужно отложенно загружать), но при этом не используй FreeLibrary.
Тебе я так полагаю больше неявное связывание подойдет, ибо меньше мороки.
По сути всё. И это применимо не только к твоему проекту, но и ко всем сторонним библиотекам.
 

|| NN - NoName ||

Известный
1,049
635
Я не совсем понимаю что ты тогда мог искать, если не смог найти как подключить статическую/динамическую библиотеку к своему проекту.

Я не знаю, что это за проект и что он генерит, но тебе в любом случае нужно подключить хидеры (.h files) в свой проект, а после этого скомпилить проект и подключить библиотеку к проекту, в зависимости от того че там и от того че ты хочешь. Если статика - то делать особо нечего, в msdn даже есть: тык
А если динамическая, то тебе решать как ты хочешь юзать её функции и как ее подключать. Но они все равно объявлены в header files, поэтому их тебе нужно все равно подключать. А далее смотришь тут
По твоим хотелкам дальше - либо явное связывание, либо неявное, либо если тебе надо чтобы все шло по маслу до того как ты вызовешь функцию из библиотеки, то используй отложенную загрузку (только не с kernel32.dll, но тебе её и не нужно отложенно загружать), но при этом не используй FreeLibrary.
Тебе я так полагаю больше неявное связывание подойдет, ибо меньше мороки.
По сути всё. И это применимо не только к твоему проекту, но и ко всем сторонним библиотекам.
Благодарю. Мне все объяснили и я сразу понял в чём была моя ошибка.
 

loganhackerdff

Известный
868
519
Привет всем
мне нужна хелпа с имги
у меня есть функция получения названия раскладки:
C++:
     std::string GetKeyBoardLocaleName()
    {
        char OutBuff[16];
        GetKeyboardLayoutNameA(OutBuff);

        char  buffer[255];
        GetLocaleInfoA(strtol(OutBuff, (char**)OutBuff[strlen(OutBuff)], 16), LOCALE_SLANGUAGE,
            buffer, sizeof(buffer) / sizeof(char));
        return buffer;


    }
Я также загуражю шрифт с поддержкой Кирилицы, русский текст у меня рисуеться, но вот вместо названия раскладки знаки вопроса
C++:
            char szBuffer[128];
            sprintf(szBuffer, (const char*)u8"Раскладка: %s",GetKeyBoardLocaleName().c_str());


            ImGui::TextColored(ImVec4(m_v4Color.x, m_v4Color.y, m_v4Color.z, 1.f), szBuffer);

В MessageBoxA() текст выводиться, раньше я рендерил через Font на SF, сейчас всё через ImGui
 

SR_team

like pancake
BH Team
4,805
6,478
Привет всем
мне нужна хелпа с имги
у меня есть функция получения названия раскладки:
C++:
     std::string GetKeyBoardLocaleName()
    {
        char OutBuff[16];
        GetKeyboardLayoutNameA(OutBuff);

        char  buffer[255];
        GetLocaleInfoA(strtol(OutBuff, (char**)OutBuff[strlen(OutBuff)], 16), LOCALE_SLANGUAGE,
            buffer, sizeof(buffer) / sizeof(char));
        return buffer;


    }
Я также загуражю шрифт с поддержкой Кирилицы, русский текст у меня рисуеться, но вот вместо названия раскладки знаки вопроса
C++:
            char szBuffer[128];
            sprintf(szBuffer, (const char*)u8"Раскладка: %s",GetKeyBoardLocaleName().c_str());


            ImGui::TextColored(ImVec4(m_v4Color.x, m_v4Color.y, m_v4Color.z, 1.f), szBuffer);
у тебя слово "Раскладка" в UTF-8, а GetLocaleInfoA отдает cp1251
 
  • Нравится
Реакции: loganhackerdff

TheD1sl1ke

Новичок
15
1
Всем привет. Каким образом можно прочитать адрес памяти в C#/C++?
Если быть конкретнее то мне нужно получить значение адреса памяти, для дальнейшего использования в качестве переменной.
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,810
Всем привет. Каким образом можно прочитать адрес памяти в C#/C++?
Если быть конкретнее то мне нужно получить значение адреса памяти, для дальнейшего использования в качестве переменной.
C++:
template <typename T>
T ReadMemory(uintptr_t address) {
    DWORD old;
    VirtualProtect(reinterpret_cast<void*>(address), sizeof(T), PAGE_READWRITE, &old);
    T value = *reinterpret_cast<T*>(address);
    VirtualProtect(reinterpret_cast<void*>(address), sizeof(T), old, &old);
    return value;
}
 
  • Нравится
Реакции: TheD1sl1ke

loganhackerdff

Известный
868
519
Всем привет. Каким образом можно прочитать адрес памяти в C#/C++?
Если быть конкретнее то мне нужно получить значение адреса памяти, для дальнейшего использования в качестве переменной.
с++ :
C++:
auto value = *(тип переменной*)адрес;
для C# по идее тоже самое только в unsafe блок и auto заменить на var
 
  • Bug
  • Нравится
Реакции: TheD1sl1ke и 4el0ve4ik