So, I've got a paste and I'm trying to make the legit bot triggerbot fire more than once.
Specifically, fire some number n times after the initial trigger.
The value is in the menu and does transfer globally to this function.
Code:
void CLegitBot::TriggerBot(CUserCmd* cmd)
{
int savedValue = WeaponSettings->trigger_ammout;
auto Key = Vars.legit_trigger_key;
if (!WeaponSettings->trigger_enable)
return;
if (Key < 1)
{
Vars.trigger_keypressed = true;
}
else if (Key > 0 && GetAsyncKeyState(Key))
{
Vars.trigger_keypressed = true;
}
else if (Key > 0 && !GetAsyncKeyState(Key))
{
Vars.trigger_keypressed = false;
}
if (!Vars.trigger_keypressed)
return;
if (!Globals::LocalPlayer || !Globals::LocalPlayer->IsAlive())
return;
if (!Utils::HitChance(WeaponSettings->trigger_hitchance))
return;
if (Vars.legit_flashcheck && Globals::LocalPlayer->IsFlashed())
return;
//if ((Vars.trigger_jump && !(Globals::LocalPlayer->m_fFlags() & FL_ONGROUND)))
// return;
long currentTime_ms = getMils();
static long timeStamp = currentTime_ms;
long oldTimeStamp;
Vector traceStart, traceEnd;
trace_t tr;
QAngle viewAngles;
Interfaces::Engine->GetViewAngles(viewAngles);
QAngle viewAngles_rcs = viewAngles + Globals::LocalPlayer->m_aimPunchAngle() * 2.0f;
Math::AngleVectors(viewAngles_rcs, traceEnd);
traceStart = Globals::LocalPlayer->GetEyePos();
traceEnd = traceStart + (traceEnd * 8192.0f);
Utils::TraceLine(traceStart, traceEnd, 0x46004003, Globals::LocalPlayer, &tr);
oldTimeStamp = timeStamp;
timeStamp = currentTime_ms;
C_BasePlayer* Player = (C_BasePlayer*)tr.hit_entity;
if (!Player)
return;
if (Player->GetClientClass()->m_ClassID != CCSPlayer)
return;
if (Player == Globals::LocalPlayer || Player->IsDormant() || !Player->IsAlive() || Player->m_bGunGameImmunity())
return;
if (Player->IsTeammate() && Vars.legit_ignoreteam)
return;
if (!((WeaponSettings->trigger_Head && tr.hitgroup == HITGROUP_HEAD)
|| (WeaponSettings->trigger_Body && (tr.hitgroup == HITGROUP_CHEST
|| tr.hitgroup == HITGROUP_STOMACH)) || (WeaponSettings->trigger_Misc && (tr.hitgroup >= HITGROUP_LEFTARM && tr.hitgroup <= HITGROUP_RIGHTLEG))))
return;
if (Vars.legit_smokecheck && Utils::LineGoesThroughSmoke(Globals::LocalPlayer->GetEyePos(), tr.endpos))
return;
C_BaseCombatWeapon* activeWeapon = Globals::LocalPlayer->m_hActiveWeapon();
if (!activeWeapon || !activeWeapon->HasBullets())
return;
int itemDefinitionIndex = activeWeapon->m_iItemDefinitionIndex();
if (itemDefinitionIndex == WEAPON_KNIFE || itemDefinitionIndex >= WEAPON_KNIFE_BAYONET)
return;
int weaponType = activeWeapon->GetCSWeaponData()->iWeaponType;
if (weaponType == WEAPONTYPE_C4 || weaponType == WEAPONTYPE_GRENADE)
return;
if (activeWeapon->m_flNextPrimaryAttack() > Interfaces::GlobalVars->curtime)
{
if (activeWeapon->m_iItemDefinitionIndex() == WEAPON_REVOLVER)
{
cmd->buttons &= ~IN_ATTACK2;
}
else
{
int i = savedValue;
do {
cmd->buttons &= IN_ATTACK;
i--;
} while (i < 0);
}
}
else
{
if ((WeaponSettings->trigger_delay > 0) && currentTime_ms - oldTimeStamp < (WeaponSettings->trigger_delay * 10))
{
timeStamp = oldTimeStamp;
return;
}
if (activeWeapon->m_iItemDefinitionIndex() == WEAPON_REVOLVER)
{
cmd->buttons |= IN_ATTACK2;
}
else
{
int i = savedValue;
do {
cmd->buttons |= IN_ATTACK;
i--;
} while (i < 0);
}
}
timeStamp = currentTime_ms;
}
Using the do/while loop to go though a value i untill it reaches 0 is the soultion I came up with.
However, It doesn't seem to work. It compiles however, the triggerbot only fires once.
Any help would be apreciated THANKS!