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

581174

Новичок
16
6
Код:
  while (mEntry.szModule != "samp.dll")
           {
               if (mEntry.szModule != "samp.dll")
               {
                 cout << mEntry.szModule << "\n";
                 Module32Next(snapshot, &mEntry);
               }
               else
               {
                 cout << mEntry.szModule;
                 break;
               }
             /*if mEntry.
             for mEntry.th32MuduleID
             cout << mEntry.th32ModuleID;*/
           }
нУ почему оно НЕ ПЕРЕБИрАЕТ проклятые модули, а просто спамит ОДНИМ б1234 И ТЕМ ЖЕ?!
хелп, я уже подгораю
наверное, неправильно сохраняю следующий модуль, или ещё что
помогииите, котята :С
 

Dark_Knight

Me, me and me.
Друг
4,078
2,095
Я тебе дал рабочую вещь. Юзай и не парся.
Цикл будет работать пока Process32Next будет возвращать истину.
 
  • Нравится
Реакции: 581174

_KeNy_

Новичок
12
7
Ребят, есть проблема при включении аирбрейка собейт не держит Z координату, т.е. если спуститься под землю он будет медленно падать вниз.
C++:
void func_air_brake()
{
    static float    orig_pos[3];
    static float    fall_speed_mult;
    static int        vkl = 0;

    actor_info *info = g_SAMP->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped;
   
    if (isKeyPressed(VK_RSHIFT))
        menu.air_brake ^= 1;

    if (menu.air_brake)
    {
        vect3_copy(&info->base.matrix[4 * 3], orig_pos);
        fall_speed_mult = 1.0f;
        vkl = 1;
    }
    if (!menu.air_brake && vkl)
    {
        toggleSAMPCursor(0);
        TOGGLECURSOR(1);
        TOGGLECURSOR(0);
        vkl = 0;
    }

    if (menu.air_brake)
    {
        float    *matrix = info->base.matrix;

        // if there's no parachute
        if (g_SAMP->getPlayers()->pLocalPlayer->byteCurrentWeapon != 46)
        {
            vect3_copy(orig_pos, &info->base.matrix[4 * 3]);
            vect3_zero(info->speed);

            SetIsStanding(1);

            float            d[4] = { 0.0f, 0.0f, 0.0f, 0.0002f };

            if (isKeyDown('W'))
                d[0] += 1.0f;
            if (isKeyDown('S'))
                d[0] -= 1.0f;
            if (isKeyDown('A'))
                d[1] += 1.0f;
            if (isKeyDown('D'))
                d[1] -= 1.0f;
            if (isKeyDown(VK_UP))
                d[2] += 1.0f;
            if (isKeyDown(VK_DOWN))
                d[2] -= 1.0f;

            if (!vect3_near_zero(d))
            {
                float    vect[4] = { -d[1], d[0], d[2], 0.0f };
                float    out[4];

                /* out = matrix * norm(d) */
                vect3_normalize(vect, vect);
                matrix_vect4_mult(matrix, vect, out);

                matrix[4 * 3 + 0] += out[0] * d[3];
                matrix[4 * 3 + 1] += out[1] * d[3];
                matrix[4 * 3 + 2] += out[2] * d[3];
            }
        }
       
        vect3_copy(&matrix[4 * 3], orig_pos);       
    }
}
 

Jack_Savage

Участник
150
17
C++:
typedef struct RpClump RpClump;
typedef RpClump  *(*RpClumpCallback) (RpClump * clump, void *data);
struct RwObject
{
    unsigned char type;
    unsigned char subtype;
    unsigned char flags;
    unsigned char privateFlags;
    void *parent;                // should be RwFrame with RpClump
};
struct RwListEntry
{
    RwListEntry *next, *prev;
};
struct RwList
{
    RwListEntry root;
};
struct RpClump
{   // RenderWare (plugin) Clump (used by GTA)
    RwObject        object;
    RwList          atomics;
    RwList          lights;
    RwList          cameras;
    RwListEntry     globalClumps;
    RpClumpCallback callback;
};
list < CAnimBlendAssociation *  > m_Associations;
CAnimBlendAssociation * GetAnimBlendAssociation(CAnimBlendAssociationSAInterface * pInterface)
{
    if (pInterface)
    {
        list < CAnimBlendAssociation * > ::iterator iter = m_Associations.begin();
        for (; iter != m_Associations.end(); iter++)
        {
            if ((*iter)->GetInterface() == pInterface)
            {
                return *iter;
            }
        }
        CAnimBlendAssociation * pAssociation = new CAnimBlendAssociationSA(pInterface);
        m_Associations.push_back(pAssociation);
        return pAssociation;
    }
    return NULL;
}
CAnimBlendAssociation * RpAnimBlendClumpGetFirstAssociation(RpClump * pClump)
{
    if (!pClump)
        return NULL;
    CAnimBlendAssociationSAInterface * pInterface;
    DWORD dwFunc = FUNC_RpAnimBlendClumpGetFirstAssociation;
    _asm
    {
        push    pClump
        call    dwFunc
        mov     pInterface, eax
        add     esp, 0x4
    }
    return GetAnimBlendAssociation(pInterface);
}
Ну вот нашел код для получения анимации.
Только затык, как получить RpClump ?
Там где взял есть функция которая возвращает значение переменной.
А вот кто этой переменной присваивает значение не нашел
 

return

Новичок
82
5
Ребят, есть проблема при включении аирбрейка собейт не держит Z координату, т.е. если спуститься под землю он будет медленно падать вниз.
C++:
void func_air_brake()
{
    static float    orig_pos[3];
    static float    fall_speed_mult;
    static int        vkl = 0;

    actor_info *info = g_SAMP->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped;
  
    if (isKeyPressed(VK_RSHIFT))
        menu.air_brake ^= 1;

    if (menu.air_brake)
    {
        vect3_copy(&info->base.matrix[4 * 3], orig_pos);
        fall_speed_mult = 1.0f;
        vkl = 1;
    }
    if (!menu.air_brake && vkl)
    {
        toggleSAMPCursor(0);
        TOGGLECURSOR(1);
        TOGGLECURSOR(0);
        vkl = 0;
    }

    if (menu.air_brake)
    {
        float    *matrix = info->base.matrix;

        // if there's no parachute
        if (g_SAMP->getPlayers()->pLocalPlayer->byteCurrentWeapon != 46)
        {
            vect3_copy(orig_pos, &info->base.matrix[4 * 3]);
            vect3_zero(info->speed);

            SetIsStanding(1);

            float            d[4] = { 0.0f, 0.0f, 0.0f, 0.0002f };

            if (isKeyDown('W'))
                d[0] += 1.0f;
            if (isKeyDown('S'))
                d[0] -= 1.0f;
            if (isKeyDown('A'))
                d[1] += 1.0f;
            if (isKeyDown('D'))
                d[1] -= 1.0f;
            if (isKeyDown(VK_UP))
                d[2] += 1.0f;
            if (isKeyDown(VK_DOWN))
                d[2] -= 1.0f;

            if (!vect3_near_zero(d))
            {
                float    vect[4] = { -d[1], d[0], d[2], 0.0f };
                float    out[4];

                /* out = matrix * norm(d) */
                vect3_normalize(vect, vect);
                matrix_vect4_mult(matrix, vect, out);

                matrix[4 * 3 + 0] += out[0] * d[3];
                matrix[4 * 3 + 1] += out[1] * d[3];
                matrix[4 * 3 + 2] += out[2] * d[3];
            }
        }
      
        vect3_copy(&matrix[4 * 3], orig_pos);      
    }
}
GTAfunc_LockActor(true);
 
  • Нравится
Реакции: _KeNy_

p1cador

cerf
Проверенный
221
359
Почему не работает таймер?
l_z1Ii8gLDQ.jpg
Вместо (TIMERPROC)TimerProc делал &TimerProc - результат такой же.
Или как еще можно сделать постоянное выполнение опред. кода в dll, кроме потока с бесконечным циклом, т.к. при использовании такого потока проседает много фпс
 
Последнее редактирование:

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Почему не работает таймер?
l_z1Ii8gLDQ.jpg
Вместо (TIMERPROC)TimerProc делал &TimerProc - результат такой же.
Для того, чтобы работали таймеры, нужно будет обрабатывать очередь сообщений.
C++:
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

Или как еще можно сделать постоянное выполнение опред. кода в dll, кроме потока с бесконечным циклом, т.к. при использовании такого потока проседает много фпс
Чтобы фпс не проседало, используй Sleep с задержкой ~100
 
  • Нравится
Реакции: p1cador

kuleer

Участник
86
13
Добрый день. Хотел спросить, какую версию VS нужно скачать, для программирования под самп? Чтобы стабильно без ошибок. (с ссылкой желательно)
 

winrare

Новичок
75
1
Возможно не в той теме спрашиваю.
Как написать бота, который будет работать без запуска GTA? Есть какие-то готовые средства?