diff --git a/src/gtasa/effects/custom/ped/GiveNPCsAWeaponEffect.cpp b/src/gtasa/effects/custom/ped/GiveNPCsAWeaponEffect.cpp new file mode 100644 index 00000000..a09d458d --- /dev/null +++ b/src/gtasa/effects/custom/ped/GiveNPCsAWeaponEffect.cpp @@ -0,0 +1,52 @@ +#include "effects/OneTimeEffect.h" + +#include + +#include +#include +#include + +using namespace plugin; + +using weapon_list = std::initializer_list; + +class GiveNPCsAWeaponEffect : public OneTimeEffect +{ +private: + std::vector weapons; + +public: + GiveNPCsAWeaponEffect (weapon_list weaponsList) : weapons (weaponsList) {} + + void + OnStart (EffectInstance *inst) override + { + CPlayerPed *player = FindPlayerPed (); + + for (auto w : weapons) + { + int m = CPickups::ModelForWeapon (eWeaponType (w)); + CStreaming::RequestModel (m, 2); + CStreaming::SetModelIsDeletable (m); + } + + CStreaming::LoadAllRequestedModels (false); + + for (CPed *ped : CPools::ms_pPedPool) + { + if (ped == player) continue; + + auto w = weapons[inst->Random (1, 100000) % weapons.size ()]; + Command (ped, w, + 9999); + Command (ped, w); + } + } +}; + +DEFINE_EFFECT (GiveNPCsAWeaponEffect, "effect_give_npcs_an_rpg", GROUP_WEAPONS, + weapon_list{WEAPON_RLAUNCHER}); + +DEFINE_EFFECT (GiveNPCsAWeaponEffect, "effect_give_npcs_a_sprcan_fire_ex", + GROUP_WEAPONS, + weapon_list{WEAPON_SPRAYCAN, WEAPON_EXTINGUISHER}); \ No newline at end of file diff --git a/src/gtasa/effects/custom/ped/GiveNPCsAnRPGEffect.cpp b/src/gtasa/effects/custom/ped/GiveNPCsAnRPGEffect.cpp deleted file mode 100644 index c5f2e349..00000000 --- a/src/gtasa/effects/custom/ped/GiveNPCsAnRPGEffect.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "effects/OneTimeEffect.h" - -#include -#include - -using namespace plugin; - -class GiveNPCsAnRPGEffect : public OneTimeEffect -{ -public: - void - OnStart (EffectInstance *inst) override - { - CPlayerPed *player = FindPlayerPed (); - - CStreaming::RequestModel (MODEL_ROCKETLA, 2); // Rocket Launcher - CStreaming::LoadAllRequestedModels (false); - - for (CPed *ped : CPools::ms_pPedPool) - { - if (ped == player) continue; - - Command ( - ped, WEAPON_RLAUNCHER, 9999); - Command ( - ped, WEAPON_RLAUNCHER); - } - - CStreaming::SetModelIsDeletable (MODEL_ROCKETLA); - } -}; - -DEFINE_EFFECT (GiveNPCsAnRPGEffect, "effect_give_npcs_an_rpg", 0); \ No newline at end of file