More fixes, textmode.club
This commit is contained in:
parent
737adc5e9c
commit
1d8cef9520
@ -64,7 +64,7 @@
|
|||||||
<AutoVariable width="fill" target="navbot.engi-mode" label="Enable Engie Mode"/>
|
<AutoVariable width="fill" target="navbot.engi-mode" label="Enable Engie Mode"/>
|
||||||
<AutoVariable width="fill" target="navbot.primary-only" label="Best Weapon only"/>
|
<AutoVariable width="fill" target="navbot.primary-only" label="Best Weapon only"/>
|
||||||
</List>
|
</List>
|
||||||
<Box name="Nav FollowBot" width="content" height="content" padding="12 6 6 6" y="90">
|
<Box name="Nav FollowBot" width="content" height="content" padding="12 6 6 6" y="100">
|
||||||
<List width="170">
|
<List width="170">
|
||||||
<AutoVariable width="fill" target="navbot.medbot" label="Enable Nav Followbot"/>
|
<AutoVariable width="fill" target="navbot.medbot" label="Enable Nav Followbot"/>
|
||||||
<AutoVariable width="fill" target="navbot.roaming" label="Roaming"/>
|
<AutoVariable width="fill" target="navbot.roaming" label="Roaming"/>
|
||||||
|
@ -14,5 +14,6 @@ void startQueue();
|
|||||||
void leaveQueue();
|
void leaveQueue();
|
||||||
void disconnectAndAbandon();
|
void disconnectAndAbandon();
|
||||||
void abandon();
|
void abandon();
|
||||||
|
bool isMMBanned();
|
||||||
int getQueue();
|
int getQueue();
|
||||||
} // namespace tfmm
|
} // namespace tfmm
|
||||||
|
@ -120,8 +120,7 @@ void NetVars::Init()
|
|||||||
"DT_TFSniperRifle", "SniperRifleLocalData", "m_flChargedDamage");
|
"DT_TFSniperRifle", "SniperRifleLocalData", "m_flChargedDamage");
|
||||||
this->iUpgradeLevel =
|
this->iUpgradeLevel =
|
||||||
gNetvars.get_offset("DT_BaseObject", "m_iUpgradeLevel");
|
gNetvars.get_offset("DT_BaseObject", "m_iUpgradeLevel");
|
||||||
this->m_hBuilder =
|
this->m_hBuilder = gNetvars.get_offset("DT_BaseObject", "m_hBuilder");
|
||||||
gNetvars.get_offset("DT_BaseObject", "m_hBuilder");
|
|
||||||
this->iPipeType =
|
this->iPipeType =
|
||||||
gNetvars.get_offset("DT_TFProjectile_Pipebomb", "m_iType");
|
gNetvars.get_offset("DT_TFProjectile_Pipebomb", "m_iType");
|
||||||
this->iBuildingHealth =
|
this->iBuildingHealth =
|
||||||
|
@ -97,7 +97,7 @@ void updateSearch()
|
|||||||
logging::Info("Starting queue");
|
logging::Info("Starting queue");
|
||||||
tfmm::startQueue();
|
tfmm::startQueue();
|
||||||
}
|
}
|
||||||
#if LAGBOT_MODE
|
#if not ENABLE_VISUALS
|
||||||
if (req_timer.test_and_set(1800000))
|
if (req_timer.test_and_set(1800000))
|
||||||
{
|
{
|
||||||
logging::Info("Stuck in queue, segfaulting");
|
logging::Info("Stuck in queue, segfaulting");
|
||||||
|
@ -125,10 +125,12 @@ CachedEntity *nearestAmmo()
|
|||||||
int last_tar = -1;
|
int last_tar = -1;
|
||||||
CachedEntity *NearestEnemy()
|
CachedEntity *NearestEnemy()
|
||||||
{
|
{
|
||||||
if (last_tar == -1 || nav::ReadyForCommands) {
|
if (last_tar == -1 || nav::ReadyForCommands)
|
||||||
|
{
|
||||||
float bestscr = FLT_MAX;
|
float bestscr = FLT_MAX;
|
||||||
CachedEntity *bestent = nullptr;
|
CachedEntity *bestent = nullptr;
|
||||||
for (int i = 0; i < g_IEngine->GetMaxClients(); i++) {
|
for (int i = 0; i < g_IEngine->GetMaxClients(); i++)
|
||||||
|
{
|
||||||
CachedEntity *ent = ENTITY(i);
|
CachedEntity *ent = ENTITY(i);
|
||||||
if (CE_BAD(ent) || ent->m_Type() != ENTITY_PLAYER)
|
if (CE_BAD(ent) || ent->m_Type() != ENTITY_PLAYER)
|
||||||
continue;
|
continue;
|
||||||
@ -140,7 +142,8 @@ CachedEntity *NearestEnemy()
|
|||||||
scr *= 5.0f;
|
scr *= 5.0f;
|
||||||
if (g_pPlayerResource->GetClass(ent) == tf_pyro)
|
if (g_pPlayerResource->GetClass(ent) == tf_pyro)
|
||||||
scr *= 7.0f;
|
scr *= 7.0f;
|
||||||
if (scr < bestscr) {
|
if (scr < bestscr)
|
||||||
|
{
|
||||||
bestscr = scr;
|
bestscr = scr;
|
||||||
bestent = ent;
|
bestent = ent;
|
||||||
}
|
}
|
||||||
@ -178,7 +181,9 @@ void Init()
|
|||||||
hide.IsExposed())
|
hide.IsExposed())
|
||||||
sniper_spots.push_back(hide.m_pos);
|
sniper_spots.push_back(hide.m_pos);
|
||||||
}
|
}
|
||||||
logging::Info("Sniper spots: %d, Manual Sniper Spots: %d, Sentry Spots: %d", sniper_spots.size(), preferred_sniper_spots.size(), nest_spots.size());
|
logging::Info("Sniper spots: %d, Manual Sniper Spots: %d, Sentry Spots: %d",
|
||||||
|
sniper_spots.size(), preferred_sniper_spots.size(),
|
||||||
|
nest_spots.size());
|
||||||
}
|
}
|
||||||
void initonce()
|
void initonce()
|
||||||
{
|
{
|
||||||
@ -220,7 +225,7 @@ enum BuildingNum
|
|||||||
TELEPORT_EXT,
|
TELEPORT_EXT,
|
||||||
};
|
};
|
||||||
std::vector<int> GetBuildings()
|
std::vector<int> GetBuildings()
|
||||||
{
|
{
|
||||||
float bestscr = FLT_MAX;
|
float bestscr = FLT_MAX;
|
||||||
std::vector<int> buildings;
|
std::vector<int> buildings;
|
||||||
for (int i = 0; i < HIGHEST_ENTITY; i++)
|
for (int i = 0; i < HIGHEST_ENTITY; i++)
|
||||||
@ -230,7 +235,8 @@ std::vector<int> GetBuildings()
|
|||||||
continue;
|
continue;
|
||||||
if (ent->m_Type() != ENTITY_BUILDING)
|
if (ent->m_Type() != ENTITY_BUILDING)
|
||||||
continue;
|
continue;
|
||||||
if ((CE_INT(ent, netvar.m_hBuilder) & 0xFFF) != g_pLocalPlayer->entity_idx)
|
if ((CE_INT(ent, netvar.m_hBuilder) & 0xFFF) !=
|
||||||
|
g_pLocalPlayer->entity_idx)
|
||||||
continue;
|
continue;
|
||||||
if (ent->m_vecOrigin().DistTo(LOCAL_E->m_vecOrigin()) < bestscr)
|
if (ent->m_vecOrigin().DistTo(LOCAL_E->m_vecOrigin()) < bestscr)
|
||||||
{
|
{
|
||||||
@ -240,7 +246,7 @@ std::vector<int> GetBuildings()
|
|||||||
}
|
}
|
||||||
return buildings;
|
return buildings;
|
||||||
}
|
}
|
||||||
int cost[4] = {100, 50, 130, 50};
|
int cost[4] = { 100, 50, 130, 50 };
|
||||||
int GetBestBuilding(int metal)
|
int GetBestBuilding(int metal)
|
||||||
{
|
{
|
||||||
bool hasSentry, hasDispenser;
|
bool hasSentry, hasDispenser;
|
||||||
@ -272,7 +278,8 @@ int GetClosestBuilding()
|
|||||||
continue;
|
continue;
|
||||||
if (ent->m_Type() != ENTITY_BUILDING)
|
if (ent->m_Type() != ENTITY_BUILDING)
|
||||||
continue;
|
continue;
|
||||||
if ((CE_INT(ent, netvar.m_hBuilder) & 0xFFF) != g_pLocalPlayer->entity_idx)
|
if ((CE_INT(ent, netvar.m_hBuilder) & 0xFFF) !=
|
||||||
|
g_pLocalPlayer->entity_idx)
|
||||||
continue;
|
continue;
|
||||||
if (ent->m_vecOrigin().DistTo(LOCAL_E->m_vecOrigin()) < bestscr)
|
if (ent->m_vecOrigin().DistTo(LOCAL_E->m_vecOrigin()) < bestscr)
|
||||||
{
|
{
|
||||||
@ -303,13 +310,15 @@ void CreateMove()
|
|||||||
if (CE_GOOD(ammo))
|
if (CE_GOOD(ammo))
|
||||||
nav::NavTo(ammo->m_vecOrigin(), true, true, 6);
|
nav::NavTo(ammo->m_vecOrigin(), true, true, 6);
|
||||||
}
|
}
|
||||||
if ((!HasLowHealth() && nav::priority == 7) || (!HasLowAmmo() && nav::priority == 6))
|
if ((!HasLowHealth() && nav::priority == 7) ||
|
||||||
|
(!HasLowAmmo() && nav::priority == 6))
|
||||||
nav::clearInstructions();
|
nav::clearInstructions();
|
||||||
if (enable)
|
if (enable)
|
||||||
{
|
{
|
||||||
if (!nav::ReadyForCommands && !spy_mode && !heavy_mode && !engi_mode)
|
if (!nav::ReadyForCommands && !spy_mode && !heavy_mode && !engi_mode)
|
||||||
cd3.update();
|
cd3.update();
|
||||||
bool isready = (spy_mode || heavy_mode || engi_mode) ? 1 : nav::ReadyForCommands;
|
bool isready =
|
||||||
|
(spy_mode || heavy_mode || engi_mode) ? 1 : nav::ReadyForCommands;
|
||||||
int waittime = (spy_mode || heavy_mode || engi_mode) ? 100 : 5000;
|
int waittime = (spy_mode || heavy_mode || engi_mode) ? 100 : 5000;
|
||||||
if (isready && cd3.test_and_set(waittime))
|
if (isready && cd3.test_and_set(waittime))
|
||||||
{
|
{
|
||||||
@ -321,7 +330,9 @@ void CreateMove()
|
|||||||
Init();
|
Init();
|
||||||
if (!sniper_spots.size() && !preferred_sniper_spots.size())
|
if (!sniper_spots.size() && !preferred_sniper_spots.size())
|
||||||
return;
|
return;
|
||||||
auto snip_spot = preferred_sniper_spots.size() ? preferred_sniper_spots : sniper_spots;
|
auto snip_spot = preferred_sniper_spots.size()
|
||||||
|
? preferred_sniper_spots
|
||||||
|
: sniper_spots;
|
||||||
int rng = rand() % snip_spot.size();
|
int rng = rand() % snip_spot.size();
|
||||||
random_spot = snip_spot.at(rng);
|
random_spot = snip_spot.at(rng);
|
||||||
if (random_spot.z)
|
if (random_spot.z)
|
||||||
@ -338,7 +349,9 @@ void CreateMove()
|
|||||||
Init();
|
Init();
|
||||||
if (!sniper_spots.size() && !preferred_sniper_spots.size())
|
if (!sniper_spots.size() && !preferred_sniper_spots.size())
|
||||||
return;
|
return;
|
||||||
auto snip_spot = preferred_sniper_spots.size() ? preferred_sniper_spots : sniper_spots;
|
auto snip_spot = preferred_sniper_spots.size()
|
||||||
|
? preferred_sniper_spots
|
||||||
|
: sniper_spots;
|
||||||
int rng = rand() % snip_spot.size();
|
int rng = rand() % snip_spot.size();
|
||||||
random_spot = snip_spot.at(rng);
|
random_spot = snip_spot.at(rng);
|
||||||
if (random_spot.z)
|
if (random_spot.z)
|
||||||
@ -347,11 +360,13 @@ void CreateMove()
|
|||||||
}
|
}
|
||||||
if (CE_GOOD(tar))
|
if (CE_GOOD(tar))
|
||||||
{
|
{
|
||||||
if (!spy_mode || !hacks::shared::backtrack::isBacktrackEnabled)
|
if (!spy_mode ||
|
||||||
|
!hacks::shared::backtrack::isBacktrackEnabled)
|
||||||
nav::NavTo(tar->m_vecOrigin(), false);
|
nav::NavTo(tar->m_vecOrigin(), false);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (auto i : hacks::shared::backtrack::headPositions[tar->m_IDX])
|
for (auto i : hacks::shared::backtrack::headPositions
|
||||||
|
[tar->m_IDX])
|
||||||
{
|
{
|
||||||
if (!hacks::shared::backtrack::ValidTick(i, tar))
|
if (!hacks::shared::backtrack::ValidTick(i, tar))
|
||||||
continue;
|
continue;
|
||||||
@ -397,7 +412,8 @@ void CreateMove()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// If Near The best spot and ready for commands
|
// If Near The best spot and ready for commands
|
||||||
if (best_spot.DistTo(LOCAL_E->m_vecOrigin()) < 300.0f && (nav::ReadyForCommands || nav::priority == 1))
|
if (best_spot.DistTo(LOCAL_E->m_vecOrigin()) < 300.0f &&
|
||||||
|
(nav::ReadyForCommands || nav::priority == 1))
|
||||||
{
|
{
|
||||||
// Get the closest Building
|
// Get the closest Building
|
||||||
int ClosestBuilding = GetClosestBuilding();
|
int ClosestBuilding = GetClosestBuilding();
|
||||||
@ -405,23 +421,46 @@ void CreateMove()
|
|||||||
if (ClosestBuilding != -1)
|
if (ClosestBuilding != -1)
|
||||||
{
|
{
|
||||||
CachedEntity *ent = ENTITY(ClosestBuilding);
|
CachedEntity *ent = ENTITY(ClosestBuilding);
|
||||||
// If we have more than 25 metal and the building is damaged or not fully upgraded hit it with the wrench
|
// If we have more than 25 metal and the building is
|
||||||
if (metal > 25 && (CE_INT(ent, netvar.iUpgradeLevel) < 3 || CE_INT(ent, netvar.iBuildingHealth) < CE_INT(ent, netvar.iBuildingMaxHealth)))
|
// damaged or not fully upgraded hit it with the wrench
|
||||||
|
if (metal > 25 &&
|
||||||
|
(CE_INT(ent, netvar.iUpgradeLevel) < 3 ||
|
||||||
|
CE_INT(ent, netvar.iBuildingHealth) <
|
||||||
|
CE_INT(ent, netvar.iBuildingMaxHealth)))
|
||||||
{
|
{
|
||||||
auto collide = RAW_ENT(ent)->GetCollideable();
|
auto collide = RAW_ENT(ent)->GetCollideable();
|
||||||
Vector min = ent->m_vecOrigin() + collide->OBBMins();
|
Vector min =
|
||||||
Vector max = ent->m_vecOrigin() + collide->OBBMaxs();
|
ent->m_vecOrigin() + collide->OBBMins();
|
||||||
|
Vector max =
|
||||||
|
ent->m_vecOrigin() + collide->OBBMaxs();
|
||||||
// Distance check
|
// Distance check
|
||||||
if (min.DistTo(g_pLocalPlayer->v_Eye) > re::C_TFWeaponBaseMelee::GetSwingRange(RAW_ENT(LOCAL_W)) && max.DistTo(g_pLocalPlayer->v_Eye) > re::C_TFWeaponBaseMelee::GetSwingRange(RAW_ENT(LOCAL_W)) && GetBuildingPosition(ent).DistTo(g_pLocalPlayer->v_Eye) > re::C_TFWeaponBaseMelee::GetSwingRange(RAW_ENT(LOCAL_W)))
|
if (min.DistTo(g_pLocalPlayer->v_Eye) >
|
||||||
|
re::C_TFWeaponBaseMelee::GetSwingRange(
|
||||||
|
RAW_ENT(LOCAL_W)) &&
|
||||||
|
max.DistTo(g_pLocalPlayer->v_Eye) >
|
||||||
|
re::C_TFWeaponBaseMelee::GetSwingRange(
|
||||||
|
RAW_ENT(LOCAL_W)) &&
|
||||||
|
GetBuildingPosition(ent).DistTo(
|
||||||
|
g_pLocalPlayer->v_Eye) >
|
||||||
|
re::C_TFWeaponBaseMelee::GetSwingRange(
|
||||||
|
RAW_ENT(LOCAL_W)))
|
||||||
{
|
{
|
||||||
float minf = min.DistTo(g_pLocalPlayer->v_Eye);
|
float minf = min.DistTo(g_pLocalPlayer->v_Eye);
|
||||||
float maxf = max.DistTo(g_pLocalPlayer->v_Eye);
|
float maxf = max.DistTo(g_pLocalPlayer->v_Eye);
|
||||||
float center = GetBuildingPosition(ent).DistTo(g_pLocalPlayer->v_Eye);
|
float center = GetBuildingPosition(ent).DistTo(
|
||||||
float closest = fminf(minf, fminf(maxf, center));
|
g_pLocalPlayer->v_Eye);
|
||||||
Vector tonav = (minf == closest) ? min : (maxf == closest) ? max : GetBuildingPosition(ent);
|
float closest =
|
||||||
|
fminf(minf, fminf(maxf, center));
|
||||||
|
Vector tonav =
|
||||||
|
(minf == closest)
|
||||||
|
? min
|
||||||
|
: (maxf == closest)
|
||||||
|
? max
|
||||||
|
: GetBuildingPosition(ent);
|
||||||
nav::NavTo(tonav, false, false);
|
nav::NavTo(tonav, false, false);
|
||||||
}
|
}
|
||||||
Vector tr = GetBuildingPosition(ent) - g_pLocalPlayer->v_Eye;
|
Vector tr = GetBuildingPosition(ent) -
|
||||||
|
g_pLocalPlayer->v_Eye;
|
||||||
Vector angles;
|
Vector angles;
|
||||||
VectorAngles(tr, angles);
|
VectorAngles(tr, angles);
|
||||||
// Clamping is important
|
// Clamping is important
|
||||||
@ -449,9 +488,12 @@ void CreateMove()
|
|||||||
Vector random_spot;
|
Vector random_spot;
|
||||||
if (cd2.test_and_set(5000))
|
if (cd2.test_and_set(5000))
|
||||||
Init();
|
Init();
|
||||||
if (!sniper_spots.size() && !preferred_sniper_spots.size())
|
if (!sniper_spots.size() &&
|
||||||
|
!preferred_sniper_spots.size())
|
||||||
return;
|
return;
|
||||||
auto snip_spot = preferred_sniper_spots.size() ? preferred_sniper_spots : sniper_spots;
|
auto snip_spot = preferred_sniper_spots.size()
|
||||||
|
? preferred_sniper_spots
|
||||||
|
: sniper_spots;
|
||||||
int rng = rand() % snip_spot.size();
|
int rng = rand() % snip_spot.size();
|
||||||
random_spot = snip_spot.at(rng);
|
random_spot = snip_spot.at(rng);
|
||||||
if (random_spot.z)
|
if (random_spot.z)
|
||||||
@ -467,7 +509,8 @@ void CreateMove()
|
|||||||
// Build buildings in a 360° angle around player
|
// Build buildings in a 360° angle around player
|
||||||
current_user_cmd->viewangles.y = 90.0f * (tobuild + 1);
|
current_user_cmd->viewangles.y = 90.0f * (tobuild + 1);
|
||||||
// Build new one
|
// Build new one
|
||||||
g_IEngine->ServerCmd(format("build ", tobuild).c_str(), true);
|
g_IEngine->ServerCmd(format("build ", tobuild).c_str(),
|
||||||
|
true);
|
||||||
current_user_cmd->buttons |= IN_ATTACK;
|
current_user_cmd->buttons |= IN_ATTACK;
|
||||||
g_pLocalPlayer->bUseSilentAngles = true;
|
g_pLocalPlayer->bUseSilentAngles = true;
|
||||||
}
|
}
|
||||||
|
@ -21,11 +21,11 @@ DEFINE_HOOKED_METHOD(Shutdown, void, INetChannel *this_, const char *reason)
|
|||||||
// This is a INetChannel hook - it SHOULDN'T be static because netchannel
|
// This is a INetChannel hook - it SHOULDN'T be static because netchannel
|
||||||
// changes.
|
// changes.
|
||||||
logging::Info("Disconnect: %s", reason);
|
logging::Info("Disconnect: %s", reason);
|
||||||
if (strstr(reason, "banned"))
|
if (strstr(reason, "banned") || strstr(reason, "Generic_Kicked"))
|
||||||
{
|
{
|
||||||
if (die_if_vac)
|
if (die_if_vac)
|
||||||
{
|
{
|
||||||
logging::Info("VAC banned");
|
logging::Info("VAC/Matchmaking banned");
|
||||||
*(int *) 0 = 0;
|
*(int *) 0 = 0;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ and no [])", [](const CCommand &args) {
|
|||||||
bool replaced = false;
|
bool replaced = false;
|
||||||
namespace hooked_methods
|
namespace hooked_methods
|
||||||
{
|
{
|
||||||
|
Timer checkmmban{};
|
||||||
DEFINE_HOOKED_METHOD(PaintTraverse, void, vgui::IPanel *this_,
|
DEFINE_HOOKED_METHOD(PaintTraverse, void, vgui::IPanel *this_,
|
||||||
unsigned int panel, bool force, bool allow_force)
|
unsigned int panel, bool force, bool allow_force)
|
||||||
{
|
{
|
||||||
@ -96,21 +96,28 @@ DEFINE_HOOKED_METHOD(PaintTraverse, void, vgui::IPanel *this_,
|
|||||||
if (switcherido && spamdur && !joinspam.check(spamdur * 1000))
|
if (switcherido && spamdur && !joinspam.check(spamdur * 1000))
|
||||||
{
|
{
|
||||||
auto gc = re::CTFGCClientSystem::GTFGCClientSystem();
|
auto gc = re::CTFGCClientSystem::GTFGCClientSystem();
|
||||||
if (!gc)
|
if (gc)
|
||||||
goto label1;
|
|
||||||
gc->JoinMMMatch();
|
gc->JoinMMMatch();
|
||||||
}
|
}
|
||||||
else if (!joinspam.check(spamdur * 1000) && spamdur)
|
else if (!joinspam.check(spamdur * 1000) && spamdur)
|
||||||
{
|
{
|
||||||
INetChannel *ch = (INetChannel *) g_IEngine->GetNetChannelInfo();
|
INetChannel *ch = (INetChannel *) g_IEngine->GetNetChannelInfo();
|
||||||
if (!ch)
|
if (ch)
|
||||||
goto label1;
|
|
||||||
ch->Shutdown("");
|
ch->Shutdown("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
label1:
|
|
||||||
scndwait++;
|
scndwait++;
|
||||||
switcherido = !switcherido;
|
switcherido = !switcherido;
|
||||||
|
#if not ENABLE_VISUALS
|
||||||
|
if (checkmmban.test_and_set(1000))
|
||||||
|
{
|
||||||
|
if (tfmm::isMMBanned())
|
||||||
|
{
|
||||||
|
*(int *) nullptr = 0;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
/*static bool replacedparty = false;
|
/*static bool replacedparty = false;
|
||||||
static int callcnt = 0;
|
static int callcnt = 0;
|
||||||
if (party_bypass && !replacedparty && callcnt < 5)
|
if (party_bypass && !replacedparty && callcnt < 5)
|
||||||
|
@ -211,7 +211,7 @@ int findClosestNavSquare(Vector vec)
|
|||||||
// Make sure we're not stuck on the same area for too long
|
// Make sure we're not stuck on the same area for too long
|
||||||
if (std::count(findClosestNavSquare_localAreas.begin(),
|
if (std::count(findClosestNavSquare_localAreas.begin(),
|
||||||
findClosestNavSquare_localAreas.end(), i) < 3)
|
findClosestNavSquare_localAreas.end(), i) < 3)
|
||||||
overlapping.emplace_back( i, &areas.at(i) );
|
overlapping.emplace_back(i, &areas.at(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -490,15 +490,17 @@ CatCommand navpath("nav_path", "Debug nav path", [](const CCommand &args) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
CatCommand navpathnolocal("nav_path_nolocal", "Debug nav path", [](const CCommand &args) {
|
CatCommand navpathnolocal("nav_path_nolocal", "Debug nav path",
|
||||||
|
[](const CCommand &args) {
|
||||||
if (NavTo(loc, false, true, 50 + priority))
|
if (NavTo(loc, false, true, 50 + priority))
|
||||||
{
|
{
|
||||||
logging::Info("Pathing: Success! Walking to path...");
|
logging::Info(
|
||||||
|
"Pathing: Success! Walking to path...");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
logging::Info("Pathing: Failed!");
|
logging::Info("Pathing: Failed!");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
} // namespace nav
|
} // namespace nav
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
|
|
||||||
#undef null
|
#undef null
|
||||||
|
|
||||||
|
|
||||||
#include <co/OnlineService.hpp>
|
#include <co/OnlineService.hpp>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <init.hpp>
|
#include <init.hpp>
|
||||||
|
4
src/textmode.cpp
Executable file → Normal file
4
src/textmode.cpp
Executable file → Normal file
@ -21,8 +21,8 @@ void EXPOSED_Epic_VACBypass_1337_DoNotSteal_xXx_$1_xXx_MLG()
|
|||||||
static unsigned char patch[] = { 0x55, 0x89, 0xE5, 0x83, 0xEC, 0x18, 0xB8,
|
static unsigned char patch[] = { 0x55, 0x89, 0xE5, 0x83, 0xEC, 0x18, 0xB8,
|
||||||
0x01, 0x00, 0x00, 0x00, 0xC9, 0xC3 };
|
0x01, 0x00, 0x00, 0x00, 0xC9, 0xC3 };
|
||||||
uintptr_t Host_IsSecureServerAllowed_addr = gSignatures.GetEngineSignature(
|
uintptr_t Host_IsSecureServerAllowed_addr = gSignatures.GetEngineSignature(
|
||||||
"55 89 E5 83 EC 18 E8 ? ? ? ? 8B 10 C7 44 24 04 ? ? ? ? 89 04 24 FF 52 "
|
"55 89 E5 83 EC ? E8 ? ? ? ? 8B 10 C7 44 24 ? ? ? ? ? 89 04 24 FF 52 ? "
|
||||||
"2C 85 C0 74 11");
|
"85 C0 74 ? C6 05");
|
||||||
// +0x21 = allowSecureServers
|
// +0x21 = allowSecureServers
|
||||||
// logging::Info("1337 VAC bypass: 0x%08x",
|
// logging::Info("1337 VAC bypass: 0x%08x",
|
||||||
// Host_IsSecureServerAllowed_addr);
|
// Host_IsSecureServerAllowed_addr);
|
||||||
|
13
src/tfmm.cpp
13
src/tfmm.cpp
@ -32,7 +32,17 @@ CatCommand get_state("mm_state", "Get party state", []() {
|
|||||||
|
|
||||||
namespace tfmm
|
namespace tfmm
|
||||||
{
|
{
|
||||||
|
int queuecount = 0;
|
||||||
|
bool isMMBanned()
|
||||||
|
{
|
||||||
|
auto client = re::CTFPartyClient::GTFPartyClient();
|
||||||
|
if (!client || (client->BInQueueForMatchGroup(7) && queuecount < 10))
|
||||||
|
{
|
||||||
|
queuecount = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
int getQueue()
|
int getQueue()
|
||||||
{
|
{
|
||||||
return *queue;
|
return *queue;
|
||||||
@ -47,6 +57,7 @@ void startQueue()
|
|||||||
client->LoadSavedCasualCriteria();
|
client->LoadSavedCasualCriteria();
|
||||||
client->RequestQueueForMatch((int) queue);
|
client->RequestQueueForMatch((int) queue);
|
||||||
hacks::shared::autojoin::resetQueueTimer();
|
hacks::shared::autojoin::resetQueueTimer();
|
||||||
|
queuecount++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
logging::Info("queue_start: CTFPartyClient == null!");
|
logging::Info("queue_start: CTFPartyClient == null!");
|
||||||
|
Reference in New Issue
Block a user