Files
YimMenu/src/backend/looped/player/good_options.cpp
T
maybegreat48 4a5dccd547 Huge protection improvements and other stuff (#1963)
* feat(protections): add a fuzzer
* feat(protections): improve protections
* feat(spoofing): add warning
* feat(world): force object cleanup
* fix(weapons): fix custom weapon code
* fix(weapons): fix for #1983
2023-08-19 13:01:08 +02:00

78 lines
2.1 KiB
C++

#include "backend/looped/looped.hpp"
#include "gta/pickup_rewards.hpp"
#include "services/players/player_service.hpp"
#include "util/globals.hpp"
#include "util/misc.hpp"
namespace big
{
// rate limit script events to prevent crashes
static int offRadarPlayer = 0;
static int neverWantedPlayer = 0;
void looped::player_good_options()
{
if (!*g_pointers->m_gta.m_is_session_started)
return;
offRadarPlayer++;
if (offRadarPlayer > 32)
offRadarPlayer = 0;
neverWantedPlayer++;
if (neverWantedPlayer > 32)
neverWantedPlayer = 0;
g_player_service->iterate([](const player_entry& entry) {
if ((g.session.off_radar_all || entry.second->off_radar) && offRadarPlayer == entry.second->id())
globals::give_remote_otr(entry.second->id());
});
g_player_service->iterate([](const player_entry& entry) {
if ((g.session.never_wanted_all || entry.second->never_wanted)
&& PLAYER::GET_PLAYER_WANTED_LEVEL(entry.second->id()) > 0 && neverWantedPlayer == entry.second->id())
globals::clear_wanted_player(entry.second->id());
});
if (g.session.semi_godmode_all)
{
g_pointers->m_gta.m_give_pickup_rewards(-1, REWARD_HEALTH);
g_pointers->m_gta.m_give_pickup_rewards(-1, REWARD_ARMOUR);
}
else
{
g_player_service->iterate([](const player_entry& entry) {
if (entry.second->semi_godmode)
{
if (CPed* ped = entry.second->get_ped())
{
if (ped->m_maxhealth == 0 || ped->m_health == 0 || misc::has_bit_set((int*)&ped->m_damage_bits, 8))
return;
if (ped->m_health < ped->m_maxhealth)
{
g_pointers->m_gta.m_give_pickup_rewards(1 << entry.second->id(), REWARD_HEALTH);
}
if (ped->m_armor < 50.0f)
{
g_pointers->m_gta.m_give_pickup_rewards(1 << entry.second->id(), REWARD_ARMOUR);
}
}
}
});
}
if (g.session.vehicle_fix_all)
{
g_pointers->m_gta.m_give_pickup_rewards(-1, REWARD_VEHICLE_FIX);
}
else
{
g_player_service->iterate([](const player_entry& entry) {
if (entry.second->fix_vehicle)
g_pointers->m_gta.m_give_pickup_rewards(-1, REWARD_VEHICLE_FIX);
});
}
}
}