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

swlm

Участник
52
18
Во, сделал так:
И хук заработал, только как теперь работать с пакетами, когда я пытаюсь получить что-то из пакета, происходит краш.


C++:
bool Hooks::HookReceive() {
    Packet* __fastcall HookedReceive(RakClientInterface__vtable* thisPtr, void* edx) {
        Packet* packet = originalReceive(thisPtr);

        return packet;
    }


    HMODULE sampModule = GetModuleHandleA("samp.dll");
    if (!sampModule) {
        return false;
    }

    // Получаем указатель на рак клиент
    RakClientInterface** rakclient = reinterpret_cast<RakClientInterface**>(AVSSync::getRakClientIntf());
    if (!rakclient) {
        return false;
    }

    DWORD* vTable = *reinterpret_cast<DWORD**>(rakclient);
    LPVOID target = reinterpret_cast<LPVOID>(vTable[8]);

    MH_STATUS createStatus = MH_CreateHook(target, &HookedReceive, reinterpret_cast<void**>(&originalReceive));
    if (createStatus != MH_OK) {
        return false;
    }

    MH_STATUS enableStatus = MH_EnableHook(target);
    if (enableStatus != MH_OK) {
        return false;
    }

    std::cout << "Receive hooked successfully!" << std::endl;
    return true;
}

Ты на какой версии сампа? Если р3, то receiveAddr - samp.dll должен совпадать 0x34AC0
На R3, но нет, не совпадает: 0x5CAF637A
 
Последнее редактирование:

AdCKuY_DpO4uLa

Адский дрочер
Друг
369
817
 

swlm

Участник
52
18
ладно, сделаю тогда на функцию сразу...
 

вайега52

Налуашил состояние
Модератор
2,998
3,124
получить что-то из пакета, происходит краш.
Потому-что эта функция вызывается в бесконечном цикле игры и не морозит основной поток, т.е. если нет пакета для получения, возвращается nullptr (под капотом там обычное получение пакета из потокобезопасной очереди, которая пополняется внутри ракпира). Делай проверку на nullptr и должно работать
 

swlm

Участник
52
18
Потому-что эта функция вызывается в бесконечном цикле игры и не морозит основной поток, т.е. если нет пакета для получения, возвращается nullptr (под капотом там обычное получение пакета из потокобезопасной очереди, которая пополняется внутри ракпира). Делай проверку на nullptr и должно работать
Да, сяб, проверил и всё работает.

Получается этот вариант хука правильный?
C++:
bool Hooks::HookReceive() {
    HMODULE sampModule = GetModuleHandleA("samp.dll");
    if (!sampModule) {
        return false;
    }

    // Получаем указатель на рак клиент
    RakClientInterface** rakclient = reinterpret_cast<RakClientInterface**>(AVSSync::getRakClientIntf());
    if (!rakclient) {
        return false;
    }

    DWORD* vTable = *reinterpret_cast<DWORD**>(rakclient);
    LPVOID target = reinterpret_cast<LPVOID>(vTable[8]);

    MH_STATUS createStatus = MH_CreateHook(target, &HookedReceive, reinterpret_cast<void**>(&originalReceive));
    if (createStatus != MH_OK) {
        return false;
    }

    MH_STATUS enableStatus = MH_EnableHook(target);
    if (enableStatus != MH_OK) {
        return false;
    }

    std::cout << "Receive hooked successfully!" << std::endl;
    return true;
}
 
  • Нравится
Реакции: вайега52

вайега52

Налуашил состояние
Модератор
2,998
3,124
Да, сяб, проверил и всё работает.

Получается этот вариант хука правильный?
C++:
bool Hooks::HookReceive() {
    HMODULE sampModule = GetModuleHandleA("samp.dll");
    if (!sampModule) {
        return false;
    }

    // Получаем указатель на рак клиент
    RakClientInterface** rakclient = reinterpret_cast<RakClientInterface**>(AVSSync::getRakClientIntf());
    if (!rakclient) {
        return false;
    }

    DWORD* vTable = *reinterpret_cast<DWORD**>(rakclient);
    LPVOID target = reinterpret_cast<LPVOID>(vTable[8]);

    MH_STATUS createStatus = MH_CreateHook(target, &HookedReceive, reinterpret_cast<void**>(&originalReceive));
    if (createStatus != MH_OK) {
        return false;
    }

    MH_STATUS enableStatus = MH_EnableHook(target);
    if (enableStatus != MH_OK) {
        return false;
    }

    std::cout << "Receive hooked successfully!" << std::endl;
    return true;
}
Если указатель на ракклиент верный, то да по сути (я минхуком не пользовался, не знаю,умеет ли он в вмт)
 
  • Нравится
Реакции: swlm

swlm

Участник
52
18
Пытаюсь получить координаты локального игрока в мире, но почему-то они постоянно 0.
Что не так?


cpp:
Это R3

CVector* pos = samp->getPos();
printf("x: %f, y: %f, z: %f\n", pos->x, pos->y, pos->z);

uintptr_t* getPlayerEntity() {
    uintptr_t player_pool = getPlayerPool();
    uintptr_t local_info = player_pool + 0x2F14;

    return reinterpret_cast<uintptr_t*>(local_info + 0x2A4);
}

CVector* getPos() {
    uintptr_t* gamePed = getPlayerEntity();
    if (gamePed != nullptr) {
        return reinterpret_cast<CVector*(__thiscall*)(uintptr_t*)>(0x4043A0)(gamePed);
    }

    //return CVector(1.0, 5.0, 10.0);
}

// 0x4043A0
CSimpleTransform *__thiscall CEntity::GetPosition(CEntity *this) - функция в IDA PRO
 

вайега52

Налуашил состояние
Модератор
2,998
3,124
Пытаюсь получить координаты локального игрока в мире, но почему-то они постоянно 0.
Что не так?


cpp:
Это R3

CVector* pos = samp->getPos();
printf("x: %f, y: %f, z: %f\n", pos->x, pos->y, pos->z);

uintptr_t* getPlayerEntity() {
    uintptr_t player_pool = getPlayerPool();
    uintptr_t local_info = player_pool + 0x2F14;

    return reinterpret_cast<uintptr_t*>(local_info + 0x2A4);
}

CVector* getPos() {
    uintptr_t* gamePed = getPlayerEntity();
    if (gamePed != nullptr) {
        return reinterpret_cast<CVector*(__thiscall*)(uintptr_t*)>(0x4043A0)(gamePed);
    }

    //return CVector(1.0, 5.0, 10.0);
}

// 0x4043A0
CSimpleTransform *__thiscall CEntity::GetPosition(CEntity *this) - функция в IDA PRO
Лучше используй псдк, получай CPed* локального игрока через FindPlayerPed() и из него доставай матрицу (вроде даже есть метод GetPosition)
 

swlm

Участник
52
18
Лучше используй псдк, получай CPed* локального игрока через FindPlayerPed() и из него доставай матрицу (вроде даже есть метод GetPosition)
Не могу, у меня проект создан отдельно от plugin-sdk, если я его добавлю в ручную - то он работать не будет
 

вайега52

Налуашил состояние
Модератор
2,998
3,124
Не могу, у меня проект создан отдельно от plugin-sdk, если я его добавлю в ручную - то он работать не будет
Не совсем понял, как это. Ты можешь просто в свой проект подключить plugin-sdk как библиотеку
Пытаюсь получить координаты локального игрока в мире, но почему-то они постоянно 0.
Что не так?


cpp:
Это R3

CVector* pos = samp->getPos();
printf("x: %f, y: %f, z: %f\n", pos->x, pos->y, pos->z);

uintptr_t* getPlayerEntity() {
    uintptr_t player_pool = getPlayerPool();
    uintptr_t local_info = player_pool + 0x2F14;

    return reinterpret_cast<uintptr_t*>(local_info + 0x2A4);
}

CVector* getPos() {
    uintptr_t* gamePed = getPlayerEntity();
    if (gamePed != nullptr) {
        return reinterpret_cast<CVector*(__thiscall*)(uintptr_t*)>(0x4043A0)(gamePed);
    }

    //return CVector(1.0, 5.0, 10.0);
}

// 0x4043A0
CSimpleTransform *__thiscall CEntity::GetPosition(CEntity *this) - функция в IDA PRO
Если getPlayerPool возвращает указатель на пул, то +- такой код (хотя опять же, есть уже все готовое: sampapi):
C++:
Это R3

CVector* pos = samp->getPos();
printf("x: %f, y: %f, z: %f\n", pos->x, pos->y, pos->z);

uintptr_t* getPlayerEntity() {
    uintptr_t player_pool = getPlayerPool();
    uintptr_t local_info = player_pool + 0x2F14;
    uintptr_t* local_player = reinterpret_cast<uintptr_t*>(local_info + 0x26);
    uintptr_t samp_ped = *local_player; // offset 0x0 CPed
    uintptr_t game_ped = samp_ped + 0x2A4;

    return game_ped;
}

CVector* getPos() {
    uintptr_t* gamePed = getPlayerEntity();
    if (gamePed != nullptr) {
        return reinterpret_cast<CVector*(__thiscall*)(uintptr_t*)>(0x4043A0)(gamePed);
    }

    //return CVector(1.0, 5.0, 10.0);
}

// 0x4043A0
CSimpleTransform *__thiscall CEntity::GetPosition(CEntity *this) - функция в IDA PRO
 

swlm

Участник
52
18
Не совсем понял, как это. Ты можешь просто в свой проект подключить plugin-sdk как библиотеку

Если getPlayerPool возвращает указатель на пул, то +- такой код (хотя опять же, есть уже все готовое: sampapi):
C++:
Это R3

CVector* pos = samp->getPos();
printf("x: %f, y: %f, z: %f\n", pos->x, pos->y, pos->z);

uintptr_t* getPlayerEntity() {
    uintptr_t player_pool = getPlayerPool();
    uintptr_t local_info = player_pool + 0x2F14;
    uintptr_t* local_player = reinterpret_cast<uintptr_t*>(local_info + 0x26);
    uintptr_t samp_ped = *local_player; // offset 0x0 CPed
    uintptr_t game_ped = samp_ped + 0x2A4;

    return game_ped;
}

CVector* getPos() {
    uintptr_t* gamePed = getPlayerEntity();
    if (gamePed != nullptr) {
        return reinterpret_cast<CVector*(__thiscall*)(uintptr_t*)>(0x4043A0)(gamePed);
    }

    //return CVector(1.0, 5.0, 10.0);
}

// 0x4043A0
CSimpleTransform *__thiscall CEntity::GetPosition(CEntity *this) - функция в IDA PRO
Проект отдельно от plugin-sdk, это значит что проект у меня совсем в другой директории.
И если я добавлю plugin-sdk как библиотеку - то в проекте появятся какие-то ошибки...
Когда я инклуд plugin.h делаю
 

вайега52

Налуашил состояние
Модератор
2,998
3,124
Проект отдельно от plugin-sdk, это значит что проект у меня совсем в другой директории.
И если я добавлю plugin-sdk как библиотеку - то в проекте появятся какие-то ошибки...
Когда я инклуд plugin.h делаю
Значит неправильно подключаешь)

Если используешь визуалку, то копируешь псдк с гита, запускаешь его инсталлер, ставишь в первом поле путь до папки, где у тебя плагинсдк лежит, потом выбираешь версию визуалки, генерируешь проект, билдишь.

В своём проекте в настройках пишешь путь до .lib файла псдк и до заголовочных файлов
 

swlm

Участник
52
18
Выводило 0, до того, пока код не изменил вот так:


cpp:
uintptr_t* getPlayerEntity() {
    uintptr_t player_pool = getPlayerPool();
    uintptr_t local_info = player_pool + 0x2F14;
    uintptr_t* local_player = reinterpret_cast<uintptr_t*>(local_info + 0x26);
    uintptr_t samp_ped = *local_player;
    uintptr_t game_ped = samp_ped + 0x2A4;

    return &game_ped;
}

CVector* getPos() {
    uintptr_t* gamePed = getPlayerEntity();
    if (gamePed != nullptr) {
        return reinterpret_cast<CVector*(__thiscall*)(uintptr_t*)>(0x4043A0)(gamePed);
    }

    //return CVector(1.0, 5.0, 10.0);
}
И вылет с ошибкой: Память не может быть Read.
А был вот такой код, до момента вылета:


cpp:
[CODE title="cpp"]uintptr_t getPlayerEntity() {
    uintptr_t player_pool = getPlayerPool();
    uintptr_t local_info = player_pool + 0x2F14;
    uintptr_t* local_player = reinterpret_cast<uintptr_t*>(local_info + 0x26);
    uintptr_t samp_ped = *local_player;
    uintptr_t game_ped = samp_ped + 0x2A4;

    return game_ped;
}

CVector* getPos() {
    uintptr_t gamePed = getPlayerEntity();
    if (&gamePed != nullptr) {
        return reinterpret_cast<CVector*(__thiscall*)(uintptr_t)>(0x4043A0)(gamePed);
    }

    //return CVector(1.0, 5.0, 10.0);
}
[/CODE]

Значит неправильно подключаешь)

Если используешь визуалку, то копируешь псдк с гита, запускаешь его инсталлер, ставишь в первом поле путь до папки, где у тебя плагинсдк лежит, потом выбираешь версию визуалки, генерируешь проект, билдишь.

В своём проекте в настройках пишешь путь до .lib файла псдк и до заголовочных файлов
Так всё и сделано, смотри, вот такая конфигурация:


cpp:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug|Win32">
      <Configuration>Debug</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|Win32">
      <Configuration>Release</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Debug|x64">
      <Configuration>Debug</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|x64">
      <Configuration>Release</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <VCProjectVersion>17.0</VCProjectVersion>
    <Keyword>Win32Proj</Keyword>
    <ProjectGuid>{ab886c38-1f59-43d8-9935-abe2983b5637}</ProjectGuid>
    <RootNamespace>sampvoice</RootNamespace>
    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v143</PlatformToolset>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v143</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>Unicode</CharacterSet>
    <PreferredToolArchitecture>
    </PreferredToolArchitecture>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v143</PlatformToolset>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v143</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  <ImportGroup Label="ExtensionSettings">
  </ImportGroup>
  <ImportGroup Label="Shared">
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <SDLCheck>true</SDLCheck>
      <PreprocessorDefinitions>WIN32;_DEBUG;SAMPVOICE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <ConformanceMode>true</ConformanceMode>
      <PrecompiledHeader>Use</PrecompiledHeader>
      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableUAC>false</EnableUAC>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <SDLCheck>true</SDLCheck>
      <PreprocessorDefinitions>WIN32;NDEBUG;SAMPVOICE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <ConformanceMode>true</ConformanceMode>
      <PrecompiledHeader>Use</PrecompiledHeader>
      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
      <LanguageStandard>stdcpplatest</LanguageStandard>
      <AdditionalIncludeDirectories>C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\include;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\cyanide-src\include;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\polyhook-src\zydis\src;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\polyhook-src;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\polyhook-src\polyhook2;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\polyhook-src\sources;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\polyhook-src\zydis\include;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\polyhook-src\zydis\include\Zydis;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\xbyak-src;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\xbyak-src\xbyak;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x64-Debug\_deps\polyhook-src\zydis\dependencies\zycore\include;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x64-Debug\_deps\polyhook-src\zydis\msvc;C:\portaudio-master\include;C:\Users\swlm\Desktop\MinHook\include;C:\opus-main\include;C:\Users\swlm\Desktop\basic-template;C:\Users\swlm\Desktop\basic-template\pawn\source;C:\Users\swlm\Desktop\basic-template\pawn\source\linux;C:\Users\swlm\Desktop\basic-template\sdk\include;C:\Users\swlm\Desktop\basic-template\sdk\lib\glm\glm\..;C:\Users\swlm\Desktop\basic-template\sdk\lib\robin-hood-hashing\src\include;C:\Users\swlm\Desktop\basic-template\sdk\lib\span-lite\include;C:\Users\swlm\Desktop\basic-template\sdk\lib\string-view-lite\include;$(PLUGIN_SDK_DIR)\shared;$(PLUGIN_SDK_DIR)\shared\game;$(PLUGIN_SDK_DIR)\plugin_SA;$(PLUGIN_SDK_DIR)\plugin_SA\game_SA;$(PLUGIN_SDK_DIR)\plugin_SA\game_SA\rw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
      <BufferSecurityCheck>true</BufferSecurityCheck>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableUAC>false</EnableUAC>
      <AdditionalLibraryDirectories>C:\plugin-sdk\output\lib;C:\opus-main\out\build\x86-Release\Release;C:\Users\swlm\Desktop\minhook\build\VC17\lib\Release;C:\portaudio-master\out\build\x86-Release\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <AdditionalDependencies>plugin.lib;rakhook.lib;PolyHook_2.lib;cyanide.lib;Zydis.lib;Zycore.lib;portaudio.lib;opus.lib;libMinHook.x86.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <SDLCheck>true</SDLCheck>
      <PreprocessorDefinitions>_DEBUG;SAMPVOICE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <ConformanceMode>true</ConformanceMode>
      <PrecompiledHeader>Use</PrecompiledHeader>
      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableUAC>false</EnableUAC>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <SDLCheck>true</SDLCheck>
      <PreprocessorDefinitions>NDEBUG;SAMPVOICE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <ConformanceMode>true</ConformanceMode>
      <PrecompiledHeader>Use</PrecompiledHeader>
      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableUAC>false</EnableUAC>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup>
    <ClInclude Include="AVSSync\AVSSyncClient.hpp" />
    <ClInclude Include="BitStream.h" />
    <ClInclude Include="AVSSync\raknet\RakClient.h" />
    <ClInclude Include="CAudio.h" />
    <ClInclude Include="CCodec.h" />
    <ClInclude Include="CMultiplayer.h" />
    <ClInclude Include="dllmain.h" />
    <ClInclude Include="framework.h" />
    <ClInclude Include="Hooks.h" />
    <ClInclude Include="pch.h" />
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="BitStream.cpp" />
    <ClCompile Include="CAudio.cpp" />
    <ClCompile Include="CMultiplayer.cpp" />
    <ClCompile Include="dllmain.cpp" />
    <ClCompile Include="Hooks.cpp" />
    <ClCompile Include="pch.cpp">
      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
    </ClCompile>
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>
 

вайега52

Налуашил состояние
Модератор
2,998
3,124
Выводило 0, до того, пока код не изменил вот так:


cpp:
uintptr_t* getPlayerEntity() {
    uintptr_t player_pool = getPlayerPool();
    uintptr_t local_info = player_pool + 0x2F14;
    uintptr_t* local_player = reinterpret_cast<uintptr_t*>(local_info + 0x26);
    uintptr_t samp_ped = *local_player;
    uintptr_t game_ped = samp_ped + 0x2A4;

    return &game_ped;
}

CVector* getPos() {
    uintptr_t* gamePed = getPlayerEntity();
    if (gamePed != nullptr) {
        return reinterpret_cast<CVector*(__thiscall*)(uintptr_t*)>(0x4043A0)(gamePed);
    }

    //return CVector(1.0, 5.0, 10.0);
}
И вылет с ошибкой: Память не может быть Read.
А был вот такой код, до момента вылета:


cpp:
[CODE title="cpp"]uintptr_t getPlayerEntity() {
    uintptr_t player_pool = getPlayerPool();
    uintptr_t local_info = player_pool + 0x2F14;
    uintptr_t* local_player = reinterpret_cast<uintptr_t*>(local_info + 0x26);
    uintptr_t samp_ped = *local_player;
    uintptr_t game_ped = samp_ped + 0x2A4;

    return game_ped;
}

CVector* getPos() {
    uintptr_t gamePed = getPlayerEntity();
    if (&gamePed != nullptr) {
        return reinterpret_cast<CVector*(__thiscall*)(uintptr_t)>(0x4043A0)(gamePed);
    }

    //return CVector(1.0, 5.0, 10.0);
}
[/CODE]


Так всё и сделано, смотри, вот такая конфигурация:


cpp:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug|Win32">
      <Configuration>Debug</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|Win32">
      <Configuration>Release</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Debug|x64">
      <Configuration>Debug</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|x64">
      <Configuration>Release</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <VCProjectVersion>17.0</VCProjectVersion>
    <Keyword>Win32Proj</Keyword>
    <ProjectGuid>{ab886c38-1f59-43d8-9935-abe2983b5637}</ProjectGuid>
    <RootNamespace>sampvoice</RootNamespace>
    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v143</PlatformToolset>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v143</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>Unicode</CharacterSet>
    <PreferredToolArchitecture>
    </PreferredToolArchitecture>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v143</PlatformToolset>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v143</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  <ImportGroup Label="ExtensionSettings">
  </ImportGroup>
  <ImportGroup Label="Shared">
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <SDLCheck>true</SDLCheck>
      <PreprocessorDefinitions>WIN32;_DEBUG;SAMPVOICE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <ConformanceMode>true</ConformanceMode>
      <PrecompiledHeader>Use</PrecompiledHeader>
      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableUAC>false</EnableUAC>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <SDLCheck>true</SDLCheck>
      <PreprocessorDefinitions>WIN32;NDEBUG;SAMPVOICE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <ConformanceMode>true</ConformanceMode>
      <PrecompiledHeader>Use</PrecompiledHeader>
      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
      <LanguageStandard>stdcpplatest</LanguageStandard>
      <AdditionalIncludeDirectories>C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\include;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\cyanide-src\include;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\polyhook-src\zydis\src;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\polyhook-src;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\polyhook-src\polyhook2;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\polyhook-src\sources;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\polyhook-src\zydis\include;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\polyhook-src\zydis\include\Zydis;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\xbyak-src;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x86-Release\_deps\xbyak-src\xbyak;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x64-Debug\_deps\polyhook-src\zydis\dependencies\zycore\include;C:\plugin-sdk\tools\myplugin-gen\generated\client-npc\RakHook\out\build\x64-Debug\_deps\polyhook-src\zydis\msvc;C:\portaudio-master\include;C:\Users\swlm\Desktop\MinHook\include;C:\opus-main\include;C:\Users\swlm\Desktop\basic-template;C:\Users\swlm\Desktop\basic-template\pawn\source;C:\Users\swlm\Desktop\basic-template\pawn\source\linux;C:\Users\swlm\Desktop\basic-template\sdk\include;C:\Users\swlm\Desktop\basic-template\sdk\lib\glm\glm\..;C:\Users\swlm\Desktop\basic-template\sdk\lib\robin-hood-hashing\src\include;C:\Users\swlm\Desktop\basic-template\sdk\lib\span-lite\include;C:\Users\swlm\Desktop\basic-template\sdk\lib\string-view-lite\include;$(PLUGIN_SDK_DIR)\shared;$(PLUGIN_SDK_DIR)\shared\game;$(PLUGIN_SDK_DIR)\plugin_SA;$(PLUGIN_SDK_DIR)\plugin_SA\game_SA;$(PLUGIN_SDK_DIR)\plugin_SA\game_SA\rw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
      <BufferSecurityCheck>true</BufferSecurityCheck>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableUAC>false</EnableUAC>
      <AdditionalLibraryDirectories>C:\plugin-sdk\output\lib;C:\opus-main\out\build\x86-Release\Release;C:\Users\swlm\Desktop\minhook\build\VC17\lib\Release;C:\portaudio-master\out\build\x86-Release\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <AdditionalDependencies>plugin.lib;rakhook.lib;PolyHook_2.lib;cyanide.lib;Zydis.lib;Zycore.lib;portaudio.lib;opus.lib;libMinHook.x86.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <SDLCheck>true</SDLCheck>
      <PreprocessorDefinitions>_DEBUG;SAMPVOICE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <ConformanceMode>true</ConformanceMode>
      <PrecompiledHeader>Use</PrecompiledHeader>
      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableUAC>false</EnableUAC>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <SDLCheck>true</SDLCheck>
      <PreprocessorDefinitions>NDEBUG;SAMPVOICE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <ConformanceMode>true</ConformanceMode>
      <PrecompiledHeader>Use</PrecompiledHeader>
      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableUAC>false</EnableUAC>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup>
    <ClInclude Include="AVSSync\AVSSyncClient.hpp" />
    <ClInclude Include="BitStream.h" />
    <ClInclude Include="AVSSync\raknet\RakClient.h" />
    <ClInclude Include="CAudio.h" />
    <ClInclude Include="CCodec.h" />
    <ClInclude Include="CMultiplayer.h" />
    <ClInclude Include="dllmain.h" />
    <ClInclude Include="framework.h" />
    <ClInclude Include="Hooks.h" />
    <ClInclude Include="pch.h" />
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="BitStream.cpp" />
    <ClCompile Include="CAudio.cpp" />
    <ClCompile Include="CMultiplayer.cpp" />
    <ClCompile Include="dllmain.cpp" />
    <ClCompile Include="Hooks.cpp" />
    <ClCompile Include="pch.cpp">
      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
    </ClCompile>
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>
А какие ошибки при компиляции?
 

swlm

Участник
52
18
А какие ошибки при компиляции?
Там их просто море...


cpp:
C:\plugin-sdk\shared\GameVersion.h(92,5): warning C4060: оператор switch не содержит метку "case" или "default"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\shared\GameVersion.h(243,5): warning C4060: оператор switch не содержит метку "case" или "default"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\shared\Other.h(214,12): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\shared\Other.h(214,22): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "InterpV2D"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\shared\Other.h(214,22): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\shared\Other.h(214,42): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "a"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\shared\Other.h(214,67): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\shared\Other.h(214,67): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CVector2D.h(25,27): warning C4099: CVector: имя типа, ранее отображенное с помощью "struct", теперь отображено с помощью "class"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\shared\extensions\Config.h(73,19): error C3646: asVec2d: неизвестный спецификатор переопределения
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\shared\extensions\Config.h(73,26): error C2059: синтаксическая ошибка: (
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\shared\extensions\Config.h(73,48): error C2238: непредвиденные лексемы перед ";"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\shared\extensions\Config.h(74,19): error C3646: asVec2d: неизвестный спецификатор переопределения
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\shared\extensions\Config.h(74,26): error C2059: синтаксическая ошибка: (
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\shared\extensions\Config.h(74,28): error C2238: непредвиденные лексемы перед ";"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(11,7): error C2011: CVector: переопределение типа "struct"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(77,16): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(78,20): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(78,31): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(78,41): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(78,52): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(78,62): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(78,73): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(78,19): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(81,16): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(82,20): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(82,31): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(82,41): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(82,52): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(82,62): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(82,73): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(82,19): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(85,16): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(86,20): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(86,40): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(86,60): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(86,19): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(89,16): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(90,20): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(90,40): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(90,60): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(90,19): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(94,13): error C2079: "diff" использует не имеющую определения структуру struct "CVector"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(94,29): error C2027: использование неопределенного типа "CVector"
1>(компиляция исходного файла "pch.cpp")
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CVector.h(98,1): error C2338: static_assert failed: 'Invalid structure size of CVector'
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CSimpleTransform.h(16,10): error C2079: "CSimpleTransform::m_vPosn" использует не имеющую определения структуру struct "CVector"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CSimpleTransform.h(19,22): error C2061: синтаксическая ошибка: идентификатор "RwMatrix"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CSimpleTransform.h(24,1): error C2338: static_assert failed: 'Invalid structure size of CSimpleTransform'
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CQuaternion.h(15,13): error C2079: "CQuaternion::imag" использует не имеющую определения структуру struct "CVector"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CQuaternion.h(19,14): error C2061: синтаксическая ошибка: идентификатор "RwMatrix"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CQuaternion.h(25,14): error C2061: синтаксическая ошибка: идентификатор "RwV3d"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CQuaternion.h(25,10): error C2535: void CQuaternion::Get(void): функция-член уже определена или объявлена
1>(компиляция исходного файла "pch.cpp")
1>    C:\plugin-sdk\plugin_SA\game_SA\CQuaternion.h(19,10):
1>     см. объявление "CQuaternion::Get"
1>C:\plugin-sdk\plugin_SA\game_SA\CQuaternion.h(34,14): error C2061: синтаксическая ошибка: идентификатор "RwMatrix"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CQuaternion.h(40,14): error C2061: синтаксическая ошибка: идентификатор "RwV3d"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CQuaternion.h(40,10): error C2535: void CQuaternion::Set(void): функция-член уже определена или объявлена
1>(компиляция исходного файла "pch.cpp")
1>    C:\plugin-sdk\plugin_SA\game_SA\CQuaternion.h(34,10):
1>     см. объявление "CQuaternion::Set"
1>C:\plugin-sdk\plugin_SA\game_SA\CQuaternion.h(76,1): error C2338: static_assert failed: 'Invalid structure size of CQuaternion'
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(15,18): error C2079: "CMatrix::right" использует не имеющую определения структуру struct "CVector"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(17,18): error C2079: "CMatrix::up" использует не имеющую определения структуру struct "CVector"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(19,18): error C2079: "CMatrix::at" использует не имеющую определения структуру struct "CVector"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(21,18): error C2079: "CMatrix::pos" использует не имеющую определения структуру struct "CVector"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(24,11): error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(24,2): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(24,27): error C2238: непредвиденные лексемы перед ";"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(34,10): error C2061: синтаксическая ошибка: идентификатор "RwMatrix"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(34,2): error C2535: CMatrix::CMatrix(void): функция-член уже определена или объявлена
1>(компиляция исходного файла "pch.cpp")
1>    C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(27,5):
1>     см. объявление "CMatrix::CMatrix"
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(36,14): error C2061: синтаксическая ошибка: идентификатор "RwMatrix"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(42,16): error C2061: синтаксическая ошибка: идентификатор "RwMatrix"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(42,7): error C2535: void CMatrix::UpdateRW(void): функция-член уже определена или объявлена
1>(компиляция исходного файла "pch.cpp")
1>    C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(41,7):
1>     см. объявление "CMatrix::UpdateRW"
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(61,22): error C2061: синтаксическая ошибка: идентификатор "RwMatrix"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(28,9): error C2065: m_pAttachMatrix: необъявленный идентификатор
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(70,43): error C2440: return: невозможно преобразовать "const <error type>" в "const CVector &"
1>(компиляция исходного файла "pch.cpp")
1>    C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(70,43):
1>    Причина: невозможно преобразовать "const <error type>" в "const CVector"
1>    C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(70,43):
1>    использование неопределенного типа "CVector"
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(73,45): error C2440: return: невозможно преобразовать "const <error type>" в "const CVector &"
1>(компиляция исходного файла "pch.cpp")
1>    C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(73,45):
1>    Причина: невозможно преобразовать "const <error type>" в "const CVector"
1>    C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(73,45):
1>    использование неопределенного типа "CVector"
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(76,40): error C2440: return: невозможно преобразовать "const <error type>" в "const CVector &"
1>(компиляция исходного файла "pch.cpp")
1>    C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(76,40):
1>    Причина: невозможно преобразовать "const <error type>" в "const CVector"
1>    C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(76,40):
1>    использование неопределенного типа "CVector"
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(79,46): error C2440: return: невозможно преобразовать "const <error type>" в "const CVector &"
1>(компиляция исходного файла "pch.cpp")
1>    C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(79,46):
1>    Причина: невозможно преобразовать "const <error type>" в "const CVector"
1>    C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(79,46):
1>    использование неопределенного типа "CVector"
1>    C:\Users\swlm\source\repos\samp-voice\samp-voice\CMultiplayer.h(4,8):
1>     см. объявление "CVector"
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrix.h(82,1): error C2338: static_assert failed: 'Invalid structure size of CMatrix'
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrixLink.h(22,20): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrixLink.h(22,5): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrixLink.h(23,20): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrixLink.h(23,5): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\CMatrixLink.h(26,1): error C2338: static_assert failed: 'Invalid structure size of CMatrixLink'
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(20,19): error C2065: GAME_10US_COMPACT: необъявленный идентификатор
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(21,19): error C2065: GAME_10US_COMPACT: необъявленный идентификатор
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(22,19): error C2065: GAME_10US_COMPACT: необъявленный идентификатор
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(23,19): error C2065: GAME_10US_COMPACT: необъявленный идентификатор
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(24,19): error C2065: GAME_10US_COMPACT: необъявленный идентификатор
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(25,19): error C2065: GAME_10US_COMPACT: необъявленный идентификатор
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(26,19): error C2065: GAME_10US_COMPACT: необъявленный идентификатор
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(27,19): error C2065: GAME_10US_COMPACT: необъявленный идентификатор
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(28,19): error C2065: GAME_10US_COMPACT: необъявленный идентификатор
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(29,19): error C2065: GAME_10US_COMPACT: необъявленный идентификатор
1>(компиляция исходного файла "pch.cpp")
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(20,19): error C2975: "Values": недопустимый аргумент шаблона для "plugin::RefList", ожидается константное выражение времени компиляции
1>(компиляция исходного файла "pch.cpp")
1>    C:\plugin-sdk\shared\RefList.h(11,19):
1>     см. объявление "Values"
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(21,19): error C2975: "Values": недопустимый аргумент шаблона для "plugin::RefList", ожидается константное выражение времени компиляции
1>(компиляция исходного файла "pch.cpp")
1>    C:\plugin-sdk\shared\RefList.h(11,19):
1>     см. объявление "Values"
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(22,19): error C2975: "Values": недопустимый аргумент шаблона для "plugin::RefList", ожидается константное выражение времени компиляции
1>(компиляция исходного файла "pch.cpp")
1>    C:\plugin-sdk\shared\RefList.h(11,19):
1>     см. объявление "Values"
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(23,19): error C2975: "Values": недопустимый аргумент шаблона для "plugin::RefList", ожидается константное выражение времени компиляции
1>(компиляция исходного файла "pch.cpp")
1>    C:\plugin-sdk\shared\RefList.h(11,19):
1>     см. объявление "Values"
1>C:\plugin-sdk\plugin_SA\game_SA\meta\meta.CMatrixLink.h(23,19): error C1003: число ошибок превышает 100; остановка компиляции