SF Plugin WH на приведений DRP

Revalto

Известный
Автор темы
532
225
Версия SA-MP
  1. 0.3.7 (R1)
Всем привет, с вами я. Буду очень краток:
42943

Ну и сам скрипт естественно
Активация: Автоматическая
Установка: Кидаем в папку SAMPFUNCS
Для работы нужен лишь: Visual C++ 2019 и DirectX

Минус: Байтится на другие объекты, поэтому предлагаю 2е версии, по которым он будет искать приведений
42951


Исходный код:
Код:
#include <Windows.h>
#include "main.h"

SAMPFUNCS *SF = new SAMPFUNCS();
stFontInfo* pFont;

float GetDistance3D(float x1, float y1, float z1, float x2, float y2, float z2)
{
    return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1) + (z2 - z1) * (z2 - z1));
}

float GetDistance(D3DXVECTOR3 target)
{
    D3DXVECTOR3 player(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ);
    return sqrt((player.x - target.x) * (player.x - target.x) + (player.y - target.y) * (player.y - target.y) + (player.z - target.z) * (player.z - target.z));
}

void CalcScreenCoors(D3DXVECTOR3* vecWorld, D3DXVECTOR3* vecScreen)
{
    D3DXMATRIX    m((float*)(0xB6FA2C));
    DWORD* dwLenX = (DWORD*)(0xC17044);
    DWORD* dwLenY = (DWORD*)(0xC17048);
    vecScreen->x = (vecWorld->z * m._31) + (vecWorld->y * m._21) + (vecWorld->x * m._11) + m._41;
    vecScreen->y = (vecWorld->z * m._32) + (vecWorld->y * m._22) + (vecWorld->x * m._12) + m._42;
    vecScreen->z = (vecWorld->z * m._33) + (vecWorld->y * m._23) + (vecWorld->x * m._13) + m._43;
    double    fRecip = (double)1.0 / vecScreen->z;
    vecScreen->x *= (float)(fRecip * (*dwLenX));
    vecScreen->y *= (float)(fRecip * (*dwLenY));
}

bool CALLBACK Present(CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion)
{
    if (SUCCEEDED(SF->getRender()->BeginRender())) // если рендерер готов к рисованию
    {
        for (int i = 0; i < SAMP_MAX_OBJECTS; i++)
        {
            if (!SF->getSAMP()->getInfo()->pPools->pObject->IsObjectExists(i)) continue;
            D3DXVECTOR3 scPos; float x, y, z; // char name[500]; f

            object_info* object = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->pGTAEntity;
            if (object != nullptr)
            {
                x = object->base.matrix[4 * 3];
                y = object->base.matrix[4 * 3 + 1];
                z = object->base.matrix[4 * 3 + 2];
            }

            if (GetDistance(D3DXVECTOR3(x, y, z)) > 350) continue;

            CalcScreenCoors(&D3DXVECTOR3(x, y, z), &scPos);
            int MID = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->iModel;

            if (scPos[2] > 0.01f && MID == 19482)
            {
                SF->getRender()->DrawLine(950, 800, scPos.x, scPos.y, 1, 0xFF00FF00);
            }
        }
        SF->getRender()->EndRender(); // завершаем рисование
    };

    return true; // возвращаем положительный результат
};

void __stdcall mainloop()
{
    static bool initialized = false;
    if (!initialized)
    {
        if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized())
        {
            initialized = true;
            SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present);
            pFont = SF->getRender()->CreateNewFont("Tahoma", 12, FCR_BORDER);

            SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "Поиск приведение by Revalto");
        }
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    if (dwReasonForCall == DLL_PROCESS_ATTACH)
        SF->initPlugin(mainloop, hModule);
    return TRUE;
}
 

Вложения

  • ESP_19477.sf
    77 KB · Просмотры: 439
  • ESP_19482.sf
    77 KB · Просмотры: 707
Последнее редактирование:

Revalto

Известный
Автор темы
532
225
Реагирует вообще на всё, невозможно искать
Потому что ID объектов совпадают. Если использовать версию ESP_19482, то 1 полоса это призрак, все остальное это фигня ( исключение - какие то там парашуты валяющиеся рядом с военками )
 
  • Нравится
Реакции: Nevsk1yWork и 123s

slavka221

Новичок
1
0
вот я закинул скрипт в сапфункс ,но почему-то не работает,почему?
 

Vlad_Samper

Новичок
1
0
помогите я живу в украине и вк неработает как мне установить скинте на гугл диск пж
 

Revalto

Известный
Автор темы
532
225
Куда кидать этот файл?
Установка: Кидаем в папку SAMPFUNCS

вот я закинул скрипт в сапфункс ,но почему-то не работает,почему?
Для работы нужен лишь: Visual C++ 2019 и DirectX

помогите я живу в украине и вк неработает как мне установить скинте на гугл диск пж
Причем тут ВК?
 
  • Нравится
Реакции: kostikz

Nevsk1yWork

Новичок
9
3
Если разобраться и привыкнуть, то можно спокойно ловить призраков. У меня, чаще всего, три полосы - это призраки. Остальное - дичь.
 
  • Нравится
Реакции: Revalto

Revalto

Известный
Автор темы
532
225