Sign in to follow this
Followers
0
-
Similar Content
-
By _xvi
т.к. некоторые хуесосы начали продавать мой код выкладываю в паблик
bool Game::FindSpanningContexts(cl_entity_t* ent, float targettime, position_history_t** newer, position_history_t** older) { assert(newer); assert(older); bool extrapolate = true; int imod = ent->current_position; int i0 = (imod - 0) & HISTORY_MASK; // curpos (lerp end) int i1 = (imod - 1) & HISTORY_MASK; // oldpos (lerp start) for (int i = 1; i < HISTORY_MAX - 1; i++) { position_history_t c1 = ent->ph[((imod - i) + 0) & HISTORY_MASK]; position_history_t c2 = ent->ph[((imod - i) + 1) & HISTORY_MASK]; if (c1.animtime == 0.f) break; if (c2.animtime >= targettime && c1.animtime <= targettime) { i0 = ((imod - i) + 1) & HISTORY_MASK; i1 = ((imod - i) + 0) & HISTORY_MASK; extrapolate = false; break; } } if (newer) *newer = &ent->ph[i0]; if (older) *older = &ent->ph[i1]; return extrapolate; } bool Game::BacktrackPlayer(cl_entity_s* pGameEntity, int lerp_msec, Vector& origin) { static cvar_t* sv_unlag = g_ClientCvarsMap["sv_unlag"]; static cvar_t* cl_lw = g_ClientCvarsMap["cl_lw"]; static cvar_t* cl_lc = g_ClientCvarsMap["cl_lc"]; static cvar_t* cl_updaterate = g_ClientCvarsMap["cl_updaterate"]; static cvar_t* sv_maxunlag = g_ClientCvarsMap["sv_maxunlag"]; static cvar_t* ex_interp = g_ClientCvarsMap["ex_interp"]; static cvar_t* sv_unlagpush = g_ClientCvarsMap["sv_unlagpush"]; // Player not wanting lag compensation if (!sv_unlag->value || !cl_lw->value || !cl_lc->value) return false; // Get true latency const double fakelatency = g_pMiscellaneous->m_bFakeLatencyActive ? cvars::misc.fakelatency_amount / 1000.0 : 0.0; double latency = /*client_state->frames[client_state->parsecountmod].latency + */fakelatency; if (latency > 1.5) latency = 1.5; double update_interval = 0.1; if (cl_updaterate->value > 10.f) update_interval = 1.0 / double(cl_updaterate->value); // Fixup delay based on message interval (cl_updaterate, default 20 so 50 msec) //latency -= update_interval; // Further fixup due to client side delay because packets arrive 1/2 through the frame loop, on average //latency -= (g_Local->m_flFrameTime/* * 0.5*/); // Absolute bounds on lag compensation double correct = min(LAG_COMPENSATION_DATA_TIME, latency); // See if server is applying a lower cap if (sv_maxunlag->value) { // Make sure it's not negative if (sv_maxunlag->value < 0.f) sv_maxunlag->value = 0.f; // Apply server cap correct = min(correct, sv_maxunlag->value); } // Get true timestamp const double realtime = client_state->time; // Figure out timestamp for which we are looking for data double targettime = realtime - correct; // Remove lag based on player interpolation, as well double interptime = (lerp_msec == -1) ? ex_interp->value : (lerp_msec / 1000.0); if (interptime > 0.1) interptime = 0.1; if (update_interval > interptime) interptime = update_interval; targettime -= interptime; // Server can apply a fudge, probably not needed, defaults to 0.0f targettime += sv_unlagpush->value; // Cap target to present time, of course targettime = min(realtime, targettime); position_history_t *newer, *older; FindSpanningContexts(pGameEntity, float(targettime), &newer, &older); if (!newer || !older) return false; float frac = 0.f; if (newer->animtime != older->animtime) { frac = float(targettime - older->animtime) / (newer->animtime - older->animtime); frac = std::clamp(frac, 0.f, 1.f); } Vector delta = newer->origin - older->origin; if (delta.LengthSqr() > LAG_COMPENSATION_TELEPORTED_DISTANCE_SQR) return false; origin = older->origin + delta * frac; return true; }
credits: me
-
By _xvi
т.к. некоторые хуесосы начали продавать мой код выкладываю в паблик
if (ent_index >= 1 && ent_index <= MAX_CLIENTS && !g_Player[ent_index]->m_bIsDead) { if (!pCStudioModelRenderer->m_pPlayerInfo) return; studiohdr_t* pstudiohdr = pCStudioModelRenderer->m_pStudioHeader; if (!pstudiohdr || !pstudiohdr->numbodyparts) return; /*if (!pCStudioModelRenderer->m_pPlayerInfo && pCStudioModelRenderer->m_pCurrentEntity && pCStudioModelRenderer->m_pCurrentEntity->curstate.weaponmodel) // Skip player weapon return;*/ if (pGameEntity->curstate.weaponmodel) { /*not my code kek nned return*/ } cl_entity_t* pViewModel = g_Engine.GetViewModel(); if (pViewModel && pGameEntity == pViewModel) return; if (pstudiohdr->numhitboxes > HITBOX_MAX) { if (pCStudioModelRenderer->m_pRenderModel) Utils::TraceLog(V("%s: player %s using bogus model %s, weaponmodel: %i, owner: %i, aiment: %i. (%s)\n"), V(__FUNCTION__), g_Player[ent_index]->m_szPrintName, pCStudioModelRenderer->m_pRenderModel->name, pGameEntity->curstate.weaponmodel, pGameEntity->curstate.owner, pGameEntity->curstate.aiment, g_Engine.pNetAPI->AdrToString(&client_static->netchan.remote_address)); if (g_Local->m_iEntIndex == ent_index) g_Local->m_bReplaceModel = true; else g_Player[ent_index]->m_bReplaceModel = true; return; } const auto* pBoneMatrix = pCStudioModelRenderer->m_pbonetransform; const auto* pHitbox = (mstudiobbox_t*)((byte*)(pstudiohdr) + pstudiohdr->hitboxindex); Vector vecBoundBoxMins, vecBoundBoxMaxs, vecMultiPoint, vecTransform; for (int i = 0; i < pstudiohdr->numhitboxes; i++) { const auto matrix = matrix3x4_t((*pBoneMatrix)[pHitbox[i].bone]); g_Player[ent_index]->m_matHitbox[i] = matrix; g_Player[ent_index]->m_vecOBBMin[i] = pHitbox[i].bbmin; g_Player[ent_index]->m_vecOBBMax[i] = pHitbox[i].bbmax; Math::VectorTransform(pHitbox[i].bbmin, matrix, vecBoundBoxMins); Math::VectorTransform(pHitbox[i].bbmax, matrix, vecBoundBoxMaxs); g_Player[ent_index]->m_vecHitboxMin[i] = vecBoundBoxMins; g_Player[ent_index]->m_vecHitboxMax[i] = vecBoundBoxMaxs; g_Player[ent_index]->m_vecHitbox[i] = (vecBoundBoxMaxs + vecBoundBoxMins) * 0.5f; g_Player[ent_index]->m_vecHitboxPoints[i][0] = vecBoundBoxMaxs; g_Player[ent_index]->m_vecHitboxPoints[i][1] = vecBoundBoxMins; vecMultiPoint = pHitbox[i].bbmin / pHitbox[i].bbmax; Math::VectorTransform(pHitbox[i].bbmax, matrix, vecTransform, 0, vecMultiPoint.x); g_Player[ent_index]->m_vecHitboxPoints[i][2] = vecTransform; Math::VectorTransform(pHitbox[i].bbmax, matrix, vecTransform, 1, vecMultiPoint.y); g_Player[ent_index]->m_vecHitboxPoints[i][3] = vecTransform; Math::VectorTransform(pHitbox[i].bbmax, matrix, vecTransform, 2, vecMultiPoint.z); g_Player[ent_index]->m_vecHitboxPoints[i][4] = vecTransform; vecMultiPoint = pHitbox[i].bbmax / pHitbox[i].bbmin; Math::VectorTransform(pHitbox[i].bbmin, matrix, vecTransform, 0, vecMultiPoint.x); g_Player[ent_index]->m_vecHitboxPoints[i][5] = vecTransform; Math::VectorTransform(pHitbox[i].bbmin, matrix, vecTransform, 1, vecMultiPoint.y); g_Player[ent_index]->m_vecHitboxPoints[i][6] = vecTransform; Math::VectorTransform(pHitbox[i].bbmin, matrix, vecTransform, 2, vecMultiPoint.z); g_Player[ent_index]->m_vecHitboxPoints[i][7] = vecTransform; } if (pstudiohdr->numhitboxes < HITBOX_MAX) { for (auto i = pstudiohdr->numhitboxes; i < HITBOX_MAX; i++) { g_Player[ent_index]->m_matHitbox[i].Clear(); g_Player[ent_index]->m_vecOBBMin[i].Clear(); g_Player[ent_index]->m_vecOBBMax[i].Clear(); g_Player[ent_index]->m_vecHitbox[i].Clear(); g_Player[ent_index]->m_vecHitboxMin[i].Clear(); g_Player[ent_index]->m_vecHitboxMax[i].Clear(); for (int j = 0; j < HITBOX_POINTS_MAX; j++) g_Player[ent_index]->m_vecHitboxPoints[i][j].Clear(); } } } call in studiorendermodel
credits: me
-
By _xvi
т.к. некоторые хуесосы начали продавать мой код выкладываю в паблик
bool CBasePlayer::IsPlayerDead(cl_entity_s* pGameEntity) { static const char* sequences[] = { "death1", "death2", "death3", "head", "gutshot", "left", "back", "right", "forward", "crouch_die" }; if (!g_PlayerExtraInfo.m_bDead(pGameEntity->index)) return false; return (pGameEntity->curstate.sequence == Game::LookupSequence(pGameEntity->model, sequences, IM_ARRAYSIZE(sequences)) || (pGameEntity->curstate.sequence > 100 && pGameEntity->curstate.sequence < 111)); } credits: me
-
By _xvi
PVOID COffsets::IN_MouseMove() { auto ptr = FindDownPattern((PCHAR)V("\x83\xEC\x1C\x8D\x44\x24\x10"), Module[CLIENT].base, Module[CLIENT].end); if (AddressNotInSpace(ptr, Module[CLIENT].base, Module[CLIENT].end)) { Utils::TraceLog(V("%s: not found.\n"), V(__FUNCTION__)); return NULL; } return (PVOID)ptr; }
void IN_MouseMove(float frametime, usercmd_t* cmd)
-
By _xvi
b4554+ протестировано
Автооффсет:
PVOID COffsets::FindClientStatic(void)//hack.ovh { DWORD dwAddress = FindPush(hw.base, hw.end, (PCHAR) "in : %i %.2f k/s"); dwAddress = FindPattern((PCHAR) "\xA1\xFF\xFF\xFF\xFF\x83\xEC\x08", (PCHAR) "x????xxx", dwAddress - 0x30, dwAddress); dwAddress = *(DWORD*)(dwAddress + 1); dwAddress = (DWORD)(client_static_t*)(dwAddress - offsetof(client_static_t, netchan.incoming_sequence)); if (FarProc(dwAddress, hw.base, hw.end)) Error("%s: not found.", __FUNCTION__); return (PVOID)dwAddress; } Структуры можно взять тут
-
-
Recently Browsing 0 members
No registered users viewing this page.