Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Triggerbot - problem


Rekomendowane odpowiedzi

Opublikowano

Witam, mam problem z triggerbotem do gry CS:GO. Ostatnio zacząłem uczyć się C++ i tworzyć swojego cheata na podstawie innych source codów. Początkowo triggerbot w ogóle nie działał, ale z tym sobie poradziłem. Problem polega na tym, że co jakiś czas czy próbuję zabić kogoś na triggerbocie trzymając dany klawisz od niego dostaje od razu crash gry. Nie mam pojęcia czym może to być spowodowane. Kod:

void CLegitBot::DoTrigger(CUserCmd *pCmd)
{
	IClientEntity* pLocal = hackManager.pLocal();

	CBaseCombatWeapon* pWeapon = (CBaseCombatWeapon*)Interfaces::EntList->GetClientEntityFromHandle(pLocal->GetActiveWeaponHandle());
	if (pWeapon)
	{
		if (pWeapon->GetAmmoInClip() == 0 || !GameUtils::IsBallisticWeapon(pWeapon))
		{
			return;
		}
	}
	else
		return;

	Vector ViewAngles = pCmd->viewangles;
	if (Menu::Window.LegitBotTab.TriggerRecoil.GetState())
		ViewAngles += pLocal->localPlayerExclusive()->GetAimPunchAngle() * 2.f;

	Vector src, dst, forward;
	trace_t tr;
	Ray_t ray;
	CTraceFilter filter;

	AngleVectors(ViewAngles, &forward);
	forward *= 8192;

	filter.pSkip = pLocal;
	src = pLocal->GetOrigin() + pLocal->GetViewOffset();
	dst = src + forward;

	ray.Init(src, dst);

	Interfaces::Trace->TraceRay(ray, 0x46004003, &filter, &tr);

	if (!tr.m_pEnt)
		return;

	int hitgroup = tr.hitgroup;
	bool didHit = false;

	if (Menu::Window.LegitBotTab.TriggerHead.GetState() && hitgroup == HITGROUP_HEAD)
		didHit = true;
	if (Menu::Window.LegitBotTab.TriggerChest.GetState() && hitgroup == HITGROUP_CHEST)
		didHit = true;
	if (Menu::Window.LegitBotTab.TriggerStomach.GetState() && hitgroup == HITGROUP_STOMACH)
		didHit = true;
	if (Menu::Window.LegitBotTab.TriggerArms.GetState() && (hitgroup == HITGROUP_LEFTARM || hitgroup == HITGROUP_RIGHTARM))
		didHit = true;
	if (Menu::Window.LegitBotTab.TriggerLegs.GetState() && (hitgroup == HITGROUP_LEFTLEG || hitgroup == HITGROUP_RIGHTLEG))
		didHit = true;

	float hitchance = 75.f + (Menu::Window.LegitBotTab.TriggerHitChanceAmmount.GetValue() / 4);
	if (didHit && (!Menu::Window.LegitBotTab.TriggerHitChance.GetState() || (1.0f - pWeapon->GetAccuracyPenalty()) * 100.f >= hitchance))
	{
		if (TargetMeetsTriggerRequirements(tr.m_pEnt))
		{
			if (Menu::Window.LegitBotTab.TriggerDelay.GetValue() > 1)
			{
				if (CustomDelay >= Menu::Window.LegitBotTab.TriggerDelay.GetValue() / 30)
				{
					CustomDelay = 0;
					shoot = true;
					if (*pWeapon->m_AttributeManager()->m_Item()->ItemDefinitionIndex() != 64)
						pCmd->buttons |= IN_ATTACK;
					else
						pCmd->buttons |= IN_ATTACK2;
				}
				else
				{
					CustomDelay++;
					return;
				}
			}
			else
			{
				CustomDelay = 0;
				shoot = true;
				if (*pWeapon->m_AttributeManager()->m_Item()->ItemDefinitionIndex() != 64)
					pCmd->buttons |= IN_ATTACK;
				else
					pCmd->buttons |= IN_ATTACK2;
			}
		}
	}
	else
	{
		if (Menu::Window.LegitBotTab.TriggerBreak.GetValue() > 1)
		{
			if (CustomBreak <= Menu::Window.LegitBotTab.TriggerBreak.GetValue())
				CustomBreak = 0;
			shoot = false;
		}
	}
}

Na innym forum powiedzieli mi, że problemem może być TraceLine. Wygląda to następująco:

bool GameUtils::IsVisible(IClientEntity* pLocal, IClientEntity* pEntity, int BoneID)
{
	if (BoneID < 0) return false;

	entCopy = pEntity;
	Vector start = pLocal->GetOrigin() + pLocal->GetViewOffset();
	Vector end = GetHitboxPosition(pEntity, BoneID);pEntity->GetBonePos(BoneID);
	char shit3[32];
	Vector src, dst, forward;
	trace_t tr;
	Ray_t ray;
	CTraceFilter filter;
	Interfaces::Trace->TraceRay(ray, MASK_SOLID, NULL, /*&filter*/ &Trace);
	UTIL_TraceLine(start, end, MASK_SOLID, pLocal, 0, &Trace);

	if (Trace.m_pEnt == entCopy)
	{
		return true;
	}

	if (Trace.fraction == 1.0f)
	{
		return true;
	}
	return false;

}

Oraz:

void UTIL_TraceLine(const Vector& vecAbsStart, const Vector& vecAbsEnd, unsigned int mask,
	const IClientEntity *ignore, int collisionGroup, trace_t *ptr)
{
	typedef int(__fastcall* UTIL_TraceLine_t)(const Vector&, const Vector&, unsigned int, const IClientEntity*, int, trace_t*);
	static UTIL_TraceLine_t TraceLine = (UTIL_TraceLine_t)Utilities::Memory::FindPattern("client.dll", (PBYTE)"\x55\x8B\xEC\x83\xE4\xF0\x83\xEC\x7C\x56\x52", "xxxxxxxxxxx");
	TraceLine(vecAbsStart, vecAbsEnd, mask, ignore, collisionGroup, ptr);
}
Opublikowano

Przyczyn może być mnóstwo ale najprawdopodobniej niedziałający pattern. Sprawdź czy w ogóle coś zwraca.

PS. Przestań bezmyślnie copypastować.

Gość 67d64b62d9
Opublikowano

Skoro nie działa to może użyj debugera xD?

Twój kod zatrzymuje się tu:

	if (!tr.m_pEnt)
		return;

Ostatnio zacząłem uczyć się C++ i tworzyć swojego cheata na podstawie innych source codów.

Nic nie zacząłeś ten snippet to jest 1:1 src gamerfood

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...