Autotaunt safety distance

fixes #711
This commit is contained in:
TotallyNotElite 2019-03-22 10:24:40 +01:00
parent ff8f8ba60a
commit 3ba855fb34
2 changed files with 17 additions and 3 deletions

View File

@ -7,6 +7,7 @@
<AutoVariable width="fill" target="hack.requeue-on-kick" label="Requeue on kick"/> <AutoVariable width="fill" target="hack.requeue-on-kick" label="Requeue on kick"/>
<AutoVariable width="fill" target="autotaunt.enable" label="Autotaunt enabled"/> <AutoVariable width="fill" target="autotaunt.enable" label="Autotaunt enabled"/>
<AutoVariable width="fill" target="autotaunt.chance" label="Autotaunt chance" min="0" max="100"/> <AutoVariable width="fill" target="autotaunt.chance" label="Autotaunt chance" min="0" max="100"/>
<AutoVariable width="fill" target="autotaunt.safety-distance" label="Autotaunt safety distance"/>
<LabeledObject width="fill" label="Autojoin Class"> <LabeledObject width="fill" label="Autojoin Class">
<Select target="autojoin.class"> <Select target="autojoin.class">
<Option name="None" value="0"/> <Option name="None" value="0"/>

View File

@ -11,6 +11,7 @@
static settings::Bool enable{ "autotaunt.enable", "false" }; static settings::Bool enable{ "autotaunt.enable", "false" };
static settings::Float chance{ "autotaunt.chance", "8" }; static settings::Float chance{ "autotaunt.chance", "8" };
static settings::Float safety{ "autotaunt.safety-distance", "0" };
namespace hacks::tf::autotaunt namespace hacks::tf::autotaunt
{ {
@ -26,7 +27,17 @@ public:
} }
if (g_IEngine->GetPlayerForUserID(event->GetInt("attacker")) == g_IEngine->GetLocalPlayer()) if (g_IEngine->GetPlayerForUserID(event->GetInt("attacker")) == g_IEngine->GetLocalPlayer())
{ {
if (RandomFloat(0, 100) <= float(chance)) bool nearby = false;
for (int i = 1; i < g_IEngine->GetMaxClients(); i++)
{
auto ent = ENTITY(i);
if (CE_GOOD(ent) && ent->m_flDistance() < *safety)
{
nearby = true;
break;
}
}
if (!nearby && RandomFloat(0, 100) <= float(chance))
{ {
hack::ExecuteCommand("taunt"); hack::ExecuteCommand("taunt");
} }
@ -36,6 +47,8 @@ public:
AutoTauntListener listener; AutoTauntListener listener;
// TODO remove event listener when uninjecting? InitRoutine init([]() {
InitRoutine init([]() { g_IEventManager2->AddListener(&listener, "player_death", false); }); g_IEventManager2->AddListener(&listener, "player_death", false);
EC::Register(EC::Shutdown, []() { g_IEventManager2->RemoveListener(&listener); }, "Shutdown_Autotaunt");
});
} // namespace hacks::tf::autotaunt } // namespace hacks::tf::autotaunt