Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include "script.h"
- #include "Pattern.h"
- #include <vector>
- bool triedToFindPattern = false;
- int wheelId = 0;
- std::string addressStr("0");
- typedef __int64(*GetWheelById_t)(BYTE * vehicleMemoryAddress, int wheelId);
- GetWheelById_t GetWheelById;
- void update()
- {
- if (!triedToFindPattern)
- {
- uint64_t patternAddr = reinterpret_cast<uint64_t>(Utility::pattern("BA ? ? ? ? 48 8B CF E8 ? ? ? ? 48 85 C0 0F 84 ? ? ? ? 48 8B 4F 20").count(1).get(0).get<char>(0));
- GetWheelById = (GetWheelById_t)(patternAddr + 8);
- triedToFindPattern = true;
- }
- if (IsKeyDown('I') && wheelId >= 0)
- {
- wheelId--;
- }
- else if (IsKeyDown('O') && wheelId <= 500)
- {
- wheelId++;
- }
- std::stringstream ss;
- ss << std::dec << wheelId;
- addressStr = ss.str();
- DrawGtaText(addressStr.c_str(), 0.15f, 0.0f);
- ss.str("");
- ss.clear(std::stringstream::goodbit);
- ss << std::hex << GetWheelById;
- addressStr = ss.str();
- DrawGtaText(addressStr.c_str(), 0.15f, 0.04f);
- ss.str("");
- ss.clear(std::stringstream::goodbit);
- Player player = PLAYER::PLAYER_ID();
- Ped playerPed = PLAYER::PLAYER_PED_ID();
- if (!ENTITY::DOES_ENTITY_EXIST(playerPed))
- {
- return;
- }
- Vehicle* vehArray = new Vehicle[512];
- int vehCount = worldGetAllVehicles(vehArray, 512);
- Vector3 playerPos = ENTITY::GET_ENTITY_COORDS(player, false);
- Vehicle nVeh = GetNearestVehicle(vehArray, vehCount, playerPos);
- delete[] vehArray;
- if (ENTITY::DOES_ENTITY_EXIST(nVeh))
- {
- Vector3 vehPos = ENTITY::GET_ENTITY_COORDS(nVeh, false);
- GRAPHICS::DRAW_LIGHT_WITH_RANGE(vehPos.x, vehPos.y, vehPos.z, 30, 255, 30, 20.0f, 20.0f);
- if (!IsKeyDown('U'))
- {
- return;
- }
- BYTE * address = getScriptHandleBaseAddress(nVeh);
- ss << std::hex << reinterpret_cast<unsigned long long>(address);
- addressStr = ss.str();
- DrawGtaText(addressStr.c_str(), 0.15f, 0.08f);
- ss.str("");
- ss.clear(std::stringstream::goodbit);
- if (address != nullptr)
- {
- unsigned long long wheelAddress = static_cast<unsigned long long>(GetWheelById(address, wheelId));
- ss << std::hex << wheelAddress;
- addressStr = ss.str();
- DrawGtaText(addressStr.c_str(), 0.15f, 0.12f);
- }
- }
- }
- Vehicle GetNearestVehicle(Vehicle* vehicleArray, int arraySize, Vector3 basePos)
- {
- float closestDist = FLT_MAX;
- Vehicle retVeh = 0;
- for (int i = 0; i < arraySize; i++)
- {
- if (ENTITY::DOES_ENTITY_EXIST(vehicleArray[i]))
- {
- Vector3 vehPos = ENTITY::GET_ENTITY_COORDS(vehicleArray[i], false);
- float dist = CalcVector3DistanceSquared(vehPos, basePos);
- if (dist < closestDist)
- {
- closestDist = dist;
- retVeh = vehicleArray[i];
- }
- }
- }
- return retVeh;
- }
- float CalcVector3Distance(Vector3 vec1, Vector3 vec2)
- {
- float x = vec1.x - vec2.x;
- float y = vec1.y - vec2.y;
- float z = vec1.z - vec2.z;
- return sqrtf((x*x) + (y*y) + (z*z));
- }
- float CalcVector3DistanceSquared(Vector3 vec1, Vector3 vec2)
- {
- float x = vec1.x - vec2.x;
- float y = vec1.y - vec2.y;
- float z = vec1.z - vec2.z;
- return (x*x) + (y*y) + (z*z);
- }
- void DrawGtaText(const char* text, float drawPosX, float drawPosY)
- {
- UI::SET_TEXT_FONT(0);
- UI::SET_TEXT_SCALE(0.5, 0.5);
- UI::SET_TEXT_COLOUR(255, 255, 255, 255);
- UI::SET_TEXT_WRAP(0.0, 1.0);
- UI::SET_TEXT_CENTRE(0);
- UI::SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0);
- UI::SET_TEXT_OUTLINE();
- UI::_SET_TEXT_ENTRY("STRING");
- UI::_ADD_TEXT_COMPONENT_STRING(const_cast<char*>(text));
- UI::_DRAW_TEXT(drawPosX, drawPosY);
- }
- void main()
- {
- while (true)
- {
- update();
- WAIT(0);
- }
- }
- void ScriptMain()
- {
- srand(GetTickCount());
- main();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement