- 4,805
- 6,478
Ну так посмотри из чего. Ctrl+клик по названию структуры и ты перейдешь к объявлениюДа я не знаю из чего состроит структура CVector!!!
Ну так посмотри из чего. Ctrl+клик по названию структуры и ты перейдешь к объявлениюДа я не знаю из чего состроит структура CVector!!!
#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А чё тут конкретно вписать надо?
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);
Тоесть мне везде где fX, нужно заменить на x?Тут надо прочитать 7 строку, и использовать CVector::y, а не CVector::fY
Пачка туторов по написанию dllПривет! Хочу сделать бота для сервера, а именно для водолазов, как ему задать маршрут? Напишите или скиньте какой-то туториал по этому? Если что хочу сделать в формате dll
Я не совсем понимаю что ты тогда мог искать, если не смог найти как подключить статическую/динамическую библиотеку к своему проекту.Долго искал и до сих пор ищу ответ на интересующий меня вопрос.
Суть вопроса: как мне подключить SAMP-api к проекту?
Вот у меня есть SAMP-api. Что мне делать дальше? Как его подключить к моему проекту? Посмотреть вложение 106715
Мне нужно только 0.3.7-R1
Благодарю. Мне все объяснили и я сразу понял в чём была моя ошибка.Я не совсем понимаю что ты тогда мог искать, если не смог найти как подключить статическую/динамическую библиотеку к своему проекту.
Я не знаю, что это за проект и что он генерит, но тебе в любом случае нужно подключить хидеры (.h files) в свой проект, а после этого скомпилить проект и подключить библиотеку к проекту, в зависимости от того че там и от того че ты хочешь. Если статика - то делать особо нечего, в msdn даже есть: тык
А если динамическая, то тебе решать как ты хочешь юзать её функции и как ее подключать. Но они все равно объявлены в header files, поэтому их тебе нужно все равно подключать. А далее смотришь тут
По твоим хотелкам дальше - либо явное связывание, либо неявное, либо если тебе надо чтобы все шло по маслу до того как ты вызовешь функцию из библиотеки, то используй отложенную загрузку (только не с kernel32.dll, но тебе её и не нужно отложенно загружать), но при этом не используй FreeLibrary.
Тебе я так полагаю больше неявное связывание подойдет, ибо меньше мороки.
По сути всё. И это применимо не только к твоему проекту, но и ко всем сторонним библиотекам.
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;
}
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Привет всем
мне нужна хелпа с имги
у меня есть функция получения названия раскладки:
Я также загуражю шрифт с поддержкой Кирилицы, русский текст у меня рисуеться, но вот вместо названия раскладки знаки вопроса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);
Всем привет. Каким образом можно прочитать адрес памяти в 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;
}
с++ :Всем привет. Каким образом можно прочитать адрес памяти в C#/C++?
Если быть конкретнее то мне нужно получить значение адреса памяти, для дальнейшего использования в качестве переменной.
auto value = *(тип переменной*)адрес;