Anmeldungsdatum: Aug 2007 
					Beiträge: 8643 
					Benutzer-Bewertung: 
					
			 
		 | 
		
			Kategorie: Battlefield 4 Entwickler: typ1232
  Beschreibung: Notes:    - It always shows the position, also if someone else already took the box. Wait (up to 10 minutes I think) until it changes position.  - Using an overlay, so don't play in fullscreen.  - Close the tool with "Home" key.
 
 CPP Code: #include "hacklib/Main.h"  #include "hacklib/Drawer.h"  #include "hacklib/WindowOverlay.h"  #include "hacklib/ImplementMember.h"  #include "hacklib/PatternScanner.h"      namespace BF4  {      class Cam      {          IMPLMEMBER(D3DXMATRIX, Transform, 0x40);          IMPLMEMBER(D3DXVECTOR3, ViewVec, 0x60);          IMPLMEMBER(D3DXVECTOR3, Pos, 0x70);          IMPLMEMBER(float, Fovy, 0xb4);          IMPLMEMBER(D3DXMATRIX, ViewMat, 0x260);      };      class CamHolder      {          IMPLMEMBER(Cam*, CamData, 0x60);      };      class MeshAsset      {          IMPLMEMBER(char*, Name, 0x10);      };      class StaticModelEntityData      {          IMPLMEMBER(MeshAsset*, Asset, 0x98);      };      class ClientStaticModelEntity      {          IMPLMEMBER(StaticModelEntityData*, Data, 0x30);          IMPLMEMBER(ClientStaticModelEntity*, Next, 0x40);          IMPLMEMBER(D3DXVECTOR3, Pos, 0x240);      };  }    class BF4BoxMain : public hl::Main  {  public:      bool init() override;      bool step() override;    private:      hl::Drawer m_drawer;      hl::WindowOverlay m_overlay;        struct Mems {          BF4::CamHolder *pCamHolder;      } m_mems;        static const uintptr_t m_typeInfoStaticModel = 0x1427f8850;  };    hl::StaticInit<BF4BoxMain> g_initObj;      bool BF4BoxMain::init()  {      uintptr_t sigCam = hl::FindPattern("\x84\xc0\x75\x00\x48\x8b\x0d\x00\x00\x00\x00\x48\x8b\x01\xff\x50\x00\xf3\x0f\x10\x0d", "xxx?xxx????xxxxx?xxxx");        if (!sigCam) {          hl::MsgBox("Error", "Invalid patterns");          return false;      }        auto camAdr = *(std::uint32_t*)(sigCam + 0x7);      m_mems.pCamHolder = *(BF4::CamHolder**)(camAdr + sigCam + 0x7 + 0x4);        if (m_overlay.create() != hl::WindowOverlay::Error::Success)          return false;        m_overlay.registerResetHandlers(std::bind(&hl::Drawer::OnLostDevice, &m_drawer), std::bind(&hl::Drawer::OnResetDevice, &m_drawer));      m_drawer.SetDevice(m_overlay.getDev());        return true;  }    bool BF4BoxMain::step()  {      if (GetAsyncKeyState(VK_HOME) < 0)          return false;        D3DXMATRIX viewMat, projMat;      D3DXVECTOR3 camPos;      auto pCamHolder = m_mems.pCamHolder;      if (pCamHolder)      {          auto pCam = pCamHolder->getCamData();          if (pCam)          {              viewMat = pCam->getViewMat();              viewMat._11 = -viewMat._11; // negate x              viewMat._12 = -viewMat._12;              viewMat._13 = -viewMat._13;              std::swap(viewMat._21, viewMat._31); // swap y and z              std::swap(viewMat._22, viewMat._32);              std::swap(viewMat._23, viewMat._33);                camPos = D3DXVECTOR3(-pCam->getPos().x, pCam->getPos().z, pCam->getPos().y);                D3DXMatrixPerspectiveFovRH(&projMat, pCam->getFovy(), (float)m_overlay.getWidth()/m_overlay.getHeight(), 0.1f, 100000.0f);                m_drawer.Update(viewMat, projMat);          }      } else {          return true;      }        auto pDevice = m_overlay.getDev();      if (pDevice->BeginScene() == D3D_OK)      {          m_overlay.clearRenderTarget();            uintptr_t itEntity = m_typeInfoStaticModel + 0x60;          auto pEntity = (BF4::ClientStaticModelEntity*)(itEntity - 0x40);            while (itEntity)          {              std::string name = pEntity->getData()->getAsset()->getName();                if (name.find("glasswin") != std::string::npos ||                  name.find("ammobox") != std::string::npos ||                  name.find("rubble_01_large_snow") != std::string::npos ||                  name.find("officedivider") != std::string::npos)              {                  D3DXVECTOR3 worldPos = pEntity->getPos();                  worldPos = D3DXVECTOR3(-worldPos.x, worldPos.z, worldPos.y);                  D3DXVECTOR3 screenPos;                  m_drawer.Project(worldPos, screenPos);                  if (m_drawer.IsInfrontCam(screenPos))                  {                      float dist = D3DXVec3Length(&(camPos - worldPos));                      m_drawer.DrawCircle(screenPos.x, screenPos.y, 2000*(1/dist), 0xff00ff00);                      m_drawer.DrawCircle(screenPos.x, screenPos.y, 1500*(1/dist), 0xffff0000);                  }              }                itEntity = *(uintptr_t*)itEntity;              pEntity = (BF4::ClientStaticModelEntity*)(itEntity - 0x40);          }            pDevice->EndScene();          pDevice->Present(NULL, NULL, NULL, NULL);      }      std::this_thread::sleep_for(std::chrono::milliseconds(10));        return true;  } 
 
  Screenshots:
      
  Download: Phantom Dog Tag Finder
  
			
		 |