SF Plugin [DRP] Diver ESP - Водолазы

sаnеk

Всефорумный sanek
Друг
2,107
2,059
там вроде объекты теперь появляются когда приближаешься к ним
 

Revalto

Известный
Автор темы
532
225
там вроде объекты теперь появляются когда приближаешься к ним
Объекты теперь рендерит когда ты к ним приближаешься (Это такой фикс от ДРП)
Тогда увы... Тогда тему можно закрывать...
Не актуально!

Говно-код этого скрипта:

Код:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

float x; float y; float z; char name[64];
stFontInfo *pFont;
const uint16_t _settingsDialogID = 8249;
bool espitem; bool esp; bool _enabled = false, _inited = false, _dialog = false, _showDialog = false; bool espact[10] = { false, false, false, false, false, false, false, false, false, false };

void ShowSettingsDialog(void);

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 whtop(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion) // рендер
{
    if (espitem == false)
        return true;
    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;

            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;

            int MID = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->iModel;
            // Плита - 1718 | Кувшин - 2870 | 2228 19631 - Лопата | 2726 - Ваза | 14705 - Ваза | 19941 - Свиток | 19314 - Рога | 1575 - сундук / 19591 - веер  1575 - пакет 19631 - молот
            CalcScreenCoors(&D3DXVECTOR3(x, y, z), &scPos);

            if (MID == 1718) sprintf(name, "Плита");
            if (MID == 2870) sprintf(name, "Кувшин");
            if (MID == 2228) sprintf(name, "Лопата");
            if (MID == 2726 || MID == 14705) sprintf(name, "Ваза");
            if (MID == 19941) sprintf(name, "Слиток");
            if (MID == 19314) sprintf(name, "Рога");
            if (MID == 1575) sprintf(name, "Сундук");
            if (MID == 19591) sprintf(name, "Веер");
            if (MID == 1575) sprintf(name, "Мешок");
            if (MID == 19631) sprintf(name, "Молот");
            if (MID == 19820) sprintf(name, "Сосуд");

            if (scPos[2] > 0.01f && ((MID == 1718 && espact[0]) || (MID == 2870 && espact[1]) || (MID == 2228 && espact[2]) || ((MID == 2726 || MID == 14705) && espact[3]) || (MID == 19941 && espact[4]) || (MID == 19314 && espact[5]) || (MID == 1575 && espact[6]) || (MID == 19591 && espact[7]) || (MID == 1575 && espact[8]) || (MID == 19631 && espact[9]) || (MID == 19820 && espact[10])) && espitem == true)
            {
                char szMsg[128];
                sprintf(szMsg, "%s{0000FF}[%.0f]", name, GetDistance(D3DXVECTOR3(x, y, z)));
                //else if(esp == true) sprintf(szMsg, "ModelID: %d{0000FF}[%.0f]", MID, GetDistance(D3DXVECTOR3(x, y, z)));
                pFont->Print(szMsg, 0xFFFF8C00, scPos.x, scPos.y, false);
                if (esp == true) SF->getRender()->DrawLine(950, 800, scPos.x, scPos.y, 1, 0xFFFF8C00); // Делался под мой экран, надо было корды перса перевести в 2D
            }
        }

        SF->getRender()->EndRender();
    }
    return true;
}

void CALLBACK OnDialogRespond(int dialogId, int buttonId, int listItem, const char *input) // диалог
{
    if (_dialog == false || dialogId != _settingsDialogID || buttonId == 0)
        return;
    _dialog = false;
    switch (listItem)
    {
    case 0: espitem ^= true;        break;
    case 1: esp ^= true;            break;
    case 2: SF->getSAMP()->getChat()->AddChatMessage(-1, "Ваза - 250$ | Сосуд - 500$ | Плита - 500$ | Кувшин - 250$ | Слиток - 1750$ | Мешок - 2250$ | Веер - 1000$");                    break;
    case 4: espact[0] ^= true;        break;
    case 5: espact[1] ^= true;        break;
    case 6: espact[2] ^= true;        break;
    case 7: espact[3] ^= true;        break;
    case 8: espact[4] ^= true;        break;
    case 9: espact[5] ^= true;        break;
    case 10: espact[6] ^= true;        break;
    case 11: espact[7] ^= true;        break;
    case 12: espact[8] ^= true;        break;
    case 13: espact[9] ^= true;        break;
    case 14: espact[10] ^= true;        break;
    }
    _showDialog = true;
}

void CALLBACK cmd_menu(std::string str) // диалог
{
    ShowSettingsDialog();
}

void ShowSettingsDialog(void) // диалог
{
    const char *on = "{00DD00}ON{FFFFFF}", *off = "{AAAAAA}OFF{FFFFFF}", *white = "{FFFFFF}";
    char str[4096];
    sprintf_s(str, "%sСтатус скрипта: \t%s\n%sЛинии к объектам: \t%s\n%s[ {00FF00}Инфо{FFFFFF} ] Цены на объекты\n{4169E1}Список объектов: \n[ %s ] Плиты\n[ %s ] Кувшины\n[ %s ] Лопаты\n[ %s ] Вазы\n[ %s ] Слитки\n[ %s ] Рога\n[ %s ] Сундуки\n[ %s ] Вееры\n[ %s ] Мешки\n[ %s ] Молоты\n[ %s ] Сосуды",
        white, (espitem ? "{00DD00}Включен{FFFFFF}" : "{AAAAAA}Выключен{FFFFFF}"),
        white, (esp ? "{00DD00}Включена{FFFFFF}" : "{AAAAAA}Выключена{FFFFFF}"), // линия
        white,
        (espact[0] ? on : off), //
        (espact[1] ? on : off), //
        (espact[2] ? on : off),
        (espact[3] ? on : off),
        (espact[4] ? on : off),
        (espact[5] ? on : off),
        (espact[6] ? on : off),
        (espact[7] ? on : off),
        (espact[8] ? on : off),
        (espact[9] ? on : off),
        (espact[10] ? on : off));
    SF->getSAMP()->getDialog()->ShowDialog(_settingsDialogID, DIALOG_STYLE_LIST, "Diver ESP | by Revalto", str, "Toggle", "Close");
    _dialog = true;
}

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr || GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME || !SF->getSAMP()->IsInitialized()) return;
        SF->getSAMP()->getChat()->AddChatMessage(-1, "{FF8C00}[ Dhelp ]{FFFFFF} Скрипт создан для проекта Diamond RP! {4169E1}Разработчик: {8A2BE2}Revalto");
        SF->getSAMP()->getChat()->AddChatMessage(-1, "{FF8C00}[ Dhelp ]{FFFFFF} Активация: {4169E1}/diver");

        SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, whtop); // Рендер
        pFont = SF->getRender()->CreateNewFont("Verdana", 10, FCR_BORDER); // Шрифт текста

        SF->getSAMP()->registerChatCommand("diver", cmd_menu); // кмд
        SF->getSAMP()->registerDialogCallback(OnDialogRespond); // Диалог

        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}
 
  • Нравится
Реакции: TopMo3

Rydik228

Новичок
2
1
Пахает только на ближнем расстоянии,в пещере это еще немного помагает,а так бесполезно
 

TopMo3

Участник
121
7
Ну мне то норм, всё равно спасибо разработчику данного чита.
 
  • Нравится
Реакции: Revalto

Xlepka

Новичок
1
0
Работу немного понерфили, а также попытались подбить рендер объектов, но всё осталось в норме. Теперь на начальном уровне (первое дно с городом) самые дорогие предметы: плиты - 400$ - 2 очка; белые кувшины - 400$ - 2 очка. В пещере же самые дорогие предметы: мешки с ДРАААГАМИ - 1600$ - 8 очков; слитки - 1400$ - 7 очков. Предметы теперь появляются на расстоянии 40 метров. Предметы также легко чекать т.к. их место спавна не меняется, меняется только кд спавна (кд всегда разное, может сразу появиться, а может и минут 10 тупить).
 
Последнее редактирование:

MishaBrutisha

Новичок
27
2
Прошу создателей,шарющих в Самфунксовой индустрии,закриптуйте анти-воздух,что-б при активации плагина СФ,был бесконечний кислород,и желательно бег по дну каналов где лежат предметы!!!!!!!!!:sneaky:
 

_ДЯДЯ ФЕДЯ_

Новичок
1
0
Что делать если не работает? Вожу команду и нифига. Пожалуйста ответь создатель вх!
 
Последнее редактирование: