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

Тема в разделе "C, C++", создана пользователем Jesik, 10 май 2013.

  1. yuy111

    yuy111 Друг форума

    Регистрация:
    22 фев 2017
    Сообщения:
    601
    Симпатии:
    51
    Как подключить проект?
     
  2. raymondique

    raymondique Активный участник

    Регистрация:
    17 дек 2017
    Сообщения:
    29
    Симпатии:
    0
    можно ли как-то отследить текстдравы которые показаны мне?
    и получить о них какую-то информацию
    например: цвет, ид шрифта, текст, расположение

    крашит игру
    float GetDistance(float X, float Y, float Z, float XX, float YY, float ZZ)
    {
        return sqrt((X - XX) * (X - XX) + (Y - YY) * (Y - YY) + (Z - ZZ) * (Z - ZZ));
    }
    
    void CALLBACK steal_object(std::string param)
    {
        float posobj[3];
        int obj_model;
        Log *pLog = new Log("objects.log");
        for (int i = 0; i < SAMP_MAX_OBJECTS; i++)
        {
            posobj[0] = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fPos[0];
            posobj[1] = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fPos[1];
            posobj[2] = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fPos[2];
            if (GetDistance(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ, posobj[0], posobj[1], posobj[2]) < 300)
            {
                obj_model = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->iModel;
                char str[256];
                sprintf(str, "CreateObject(%d)", obj_model);
                pLog->Write(str);
            }
        }
    }
     
    #2802 raymondique, 3 авг 2018
    Последнее редактирование модератором: 3 авг 2018
  3. CleanLegend

    Проверенный

    Регистрация:
    28 мар 2013
    Сообщения:
    175
    Симпатии:
    187
    Да, есть структура stTextdraw, путем перебора в цикле можешь выводить инфу

    Добавь проверку на валидность
    if (SF->getSAMP()->getInfo()->pPools->pObject->iIsListed[i] != 1)
            continue;
        if (SF->getSAMP()->getInfo()->pPools->pObject->object[i] == NULL)
            continue;
        if (SF->getSAMP()->getInfo()->pPools->pObject->object[i]->pGTAEntity == NULL)
            continue;
     
  4. raymondique

    raymondique Активный участник

    Регистрация:
    17 дек 2017
    Сообщения:
    29
    Симпатии:
    0
    У меня такой вопрос
    Вот у меня вывело координату X объекта с большим количеством нулей
    0.000000
    как можно сделать проверку на эти самые нули, а также как заменить их одним нулем, и при этом не потерять нужные значения в других строках
     
  5. Dark_Knight

    Dark_Knight Glory to mankind
    Друг

    Регистрация:
    18 мар 2013
    Сообщения:
    3.338
    Симпатии:
    1.640
    Это просто обычное дробное число.
     
  6. Ranto

    Ranto Активный участник

    Регистрация:
    26 ноя 2017
    Сообщения:
    37
    Симпатии:
    0
    По какому принципу делают такие менюшки?
     

    Вложения:

  7. yuy111

    yuy111 Друг форума

    Регистрация:
    22 фев 2017
    Сообщения:
    601
    Симпатии:
    51
    Для разработки SampFuncs подойдёт любая версия Visual Studio?
     
    BlackKnigga нравится это.
  8. kirikrus299

    kirikrus299 Активный участник

    Регистрация:
    30 апр 2018
    Сообщения:
    26
    Симпатии:
    5
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Platform.targets(57,5): error MSB8020: Не удается найти средства сборки для v141_xp (набор инструментов платформы = "v141_xp"). Чтобы выполнить сборку с использованием средств сборки v141_xp установите средства сборки v141_xp. Кроме того, можно выполнить обновление до текущей версии средств Visual Studio, перейдя в меню "Проект" или щелкнув решение правой кнопкой мыши и выбрав "Обновить решение...".

    винда 7 профессиональная, 64 бит, как пофиксить?
     
  9. CleanLegend

    Проверенный

    Регистрация:
    28 мар 2013
    Сообщения:
    175
    Симпатии:
    187
    В интернете много гайдов по подобным меню, достаточно просто ввести:" d3d9 menu".
    А принцип таков, ты хукаешь один из методов отрисовки и инициализируешь меню

    да

    У тебя в настройках проекта стоят настройки под VS 2015, тебе нужно зайти в Проект - Свойство - Набор инструментов платформы и поставить свой набор
     
    kirikrus299 нравится это.
  10. Ranto

    Ranto Активный участник

    Регистрация:
    26 ноя 2017
    Сообщения:
    37
    Симпатии:
    0
    Взял последний пример, такой скомпилил в dll, всё ок, запускаю игру открываю CE и пытаюсь заинжектить DLL, а оно выдает ошибку типа Еррор
    Что не так-то? Я так и не понял =(

    UPD: Дело в том, что даже самые простые (мои созданные) DLL проекты не хочет инжектить.. Как исправить?
     
    #2810 Ranto, 5 авг 2018
    Последнее редактирование: 5 авг 2018
  11. CleanLegend

    Проверенный

    Регистрация:
    28 мар 2013
    Сообщения:
    175
    Симпатии:
    187
    Попробуй инжектить через другую программу, Procces Hacker как вариант
     
    Ranto нравится это.
  12. vifv

    vifv Новичок

    Регистрация:
    8 сен 2016
    Сообщения:
    3
    Симпатии:
    1
    добрые люди киньте сурс любого сф аима
     
  13. SiTrak

    SiTrak Постоянный участник

    Регистрация:
    14 янв 2018
    Сообщения:
    88
    Симпатии:
    129
    // Аимбот класса "Школьник"
    // Разработчик: Martin 0pc0d3R
    // требования: SF 5.3.3
    #define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
    #include <windows.h>
    #include <string>
    #include <assert.h>
    #include <process.h>
    #include "SAMPFUNCS_API.h"
    #include "game_api\game_api.h"
    #include "MemoryHack.h"
    #pragma warning (disable:4700)
    #pragma warning (disable:4244)
    #pragma warning (disable:4018)
    SAMPFUNCS *SF = new SAMPFUNCS();
    #define GetCurrentDir _getcwd
    bool Aimbot = false;
    struct AimbotSettings
    {
        float ResX, ResY;
        float FieldOfView = false;
        int fSkins[10];
        bool AutoActivation = false;
        int ActivationMode = 1;
        byte HookedKey = 82;
        int IgnoredWeapons[13];
        AimbotSettings()
        {
            for (short e = 0; e < 10; e++) fSkins[e] = -1;
            for (short ez = 0; ez < 13; ez++) IgnoredWeapons[ez] = 255;
        }
    };
    AimbotSettings cfg;
    inline float GetDistance2D(float *first_operand, float *two_operand)
    {
        return sqrt((two_operand[0] - first_operand[0]) * (two_operand[0] - first_operand[0])
        + (two_operand[1] - first_operand[1]) * (two_operand[1] - first_operand[1]));
    }
    inline float GetDistance3D(float *first_operand, float *two_operand)
    {
        return sqrt((two_operand[0] - first_operand[0]) * (two_operand[0] - first_operand[0])
        + (two_operand[1] - first_operand[1]) * (two_operand[1] - first_operand[1])
        + (two_operand[2] - first_operand[2]) * (two_operand[2] - first_operand[2]));
    }
    WORD FindTargetInRadiusToCrosshair(const float FOV)
    {
        uint32_t null = *(int*)0xB74490;
        null += 0x4;
        null = *(int*)null;
        std::vector<int> Prioritet;
        std::vector<float> Distance;
        Prioritet.reserve(139);
        Prioritet.assign(139, 255);
        Distance.reserve(139);
        Distance.assign(139, 5000.0);
        for (uint32_t one = 0; one < 35584; one += 0x100)
        {
            uint32_t two = *(BYTE*)null;
            null += 0x1;
            if ((two >= 0x00) && (two < 0x80))
            {
                two += one;
                int ID = SF->getSAMP()->getPlayers()->GetSAMPPlayerIDFromGTAHandle(two);
                if (SF->getSAMP()->getPlayers()->iIsListed[ID])
                {
                    if (SF->getSAMP()->getPlayers()->IsPlayerDefined(ID, true))
                    {
                        if (SF->getSAMP()->getPlayers()->pRemotePlayer[ID]->pPlayerData->iAFKState != 2)
                        {
                            float dist[3], mdist[3], screen[2];
                            for (short x = 0; x < 3; x++)
                            {
                                if (SF->getSAMP()->getPlayers()->pRemotePlayer[ID]->pPlayerData->bytePlayerState == PLAYER_STATE_ONFOOT)
                                dist[x] = SF->getSAMP()->getPlayers()->GetOnFootData(ID)->fPosition[x];
                                else if (SF->getSAMP()->getPlayers()->pRemotePlayer[ID]->pPlayerData->bytePlayerState == PLAYER_STATE_DRIVER)
                                dist[x] = SF->getSAMP()->getPlayers()->GetInCarData(ID)->fPosition[x];
                                else if (SF->getSAMP()->getPlayers()->pRemotePlayer[ID]->pPlayerData->bytePlayerState == PLAYER_STATE_PASSENGER)
                                dist[x] = SF->getSAMP()->getPlayers()->GetPassengerData(ID)->fPosition[x];
                            }
                            mdist[0] = PEDSELF->GetPosition()->fX; mdist[1] = PEDSELF->GetPosition()->fY; mdist[2] = PEDSELF->GetPosition()->fZ;
                            if (GetDistance3D(dist, mdist) <= PEDSELF->GetCurrentWeaponStat()->GetWeaponRange())
                            {
                                SF->getGame()->convert3DCoordsToScreen(dist[0], dist[1], dist[2], &screen[0], &screen[1]);
                                float ScaleX = 640.0, ScaleY = 448.0;
                                ScaleX /= cfg.ResX; ScaleY /= cfg.ResY;
                                screen[0] *= ScaleX; screen[1] *= ScaleY;
                                float crosshair[2] = { 339.1, 179.1 };
                                float distToTarget = GetDistance2D(crosshair, screen);
                                if (cfg.FieldOfView >= distToTarget)
                                {
                                    CVector enemy; enemy.fX = dist[0], enemy.fY = dist[1], enemy.fZ = dist[2];
                                    bool bCollision = GAME->GetWorld()->IsLineOfSightClear(PEDSELF->GetPosition(), &enemy);
                                    if (bCollision == true) continue;
                                    else
                                    {
                                        actor_info* actorInfo = SF->getSAMP()->getPlayers()->pRemotePlayer[ID]->pPlayerData->pSAMP_Actor->pGTA_Ped;
                                        if (actorInfo != nullptr)
                                        {
                                            CPed* Ped = GAME->GetPools()->GetPed((DWORD*)actorInfo);
                                            if (Ped->IsOnScreen() == true)
                                            {
                                                bool contains = false;
                                                int skin = SF->getSAMP()->getPlayers()->pRemotePlayer[ID]->pPlayerData->pSAMP_Actor->pGTA_Ped->base.model_alt_id;
                                                for (short c = 0; c < 10; c++)
                                                if (cfg.fSkins[c] == skin) contains = true;
                                                if (contains == false)
                                                {
                                                    Prioritet.insert(Prioritet.begin(), ID);
                                                    Distance.insert(Distance.begin(), distToTarget);
                                                }
                                                else continue;
                                            }
                                            else continue;
                                        }
                                    }
                                }
                                else continue;
                            }
                            else continue;
                        }
                        else continue;
                    }
                    else continue;
                }
                else continue;
            }
            else continue;
        }
        int iterator = std::distance(Distance.begin(), std::min_element(Distance.begin(), Distance.end()));
        if (SF->getSAMP()->getPlayers()->iIsListed[Prioritet[iterator]] &&
        SF->getSAMP()->getPlayers()->IsPlayerDefined(Prioritet[iterator], true) &&
        SF->getSAMP()->getPlayers()->pRemotePlayer[Prioritet[iterator]]->pPlayerData->iAFKState != 2) return Prioritet[iterator];
        else return 65535;
    }
    void LoadConfig(void)
    {
        char *path = new char[256];
        char *dStr = new char[40];
        char *rStr = new char[51];
        GetCurrentDir(path, 256);
        strcat(path, "\\SAMPFUNCS\\Школотрон.ini");
        char *stric = new char[20];
        if (GetPrivateProfileSection("Настройки", stric, sizeof(stric), path))
        {
            cfg.FieldOfView = ((float)GetPrivateProfileInt("Настройки", "Радиус", 45, path));
            GetPrivateProfileString("Настройки", "Свои", NULL, dStr, 40, path);
            sscanf_s(dStr, "%d|%d|%d|%d|%d|%d|%d|%d|%d|%d", &cfg.fSkins[0], &cfg.fSkins[1], &cfg.fSkins[2], &cfg.fSkins[3],
            &cfg.fSkins[4], &cfg.fSkins[5], &cfg.fSkins[6], &cfg.fSkins[7], &cfg.fSkins[8], &cfg.fSkins[9]);
            cfg.AutoActivation = (bool)GetPrivateProfileInt("Настройки", "Автоактивация", 0, path);
            cfg.ActivationMode = (byte)GetPrivateProfileInt("Настройки", "Поджимной", 0, path);
            if (cfg.AutoActivation == true && cfg.ActivationMode == 0) Aimbot = true;
            cfg.HookedKey = (byte)GetPrivateProfileInt("Настройки", "Клавиша", 255, path);
            GetPrivateProfileString("Настройки", "Игнорируемое", NULL, rStr, 51, path);
            sscanf_s(rStr, "%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d", &cfg.IgnoredWeapons[0],
            &cfg.IgnoredWeapons[1], &cfg.IgnoredWeapons[2], &cfg.IgnoredWeapons[3], &cfg.IgnoredWeapons[4],
            &cfg.IgnoredWeapons[5], &cfg.IgnoredWeapons[6], &cfg.IgnoredWeapons[7], &cfg.IgnoredWeapons[8],
            &cfg.IgnoredWeapons[9], &cfg.IgnoredWeapons[10], &cfg.IgnoredWeapons[11], &cfg.IgnoredWeapons[12]);
            MemoryHack* mem = new MemoryHack("gta_sa.exe", 32);
            mem->Open();
            cfg.ResX = static_cast<float>(mem->Read(0xC17044, 4).toINT32());
            cfg.ResY = static_cast<float>(mem->Read(0xC17048, 4).toINT32());
            mem->Close();
        }
        else
        {
            WritePrivateProfileString("Настройки", "Радиус", "150", path);
            WritePrivateProfileString("Настройки", "Свои", "-1|-1|-1|-1|-1|-1|-1|-1|-1|-1", path);
            WritePrivateProfileString("Настройки", "Автоактивация", "0", path);
            WritePrivateProfileString("Настройки", "Поджимной", "0", path);
            WritePrivateProfileString("Настройки", "Клавиша", "82", path);
            WritePrivateProfileString("Настройки", "Игнорируемое", "255|255|255|255|255|255|255|255|255|255|255|255|255", path);
        }
        delete[] path, stric, dStr, rStr;
    }
    void __stdcall mainloop( void )
    {
        static bool init = false;
        if(!init)
        {
            if (GAME == nullptr) return;
            if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME) return;
            if (!SF->getSAMP()->IsInitialized()) return;
            SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 255, 255), "{F5B800}Школьный аим {00B88A}by 0pc0d3R");
            SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 255, 255), "{FFDB70}Специально для портала {00F53D}Silent-Hack.Ru");
            init = true; LoadConfig();
        }
        else
        {
            if (SF->getSAMP()->getPlayers()->pLocalPlayer->iIsActive == 1 && SF->getSAMP()->getInput()->iInputEnabled == 0)
            {
                if (cfg.ActivationMode == 0 && SF->getGame()->isKeyPressed(cfg.HookedKey))
                {
                    if (Aimbot ? false : true)
                    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(148, 112, 255),
                    "{CCFF33}ШколоАИМ {8AB800}Включен!");
                    else SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(148, 112, 255),
                    "{CCFF33}ШколоАИМ {FF3366}Выключен.");
                    Aimbot ^= true;
                }
                if (cfg.ActivationMode == 1)
                {
                    if (SF->getGame()->isKeyDown(cfg.HookedKey)) Aimbot = true;
                    else Aimbot = false;
                }
                if (Aimbot == true)
                {
                    for (short r = 0; r < 13; r++)
                    {
                        if (cfg.IgnoredWeapons[r] == SF->getSAMP()->getPlayers()->pLocalPlayer->byteCurrentWeapon) return;
                    }
                    if (SF->getGame()->isKeyPressed(0x01))
                    {
                        byte cam = SF->getSAMP()->getPlayers()->pLocalPlayer->aimData.byteCamMode;
                        if (cam != 53 && cam != 55 && cam != 65 && cam != 7 && cam != 39) return;
                        WORD vID = FindTargetInRadiusToCrosshair(cfg.FieldOfView);
                        CVector vector, vPos; if (vID == 65535) return;
                        if (PEDSELF->GetWeapon(PEDSELF->GetCurrentWeaponSlot())->GetState() == WEAPONSTATE_RELOADING) return;
                        actor_info* actorInfo = SF->getSAMP()->getPlayers()->pRemotePlayer[vID]->pPlayerData->pSAMP_Actor->pGTA_Ped;
                        if (actorInfo != nullptr)
                        {
                            CPed* Ped = GAME->GetPools()->GetPed((DWORD*)actorInfo);
                            Ped->GetTransformedBonePosition(BONE_UPPERTORSO, &vPos);
                        }
                        CVector *src = GAME->GetCamera()->GetCam(GAME->GetCamera()->GetActiveCam())->GetSource();
                        CCam *pCam = GAME->GetCamera()->GetCam(GAME->GetCamera()->GetActiveCam());
                        vector.fX = src->fX - vPos.fX;
                        vector.fY = src->fY - vPos.fY;
                        vector.fZ = src->fZ - vPos.fZ;
                        float ax, az, fz, fx;
                        float *screenAspectRatio = (float *)0xC3EFA4;
                        float *crosshairOffset = (float *)0xB6EC10;
                        if (pCam->GetMode() == 53 || pCam->GetMode() == 55)
                        {
                            float mult = tan(pCam->GetFOV() * 0.5f * 0.017453292f);
                            fz = M_PI - atan2(1.0f, mult * ((0.5f - crosshairOffset[0] + 0.5f - crosshairOffset[0]) * (1.0f / *screenAspectRatio)));
                            fx = M_PI - atan2(1.0f, mult * (crosshairOffset[1] - 0.5f + crosshairOffset[1] - 0.5f));
                        }
                        else fx = fz = M_PI / 2;
                        float dist = sqrt(vector.fX * vector.fX + vector.fY * vector.fY);
                        ax = atan2f(vector.fY, -vector.fX) - M_PI / 2;
                        az = atan2f(dist, vector.fZ);
                        float xVec = -(ax - fx);
                        float zVec = (az - fz);
                        pCam->SetDirection(xVec, zVec);
                    }
                }
            }
        }
    }
    bool WINAPI 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;
    }
     
    vifv нравится это.
  14. vifv

    vifv Новичок

    Регистрация:
    8 сен 2016
    Сообщения:
    3
    Симпатии:
    1
    ничего не понял...
     
    BlackKnigga нравится это.
  15. raymondique

    raymondique Активный участник

    Регистрация:
    17 дек 2017
    Сообщения:
    29
    Симпатии:
    0
    [​IMG]
    colorgz = SF->getSAMP()->getInfo()->pPools->pGangzone->pGangzone[i].dwColor;
     
  16. Dark_Knight

    Dark_Knight Glory to mankind
    Друг

    Регистрация:
    18 мар 2013
    Сообщения:
    3.338
    Симпатии:
    1.640
    Gangzone[i]->dwColor
     
  17. GovnocodeLua

    GovnocodeLua Активный участник

    Регистрация:
    24 июн 2018
    Сообщения:
    36
    Симпатии:
    0
    1. Как можно сделать радар зная только координату x, y игрока(другого и свои координаты конечно).(Вопрос по другой игре и не c++, но думаю всё равно поможет) Что-бы при перемещения игрока позиция на радаре тоже менялось.
     
    #2817 GovnocodeLua, 8 авг 2018 в 01:50
    Последнее редактирование: 8 авг 2018 в 11:21
  18. raymondique

    raymondique Активный участник

    Регистрация:
    17 дек 2017
    Сообщения:
    29
    Симпатии:
    0
    как выпустить пулю в машину, если я имею ее координаты?
     
  19. CleanLegend

    Проверенный

    Регистрация:
    28 мар 2013
    Сообщения:
    175
    Симпатии:
    187
  20. Ranto

    Ranto Активный участник

    Регистрация:
    26 ноя 2017
    Сообщения:
    37
    Симпатии:
    0
    Как скомпилить без окна Windows? Что бы был только ImGui когда инжектиться Dll
    upload_2018-8-9_16-33-48.png
     
  21. raymondique

    raymondique Активный участник

    Регистрация:
    17 дек 2017
    Сообщения:
    29
    Симпатии:
    0
    машина не получает урон

    float GetDistance(float X, float Y, float Z, float XX, float YY, float ZZ)
    {
        return sqrt((X - XX) * (X - XX) + (Y - YY) * (Y - YY) + (Z - ZZ) * (Z - ZZ));
    }
    
    void BulletData(float PX, float PY, float PZ)
    {
        stBulletData sync;
        ZeroMemory(&sync, sizeof(stBulletData));
    
        sync.sTargetID = NULL;
    
        sync.fOrigin[0] = PEDSELF->GetPosition()->fX;
        sync.fOrigin[1] = PEDSELF->GetPosition()->fY;
        sync.fOrigin[2] = PEDSELF->GetPosition()->fZ;
    
        sync.fTarget[0] = PX;
        sync.fTarget[1] = PY;
        sync.fTarget[2] = PZ;
    
        sync.fCenter[0] = 0.0;
        sync.fCenter[1] = 1.0;
        sync.fCenter[2] = 0.5;
    
        sync.byteWeaponID = SF->getSAMP()->getPlayers()->pLocalPlayer->byteCurrentWeapon;
    
        sync.byteType = 2;
    
        BitStream BulletSync;
        BulletSync.Write((BYTE)PacketEnumeration::ID_BULLET_SYNC);
        BulletSync.Write((PCHAR)&sync, sizeof(stBulletData));
        SF->getRakNet()->SendPacket(&BulletSync);
        SF->getSAMP()->getChat()->AddChatMessage(-1, "[] -> Пуля выпущена в машину");
    }
    
    void CALLBACK send_bullet_from_car()
    {
        float poscar[3];
        for (int i = 0; i < SAMP_MAX_VEHICLES; i++)
        {
            if (!SF->getSAMP()->getVehicles()->pSAMP_Vehicle[i]) continue;
            if (SF->getSAMP()->getVehicles()->pSAMP_Vehicle[i]->pGTA_Vehicle->base.model_alt_id == 478 || SF->getSAMP()->getVehicles()->pSAMP_Vehicle[i]->pGTA_Vehicle->base.model_alt_id == 422)
            {
                poscar[0] = SF->getSAMP()->getInfo()->pPools->pVehicle->pGTA_Vehicle[i]->base.matrix[4 * 3];
                poscar[1] = SF->getSAMP()->getInfo()->pPools->pVehicle->pGTA_Vehicle[i]->base.matrix[4 * 3 + 1];
                poscar[2] = SF->getSAMP()->getInfo()->pPools->pVehicle->pGTA_Vehicle[i]->base.matrix[4 * 3 + 2];
                if (GetDistance(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ, poscar[0], poscar[1], poscar[2]) < 6.0)
                {
                    BulletData(poscar[0], poscar[1], poscar[2]);
                    break;
                }
            }
        }
    }
     
  22. CleanLegend

    Проверенный

    Регистрация:
    28 мар 2013
    Сообщения:
    175
    Симпатии:
    187
    исправь на ID машины
     
  23. Dark_Knight

    Dark_Knight Glory to mankind
    Друг

    Регистрация:
    18 мар 2013
    Сообщения:
    3.338
    Симпатии:
    1.640
    Урон по тачке идет, если в ней есть игрок. Так же ид игрока, который в машине надо указывать.
     
  24. Musaigen

    Musaigen не забирайте моего проверенного!!!!!(

    Регистрация:
    1 апр 2018
    Сообщения:
    542
    Симпатии:
    158
    Как получить координаты кости другого игрока?
     
  25. CleanLegend

    Проверенный

    Регистрация:
    28 мар 2013
    Сообщения:
    175
    Симпатии:
    187
    Напиши подробнее

    CPed* Ped = GAME->GetPools()->GetPed((DWORD*)actorInfo);
    Ped->GetTransformedBonePosition(BONE_SPINE1, &vPos);
     
  26. raymondique

    raymondique Активный участник

    Регистрация:
    17 дек 2017
    Сообщения:
    29
    Симпатии:
    0
    как отнять патрон от оружия которое в руках?
     
  27. iAmerican

    iAmerican Свой человек

    Регистрация:
    17 фев 2014
    Сообщения:
    493
    Симпатии:
    147
    
    int ammo = SA->getPlayers()->pLocalPlayer->iWeaponAmmo[SA->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped->weapon_slot] - 1;
                SA->setAmmo(SA->getPlayers()->pLocalPlayer->byteCurrentWeapon, ammo);
    int sampAPI::setAmmo(int weaponId, int ammo)
    {
        typedef int(__thiscall *CPed__setAmmo)(void *_this, int weaponId, int ammo);
        return (CPed__setAmmo((uint32_t)0x5DF290))(SA->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped, weaponId, ammo);
    }
    
    на сф сам переведешь

    Imgui по размеру окна растягивай.
    И замени флаг создания окна с WS_OVERLAPPEDWINDOW на WS_POPUP.
     
    #2827 iAmerican, 10 авг 2018 в 19:49
    Последнее редактирование модератором: 10 авг 2018 в 20:59
  28. Max_Johnson

    Max_Johnson Постоянный участник

    Регистрация:
    3 янв 2018
    Сообщения:
    87
    Симпатии:
    5
    Скомпилируйте код пж а то не устанавливаеться прога чтобы компильнуть
    #include "plugin.h"
    #include "common.h"
    #include "CTimer.h"
    #include "CStreaming.h"
    #include "CTaskComplexPlayHandSignalAnim.h"
    
    #define NEW_MODEL_AT_KEY_PRESS
    
    using namespace plugin;
    
    class HandSignals {
    public:
        HandSignals() {
            static int keyPressTime = 0;
            static int newPlayerModelId = -1;
            static int gangModelIds[] = { MODEL_BALLAS1,
                                          MODEL_BALLAS2,
                                          MODEL_BALLAS3,
                                          MODEL_FAM1,
                                          MODEL_FAM2,
                                          MODEL_FAM3,
                                          MODEL_LSV1,
                                          MODEL_LSV2,
                                          MODEL_LSV3,
                                          MODEL_VLA1,
                                          MODEL_VLA2,
                                          MODEL_VLA3 };
    
            Events::gameProcessEvent += [] {
                CPed *playa = FindPlayerPed();
                if (playa && playa->IsAlive() && CTimer::m_snTimeInMilliseconds - keyPressTime > 500) {
                    int animationId = -1;
                    if (KeyPressed(0x31)) // 1
                        animationId = 320;
                    else if (KeyPressed(0x32)) // 2
                        animationId = 321;
                    else if (KeyPressed(0x33)) // 3
                        animationId = 322;
                    else if (KeyPressed(0x34)) // 4
                        animationId = 323;
                    else if (KeyPressed(0x35)) // 5
                        animationId = 324;
    
                    if (animationId != -1) {
                        keyPressTime = CTimer::m_snTimeInMilliseconds;
    #ifndef NEW_MODEL_AT_KEY_PRESS
                        if (newPlayerModelId == -1)
    #endif
                            newPlayerModelId = gangModelIds[rand() % 12];
                        if (playa->m_nModelIndex != newPlayerModelId) {
                            CStreaming::RequestModel(newPlayerModelId, 2);
                            CStreaming::LoadAllRequestedModels(false);
                            unsigned int savedAnimGroup = playa->m_nAnimGroup;
                            playa->DeleteRwObject();
                            playa->m_nModelIndex = -1;
                            playa->SetModelIndex(newPlayerModelId);
                            playa->m_nAnimGroup = savedAnimGroup;
                            CStreaming::SetModelIsDeletable(newPlayerModelId);
                        }
                        playa->m_pIntelligence->m_TaskMgr.SetTaskSecondary(new CTaskComplexPlayHandSignalAnim(animationId, 4.0f), 4);
                    }
                }
            };
        }
    } handSignals;
    
     
    lua_govno_blin_YMRITE_VSE нравится это.
  29. yuy111

    yuy111 Друг форума

    Регистрация:
    22 фев 2017
    Сообщения:
    601
    Симпатии:
    51
    Как подключить проект в Microsoft Visual Studio 2017?
     
  30. iAmerican

    iAmerican Свой человек

    Регистрация:
    17 фев 2014
    Сообщения:
    493
    Симпатии:
    147
    Конкретнее можно?
     
  31. yuy111

    yuy111 Друг форума

    Регистрация:
    22 фев 2017
    Сообщения:
    601
    Симпатии:
    51
    Я скачал архив с проектом для разработчиков. Как его подключить чтобы компилировались файлы .sf?
     
  32. ALF

    ALF Постоянный участник

    Регистрация:
    14 ноя 2017
    Сообщения:
    52
    Симпатии:
    64
    .sln файл открывай
     
    yuy111 нравится это.
  33. yuy111

    yuy111 Друг форума

    Регистрация:
    22 фев 2017
    Сообщения:
    601
    Симпатии:
    51
    Скиньте полный код который выводит текст в чат на sf
     
  34. CleanLegend

    Проверенный

    Регистрация:
    28 мар 2013
    Сообщения:
    175
    Симпатии:
    187
    Посмотри все гайды по SF API в этом разделе.
    SF->getSAMP()->getChat()->AddChatMessage( -1, "Text" );  
     
  35. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26 окт 2013
    Сообщения:
    3.048
    Симпатии:
    2.856
    Ты должен реализовать в библиотеке все интерфейсы оригинально библиотеки и пробрасывать их. Это тебе не Linux, что бы все так просто было с прокси-либой