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

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,650
2,535
Нужна помощь, я получаю координаты метки на карте, но Z у нас будет равен 0, из за этого получается все по пизде. На луа нашел решение данной проблемы:

lua:
local result, xTarget, yTarget, zTarget = getTargetBlipCoordinates()

requestCollision(xTarget, yTarget)
loadScene(xTarget, yTarget, zTarget)
arg1,arg2,arg3 = xTarget, yTarget, getGroundZFor3dCoord(xTarget, yTarget, 999)
-- то есть в arg3 записан нормальный, адекватный Z, он равен земле, на которую в дальнейшем мы тпаемся
а на плюсах найти Z - проблемка, хелпуйте
C++:
float findGroundZForCoord(const float x, const float y) {
    return reinterpret_cast<float(*)(float, float)>(0x569660)(x, y);
}
 
  • Клоун
Реакции: Fott

suicideboyze

Новичок
6
0
При создании проекта в VS нет библиотеки динамической компановки (DLL). Что нужно докачать для VS, чтобы данная библиотека появилась?
 

Digger Man52

52NGG
Проверенный
1,122
987
При создании проекта в VS нет библиотеки динамической компановки (DLL). Что нужно докачать для VS, чтобы данная библиотека появилась?
Desktop development with C++
251E8ED1-EAF0-4951-B832-7A021CC3BA04.jpeg

E92FF15B-C168-4533-9837-CFEB658F49F8.jpeg
 

Дхейкер

Новичок
7
0
What's wrong? the square is not drawn on the screen, if i use endscene it doesn't work either.
C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1

#include <Windows.h>
#include <d3d9.h>
#include <d3dx9.h>
#include <string>
#include <assert.h>
#include <process.h>
#include <dinput.h>
#include <tchar.h>

#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")

#include "VMTHookManager.h"

WNDPROC oWndProc;

DWORD g_dwSAMP_Addr;

typedef HRESULT(WINAPI* _EndScene)(IDirect3DDevice9*); //прототип
_EndScene oEndScene; //экземпляр прототипа, для возврата оригинала

typedef HRESULT(WINAPI* _Present)(IDirect3DDevice9*, const RECT*, const RECT*, HWND, const RGNDATA*); //прототип
_Present oPresent; //экземпляр прототипа, для возврата оригинала

typedef HRESULT(WINAPI* _Reset)(IDirect3DDevice9*, D3DPRESENT_PARAMETERS*);
_Reset oReset;

void DrawRect(LPDIRECT3DDEVICE9 m_pDevice, int X, int Y, int L, int H, D3DCOLOR color)
{
    D3DRECT rect = { X, Y, X + L, Y + H };
    m_pDevice->Clear(1, &rect, D3DCLEAR_TARGET, color, 0, 0);
}

HRESULT WINAPI hooked_Present(IDirect3DDevice9* pDevice, const RECT* pSourceRect, const RECT* pDestRect, HWND hdest, const RGNDATA* pDirtyRegion)
{
    DrawRect(pDevice, 250, 250, 10, 10, 0xFFFF0000);
    return oPresent(pDevice, pSourceRect, pDestRect, hdest, pDirtyRegion); // возврат оригинала
}

HRESULT WINAPI myEndScene(IDirect3DDevice9* m_pDevice)
{
    return oEndScene(m_pDevice);
}

HRESULT WINAPI myReset(IDirect3DDevice9* m_pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters)
{
    auto  result = oReset(m_pDevice, pPresentationParameters);
    return result;
}

void InitHook()
{
    void** vTableDevice = *(void***)(*(DWORD*)0xC97C28); // адрес Device
    VMTHookManager* vmtHooks = new VMTHookManager(vTableDevice);
    oPresent = (_Present)vmtHooks->Hook(17, (void*)hooked_Present);
    oEndScene = (_EndScene)vmtHooks->Hook(42, (void*)myEndScene);  // 42 - номер EndScene
    oReset = (_Reset)vmtHooks->Hook(16, (void*)myReset);// 16 - номер Reset
}

int WINAPI Thread()
{
    while (*(DWORD*)0xC8D4C0 != 9) // проверка на статус загрузки игры
        Sleep(100);
    InitHook();
    return 0;
}

BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH)
        CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)Thread, NULL, NULL, NULL);
    return TRUE;
}
up
 

papercut

Известный
104
17
у меня есть dll для сампа, я хочу перенести ее в .exe. Попытка сделать загрузку ддлки из байтов, а не из файла, не увенчалась успехом. Как это правильно сделать? Есть мб какие то либы или готовые проекты?
 

Digger Man52

52NGG
Проверенный
1,122
987
у меня есть dll для сампа, я хочу перенести ее в .exe. Попытка сделать загрузку ддлки из байтов, а не из файла, не увенчалась успехом. Как это правильно сделать? Есть мб какие то либы или готовые проекты?
ты типо mmap injector делаешь? в ресурсы засунь, на гите чекни как ммап работает
 

papercut

Известный
104
17
ты типо mmap injector делаешь? в ресурсы засунь, на гите чекни как ммап работает
mmap ожидает что дллка что-то вернет, но у меня этого не происходит. Подозреваю, что CreateRemoteThread не вызывает DllMain, а следовательно нету реакции от дллки. Дллка - https://www.blast.hk/threads/130055/
У меня НЕМНОГО дописано но думаю это не влияет на работу. Если что, вот мой main.cpp
C++:
#include <filesystem>
#include <lemon/hook.hpp>
#include "plugin.hpp"
#include "samp/base.hpp"
#include "samp/lib.hpp"

std::unique_ptr<plugin> plug;

std::filesystem::path g_config_path;

void gameloop() {
    static bool init = false;
    if (init || !dx9::find_device() || !samp::inited()) return;
    plug = std::make_unique<plugin>();
    init = true;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID) {
    if (samp::ver() == samp::ver::unknown) return FALSE;
    static lemon::hook<> gameloop_hook(0x748DA3);
    if (dwReasonForCall == DLL_PROCESS_ATTACH) {
        /*
        char mod_path[MAX_PATH] = { 0 };
        GetModuleFileNameA(hModule, mod_path, MAX_PATH);
        g_config_path = std::filesystem::path(mod_path).replace_extension("json");
        */

        gameloop_hook.on_before += &gameloop;
        gameloop_hook.install();
    }
    if (dwReasonForCall == DLL_PROCESS_DETACH) {
        gameloop_hook.remove();
        plugin* foo = plug.release();
        delete foo;
    }
    return TRUE;
}
мб мне пометить все
extern "C" __declspec(dllexport) ?
Но это уже наугад тыканье. Надеюсь, знающие люди помогут
 
Последнее редактирование:

Young123

Новичок
10
0
Здарова, кто то может шарит за самп мобайл, делаю чит для блек раши, но есть проблема, когда делаю меню на имгуи, оно у меня работает только в на карте, как можно это исправить, мне писали что то с рендером, но не че не понял, может я его как то не так запускаю?
 
Последнее редактирование:

Misha_Sereda

Потрачен
3
0
Здарова, кто то может шарит за самп мобайл, делаю чит для блек раши, но есть проблема, когда делаю меню на имгуи, оно у меня работает только в на карте, как можно это исправить, мне писали что то с рендером, но не че не понял, может я его как то не так запускаю?
Скинь свои контакты
 

reussssya

Новичок
28
8
Здарова, кто то может шарит за самп мобайл, делаю чит для блек раши, но есть проблема, когда делаю меню на имгуи, оно у меня работает только в на карте, как можно это исправить, мне писали что то с рендером, но не че не понял, может я его как то не так запускаю?
мне тоже скинь контакты
 

inexplica

Известный
734
355
Такой вопрос (мб не по теме)
Какой редактор кроме vs юзать для сампа.
Т.к vs не хочет устанавливаться и воопще работать у меня.
 
  • Ха-ха
Реакции: Z3roKwq