Вопрос Warface trigger.

Paste is my life
Начинающий
Статус
Оффлайн
Регистрация
28 Янв 2017
Сообщения
144
Реакции[?]
13
Поинты[?]
0
Буду очень благодарен если сделаешь что-бы ничего зажимать не надо было)
Буду очень благодарен если сделаешь что-бы ничего зажимать не надо было)
Для просмотра содержимого вам необходимо авторизоваться.
 
godeless owner btw
Забаненный
Статус
Оффлайн
Регистрация
26 Июн 2019
Сообщения
530
Реакции[?]
132
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
godeless owner btw
Забаненный
Статус
Оффлайн
Регистрация
26 Июн 2019
Сообщения
530
Реакции[?]
132
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Paste is my life
Начинающий
Статус
Оффлайн
Регистрация
28 Янв 2017
Сообщения
144
Реакции[?]
13
Поинты[?]
0
Не работает шота
Только что проверил, работает
А не всё норм, это я просто на мясорубке играл))
Да, на мясе не робит, софт для рм писал, ожидал от автошота большого, для меня оказалось бесполезно, продолжу с фаст аимом играть
 
godeless owner btw
Забаненный
Статус
Оффлайн
Регистрация
26 Июн 2019
Сообщения
530
Реакции[?]
132
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Только что проверил, работает

Да, на мясе не робит, софт для рм писал, ожидал от автошота большого, для меня оказалось бесполезно, продолжу с фаст аимом играть
Ну я бы был не против если ты бы фаст аим ещё бы скинул))) xd
 
godeless owner btw
Забаненный
Статус
Оффлайн
Регистрация
26 Июн 2019
Сообщения
530
Реакции[?]
132
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
сдерживаю выходящее наружу зло
Пользователь
Статус
Оффлайн
Регистрация
25 Ноя 2018
Сообщения
503
Реакции[?]
104
Поинты[?]
1K
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем привет, при попытке запилить триггер получаю краш, класс описанный в коде не актуален?
Код:
uint32_t Trigger()
    {
        uintptr_t offset_0 = *(uintptr_t*)(uintptr_t(this + 0x18));
        if (!offset_0)
            return 0;

        uintptr_t offset_1 = *(uintptr_t*)(uintptr_t(offset_0 + 0x60));
        if (!offset_1)
            return 0;

        uintptr_t offset_2 = *(uintptr_t*)(uintptr_t(offset_1 + 0x20));
        if (!offset_2)
            return 0;

        return *(uint32_t*)(uintptr_t(offset_2 + 0x170));
    }
C++:
                                            if (auto mWeapon = MePlayer1->GetCurrentItem()->GetIWeapon())
                                            {
                                                mTriggerId = MePlayer1->Trigger();
                                                if (mTriggerId && GetAsyncKeyState(VK_RBUTTON))
                                                {
                                                    if (IActor * pActor = pFrameWork->GetIActorSystem()->GetActor(mTriggerId))
                                                    {

                                                        mWeapon->StartFire();
                                                        Sleep(1);
                                                        mWeapon->StopFire();
                                                    }
                                                }
                                             
                                            }
C++:
mTriggerId = MePlayer->Trigger();

if (GetCurrentGameRules->EliminationTeam(MePlayer->GetEntityId(), LocPlayer->GetEntityId()))continue;
if (LocPlayer->IsDead())continue;

if (mTriggerId ==LocalActor->GetEntityId())
{
    pGetIWeapon->StartFair();
    pGetIWeapon->StopFair();
}
Так будет правильней.
 
Paste is my life
Начинающий
Статус
Оффлайн
Регистрация
28 Янв 2017
Сообщения
144
Реакции[?]
13
Поинты[?]
0
C++:
mTriggerId = MePlayer->Trigger();

if (GetCurrentGameRules->EliminationTeam(MePlayer->GetEntityId(), LocPlayer->GetEntityId()))continue;
if (LocPlayer->IsDead())continue;

if (mTriggerId ==LocalActor->GetEntityId())
{
    pGetIWeapon->StartFair();
    pGetIWeapon->StopFair();
}
Так будет правильней.
Так, конечно, лучше, явно, но что-то сам по себе тригер не порадовал, почему-то часто стреляет буквально за пару пикселей до самой модельки, не подскажешь как лучше реализовать задержку?
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Так, конечно, лучше, явно, но что-то сам по себе тригер не порадовал, почему-то часто стреляет буквально за пару пикселей до самой модельки, не подскажешь как лучше реализовать задержку?
Может в том, что немного не так реализован выход по классам.
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
        IGameObject* GetGameObject = MePlayer->GetGameObject();
        if (!GetGameObject)return;

        CWorldQuery* pWorldQuery = GetGameObject->pWorldQuery();
        if (!pWorldQuery)return;

         if (pWorldQuery->EntId == pIActor->GetEntityId())
          {
                Тут выстрел
          }

C++:
enum _IGameObjectExtension
{
    m_pGetEntity_ru = 16,
    m_pGetGameObject_ru = 24,
    m_pGetEntityId_ru = 32,

    m_pGetEntity_eur = 16,
    m_pGetGameObject_eur = 24,
    m_pGetEntityId_eur = 32
};
C++:
class CWorldQuery
{
public:
    char pad_0x0000[0x170]; //0x0000
    __int32 EntId; //0x0170
};

class IGameObject
{
public:
    CWorldQuery* pWorldQuery()
    {
        typedef CWorldQuery*(__thiscall* pFunc)(PVOID);
        return vFun_Call<pFunc>(this, 51)(this);
    }

};

class IGameObjectExtension
{
public:
    class IEntity* GetEntity() {
        return *(IEntity * *)((uintptr_t)this + (Check_version_game ? _IGameObjectExtension::m_pGetEntity_eur: _IGameObjectExtension::m_pGetEntity_ru));
    }
    class IGameObject* GetGameObject() {
        return *(IGameObject * *)((uintptr_t)this + (Check_version_game ? _IGameObjectExtension::m_pGetGameObject_eur: _IGameObjectExtension::m_pGetGameObject_ru));
    }
    int   GetEntityId() {
        return *(int*)((uintptr_t)this + (Check_version_game ? _IGameObjectExtension::m_pGetEntityId_eur:_IGameObjectExtension::m_pGetEntityId_ru));
    }
};

class IActor : public IGameObjectExtension
{
public:

};
 
Paste is my life
Начинающий
Статус
Оффлайн
Регистрация
28 Янв 2017
Сообщения
144
Реакции[?]
13
Поинты[?]
0
C++:
        IGameObject* GetGameObject = MePlayer->GetGameObject();
        if (!GetGameObject)return;

        CWorldQuery* pWorldQuery = GetGameObject->pWorldQuery();
        if (!pWorldQuery)return;

         if (pWorldQuery->EntId == pIActor->GetEntityId())
          {
                Тут выстрел
          }

C++:
enum _IGameObjectExtension
{
    m_pGetEntity_ru = 16,
    m_pGetGameObject_ru = 24,
    m_pGetEntityId_ru = 32,

    m_pGetEntity_eur = 16,
    m_pGetGameObject_eur = 24,
    m_pGetEntityId_eur = 32
};
C++:
class CWorldQuery
{
public:
    char pad_0x0000[0x170]; //0x0000
    __int32 EntId; //0x0170
};

class IGameObject
{
public:
    CWorldQuery* pWorldQuery()
    {
        typedef CWorldQuery*(__thiscall* pFunc)(PVOID);
        return vFun_Call<pFunc>(this, 51)(this);
    }

};

class IGameObjectExtension
{
public:
    class IEntity* GetEntity() {
        return *(IEntity * *)((uintptr_t)this + (Check_version_game ? _IGameObjectExtension::m_pGetEntity_eur: _IGameObjectExtension::m_pGetEntity_ru));
    }
    class IGameObject* GetGameObject() {
        return *(IGameObject * *)((uintptr_t)this + (Check_version_game ? _IGameObjectExtension::m_pGetGameObject_eur: _IGameObjectExtension::m_pGetGameObject_ru));
    }
    int   GetEntityId() {
        return *(int*)((uintptr_t)this + (Check_version_game ? _IGameObjectExtension::m_pGetEntityId_eur:_IGameObjectExtension::m_pGetEntityId_ru));
    }
};

class IActor : public IGameObjectExtension
{
public:

};
Спасибо, попробую
 
Забаненный
Статус
Оффлайн
Регистрация
28 Июл 2019
Сообщения
37
Реакции[?]
14
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вопрос шарящим, как сделать задержку перед выстрелом, не слип, естественно
nanosleep он нужен для приостановке потока в котором его вызывают

Ну или попробовать вот так
WaitableTimer.h
C++:
class WaitableTimer
{
public:

    WaitableTimer()
    {
        m_timer = ::CreateWaitableTimer(NULL, FALSE, NULL);
        if (!m_timer)
            throw std::runtime_error("Failed to create waitable time (CreateWaitableTimer), error:" + std::to_string(::GetLastError()));
    }

    ~WaitableTimer()
    {
        ::CloseHandle(m_timer);
        m_timer = NULL;
    }

    void SetAndWait(unsigned relativeTime100Ns)
    {
        LARGE_INTEGER dueTime = { 0 };
        dueTime.QuadPart = static_cast<LONGLONG>(relativeTime100Ns) * -1;

        BOOL res = ::SetWaitableTimer(m_timer, &dueTime, 0, NULL, NULL, FALSE);
        if (!res)
            throw std::runtime_error("SetAndWait: failed set waitable time (SetWaitableTimer), error:" + std::to_string(::GetLastError()));

        DWORD waitRes = ::WaitForSingleObject(m_timer, INFINITE);
        if (waitRes == WAIT_FAILED)
            throw std::runtime_error("SetAndWait: failed wait for waitable time (WaitForSingleObject)" + std::to_string(::GetLastError()));
    }

private:
    HANDLE m_timer;
};
Sourse.cpp
Код:
WaitableTimer timer;
    test("WaitableTimer", [&timer]    { timer.SetAndWait(5000); });
Попробуйте и выберите для себя .
 
Сверху Снизу