Skocz do zawartości

GranadeTracer (Source)


# CSH External VIP Project

Masz dosyć problemów z czynnikiem zaufania w CS2 lub notorycznymi banami?

Sprawdź CSH External VIP Project.


Więcej informacji  

Rekomendowane odpowiedzi

Jeśli ktoś chce do swojej cebuli.dll to macie tu granadetracer.. Nie jestem w 100% pewny czy dobrze działa ale mam nadzieje, że tak ;)

 

 

void CEsp::DrawGrenadeTracers(C_BaseEntity* pEnt, C_BaseEntity* pLocalEntity)
{
    if (!m_pCvars->bEspGrenadeTracer)
        return;
 
    if (pEnt->GetClientClass()->m_ClassID == CCSPlayer)
        return;
 
    EHANDLE hOwner = pEnt->m_hOwnerEntity;
    C_BaseEntity* pOwner = (C_BaseEntity*)entitylist->GetClientEntityFromHandle(hOwner);
 
    if (pOwner != pLocalEntity)
        return;
 
    C_BaseCombatWeapon *pWeapon = pOwner->GetWeapon();
    if (pWeapon)
    {
        if (pWeapon->GetWeaponID() == /*grenade*/weapon_hegrenade || pWeapon->GetWeaponID() == /*grenade*/weapon_smokegrenade ||
            pWeapon->GetWeaponID() == /*grenade*/weapon_molotov || pWeapon->GetWeaponID() == /*grenade*/weapon_decoy ||
            pWeapon->GetWeaponID() == /*grenade*/weapon_incgrenade || pWeapon->GetWeaponID() == /*grenade*/weapon_flashbang)
        {
            nadeTracer->addTracer(pEnt, Color(255, 000, 000, 255), 500);
            nadeTracer->draw();    
        }
    }
}
 
 
void CEsp::DrawEntityESP()
{
    if (!m_pCvars->bEntityEnable)
        return;
 
    C_BaseEntity *pLocalEntity = (C_BaseEntity*)entitylist->GetClientEntity(engine->GetLocalPlayer());
    if (!pLocalEntity)
        return;
 
    //--------------------EntityLoop---------------------//
    for (int i = 1; i < entitylist->GetHighestEntityIndex(); i++)
    {
        C_BaseEntity* pEnt = (C_BaseEntity*)entitylist->GetClientEntity(i);
 
        if (!pEnt)
            continue;
 
        //Grenade Tracers
        DrawGrenadeTracers(pEnt, pLocalEntity);
    }
    nadeTracer->clear();
}

Edytowane przez maciekq12
Odnośnik do komentarza

znalazłem lepszy, bez antipasty:

void PredictNade(CBaseEntity* pLocal)
{
	const float TIMEALIVE = 5.f;
	const float GRENADE_COEFFICIENT_OF_RESTITUTION = 0.4f;

	float fStep = 0.1f;
	float fGravity = 800.0f / 8.f;

	Vector vPos, vThrow, vThrow2;
	Vector vStart;

	int iCollisions = 0;

	Vector vViewAngles;
	g_pEngine->GetViewAngles(vViewAngles);

	vThrow[0] = vViewAngles[0];
	vThrow[1] = vViewAngles[1];
	vThrow[2] = vViewAngles[2];

	if (vThrow[0] < 0)
		vThrow[0] = -10 + vThrow[0] * ((90 - 10) / 90.0);
	else
		vThrow[0] = -10 + vThrow[0] * ((90 + 10) / 90.0);

	float fVel = (90 - vThrow[0]) * 4;
	if (fVel > 500)
		fVel = 500;

	g_pMath.AngleVectors(vThrow, vThrow2);

	Vector vEye = pLocal->GetEyePosition();
	vStart[0] = vEye[0] + vThrow2[0] * 16;
	vStart[1] = vEye[1] + vThrow2[1] * 16;
	vStart[2] = vEye[2] + vThrow2[2] * 16;

	vThrow2[0] = (vThrow2[0] * fVel) + pLocal->GetAbsVelocity()[0];
	vThrow2[1] = (vThrow2[1] * fVel) + pLocal->GetAbsVelocity()[1];
	vThrow2[2] = (vThrow2[2] * fVel) + pLocal->GetAbsVelocity()[2];	// casualhacker for da magic calc help

	for (float fTime = 0.0f; fTime < TIMEALIVE; fTime += fStep)
	{
		vPos = vStart + vThrow2 * fStep;

		CTrace::Ray_t ray;
		CTrace::trace_t tr;
		CTrace::CTraceFilter loc;
		loc.pSkip = pLocal;

		ray.Init(vStart, vPos);
		g_pEngineTrace->TraceRay(ray, MASK_SOLID, &loc, &tr);

		if (tr.DidHit())
		{
			vThrow2 = tr.plane.normal * -2.0f * DotProduct(vThrow2, tr.plane.normal) + vThrow2;
			vThrow2 *= GRENADE_COEFFICIENT_OF_RESTITUTION;

			iCollisions++;
			if (iCollisions > 2)
				break;

			vPos = vStart + vThrow2 * tr.fraction * fStep;
			fTime += (fStep * (1 - tr.fraction));
		}

		Vector vOutStart, vOutEnd;

		if (g_pDebugOverlay->ScreenPosition(vStart, vOutStart) != 1, g_pDebugOverlay->ScreenPosition(vPos, vOutEnd) != 1)
			g_pDraw.LineRGBA(vOutStart.x, vOutStart.y, vOutEnd.x, vOutEnd.y, 255, 255, 255, 255);

		vStart = vPos;
		vThrow2.z -= fGravity * tr.fraction * fStep;
	}
}

prawie wszystkie funkcje stąd można znaleźć w ayyware.

Odnośnik do komentarza

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Regulamin. Polityka prywatności