From ad0a6f2577a376d60c15de7d75603c1a4e9aeeee Mon Sep 17 00:00:00 2001 From: Yimura Date: Fri, 19 Feb 2021 15:44:24 +0100 Subject: [PATCH] feat(Functions): Added crash checks for Reward and Pickup hashes --- BigBaseV2/src/features/functions.cpp | 184 +++++++++++++++++++++++++++ BigBaseV2/src/features/functions.hpp | 3 + 2 files changed, 187 insertions(+) diff --git a/BigBaseV2/src/features/functions.cpp b/BigBaseV2/src/features/functions.cpp index f4f75847..89a79a01 100644 --- a/BigBaseV2/src/features/functions.cpp +++ b/BigBaseV2/src/features/functions.cpp @@ -1,6 +1,7 @@ #include "functions.hpp" #include "gta/joaat.hpp" #include "gta/levels.hpp" +#include "gta/PickupRewards.h" #include "pointers.hpp" #include "natives.hpp" #include "notify.hpp" @@ -63,11 +64,194 @@ namespace big return sqrt(pow((a.x - b.x), 2) + pow((a.y - b.y), 2) + pow((a.z - b.z), 2)); } + void func::force_kick_from_vehicle(Player player) + { + Ped ped = PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(player); + + for (int i = 0; i < 5 && PED::IS_PED_IN_ANY_VEHICLE(ped, true); i++) + { + TASK::CLEAR_PED_TASKS_IMMEDIATELY(ped); + + script::get_current()->yield(5ms); + } + } + void func::get_active_character_slot(int* statSlot) { STATS::STAT_GET_INT(RAGE_JOAAT("MPPLY_LAST_MP_CHAR"), statSlot, true); } + static const Hash pickups[] = { 0x550447A9, 0xF92F486C, 0x602941D0, 0xE013E01C, 0x881AB0A8, 0xA421A532, 0x5C517D97, 0xDE58E0B3, 0xF25A01B9, 0xF99E15D0, 0x20796A82, 0xE4BD2FC6, 0x84837FD7, 0x77F3F2DD, 0x116FC4E6, 0xC02CF125, 0x4BFB42D1, 0xE33D8630, 0x2C014CA6, 0xE175C698, 0x1CD2CF66, 0x8F707C18, 0xCE6FDD6B, 0x20893292, 0x14568F28, 0x711D02A4, 0x1E9A99F8, 0xDE78F17E, 0xFE18F3AF, 0x5DE0AD3E, 0x6773257D, 0xEE0E26F3, 0xA7EA40CE, 0xA04E8B0D, 0x6E717A95, 0x90EFDF3B, 0x4B5259BE, 0xC3CD8B31, 0x4C35269, 0x94FA0B5E, 0x31EA45C9, 0x80AB931C, 0xE7CF07CC, 0x4316CC09, 0xA5B8CAA9, 0x41D2CF56, 0x4F92184, 0x98D79EF, 0xFDEE8368, 0x65948212, 0xCC8B3905, 0x68605A36, 0xD0AACEF7, 0xA717F898, 0xB86AEE5B, 0x84D676D4, 0xA54AE7B7, 0xD3A39366, 0x2E071B5A, 0xCC7CCD1B, 0x65A7D8E9, 0x2C804FE3, 0xB2B5325E, 0x3B662889, 0xF33C83B0, 0x8187206F, 0x9299C95B, 0x741C684A, 0xBCC5C1F2, 0x81EE601E, 0x977C0F2, 0xFA51ABF5, 0x815D66E8, 0x8C0FCB13, 0x6E4E65C2, 0xDF711959, 0xBDD874BC, 0xB2930A14, 0xA91FDC8B, 0x789576E2, 0x8967B4F3, 0xF0EA0639, 0xFE73AB5, 0x872DC888, 0xBFEE6C3B, 0xF9E2DF1F, 0x3B0F70A7, 0x22B15640, 0xBD4DE242, 0xBDB6FFA5, 0x88EAACA7, 0x5E0683A1, 0x2E764125, 0x5307A4EC, 0x295691A9, 0x4E301CD0, 0x9CF13918, 0xBED46EC5, 0x693583AD, 0xFF0A8297, 0xC01EB678, 0x278D8734, 0xFD9CAEDE, 0xD8257ABF, 0xF5C5DADC, 0x8ADDEC75, 0x79284A9, 0x9F55D149, 0x85CAA9B1, 0x1D9588D3, 0x2F36B434, 0xD3722A5B, 0x2DD30479, 0x763F7121, 0x5EA16D74, 0xC69DE3FF, 0xAF692CA9, 0xF9AFB48F, 0x499A096A, 0x6C5B941A, 0x93EBB26, 0x624F7213, 0xA9355DCD, 0x5DB6C18A, 0xE46E11B4, 0x614BFCAC, 0x6D60976C, 0x4D36C349, 0x96B412A3, 0x3A4C2AD2, 0xEF2B7390, 0x1CD604C7, 0xFE2A352C, 0xC5B72713, 0x3DE942BD, 0x968339D, 0x5A26FE0, 0x7C119D58, 0xCC90A373, 0xFD16169E, 0xDDE4181A, 0xEBF89D5F, 0xE5121369 }; + bool func::is_crash_pickup(Hash hash) + { + for (Hash pickup : pickups) + if (pickup == hash) return false; + + return true; + } + + bool func::is_crash_reward(Hash hash) + { + switch (hash) + { + case REWARD_AMMO_ADVANCEDRIFLE: + case REWARD_AMMO_APPISTOL: + case REWARD_AMMO_ASSAULTRIFLE: + case REWARD_AMMO_ASSAULTSHOTGUN: + case REWARD_AMMO_ASSAULTSMG: + case REWARD_AMMO_AUTOSHOTGUN: + case REWARD_AMMO_BULLET_MP: + case REWARD_AMMO_BULLPUPRIFLE: + case REWARD_AMMO_BULLPUPSHOTGUN: + case REWARD_AMMO_CARBINERIFLE: + case REWARD_AMMO_COMBATMG: + case REWARD_AMMO_COMBATPDW: + case REWARD_AMMO_COMBATPISTOL: + case REWARD_AMMO_COMPACTLAUNCHER: + case REWARD_AMMO_COMPACTRIFLE: + case REWARD_AMMO_DBSHOTGUN: + case REWARD_AMMO_DOUBLEACTION: + case REWARD_AMMO_FIREWORK: + case REWARD_AMMO_FIREWORK_MP: + case REWARD_AMMO_FLAREGUN: + case REWARD_AMMO_GRENADE: + case REWARD_AMMO_GRENADELAUNCHER: + case REWARD_AMMO_GRENADELAUNCHER_MP: + case REWARD_AMMO_GUSENBERG: + case REWARD_AMMO_HEAVYPISTOL: + case REWARD_AMMO_HEAVYSHOTGUN: + case REWARD_AMMO_HEAVYSNIPER: + case REWARD_AMMO_HOMINGLAUNCHER: + case REWARD_AMMO_MACHINEPISTOL: + case REWARD_AMMO_MARKSMANPISTOL: + case REWARD_AMMO_MARKSMANRIFLE: + case REWARD_AMMO_MG: + case REWARD_AMMO_MICROSMG: + case REWARD_AMMO_MINIGUN: + case REWARD_AMMO_MINISMG: + case REWARD_AMMO_MISSILE_MP: + case REWARD_AMMO_MOLOTOV: + case REWARD_AMMO_MUSKET: + case REWARD_AMMO_PETROLCAN: + case REWARD_AMMO_PIPEBOMB: + case REWARD_AMMO_PISTOL: + case REWARD_AMMO_PISTOL50: + case REWARD_AMMO_PROXMINE: + case REWARD_AMMO_PUMPSHOTGUN: + case REWARD_AMMO_PUMPSHOTGUN_ENTER_VEHICLE: + case REWARD_AMMO_RAILGUN: + case REWARD_AMMO_RAYPISTOL: + case REWARD_AMMO_REVOLVER: + case REWARD_AMMO_RPG: + case REWARD_AMMO_SAWNOFFSHOTGUN: + case REWARD_AMMO_SMG: + case REWARD_AMMO_SMOKEGRENADE: + case REWARD_AMMO_SNIPERRIFLE: + case REWARD_AMMO_SNSPISTOL: + case REWARD_AMMO_SPECIALCARBINE: + case REWARD_AMMO_STICKYBOMB: + case REWARD_AMMO_STUNGUN: + case REWARD_AMMO_VINTAGEPISTOL: + case REWARD_ARMOUR: + case REWARD_HEALTH: + case REWARD_HEALTH_ENTER_VEHICLE: + case REWARD_HEALTH_VARIABLE: + case REWARD_MONEY_VARIABLE: + case REWARD_PARACHUTE: + case REWARD_STAT_HEALTH: + case REWARD_STAT_HEALTH_VARIABLE: + case REWARD_STAT_WEAPON: + case REWARD_VEHICLE_FIX: + case REWARD_WEAPON_ADVANCEDRIFLE: + case REWARD_WEAPON_APPISTOL: + case REWARD_WEAPON_ASSAULTRIFLE: + case REWARD_WEAPON_ASSAULTRIFLE_MK2: + case REWARD_WEAPON_ASSAULTSHOTGUN: + case REWARD_WEAPON_ASSAULTSMG: + case REWARD_WEAPON_AUTOSHOTGUN: + case REWARD_WEAPON_BAT: + case REWARD_WEAPON_BATTLEAXE: + case REWARD_WEAPON_BOTTLE: + case REWARD_WEAPON_BULLPUPRIFLE: + case REWARD_WEAPON_BULLPUPRIFLE_MK2: + case REWARD_WEAPON_BULLPUPSHOTGUN: + case REWARD_WEAPON_CARBINERIFLE: + case REWARD_WEAPON_CARBINERIFLE_MK2: + case REWARD_WEAPON_COMBATMG: + case REWARD_WEAPON_COMBATMG_MK2: + case REWARD_WEAPON_COMBATPDW: + case REWARD_WEAPON_COMBATPISTOL: + case REWARD_WEAPON_COMPACTLAUNCHER: + case REWARD_WEAPON_COMPACTRIFLE: + case REWARD_WEAPON_CROWBAR: + case REWARD_WEAPON_DAGGER: + case REWARD_WEAPON_DBSHOTGUN: + case REWARD_WEAPON_DOUBLEACTION: + case REWARD_WEAPON_FIREWORK: + case REWARD_WEAPON_FLAREGUN: + case REWARD_WEAPON_FLASHLIGHT: + case REWARD_WEAPON_GOLFCLUB: + case REWARD_WEAPON_GRENADE: + case REWARD_WEAPON_GRENADELAUNCHER: + case REWARD_WEAPON_GUSENBERG: + case REWARD_WEAPON_HAMMER: + case REWARD_WEAPON_HATCHET: + case REWARD_WEAPON_HEAVYPISTOL: + case REWARD_WEAPON_HEAVYSHOTGUN: + case REWARD_WEAPON_HEAVYSNIPER: + case REWARD_WEAPON_HEAVYSNIPER_MK2: + case REWARD_WEAPON_HOMINGLAUNCHER: + case REWARD_WEAPON_KNIFE: + case REWARD_WEAPON_KNUCKLE: + case REWARD_WEAPON_MACHETE: + case REWARD_WEAPON_MACHINEPISTOL: + case REWARD_WEAPON_MARKSMANPISTOL: + case REWARD_WEAPON_MARKSMANRIFLE: + case REWARD_WEAPON_MARKSMANRIFLE_MK2: + case REWARD_WEAPON_MG: + case REWARD_WEAPON_MICROSMG: + case REWARD_WEAPON_MINIGUN: + case REWARD_WEAPON_MINISMG: + case REWARD_WEAPON_MOLOTOV: + case REWARD_WEAPON_MUSKET: + case REWARD_WEAPON_NIGHTSTICK: + case REWARD_WEAPON_PETROLCAN: + case REWARD_WEAPON_PIPEBOMB: + case REWARD_WEAPON_PISTOL: + case REWARD_WEAPON_PISTOL50: + case REWARD_WEAPON_PISTOL_MK2: + case REWARD_WEAPON_POOLCUE: + case REWARD_WEAPON_PROXMINE: + case REWARD_WEAPON_PUMPSHOTGUN: + case REWARD_WEAPON_PUMPSHOTGUN_MK2: + case REWARD_WEAPON_RAILGUN: + case REWARD_WEAPON_RAYCARBINE: + case REWARD_WEAPON_RAYMINIGUN: + case REWARD_WEAPON_RAYPISTOL: + case REWARD_WEAPON_REVOLVER: + case REWARD_WEAPON_REVOLVER_MK2: + case REWARD_WEAPON_RPG: + case REWARD_WEAPON_SAWNOFFSHOTGUN: + case REWARD_WEAPON_SMG: + case REWARD_WEAPON_SMG_MK2: + case REWARD_WEAPON_SMOKEGRENADE: + case REWARD_WEAPON_SNIPERRIFLE: + case REWARD_WEAPON_SNSPISTOL: + case REWARD_WEAPON_SNSPISTOL_MK2: + case REWARD_WEAPON_SPECIALCARBINE: + case REWARD_WEAPON_SPECIALCARBINE_MK2: + case REWARD_WEAPON_STICKYBOMB: + case REWARD_WEAPON_STONE_HATCHET: + case REWARD_WEAPON_STUNGUN: + case REWARD_WEAPON_SWITCHBLADE: + case REWARD_WEAPON_VINTAGEPISTOL: + case REWARD_WEAPON_WRENCH: + return false; + } + + return true; + } + void func::join_message(Player player) { if (!g_settings.options["join_message"]) return; diff --git a/BigBaseV2/src/features/functions.hpp b/BigBaseV2/src/features/functions.hpp index 9b73f862..e8633345 100644 --- a/BigBaseV2/src/features/functions.hpp +++ b/BigBaseV2/src/features/functions.hpp @@ -13,7 +13,10 @@ namespace big static float deg_to_rad(float deg); static void delete_entity(Entity ent); static double distance_between_vectors(Vector3 a, Vector3 b); + static void force_kick_from_vehicle(Player player); static void get_active_character_slot(int* statSlot); + static bool is_crash_pickup(Hash hash); + static bool is_crash_reward(Hash hash); static void join_message(Player player); static void join_session_type(session_type session); static bool raycast_entity(Entity* ent);