Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Warface trigger.

  • Автор темы Автор темы Stan_Ak
  • Дата начала Дата начала
Буду очень благодарен если сделаешь что-бы ничего зажимать не надо было)
Буду очень благодарен если сделаешь что-бы ничего зажимать не надо было)

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не работает шота
Только что проверил, работает
А не всё норм, это я просто на мясорубке играл))
Да, на мясе не робит, софт для рм писал, ожидал от автошота большого, для меня оказалось бесполезно, продолжу с фаст аимом играть
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Только что проверил, работает

Да, на мясе не робит, софт для рм писал, ожидал от автошота большого, для меня оказалось бесполезно, продолжу с фаст аимом играть
Ну я бы был не против если ты бы фаст аим ещё бы скинул))) xd
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем привет, при попытке запилить триггер получаю краш, класс описанный в коде не актуален?
Код:
Expand Collapse Copy
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++:
Expand Collapse Copy
                                            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++:
Expand Collapse Copy
mTriggerId = MePlayer->Trigger();

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

if (mTriggerId ==LocalActor->GetEntityId())
{
    pGetIWeapon->StartFair();
    pGetIWeapon->StopFair();
}
Так будет правильней.
 
C++:
Expand Collapse Copy
mTriggerId = MePlayer->Trigger();

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

if (mTriggerId ==LocalActor->GetEntityId())
{
    pGetIWeapon->StartFair();
    pGetIWeapon->StopFair();
}
Так будет правильней.
Так, конечно, лучше, явно, но что-то сам по себе тригер не порадовал, почему-то часто стреляет буквально за пару пикселей до самой модельки, не подскажешь как лучше реализовать задержку?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Так, конечно, лучше, явно, но что-то сам по себе тригер не порадовал, почему-то часто стреляет буквально за пару пикселей до самой модельки, не подскажешь как лучше реализовать задержку?
Может в том, что немного не так реализован выход по классам.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
        IGameObject* GetGameObject = MePlayer->GetGameObject();
        if (!GetGameObject)return;

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

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


C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
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:

};
 
C++:
Expand Collapse Copy
        IGameObject* GetGameObject = MePlayer->GetGameObject();
        if (!GetGameObject)return;

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

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


C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
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:

};
Спасибо, попробую
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вопрос шарящим, как сделать задержку перед выстрелом, не слип, естественно
nanosleep он нужен для приостановке потока в котором его вызывают

Ну или попробовать вот так
WaitableTimer.h
C++:
Expand Collapse Copy
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
Код:
Expand Collapse Copy
WaitableTimer timer;
    test("WaitableTimer", [&timer]    { timer.SetAndWait(5000); });
Попробуйте и выберите для себя .
 
Назад
Сверху Снизу