/* Copyright 2016-2017 sub1to This file is part of subVersion GTA:O SC External Hack. subVersion GTA:O SC External Hack is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. subVersion GTA:O SC External Hack is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with subVersion GTA:O SC External Hack. If not, see . */ #include "stdafx.h" #include /* TRAINER */ trainer::trainer() { m_keyTmr = clock(); } trainer::~trainer() {} void trainer::checkKeys() {} bool trainer::checkKeyState(int key) { if ( clock() - m_keyTmr > 100 && (GetAsyncKeyState(key) & 0x8001) == 0x8001 ) { m_keyTmr = clock(); return true; } return false; } /* HACK */ hack::hack() { m_explosion = ImpactExplosionEnum::DefaultBullets; } hack::~hack() {} void hack::checkKeys() { if (checkKeyState(g_pSettings->m_iKeys[keyExit])) { g_bKillHack = true; killProgram(); return; } if (checkKeyState(g_pSettings->m_iKeys[keyMenu])) { g_pSettings->toggleMenu(); return; } //hotkeys if (checkKeyState(g_pSettings->m_iKeys[keyHotTeleport])) { g_pHack->teleportWaypoint(); return; } if (checkKeyState(g_pSettings->m_iKeys[keyHotWanted])) { g_pHack->notWanted(); return; } if (checkKeyState(g_pSettings->m_iKeys[keyHotHealth])) { g_pHack->restoreHealth(); return; } if (checkKeyState(g_pSettings->m_iKeys[keyHotAmmo])) { g_pHack->fillAllAmmo(NULL); return; } //if menu is not active, no need to check other keys if (!g_pSettings->isMenuActive()) return; //menu navigation if (checkKeyState(g_pSettings->m_iKeys[keyMenuDown])) { g_pSettings->menuDown(); return; } if (checkKeyState(g_pSettings->m_iKeys[keyMenuUp])) { g_pSettings->menuUp(); return; } if (checkKeyState(g_pSettings->m_iKeys[keyMenuRight])) { g_pSettings->menuRight(); return; } if (checkKeyState(g_pSettings->m_iKeys[keyMenuLeft])) { g_pSettings->menuLeft(); return; } if (checkKeyState(g_pSettings->m_iKeys[keyMenuTabNext])) { g_pSettings->menuTabRight(); return; } if (checkKeyState(g_pSettings->m_iKeys[keyMenuTabPrev])) { g_pSettings->menuTabLeft(); return; } if (checkKeyState(g_pSettings->m_iKeys[keyMenuSave])) { featTeleport* tp = dynamic_cast(g_pSettings->getFeatureCur(g_pSettings->getActiveFeature())); if (tp == nullptr || tp->m_tpType != tp_saved) return; m_player.getPos(); tp->m_v3Pos.x = m_player.m_v3Pos.x; tp->m_v3Pos.y = m_player.m_v3Pos.y; tp->m_v3Pos.z = m_player.m_v3Pos.z; g_pSettings->m_iniParser.setValue(tp->m_szIniKey + "_x", m_player.m_v3Pos.x, "Teleport"); g_pSettings->m_iniParser.setValue(tp->m_szIniKey + "_y", m_player.m_v3Pos.y, "Teleport"); g_pSettings->m_iniParser.setValue(tp->m_szIniKey + "_z", m_player.m_v3Pos.y, "Teleport"); return; } if (checkKeyState(g_pSettings->m_iKeys[keyMenuSelect])) { g_pSettings->menuSelect(); return; } if (checkKeyState(g_pSettings->m_iKeys[keyMenuBack])) { g_pSettings->menuBack(); return; } } BYTE hack::initPointers() { BYTE r = 0; g_pMemMan->readMem((DWORD_PTR)m_hModule + ADDRESS_WORLD, &m_dwpWorldBase); if (m_dwpWorldBase == 0) return INITPTR_INVALID_WORLD; g_pMemMan->readMem((DWORD_PTR)m_hModule + ADDRESS_TUNABLE, &m_dwpTunableBase); if (m_dwpTunableBase == 0) return INITPTR_INVALID_TUNABLE; m_tunable.m_dwpTunableBase = m_dwpTunableBase; g_pMemMan->readMem((DWORD_PTR)m_hModule + ADDRESS_GLOBAL, &m_dwpGlobalBase); if (m_dwpGlobalBase == 0) return INITPTR_INVALID_GLOBAL; m_global.m_dwpGlobalBase = m_dwpGlobalBase; m_mpId = "MP0_"; g_pMemMan->readMem((DWORD_PTR)m_hModule + ADDRESS_REPLAY_INTERFACE, &m_dwpReplayInterfaceBase); if (m_dwpReplayInterfaceBase == 0) return INITPTR_INVALID_REPLAY_INTERFACE; m_replayInterface.m_dwpPedInterface = m_dwpReplayInterfaceBase; g_pMemMan->readMem((DWORD_PTR)m_dwpReplayInterfaceBase + OFFSET_REPLAY_PED_INTERFACE, &m_replayInterface.m_dwpPedInterface); g_pMemMan->readMem((DWORD_PTR)m_replayInterface.m_dwpPedInterface + OFFSET_PED_INTERFACE_PED_LIST, &m_replayInterface.m_dwpPedList); g_pMemMan->readMem((DWORD_PTR)m_dwpWorldBase + OFFSET_PLAYER, &m_dwpPlayerBase); if (m_dwpPlayerBase == 0) return INITPTR_INVALID_PLAYER; m_player.m_dwpBase = m_dwpPlayerBase; g_pMemMan->readMem((DWORD_PTR)m_dwpPlayerBase + OFFSET_ENTITY_POSBASE, &m_player.m_dwpPosBase); g_pMemMan->readMem((DWORD_PTR)m_dwpPlayerBase + OFFSET_PLAYER_INFO, &m_player.m_dwpPlayerInfo); g_pMemMan->readMem((DWORD_PTR)m_dwpPlayerBase + OFFSET_ENTITY_ATTACKER, &m_dwpAttackerBase); g_pMemMan->readMem((DWORD_PTR)m_dwpPlayerBase + OFFSET_PLAYER_VEHICLE, &m_dwpVehicleBase); if (m_dwpVehicleBase == 0) r |= INITPTR_INVALID_VEHICLE; else { m_vehicle.m_dwpBase = m_dwpVehicleBase; g_pMemMan->readMem((DWORD_PTR)m_dwpVehicleBase + OFFSET_ENTITY_POSBASE, &m_vehicle.m_dwpPosBase); g_pMemMan->readMem((DWORD_PTR)m_dwpVehicleBase + OFFSET_VEHICLE_HANDLING, &m_vehicle.m_handlingCur.m_dwpHandling); } //g_pMemMan->readMem((DWORD_PTR)m_hModule + ADDRESS_WEAPON, &m_dwpWeaponBase); g_pMemMan->readMem((DWORD_PTR)m_dwpPlayerBase + OFFSET_WEAPON_MANAGER, &m_dwpWeaponManager); g_pMemMan->readMem((DWORD_PTR)m_dwpWeaponManager + OFFSET_WEAPON_CURRENT, &m_dwpWeaponCur); if (m_dwpWeaponManager == 0 || m_dwpWeaponCur == 0 )// || m_dwpWeaponBase == 0 r |= INITPTR_INVALID_WEAPON; else { m_weapon.m_weapDataCur.m_dwpWeapon = m_dwpWeaponCur; g_pMemMan->readMem((DWORD_PTR)m_dwpWeaponCur + OFFSET_WEAPON_AMMOINFO, &m_dwpAmmoInfo); m_weapon.m_dwpAmmoInfo = m_dwpAmmoInfo; } return r; } void hack::getWaypoint() { DWORD_PTR a = (DWORD_PTR)m_hModule + ADDRESS_BLIP; for (size_t i = 2000; i > 1; i--) { DWORD64 n; DWORD buf[2]; g_pMemMan->readMem((DWORD_PTR)a + (i * 8), &n); g_pMemMan->readMem((DWORD_PTR)n + 0x40, &buf[0]); g_pMemMan->readMem((DWORD_PTR)n + 0x48, &buf[1]); if (n > 0 && buf[0] == 8 && buf[1] == 84) { g_pMemMan->readMem((DWORD_PTR)n + 0x10, &m_v2Waypoint); } } //g_pMemMan->readMem((DWORD_PTR) m_hModule + ADDRESS_WAYPOINT, &m_v2Waypoint); return; } void hack::getObjective() { DWORD_PTR a = (DWORD_PTR)m_hModule + ADDRESS_BLIP; for (size_t i = 2000; i > 1; i--) { DWORD64 n; DWORD buf[2]; g_pMemMan->readMem((DWORD_PTR)a + (i * 8), &n); g_pMemMan->readMem((DWORD_PTR)n + 0x40, &buf[0]); g_pMemMan->readMem((DWORD_PTR)n + 0x48, &buf[1]); if (n > 0 && buf[0] == 1 && (buf[1] == 5 || buf[1] == 60 || buf[1] == 66)) { g_pMemMan->readMem((DWORD_PTR)n + 0x10, &m_v3Objective); } } //g_pMemMan->readMem((DWORD_PTR) m_hModule + ADDRESS_OBJECTIVE, &m_v3Objective); return; } void hack::teleport(v3 v) { m_player.getInVehicle(); if (m_player.m_bIsInVehicle) { m_vehicle.setPos(v); return; } m_player.setPos(v); return; } bool hack::teleportWaypoint() { getWaypoint(); if (m_v2Waypoint.x == 64000.f && m_v2Waypoint.y == 64000.f) return false; v3 dest(m_v2Waypoint.x, m_v2Waypoint.y, -225.f); teleport(dest); return true; } bool hack::teleportObjective() { getObjective(); if (m_v3Objective.x == 64000.f && m_v3Objective.y == 64000.f && m_v3Objective.z == 64000.f) return false; v3 dest(m_v3Objective.x, m_v3Objective.y, m_v3Objective.z + 1.f); teleport(dest); return true; } void hack::restoreHealth() { m_player.getHealth(); if (m_player.m_flArmor < 100.f || m_player.m_cmHp.cur < m_player.m_cmHp.max) m_player.setHealth(m_player.m_cmHp.max, 100.f); return; } void hack::restoreVehicleHealth() { m_vehicle.getHealth(); if ((m_vehicle.m_cmHp.cur < m_vehicle.m_cmHp.max && m_vehicle.m_cmHp.cur > 0.f) || (m_vehicle.m_cmHpVehicle.cur < m_vehicle.m_cmHpVehicle.max && m_vehicle.m_cmHpVehicle.cur > 0.f)) m_vehicle.setHealth(m_vehicle.m_cmHp.max); return; } void hack::restoreStamina() { m_player.getStamina(); if (m_player.m_cmStamina.cur < m_player.m_cmStamina.max) m_player.setStamina(m_player.m_cmStamina.max); return; } void hack::notWanted() { m_player.getWanted(); if (m_player.m_dwWanted == 0) return; m_player.setWanted(0); feat* fpWanted = g_pSettings->getFeature(g_iFeature[FEATURE_P_WANTED]); if (fpWanted->m_bOn) fpWanted->toggle(); return; } void hack::killNpc() { if (m_dwpAttackerBase == 0) return; for (int i = 0; i < 3; i++) { DWORD_PTR npc; g_pMemMan->readMem((DWORD_PTR)m_dwpAttackerBase + (i * OFFSET_ATTACKER_DISTANCE), &npc); if (npc == m_dwpPlayerBase || npc == 0) continue; float health; g_pMemMan->readMem((DWORD_PTR)npc + OFFSET_ENTITY_HEALTH, &health); float v = 0.f; if (health > v) g_pMemMan->writeMem((DWORD_PTR)npc + OFFSET_ENTITY_HEALTH, &v); } return; } void hack::fillAmmo() { if (!m_weapon.findAmmoBase()) return; m_weapon.getCurAmmo(); m_weapon.getMaxAmmo(); if (m_weapon.m_dwCurAmmo != m_weapon.m_dwMaxAmmo) m_weapon.setCurAmmo(m_weapon.m_dwMaxAmmo); return; } void hack::setImpactExplosion(float* arg) { this->m_explosion = (ImpactExplosionEnum)((DWORD)*arg); } void hack::fillAllAmmo(float* arg) { for (size_t i = 0; i < 0x400; i++) { DWORD_PTR dwpWeapon, dwpAmmoInfo, dwpAmmoPtr1, dwpAmmoPtr2; DWORD dwCurAmmo, dwMaxAmmo; g_pMemMan->readMem((DWORD_PTR)m_dwpWeaponBase + i, &dwpWeapon); g_pMemMan->readMem((DWORD_PTR)dwpWeapon + OFFSET_WEAPON_AMMOINFO, &dwpAmmoInfo); g_pMemMan->readMem((DWORD_PTR)dwpAmmoInfo + OFFSET_WEAPON_AMMOINFO_CUR_1, &dwpAmmoPtr1); g_pMemMan->readMem((DWORD_PTR)dwpAmmoPtr1 + OFFSET_WEAPON_AMMOINFO_CUR_2, &dwpAmmoPtr2); g_pMemMan->readMem((DWORD_PTR)dwpAmmoPtr2 + OFFSET_WEAPON_AMMOINFO_CURAMMO, &dwCurAmmo); if (dwCurAmmo >= 0 && dwCurAmmo <= 9999) { g_pMemMan->readMem((DWORD_PTR)dwpAmmoInfo + OFFSET_WEAPON_AMMOINFO_MAX, &dwMaxAmmo); if (dwMaxAmmo >= 20 && dwMaxAmmo <= 9999 && dwCurAmmo < dwMaxAmmo) { g_pMemMan->writeMem((DWORD_PTR)dwpAmmoPtr2 + OFFSET_WEAPON_AMMOINFO_CURAMMO, &dwMaxAmmo); } } } } void hack::healVehicle(float* arg) { restoreVehicleHealth(); } void hack::healPlayer(float* arg) { restoreHealth(); } void hack::suicide(float* arg) { m_player.setHealth(0, 0); } void hack::fillAmmo(float* arg) { this->fillAmmo(); } void hack::fillSkillLevels(float* arg) { dStatPushBack(string_to_hash("SCRIPT_INCREASE_STAM"), 100); dStatPushBack(string_to_hash("SCRIPT_INCREASE_SHO"), 100); dStatPushBack(string_to_hash("SCRIPT_INCREASE_STRN"), 100); dStatPushBack(string_to_hash("SCRIPT_INCREASE_STL"), 100); dStatPushBack(string_to_hash("SCRIPT_INCREASE_FLY"), 100); dStatPushBack(string_to_hash("SCRIPT_INCREASE_DRIV"), 100); dStatPushBack(string_to_hash("SCRIPT_INCREASE_LUNG"), 100); } void hack::fillAllSnacks(float* arg) { dStatPushBack(string_to_hash("NO_BOUGHT_YUM_SNACKS"), 30); dStatPushBack(string_to_hash("NO_BOUGHT_HEALTH_SNACKS"), 15); dStatPushBack(string_to_hash("NO_BOUGHT_EPIC_SNACKS"), 5); dStatPushBack(string_to_hash("NUMBER_OF_ORANGE_BOUGHT"), 10); dStatPushBack(string_to_hash("NUMBER_OF_BOURGE_BOUGHT"), 10); dStatPushBack(string_to_hash("CIGARETTES_BOUGHT"), 20); dStatPushBack(string_to_hash("MP_CHAR_ARMOUR_5_COUNT"), 10); } void hack::casinoStat(float* arg) { dStatPushBack(string_to_hash("H3_COMPLETEDPOSIX"), -1); } void hack::casinoStatBitSet1(float* arg) { dStatPushBack(string_to_hash("H3OPT_BITSET1"), 0); switch ((int)*arg) { case 0: dStatPushBack(string_to_hash("H3OPT_APPROACH"), 1); break; case 1: dStatPushBack(string_to_hash("H3OPT_APPROACH"), 2); break; case 2: dStatPushBack(string_to_hash("H3OPT_APPROACH"), 3); break; case 3: dStatPushBack(string_to_hash("H3OPT_TARGET"), 0); break; case 4: dStatPushBack(string_to_hash("H3OPT_TARGET"), 1); break; case 5: dStatPushBack(string_to_hash("H3OPT_TARGET"), 2); break; case 6: dStatPushBack(string_to_hash("H3OPT_TARGET"), 3); break; case 7: dStatPushBack(string_to_hash("H3OPT_ACCESSPOINTS"), -1); break; case 8: dStatPushBack(string_to_hash("H3OPT_POI"), -1); break; default: break; } dStatPushBack(string_to_hash("H3OPT_BITSET1"), -1); } void hack::casinoStatBitSet2(float* arg) { dStatPushBack(string_to_hash("H3OPT_BITSET0"), 0); switch ((int)*arg) { case 0: dStatPushBack(string_to_hash("H3OPT_DISRUPTSHIP"), 3); break; case 1: dStatPushBack(string_to_hash("H3OPT_KEYLEVELS"), 2); break; case 2: dStatPushBack(string_to_hash("H3OPT_CREWWEAP"), 5); break; case 3: dStatPushBack(string_to_hash("H3OPT_CREWDRIVER"), 5); break; case 4: dStatPushBack(string_to_hash("H3OPT_CREWHACKER"), 4); break; case 5: dStatPushBack(string_to_hash("H3OPT_VEHS"), 0); break; case 6: dStatPushBack(string_to_hash("H3OPT_VEHS"), 1); break; case 7: dStatPushBack(string_to_hash("H3OPT_VEHS"), 2); break; case 8: dStatPushBack(string_to_hash("H3OPT_VEHS"), 3); break; case 9: dStatPushBack(string_to_hash("H3OPT_WEAPS"), 0); break; case 10: dStatPushBack(string_to_hash("H3OPT_WEAPS"), 1); break; default: dStatPushBack(string_to_hash("H3OPT_DISRUPTSHIP"), 3); dStatPushBack(string_to_hash("H3OPT_KEYLEVELS"), 2); dStatPushBack(string_to_hash("H3OPT_CREWWEAP"), 5); dStatPushBack(string_to_hash("H3OPT_CREWDRIVER"), 5); dStatPushBack(string_to_hash("H3OPT_CREWHACKER"), 4); dStatPushBack(string_to_hash("H3OPT_VEHS"), 3); dStatPushBack(string_to_hash("H3OPT_WEAPS"), 0); break; } dStatPushBack(string_to_hash("H3OPT_BITSET0"), -1); } void hack::unlockHeistCars(float* arg) { dStatPushBack(string_to_hash("CHAR_FM_VEHICLE_1_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_VEHICLE_2_UNLCK"), -1); for (size_t i = 1; i <= 7; i++) { dStatPushBack(string_to_hash("CHAR_FM_CARMOD_"+ std::to_string(i) +"_UNLCK"), -1); } } void hack::unlockLSC(float* arg) { dStatPushBack(string_to_hash("RACES_WON"), 50); dStatPushBack(string_to_hash("CHAR_FM_CARMOD_1_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CARMOD_2_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CARMOD_3_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CARMOD_4_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CARMOD_5_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CARMOD_6_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CARMOD_7_UNLCK"), -1); dStatPushBack(string_to_hash("NUMBER_SLIPSTREAMS_IN_RACE"), 110); dStatPushBack(string_to_hash("NUMBER_TURBO_STARTS_IN_RACE"), 90); dStatPushBack(string_to_hash("USJS_FOUND"), 50); dStatPushBack(string_to_hash("USJS_COMPLETED"), 50); dStatPushBack(string_to_hash("TIMES_RACE_BEST_LAP", "MPPLY_"), 101); dStatPushBack(string_to_hash("AWD_FMRALLYWONDRIVE"), 2); dStatPushBack(string_to_hash("AWD_FMWINSEARACE"), 2); dStatPushBack(string_to_hash("AWD_FMWINAIRRACE"), 2); dStatPushBack(string_to_hash("AWD_FM_RACES_FASTEST_LAP"), 101); } void hack::unlockWeaponCamos(float* arg) { dStatPushBack(string_to_hash("PISTOL_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("CMBTPISTOL_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("PISTOL50_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("APPISTOL_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("MICROSMG_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("SMG_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("ASLTSMG_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("ASLTRIFLE_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("CRBNRIFLE_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("ADVRIFLE_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("MG_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("CMBTMG_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("ASLTMG_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("PUMP_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("SAWNOFF_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("BULLPUP_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("ASLTSHTGN_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("SNIPERRFL_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("HVYSNIPER_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("GRNLAUNCH_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("RPG_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("MINIGUNS_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("GRENADE_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("SMKGRENADE_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("STKYBMB_ENEMY_KILLS"), 600); dStatPushBack(string_to_hash("MOLOTOV_ENEMY_KILLS"), 600); } //void hack::unlockWeapon(float* arg) //{ // globalStatSetInt(string_to_hash("CHAR_WEAP_UNLOCKED"), -1); // globalStatSetInt(string_to_hash("CHAR_WEAP_UNLOCKED2"), -1); // globalStatSetInt(string_to_hash("CHAR_WEAP_ADDON_1_UNLCK"), -1); // globalStatSetInt(string_to_hash("CHAR_WEAP_ADDON_2_UNLCK"), -1); // globalStatSetInt(string_to_hash("CHAR_WEAP_ADDON_3_UNLCK"), -1); // globalStatSetInt(string_to_hash("CHAR_WEAP_ADDON_4_UNLCK"), -1); // globalStatSetInt(string_to_hash("CHAR_FM_WEAP_UNLOCKED"), -1); // globalStatSetInt(string_to_hash("CHAR_FM_WEAP_UNLOCKED2"), -1); // globalStatSetInt(string_to_hash("CHAR_FM_WEAP_ADDON_1_UNLCK"), -1); // globalStatSetInt(string_to_hash("CHAR_FM_WEAP_ADDON_2_UNLCK"), -1); // globalStatSetInt(string_to_hash("CHAR_FM_WEAP_ADDON_3_UNLCK"), -1); // globalStatSetInt(string_to_hash("CHAR_FM_WEAP_ADDON_4_UNLCK"), -1); // globalStatSetInt(string_to_hash("CHAR_FM_WEAP_ADDON_5_UNLCK"), -1); //} void hack::unlockAllAwards(float* arg) { dStatPushBack(string_to_hash("AWD_100_KILLS_PISTOL"), 500); dStatPushBack(string_to_hash("AWD_100_KILLS_SNIPER"), 500); dStatPushBack(string_to_hash("AWD_50_KILLS_GRENADES"), 500); dStatPushBack(string_to_hash("AWD_100_KILLS_SHOTGUN"), 500); dStatPushBack(string_to_hash("AWD_100_KILLS_SMG"), 500); dStatPushBack(string_to_hash("AWD_50_KILLS_ROCKETLAUNCH"), 500); dStatPushBack(string_to_hash("AWD_25_KILLS_STICKYBOMBS"), 500); dStatPushBack(string_to_hash("AWD_20_KILLS_MELEE"), 500); dStatPushBack(string_to_hash("AWD_100_HEADSHOTS"), 500); dStatPushBack(string_to_hash("AWD_50_VEHICLES_BLOWNUP"), 500); dStatPushBack(string_to_hash("AWD_ENEMYDRIVEBYKILLS"), 500); dStatPushBack(string_to_hash("AWD_COPS_KILLED"), 500); dStatPushBack(string_to_hash("AWD_BUY_EVERY_GUN"), 1); dStatPushBack(string_to_hash("AWD_DRIVE_ALL_COP_CARS"), 1); dStatPushBack(string_to_hash("AWD_VEHICLE_JUMP_OVER_40M"), 50); dStatPushBack(string_to_hash("AWD_VEHICLE_JUMP0_OVER_40M"), 50); dStatPushBack(string_to_hash("AWD_VEHICLE_JUMP1_OVER_40M"), 50); dStatPushBack(string_to_hash("AWD_NO_ARMWRESTLING_WINS"), 50); dStatPushBack(string_to_hash("AWD_KILLS_MACHINEGUN"), 50); dStatPushBack(string_to_hash("AWD_ODD_JOBS"), 52); dStatPushBack(string_to_hash("AWD_PREPARATION"), 50); dStatPushBack(string_to_hash("AWD_ASLEEPONJOB"), 20); dStatPushBack(string_to_hash("AWD_DAICASHCRAB"), 100000); dStatPushBack(string_to_hash("AWD_BIGBRO"), 40); dStatPushBack(string_to_hash("AWD_SHARPSHOOTER"), 40); dStatPushBack(string_to_hash("AWD_RACECHAMP"), 40); dStatPushBack(string_to_hash("AWD_BATSWORD"), 1000000); dStatPushBack(string_to_hash("AWD_COINPURSE"), 950000); dStatPushBack(string_to_hash("AWD_ASTROCHIMP"), 3000000); dStatPushBack(string_to_hash("AWD_MASTERFUL"), 40000); dStatPushBack(string_to_hash("AWD_5STAR_WANTED_AVOIDANCE"), 50); dStatPushBack(string_to_hash("AWD_CAR_BOMBS_ENEMY_KILLS"), 50); dStatPushBack(string_to_hash("AWD_CARS_EXPORTED"), 50); dStatPushBack(string_to_hash("AWD_CONTROL_CROWDS"), 25); dStatPushBack(string_to_hash("AWD_DAILYOBJCOMPLETED"), 100); dStatPushBack(string_to_hash("AWD_DO_HEIST_AS_MEMBER"), 25); dStatPushBack(string_to_hash("AWD_DO_HEIST_AS_THE_LEADER"), 25); dStatPushBack(string_to_hash("AWD_DROPOFF_CAP_PACKAGES"), 100); dStatPushBack(string_to_hash("AWD_FINISH_HEIST_SETUP_JOB"), 50); dStatPushBack(string_to_hash("AWD_FINISH_HEISTS"), 50); dStatPushBack(string_to_hash("AWD_FM_DM_3KILLSAMEGUY"), 50); dStatPushBack(string_to_hash("AWD_FM_DM_KILLSTREAK"), 100); dStatPushBack(string_to_hash("AWD_FM_DM_STOLENKILL"), 50); dStatPushBack(string_to_hash("AWD_FM_DM_TOTALKILLS"), 500); dStatPushBack(string_to_hash("AWD_FM_DM_WINS"), 50); dStatPushBack(string_to_hash("AWD_FM_GOLF_HOLE_IN_1"), 300); dStatPushBack(string_to_hash("AWD_FM_GOLF_BIRDIES"), 25); dStatPushBack(string_to_hash("AWD_FM_GOLF_WON"), 25); dStatPushBack(string_to_hash("AWD_FM_GTA_RACES_WON"), 50); dStatPushBack(string_to_hash("AWD_FM_RACE_LAST_FIRST"), 25); dStatPushBack(string_to_hash("AWD_FM_RACES_FASTEST_LAP"), 50); dStatPushBack(string_to_hash("AWD_FM_SHOOTRANG_CT_WON"), 25); dStatPushBack(string_to_hash("AWD_FM_SHOOTRANG_RT_WON"), 25); dStatPushBack(string_to_hash("AWD_FM_SHOOTRANG_TG_WON"), 25); dStatPushBack(string_to_hash("AWD_FM_TDM_MVP"), 50); dStatPushBack(string_to_hash("AWD_FM_TDM_WINS"), 50); dStatPushBack(string_to_hash("AWD_FM_TENNIS_ACE"), 25); dStatPushBack(string_to_hash("AWD_FM_TENNIS_WON"), 25); dStatPushBack(string_to_hash("AWD_FMBASEJMP"), 25); dStatPushBack(string_to_hash("AWD_FMBBETWIN"), 50000); dStatPushBack(string_to_hash("AWD_FMCRATEDROPS"), 25); dStatPushBack(string_to_hash("AWD_FMDRIVEWITHOUTCRASH"), 30); dStatPushBack(string_to_hash("AWD_FMHORDWAVESSURVIVE"), 10); dStatPushBack(string_to_hash("AWD_FMKILLBOUNTY"), 25); dStatPushBack(string_to_hash("AWD_FMRALLYWONDRIVE"), 25); dStatPushBack(string_to_hash("AWD_FMRALLYWONNAV"), 25); dStatPushBack(string_to_hash("AWD_FMREVENGEKILLSDM"), 50); dStatPushBack(string_to_hash("AWD_FMSHOOTDOWNCOPHELI"), 25); dStatPushBack(string_to_hash("AWD_FMWINAIRRACE"), 25); dStatPushBack(string_to_hash("AWD_FMWINRACETOPOINTS"), 25); dStatPushBack(string_to_hash("AWD_FMWINSEARACE"), 25); dStatPushBack(string_to_hash("AWD_HOLD_UP_SHOPS"), 20); dStatPushBack(string_to_hash("AWD_KILL_CARRIER_CAPTURE"), 100); dStatPushBack(string_to_hash("AWD_KILL_PSYCHOPATHS"), 100); dStatPushBack(string_to_hash("AWD_KILL_TEAM_YOURSELF_LTS"), 25); dStatPushBack(string_to_hash("AWD_LAPDANCES"), 25); dStatPushBack(string_to_hash("AWD_LESTERDELIVERVEHICLES"), 25); dStatPushBack(string_to_hash("AWD_MENTALSTATE_TO_NORMAL"), 50); dStatPushBack(string_to_hash("AWD_NIGHTVISION_KILLS"), 100); dStatPushBack(string_to_hash("AWD_NO_HAIRCUTS"), 25); dStatPushBack(string_to_hash("AWD_ODISTRACTCOPSNOEATH"), 25); dStatPushBack(string_to_hash("AWD_ONLY_PLAYER_ALIVE_LTS"), 50); dStatPushBack(string_to_hash("AWD_PARACHUTE_JUMPS_20M"), 50); dStatPushBack(string_to_hash("AWD_PARACHUTE_JUMPS_50M"), 50); dStatPushBack(string_to_hash("AWD_PASSENGERTIME"), 4); dStatPushBack(string_to_hash("AWD_PICKUP_CAP_PACKAGES"), 100); dStatPushBack(string_to_hash("AWD_RACES_WON"), 50); dStatPushBack(string_to_hash("AWD_SECURITY_CARS_ROBBED"), 25); dStatPushBack(string_to_hash("AWD_TAKEDOWNSMUGPLANE"), 50); dStatPushBack(string_to_hash("AWD_TIME_IN_HELICOPTER"), 4); dStatPushBack(string_to_hash("AWD_TRADE_IN_YOUR_PROPERTY"), 25); dStatPushBack(string_to_hash("AWD_VEHICLES_JACKEDR"), 500); dStatPushBack(string_to_hash("AWD_WIN_AT_DARTS"), 25); dStatPushBack(string_to_hash("AWD_WIN_CAPTURE_DONT_DYING"), 25); dStatPushBack(string_to_hash("AWD_WIN_CAPTURES"), 50); dStatPushBack(string_to_hash("AWD_WIN_GOLD_MEDAL_HEISTS"), 25); dStatPushBack(string_to_hash("AWD_WIN_LAST_TEAM_STANDINGS"), 50); dStatPushBack(string_to_hash("AWD_DANCE_TO_SOLOMUN"), 100); dStatPushBack(string_to_hash("AWD_DANCE_TO_TALEOFUS"), 100); dStatPushBack(string_to_hash("AWD_DANCE_TO_DIXON"), 100); dStatPushBack(string_to_hash("AWD_DANCE_TO_BLKMAD"), 100); dStatPushBack(string_to_hash("AWD_CLUB_DRUNK"), 200); dStatPushBack(string_to_hash("AWD_WATCH_YOUR_STEP"), 50); dStatPushBack(string_to_hash("AWD_TOWER_OFFENSE"), 50); dStatPushBack(string_to_hash("AWD_READY_FOR_WAR"), 50); dStatPushBack(string_to_hash("AWD_THROUGH_A_LENS"), 50); dStatPushBack(string_to_hash("AWD_SPINNER"), 50); dStatPushBack(string_to_hash("AWD_YOUMEANBOOBYTRAPS"), 50); dStatPushBack(string_to_hash("AWD_MASTER_BANDITO"), 50); dStatPushBack(string_to_hash("AWD_SITTING_DUCK"), 50); dStatPushBack(string_to_hash("AWD_CROWDPARTICIPATION"), 50); dStatPushBack(string_to_hash("AWD_KILL_OR_BE_KILLED"), 50); dStatPushBack(string_to_hash("AWD_MASSIVE_SHUNT"), 25); dStatPushBack(string_to_hash("AWD_YOURE_OUTTA_HERE"), 200); dStatPushBack(string_to_hash("AWD_WEVE_GOT_ONE"), 50); dStatPushBack(string_to_hash("AWD_ARENA_WAGEWORKER"), 20000000); dStatPushBack(string_to_hash("AWD_TIME_SERVED"), 1000); dStatPushBack(string_to_hash("AWD_TOP_SCORE"), 500000); dStatPushBack(string_to_hash("AWD_CAREER_WINNER"), 1000); } void hack::unlockClothes(float* arg) { dStatPushBack(string_to_hash("CHAR_FM_CLOTHES_1_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CLOTHES_2_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CLOTHES_3_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CLOTHES_4_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CLOTHES_5_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CLOTHES_6_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CLOTHES_7_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CLOTHES_8_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CLOTHES_9_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CLOTHES_10_UNLCK"), -1); dStatPushBack(string_to_hash("CHAR_FM_CLOTHES_11_UNLCK"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_1"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_2"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_3"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_4"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_5"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_6"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_7"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_OUTFIT"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_OUTFIT"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_1"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_2"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_3"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_4"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_5"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_6"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_7"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB_1"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB_3"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB_4"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB_5"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB_6"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB_7"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_1"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_2"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_3"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_4"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_5"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_6"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_7"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_1"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_2"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_3"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_4"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_5"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_6"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_7"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_1"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_2"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_3"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_4"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_5"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_6"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_7"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_1"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_2"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_3"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_4"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_5"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_6"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_1"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_2"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_3"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_4"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_5"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_6"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_HAIR_7"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_OUTFIT"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_OUTFIT"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_1"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_2"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_3"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_4"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_5"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_6"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_JBIB_7"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB_1"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB_3"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB_4"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB_5"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB_6"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_JBIB_7"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_1"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_2"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_3"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_4"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_5"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_6"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_LEGS_7"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_1"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_2"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_3"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_4"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_5"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_6"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_LEGS_7"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_1"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_2"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_3"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_4"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_5"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_6"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_FEET_7"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_1"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_2"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_3"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_4"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_5"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_6"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_FEET_7"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_PROPS"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_PROPS_1"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_PROPS_2"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_PROPS_3"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_PROPS_4"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_PROPS_5"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_PROPS_6"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_PROPS_7"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_PROPS_8"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_PROPS_9"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_PROPS_10"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_TEETH"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_TEETH_1"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_TEETH_2"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_TEETH"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_TEETH_1"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_TEETH_2"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_BERD"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_BERD_1"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_BERD_2"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_BERD_3"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_BERD_4"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_BERD_5"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_BERD_6"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_BERD_7"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_BERD"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_BERD_1"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_BERD_2"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_BERD_3"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_BERD_4"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_BERD_5"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_BERD_6"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_BERD_7"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_TORSO"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_TORSO"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_SPECIAL"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_SPECIAL_1"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_SPECIAL_2"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_SPECIAL_3"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_SPECIAL_4"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_SPECIAL_5"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_SPECIAL_6"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_SPECIAL_7"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_SPECIAL2"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_SPECIAL2_1"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_SPECIAL"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_SPECIAL_1"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_SPECIAL_2"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_SPECIAL_3"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_SPECIAL_4"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_SPECIAL_5"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_SPECIAL_6"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_SPECIAL_7"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_SPECIAL2"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_SPECIAL2_1"), -1); dStatPushBack(string_to_hash("CLTHS_AVAILABLE_DECL"), -1); dStatPushBack(string_to_hash("CLTHS_ACQUIRED_DECL"), -1); for (size_t i = 0; i <= 205; i++) { dStatPushBack(string_to_hash("DLC_APPAREL_ACQUIRED_" + std::to_string(i)), -1); } for (size_t i = 0; i <= 31; i++) { dStatPushBack(string_to_hash("ADMIN_CLOTHES_GV_BS_" + std::to_string(i)), -1); } } void hack::intoPV(float* arg) { if (m_global.initIntoPVPtr(m_hModule)) { m_global.setIntoPersonalVehicle(1); Sleep(500); m_global.getIntoPersonalVehicle(); if (m_global.m_dwIntoPersonalVehicle == 1) { m_global.setIntoPersonalVehicle(0); } } } void hack::loadSession(float* arg) { if (m_global.initSessionPtr(m_hModule)) { m_global.setSessionID((int)*arg); m_global.setSessionTransition(1); Sleep(400); m_global.setSessionTransition(0); } } void hack::forwardTeleport(float* arg) { m_player.getPos(); v3 v3Pos = m_player.m_v3Pos; m_player.getCos(); m_player.getSin(); float fAngle = m_player.m_fCos; float fAngle2 = m_player.m_fSin; v3Pos.x +=*arg * fAngle2; v3Pos.y +=*arg * fAngle; teleport(v3Pos); } void hack::spawnVehicle(float* arg) { if (m_global.initVehiclePtr(m_hModule)) { int vehTypeIndex = (int)*arg / 1000; int vehIndex = (int)*arg % 1000; m_player.getPos(); v3 v3Pos = m_player.m_v3Pos; m_player.getCos(); m_player.getSin(); float fAngle = m_player.m_fCos; float fAngle2 = m_player.m_fSin; v3Pos.x += 6 * fAngle2; v3Pos.y += 6 * fAngle; m_global.setVehicleHash(joaat(vehiclePreview[vehTypeIndex].second[vehIndex].VCode)); m_global.setVehicleKickPrevent1(2); m_global.setVehicleKickPrevent2(14); m_global.setSecondaryColor(-1); m_global.setPrimaryColor(-1); m_global.setVehiclePosX(v3Pos.x); m_global.setVehiclePosY(v3Pos.y); m_global.setVehiclePosZ(-255); if (true) { g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 10, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 11, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 12, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 13, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 14, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 15, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 16, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 17, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 18, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 19, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 20, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 21, m_hModule), 4); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 22, m_hModule), 3); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 23, m_hModule), 3); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 24, m_hModule), 57); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 25, m_hModule), 4); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 26, m_hModule), 5); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 28, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 30, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 32, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 65, m_hModule), 1); g_pMemMan->writeMem(m_global.getGlobal(OFFSET_GLOBAL_VEHICLE_HASH + 27 + 77, m_hModule), 0xF0400200); } m_global.setVehicleSpawn2(1); m_global.setVehicleSpawn1(1); } } void hack::selfDropMoney(feat* feature) { if (!m_bSelfDropInit) { m_bSelfDropInit = true; std::thread t([=] { while (true) { if (feature->m_bOn) { if (m_global.initMoneyPtr(m_hModule)) { m_player.getPos(); m_global.setMoneyObject(1); m_global.setMoneyVal(2000); m_global.setMoneyPosX(m_player.m_v3Pos.x); m_global.setMoneyPosY(m_player.m_v3Pos.y); m_global.setMoneyPosZ(m_player.m_v3Pos.z + 5); m_global.findMoneyPtr(m_hModule); m_global.setMoneyCall(2); } } Sleep(100); } }); t.detach(); } } void hack::dStatPushBack(unsigned int hash, int value) { this->m_dStat.push_back(std::pair(hash, value)); } void hack::consumeStatQueue() { if (!m_bInit) { m_bInit = true; std::thread tConsumeStatQueue([=] { while (true) { if (!m_dStat.empty()) { g_pD3D9Render->m_bMBShowing = true; g_pD3D9Render->m_sTitle = L"Memproses..."; g_pD3D9Render->m_sDetail = L"Sisa " + std::to_wstring(m_dStat.size()) + L" detik"; if (m_global.initStatPtr(m_hModule)) { m_global.getStatHash(); unsigned int resotreHash = m_global.m_dwStatHash; m_global.getStatValue(); DWORD resotreValue = m_global.m_dwStatValue; m_global.getStatCall(); DWORD call = m_global.m_dwStatCall; m_global.setStatHash(m_dStat.front().first); m_global.setStatValue(m_dStat.front().second); m_global.setStatCall(-1); Sleep(1000); m_global.setStatHash(resotreHash); m_global.setStatValue(resotreValue); } m_dStat.pop_front(); } else { g_pD3D9Render->m_bMBShowing = false; } Sleep(1); } }); tConsumeStatQueue.detach(); } } void hack::killAllNpc(float* arg) { m_replayInterface.initPeds(); for (size_t i = 0; i < m_replayInterface.dw_curPedNum; i++) { if (i == 10) continue; m_replayInterface.g_pPedList[i]->getHealth(); if (m_replayInterface.g_pPedList[i]->m_cmHp.cur > 0) { m_replayInterface.g_pPedList[i]->setHealth(0); } } } void hack::renderPlayerList(int parent,int playerList[32]) { for (size_t i = 0; i < 32; i++) { g_pSettings->updataFeature(playerList[i], -1, parent, L"Íæ¼Ò" + std::to_wstring(i), feat_teleport,tp_static, -1336.f, -3044.f, -225.f); } } void hack::waterProof(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_player.m_playerDataCur.m_dwWaterProof != m_player.m_playerDataRestore.m_dwWaterProof) m_player.setWaterProof(m_player.m_playerDataRestore.m_dwWaterProof); feature->m_bRestored = true; } return; } if (m_player.m_playerDataCur.m_dwWaterProof != m_player.m_playerDataRestore.m_dwWaterProof + 0x1000000) m_player.setWaterProof(m_player.m_playerDataRestore.m_dwWaterProof + 0x1000000); return; } void hack::undeadOffradar(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_player.m_playerDataCur.m_maxHealth != m_player.m_playerDataRestore.m_maxHealth) m_player.setMaxHealth(m_player.m_playerDataRestore.m_maxHealth); feature->m_bRestored = true; } return; } if (m_player.m_playerDataCur.m_maxHealth > 0) m_player.setMaxHealth(0); return; } void hack::superPunch(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_player.getVehicleDamageMult(); if (m_player.m_flVehicleDamageMult != 1) m_player.setVehicleDamageMult(1); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; if (m_player.m_flVehicleDamageMult != fValue) m_player.setVehicleDamageMult(fValue); return; } void hack::noSpread(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_weapon.m_weapDataCur.m_fSpread != m_weapon.m_weapDataRestore.m_fSpread) m_weapon.setSpread(m_weapon.m_weapDataRestore.m_fSpread); feature->m_bRestored = true; } return; } if (m_weapon.m_weapDataCur.m_fSpread != 0) m_weapon.setSpread(0); return; } void hack::noRecoil(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_weapon.m_weapDataCur.m_fRecoil != m_weapon.m_weapDataRestore.m_fRecoil) m_weapon.setRecoil(m_weapon.m_weapDataRestore.m_fRecoil); feature->m_bRestored = true; } return; } if (m_weapon.m_weapDataCur.m_fRecoil != 0) m_weapon.setRecoil(0); return; } void hack::quickReload(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_weapon.m_weapDataCur.m_fReload != m_weapon.m_weapDataRestore.m_fReload || m_weapon.m_weapDataCur.m_fReloadVeh != m_weapon.m_weapDataRestore.m_fReloadVeh) { m_weapon.setReloadSpeed(m_weapon.m_weapDataRestore.m_fReload); m_weapon.setReloadVehicle(m_weapon.m_weapDataRestore.m_fReloadVeh); } feature->m_bRestored = true; } return; } float fValue = m_weapon.m_weapDataRestore.m_fReload * static_cast(feature)->m_fValue; if (m_weapon.m_weapDataCur.m_fReload != fValue) m_weapon.setReloadSpeed(fValue); if (m_weapon.m_weapDataCur.m_fReloadVeh != 0) m_weapon.setReloadVehicle(0); return; } void hack::bulletDamage(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_weapon.m_weapDataCur.m_fDamage != m_weapon.m_weapDataRestore.m_fDamage) m_weapon.setBulletDamage(m_weapon.m_weapDataRestore.m_fDamage); feature->m_bRestored = true; } return; } float fValue = m_weapon.m_weapDataRestore.m_fDamage * static_cast(feature)->m_fValue; if (m_weapon.m_weapDataCur.m_fDamage != fValue) m_weapon.setBulletDamage(fValue); return; } void hack::weaponRange(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_weapon.m_weapDataCur.m_fRange != m_weapon.m_weapDataRestore.m_fRange) m_weapon.setRange(m_weapon.m_weapDataRestore.m_fRange); feature->m_bRestored = true; } return; } float fValue = m_weapon.m_weapDataRestore.m_fRange * static_cast(feature)->m_fValue; if (m_weapon.m_weapDataCur.m_fRange != fValue) m_weapon.setRange(fValue); return; } void hack::weaponSpin(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_weapon.m_weapDataCur.m_fSpinUp != m_weapon.m_weapDataRestore.m_fSpinUp || m_weapon.m_weapDataCur.m_fSpin != m_weapon.m_weapDataRestore.m_fSpin) { m_weapon.setSpinUp(m_weapon.m_weapDataRestore.m_fSpinUp); m_weapon.setSpin(m_weapon.m_weapDataRestore.m_fSpin); } feature->m_bRestored = true; } return; } if (m_weapon.m_weapDataCur.m_fSpinUp != 0 || m_weapon.m_weapDataCur.m_fSpin != 0) { m_weapon.setSpin(0); m_weapon.setSpinUp(0); } return; } void hack::weaponForceOnPed(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_weapon.m_weapDataCur.m_fForceOnPed != m_weapon.m_weapDataRestore.m_fForceOnPed) m_weapon.setForceOnPed(m_weapon.m_weapDataRestore.m_fForceOnPed); feature->m_bRestored = true; } return; } float fValue = m_weapon.m_weapDataRestore.m_fForceOnPed * static_cast(feature)->m_fValue; if (m_weapon.m_weapDataCur.m_fForceOnPed != fValue) m_weapon.setForceOnPed(fValue); return; } void hack::weaponForceOnVehicle(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_weapon.m_weapDataCur.m_fForceOnVehicle != m_weapon.m_weapDataRestore.m_fForceOnVehicle) m_weapon.setForceOnVehicle(m_weapon.m_weapDataRestore.m_fForceOnVehicle); feature->m_bRestored = true; } return; } float fValue = m_weapon.m_weapDataRestore.m_fForceOnVehicle * static_cast(feature)->m_fValue; if (m_weapon.m_weapDataCur.m_fForceOnVehicle != fValue) m_weapon.setForceOnVehicle(fValue); return; } void hack::weaponForceOnHeli(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_weapon.m_weapDataCur.m_fForceOnHeli != m_weapon.m_weapDataRestore.m_fForceOnHeli) m_weapon.setForceOnHeli(m_weapon.m_weapDataRestore.m_fForceOnHeli); feature->m_bRestored = true; } return; } float fValue = m_weapon.m_weapDataRestore.m_fForceOnHeli * static_cast(feature)->m_fValue; if (m_weapon.m_weapDataCur.m_fForceOnHeli != fValue) m_weapon.setForceOnHeli(fValue); return; } void hack::weaponBulletEdit(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_weapon.m_weapDataCur.m_dwImpactType != m_weapon.m_weapDataRestore.m_dwImpactType) m_weapon.setImpactType(m_weapon.m_weapDataRestore.m_dwImpactType); if (m_weapon.m_weapDataCur.m_dwImpactExplosion != ImpactExplosionEnum::DefaultBullets) m_weapon.setImpactExplosion(ImpactExplosionEnum::DefaultBullets); feature->m_bRestored = true; } return; } if (m_weapon.m_weapDataCur.m_dwImpactType != ImpactTypeEnum::Explosives) m_weapon.setImpactType(ImpactTypeEnum::Explosives); if (m_weapon.m_weapDataCur.m_dwImpactExplosion != m_explosion) m_weapon.setImpactExplosion(m_explosion); return; } void hack::runSpeed(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_player.getRunSpeed(); if (m_player.m_flRunSpd > 1.f) m_player.setRunSpeed(1.f); feature->m_bRestored = true; } return; } m_player.getRunSpeed(); float fValue = static_cast(feature)->m_fValue; if (m_player.m_flRunSpd != fValue) m_player.setRunSpeed(fValue); return; } void hack::swimSpeed(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_player.getSwimSpeed(); if (m_player.m_flSwimSpd > 1.f) m_player.setSwimSpeed(1.f); feature->m_bRestored = true; } return; } m_player.getSwimSpeed(); float fValue = static_cast(feature)->m_fValue; if (m_player.m_flSwimSpd != fValue) m_player.setSwimSpeed(fValue); return; } void hack::npcIgnore(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_player.getNpcIgnore(); if (m_player.m_dwNpcIgnore > 0) m_player.setNpcIgnore(0); feature->m_bRestored = true; } return; } m_player.getNpcIgnore(); if (m_player.m_dwNpcIgnore != 0x450000) m_player.setNpcIgnore(0x450000); return; } void hack::godMode(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_player.getGod(); if (m_player.m_btGod > 0) m_player.setGod(0); feature->m_bRestored = true; } return; } m_player.getGod(); if (m_player.m_btGod < 1) m_player.setGod(1); return; } void hack::frameFlags(feat* featSuperJump, feat* featExplosiveMelee, feat* featFireAmmo, feat* featExplosiveAmmo) { if (!featSuperJump->m_bOn && !featExplosiveMelee->m_bOn && !featFireAmmo->m_bOn && !featExplosiveAmmo->m_bOn) return; DWORD dwValue = 0; if (featSuperJump->m_bOn) dwValue += 64; if (featExplosiveMelee->m_bOn) dwValue += 32; if (featFireAmmo->m_bOn) dwValue += 16; if (featExplosiveAmmo->m_bOn) dwValue += 8; m_player.setFrameFlags(dwValue); return; } void hack::vehicleGod(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_vehicle.getGod(); if (m_vehicle.m_btGod > 0) m_vehicle.setGod(0); feature->m_bRestored = true; } return; } m_vehicle.getGod(); if (m_vehicle.m_btGod < 1) m_vehicle.setGod(1); return; } void hack::infAmmo(feat* feature) { BYTE cur[3] = {}; if (!feature->m_bOn) { if (!feature->m_bRestored) { g_pMemMan->readMem((DWORD_PTR)m_hModule + ADDRESS_AMMO, cur, sizeof(BYTE) * 3, PAGE_EXECUTE_READWRITE); BYTE value[3] = { 0x41, 0x2B, 0xD1 }; if (cur[0] != value[0]) g_pMemMan->writeMem((DWORD_PTR)m_hModule + ADDRESS_AMMO, value , sizeof(BYTE) * 3, PAGE_EXECUTE_READWRITE); feature->m_bRestored = true; } return; } g_pMemMan->readMem((DWORD_PTR)m_hModule + ADDRESS_AMMO, cur, sizeof(BYTE) * 3, PAGE_EXECUTE_READWRITE); BYTE value[3] = { 0x90, 0x90, 0x90 }; if (cur[0] != value[0]) g_pMemMan->writeMem((DWORD_PTR)m_hModule + ADDRESS_AMMO, value, sizeof(BYTE) * 3, PAGE_EXECUTE_READWRITE); return; } void hack::noReload(feat* feature) { BYTE cur[3] = {}; if (!feature->m_bOn) { if (!feature->m_bRestored) { g_pMemMan->readMem((DWORD_PTR)m_hModule + ADDRESS_MAGAZINE, cur, sizeof(BYTE) * 3, PAGE_EXECUTE_READWRITE); BYTE value[3] = { 0x41, 0x2B, 0xC9 }; if (cur[0] != value[0]) g_pMemMan->writeMem((DWORD_PTR)m_hModule + ADDRESS_MAGAZINE, value, sizeof(BYTE) * 3, PAGE_EXECUTE_READWRITE); feature->m_bRestored = true; } return; } g_pMemMan->readMem((DWORD_PTR)m_hModule + ADDRESS_MAGAZINE, cur, sizeof(BYTE) * 3, PAGE_EXECUTE_READWRITE); BYTE value[3] = { 0x90, 0x90, 0x90 }; if (cur[0] != value[0]) g_pMemMan->writeMem((DWORD_PTR)m_hModule + ADDRESS_MAGAZINE, value, sizeof(BYTE) * 3, PAGE_EXECUTE_READWRITE); return; } void hack::seatbelt(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_player.getSeatbelt(); if (m_player.m_btSeatbelt & 0x01) m_player.setSeatbelt(m_player.m_btSeatbelt ^ 0x01); feature->m_bRestored = true; } return; } m_player.getSeatbelt(); if (!(m_player.m_btSeatbelt & 0x01)) m_player.setSeatbelt(m_player.m_btSeatbelt | 0x01); return; } void hack::noRagdoll(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_player.getRagdoll(); if (!(m_player.m_btRagdoll & 0x20)) m_player.setRagdoll(m_player.m_btRagdoll | 0x20); feature->m_bRestored = true; } return; } m_player.getRagdoll(); if (m_player.m_btRagdoll & 0x20) m_player.setRagdoll(m_player.m_btRagdoll ^ 0x20); return; } void hack::vehicleAccel(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fAcceleration != m_vehicle.m_handlingRestore.m_fAcceleration) m_vehicle.setAcceleration(m_vehicle.m_handlingRestore.m_fAcceleration); feature->m_bRestored = true; } return; } float fValue = m_vehicle.m_handlingRestore.m_fAcceleration * static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fAcceleration != fValue) m_vehicle.setAcceleration(fValue); return; } void hack::vehicleBrake(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fBrakeForce != m_vehicle.m_handlingRestore.m_fBrakeForce) m_vehicle.setBrakeForce(m_vehicle.m_handlingRestore.m_fBrakeForce); feature->m_bRestored = true; } return; } float fValue = m_vehicle.m_handlingRestore.m_fBrakeForce * static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fBrakeForce != fValue) m_vehicle.setBrakeForce(fValue); return; } void hack::neverWanted(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_player.getWantedCanChange(); if (m_player.m_flWantedCanChange != 1.f) m_player.setWantedCanChange(1.f); feature->m_bRestored = true; } return; } m_player.getWantedCanChange(); if (m_player.m_flWantedCanChange != 0.f) m_player.setWantedCanChange(0.f); return; } void hack::vehicleTraction(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fTractionCurveMin != m_vehicle.m_handlingRestore.m_fTractionCurveMin) m_vehicle.setTractionCurveMin(m_vehicle.m_handlingRestore.m_fTractionCurveMin); feature->m_bRestored = true; } return; } float fValue = m_vehicle.m_handlingRestore.m_fTractionCurveMin * static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fTractionCurveMin != fValue) m_vehicle.setTractionCurveMin(fValue); return; } void hack::vehicleGravity(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_vehicle.getGravity(); if (m_vehicle.m_fGravity != 9.8f) m_vehicle.setGravity(9.8f); feature->m_bRestored = true; } return; } m_vehicle.getGravity(); float fValue = static_cast(feature)->m_fValue; if (m_vehicle.m_fGravity != fValue) m_vehicle.setGravity(fValue); return; } void hack::vehicleBulletproofTires(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_vehicle.getBulletproofTires(); if (m_vehicle.m_btBulletproofTires & 0x20) m_vehicle.setBulletproofTires(m_vehicle.m_btBulletproofTires ^ 0x20); feature->m_bRestored = true; } return; } m_vehicle.getBulletproofTires(); if (!(m_vehicle.m_btBulletproofTires & 0x20)) m_vehicle.setBulletproofTires(m_vehicle.m_btBulletproofTires | 0x20); return; } void hack::wanted(feat* feature) { if (!feature->m_bOn) return; m_player.getWanted(); float fValue = static_cast(feature)->m_fValue; if (m_player.m_dwWanted != (DWORD)fValue) { m_player.setWanted((DWORD)fValue); feat* fpNeverWanted = g_pSettings->getFeature(g_iFeature[FEATURE_P_NEVERWANTED]); if (fpNeverWanted->m_bOn) fpNeverWanted->toggle(); } return; } void hack::bulletBatch(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_weapon.m_weapDataCur.m_dwBulletBatch != m_weapon.m_weapDataRestore.m_dwBulletBatch) m_weapon.setBulletBatch(m_weapon.m_weapDataRestore.m_dwBulletBatch); feature->m_bRestored = true; } return; } float fValue = m_weapon.m_weapDataRestore.m_dwBulletBatch * static_cast(feature)->m_fValue; fValue = (fValue > 25.f) ? 25.f : fValue; if (m_weapon.m_weapDataCur.m_dwBulletBatch != fValue) m_weapon.setBulletBatch((DWORD)fValue); return; } void hack::muzzleVelocity(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_weapon.m_weapDataCur.m_fMuzzleVelocity != m_weapon.m_weapDataRestore.m_fMuzzleVelocity) m_weapon.setMuzzleVelocity(m_weapon.m_weapDataRestore.m_fMuzzleVelocity); feature->m_bRestored = true; } return; } float fValue = m_weapon.m_weapDataRestore.m_fMuzzleVelocity * static_cast(feature)->m_fValue; if (m_weapon.m_weapDataCur.m_fMuzzleVelocity != fValue) m_weapon.setMuzzleVelocity(fValue); return; } void hack::vehicleDeformation(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fDeformationDamageMult != m_vehicle.m_handlingRestore.m_fDeformationDamageMult) m_vehicle.setDeformationDamageMult(m_vehicle.m_handlingRestore.m_fDeformationDamageMult); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fDeformationDamageMult != fValue) m_vehicle.setDeformationDamageMult(fValue); return; } void hack::vehicleUpShift(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fUpShift != m_vehicle.m_handlingRestore.m_fUpShift) m_vehicle.setUpShift(m_vehicle.m_handlingRestore.m_fUpShift); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fUpShift != fValue) m_vehicle.setUpShift(fValue); return; } void hack::vehicleSuspensionForce(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fSuspensionForce != m_vehicle.m_handlingRestore.m_fSuspensionForce) m_vehicle.setSuspensionForce(m_vehicle.m_handlingRestore.m_fSuspensionForce); feature->m_bRestored = true; } return; } float fValue = m_vehicle.m_handlingRestore.m_fSuspensionForce * static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fSuspensionForce != fValue) m_vehicle.setSuspensionForce(fValue); return; } void hack::vehicleDownShift(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fDownShift != m_vehicle.m_handlingRestore.m_fDownShift) m_vehicle.setDownShift(m_vehicle.m_handlingRestore.m_fDownShift); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fDownShift != fValue) m_vehicle.setDownShift(fValue); return; } void hack::vehicleMass(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fMass != m_vehicle.m_handlingRestore.m_fMass) m_vehicle.setMass(m_vehicle.m_handlingRestore.m_fMass); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fMass != fValue) m_vehicle.setMass(fValue); return; } void hack::vehicleBuoyancy(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fBuoyancy != m_vehicle.m_handlingRestore.m_fBuoyancy) m_vehicle.setBuoyancy(m_vehicle.m_handlingRestore.m_fBuoyancy); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fBuoyancy != fValue) m_vehicle.setBuoyancy(fValue); return; } void hack::vehicleHandbrakeForce(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fHandbrakeForce != m_vehicle.m_handlingRestore.m_fHandbrakeForce) m_vehicle.setHandbrakeForce(m_vehicle.m_handlingRestore.m_fHandbrakeForce); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fHandbrakeForce != fValue) m_vehicle.setHandbrakeForce(fValue); return; } void hack::boost(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_vehicle.getBoost(); if (m_vehicle.m_fBoost != 1.25) m_vehicle.setBoost(1.25); feature->m_bRestored = true; } return; } m_vehicle.getBoost(); if (m_vehicle.m_fBoost != 1.25) m_vehicle.setBoost(1.25); return; } void hack::vehicleRocketRechargeSpeed(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_vehicle.getRocketRechargeSpeed(); if (m_vehicle.m_fRocketRechargeSpeed != 0.5f) m_vehicle.setRocketRechargeSpeed(0.5f); feature->m_bRestored = true; } return; } m_vehicle.getRocketRechargeSpeed(); float fValue = static_cast(feature)->m_fValue; if (m_vehicle.m_fRocketRechargeSpeed != fValue) m_vehicle.setRocketRechargeSpeed(fValue); return; } void hack::vehicleSuspensionHeigh(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fSuspensionHeigh != m_vehicle.m_handlingRestore.m_fSuspensionHeigh) m_vehicle.setSuspensionHeigh(m_vehicle.m_handlingRestore.m_fSuspensionHeigh); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fSuspensionHeigh != fValue) m_vehicle.setSuspensionHeigh(fValue); return; } void hack::vehicleColisionDamageMult(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fColisionDamageMult != m_vehicle.m_handlingRestore.m_fColisionDamageMult) m_vehicle.setColisionDamageMult(m_vehicle.m_handlingRestore.m_fColisionDamageMult); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fColisionDamageMult != fValue) m_vehicle.setColisionDamageMult(fValue); return; } void hack::vehicleWeaponDamageMult(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fWeaponDamageMult != m_vehicle.m_handlingRestore.m_fWeaponDamageMult) m_vehicle.setWeaponDamageMult(m_vehicle.m_handlingRestore.m_fWeaponDamageMult); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fWeaponDamageMult != fValue) m_vehicle.setWeaponDamageMult(fValue); return; } void hack::vehicleEngineDamageMult(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { if (m_vehicle.m_handlingCur.m_fEngineDamageMult != m_vehicle.m_handlingRestore.m_fEngineDamageMult) m_vehicle.setEngineDamageMult(m_vehicle.m_handlingRestore.m_fEngineDamageMult); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; if (m_vehicle.m_handlingCur.m_fEngineDamageMult != fValue) m_vehicle.setEngineDamageMult(fValue); return; } void hack::tunableRpMult(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_tunable.getRpMult(); if (m_tunable.m_fRpMult != 1) m_tunable.setRpMult(1); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; m_tunable.getRpMult(); if (m_tunable.m_fRpMult != fValue) m_tunable.setRpMult(fValue); return; } void hack::tunableApMult(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_tunable.getApMult(); if (m_tunable.m_fApMult != 1) m_tunable.setApMult(1); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; m_tunable.getApMult(); if (m_tunable.m_fApMult != fValue) m_tunable.setApMult(fValue); return; } void hack::tunableMissionPayout(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_tunable.getMinMissionPayout(); if (m_tunable.m_fMinMissionPayout != 0) m_tunable.setMinMissionPayout(0); feature->m_bRestored = true; } return; } float fValue = static_cast(feature)->m_fValue; m_tunable.getMinMissionPayout(); if (m_tunable.m_fMinMissionPayout != fValue) m_tunable.setMinMissionPayout(fValue); return; } void hack::tunableOrbitalCannonCooldown(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_tunable.getOrbitalCannonCooldown(); if (m_tunable.m_dwOrbitalCannonCooldown != 2880000) m_tunable.setOrbitalCannonCooldown(2880000); feature->m_bRestored = true; } return; } m_tunable.getOrbitalCannonCooldown(); if (m_tunable.m_dwOrbitalCannonCooldown != 0) m_tunable.setOrbitalCannonCooldown(0); return; } void hack::tunableBunkerResearch(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_tunable.getBunkerResearch(); if (m_tunable.m_dwBunkerResearch != 0) m_tunable.setBunkerResearch(0); feature->m_bRestored = true; } return; } m_tunable.getBunkerResearch(); if (m_tunable.m_dwBunkerResearch != 1) m_tunable.setBunkerResearch(1); return; } void hack::tunableAntiIdleKick(feat* feature) { if (!feature->m_bOn) { if (!feature->m_bRestored) { m_tunable.getAntiIdleKick1(); m_tunable.getAntiIdleKick2(); m_tunable.getAntiIdleKick3(); m_tunable.getAntiIdleKick4(); if (m_tunable.m_dwAntiIdleKick1 != 120000) m_tunable.setAntiIdleKick1(120000); if (m_tunable.m_dwAntiIdleKick2 != 300000) m_tunable.setAntiIdleKick2(300000); if (m_tunable.m_dwAntiIdleKick3 != 600000) m_tunable.setAntiIdleKick3(600000); if (m_tunable.m_dwAntiIdleKick4 != 900000) m_tunable.setAntiIdleKick4(900000); feature->m_bRestored = true; } return; } m_tunable.getAntiIdleKick1(); m_tunable.getAntiIdleKick2(); m_tunable.getAntiIdleKick3(); m_tunable.getAntiIdleKick4(); if (m_tunable.m_dwAntiIdleKick1 != 2000000000) m_tunable.setAntiIdleKick1(2000000000); if (m_tunable.m_dwAntiIdleKick2 != 2000000000) m_tunable.setAntiIdleKick2(2000000000); if (m_tunable.m_dwAntiIdleKick3 != 2000000000) m_tunable.setAntiIdleKick3(2000000000); if (m_tunable.m_dwAntiIdleKick4 != 2000000000) m_tunable.setAntiIdleKick4(2000000000); return; } void hack::about(float* arg) { switch ((int)*arg) { case 0: WinExec("explorer.exe https://google.com", SW_NORMAL); break; case 1: WinExec("explorer.exe https://google.com", SW_NORMAL); break; default: break; } } void hack::cabut(float* arg) { exit(0); }