Эксперт
- Статус
- Оффлайн
- Регистрация
- 7 Сен 2019
- Сообщения
- 2,176
- Реакции
- 984
какую ту штуку на пастебине нашел хз
мб это для варфейса
Код:
__int64 __fastcall Bullet_Fire_Internal(gentity_s *attacker, float spread, const weaponParms *wp, const gentity_s *weaponEnt, PlayerHandIndex hand, int gameTime, bool noRicochet)
{
int v7; // er13
gentity_s *v8; // rsi
const gentity_s *v9; // r12
const weaponParms *v10; // rbx
float v11; // xmm14_4
char v12; // al
gclient_s *v13; // rdx
gagent_s *v14; // rcx
bool v15; // al
const playerState_s *v16; // rcx
bool v17; // di
int v18; // er15
float maxRange; // xmm15_4
float v20; // xmm6_4
float v21; // xmm9_4
int v22; // er14
float v23; // xmm10_4
float v24; // xmm7_4
float angleMax; // xmm8_4
float v26; // xmm12_4
int v27; // edi
int v28; // eax
gclient_s *v29; // rcx
meansOfDeath_t v30; // eax
float v31; // xmm2_4
float v32; // xmm1_4
float v33; // xmm0_4
bool v34; // al
Weapon v35; // er9
__int64 v36; // rcx
int v37; // er9
antilagInfo_t *v38; // rcx
int v39; // edx
unsigned int v40; // er8
int v41; // er10
bool v42; // zf
__int64 result; // rax
bool minDamageRange; // [rsp+20h] [rbp-E0h]
unsigned int perks[2]; // [rsp+50h] [rbp-B0h]
float maxDamageRange; // [rsp+58h] [rbp-A8h]
unsigned int v47[2]; // [rsp+60h] [rbp-A0h]
BulletFireParams v48; // [rsp+70h] [rbp-90h]
BulletTraceResults br; // [rsp+C0h] [rbp-40h]
AntilagClientStore antilagStore; // [rsp+110h] [rbp+10h]
unsigned int pHoldrand; // [rsp+580h] [rbp+480h]
char v52; // [rsp+588h] [rbp+488h]
float v53; // [rsp+590h] [rbp+490h]
v7 = gameTime;
v8 = attacker;
v9 = weaponEnt;
v10 = wp;
v11 = spread;
v12 = G_AntiLagRewindClientPos(gameTime, &antilagStore);
v13 = v8->client;
v52 = v12;
if ( v13 )
{
*perks = *v13->ps.perks;
}
else
{
v14 = v8->agent;
if ( v14 )
*perks = *v14->playerState.perks;
else
*perks = 0i64;
}
v15 = BG_WeaponBulletFire_ShouldSpread(perks, v10->weapon, v10->isAlternate);
v16 = &v8->client->ps;
v17 = v15;
if ( v16 || (v16 = &v8->agent->playerState) != 0i64 )
BG_GetPlayerDamageRange(v16, v16->perks, v10->weapon, v10->isAlternate, &v53, &maxDamageRange);
else
BG_GetDamageRange(0i64, v10->weapon, v10->isAlternate, &v53, &maxDamageRange);
if ( v17 )
{
v18 = BG_ShotCount(v10->weapon, v10->isAlternate);
maxRange = v53;
}
else
{
v18 = 1;
if ( g_launchData.aliensMode && BG_GetWeaponClass(v10->weapon, v10->isAlternate) == 4 )
maxRange = v53;
else
maxRange = FLOAT_8192_0;
}
pHoldrand = v7;
if ( hand )
pHoldrand = v7 + 10;
BG_srand(&pHoldrand);
br.hitClientNum = -1;
v20 = 0.0;
v21 = spread;
v22 = 0;
v23 = 0.0;
v24 = 0.0;
angleMax = FLOAT_360_0;
v26 = 0.0;
if ( v17 && v18 > 1 && spread > 0.0 )
{
LOBYTE(gameTime) = 1;
v21 = spread * 0.33000001;
v23 = BG_random(&pHoldrand) * 360.0;
v22 = (v18 * 0.25);
if ( v22 <= 1 )
v22 = 1;
v24 = 360.0 / (2 * v22);
}
else
{
LOBYTE(gameTime) = 0;
}
v27 = 0;
if ( v18 > 0 )
{
hand = -v22;
do
{
v28 = 2046;
if ( v9 )
v28 = v9->s.number;
v29 = v8->client;
v48.weaponEntIndex = v28;
v48.ignoreEntIndex = v28;
v48.damageMultiplier = 1.0;
if ( v29 )
*v47 = *v29->ps.perks;
else
*v47 = 0i64;
v30 = BG_WeaponBulletFire_GetMethodOfDeath(v47, v10->weapon, v10->isAlternate);
v31 = v10->muzzleTrace[0];
v32 = v10->muzzleTrace[1];
v33 = v10->muzzleTrace[2];
v48.methodOfDeath = v30;
v48.origStart[0] = v31;
v48.origStart[1] = v32;
v48.origStart[2] = v33;
v48.noRicochet = noRicochet;
v48.start[0] = v31;
v48.start[1] = v32;
v48.start[2] = v33;
if ( gameTime )
{
if ( v27 >= v22 )
{
if ( v27 == v22 )
{
v26 = v21;
v21 = v11;
v24 = 360.0 / (2 * (v18 - v22));
}
v20 = ((v27 + hand) * (v24 * 2.0)) + (v23 + 180.0);
}
else
{
v20 = ((v24 * 2.0) * v27) + v23;
}
angleMax = v20 + v24;
}
Bullet_Endpos(&pHoldrand, v26, v21, v48.end, v48.dir, v20, angleMax, v10, maxRange);
v34 = BG_WeaponBulletFire_ShouldPenetrate(perks, v10->weapon, v10->isAlternate);
v35.0 = v10->weapon;
minDamageRange = v10->isAlternate;
if ( v34 )
Bullet_FirePenetrate(&pHoldrand, &v48, &br, v35, minDamageRange, v8, v7);
else
Bullet_FireExtended(&pHoldrand, &v48, &br, v35, minDamageRange, v8, v7);
++v27;
}
while ( v27 < v18 );
}
G_AntiLag_RestoreClientPos(&antilagStore);
if ( !com_sv_running->current.enabled )
return br.hitClientNum;
if ( !v8->client )
return br.hitClientNum;
if ( enableAntilagReporting->current.integer != 1 )
return br.hitClientNum;
v36 = dword_14366C7E0[133852 * v8->s.number];
if ( v36 >= 30 )
return br.hitClientNum;
v37 = ::gameTime;
v38 = &antilagInfo[v36];
v39 = ::gameTime - v7;
if ( ::gameTime - v7 > v38->maxRewind )
v38->maxRewind = v39;
if ( v39 < v38->minRewind )
v38->minRewind = v39;
v40 = br.hitClientNum;
v41 = sv_testValue->current.integer;
if ( v39 > v41 )
{
++v38->clampCount;
v39 = v41;
if ( v40 != -1 )
++v38->clampHitCount;
if ( v38->lastGameTime == v37 - v41 )
{
++v38->clusterCount;
if ( v40 != -1 )
++v38->clusterHitCount;
}
}
v38->rewindSum += v39;
++v38->rewindCount;
v38->rewindSumSq += v39 * v39;
v42 = v52 == 0;
v38->lastGameTime = v37 - v39;
result = v40;
if ( v42 )
{
++v38->failCount;
if ( v40 != -1 )
++v38->failHitCount;
}
return result;
}
Код:
__int64 __fastcall sub_1403E4080(__int16 *a1, float a2, __int64 a3, _WORD *weaponEnt, char a5, unsigned int gametime, char noRicochet)
{
int v7; // er13
__int64 weapParms; // rbx
__int16 *v9; // rsi
unsigned __int16 *v10; // r12
__int64 v11; // rdx
__int64 v12; // rcx
char v13; // al
__int64 v14; // rcx
char v15; // di
__int64 v16; // rdx
__int64 v17; // rcx
int v18; // er15
__int64 v19; // rcx
float v20; // xmm6_4
int v21; // er14
float v22; // xmm10_4
float v23; // xmm7_4
float v24; // xmm8_4
int v25; // edi
__int64 v26; // rcx
int v27; // eax
int v28; // edx
int v29; // er8
int v30; // xmm2_4
int v31; // xmm1_4
int v32; // xmm0_4
char v33; // al
unsigned int v34; // er9
__int64 v36; // [rsp+20h] [rbp-E0h]
char *v37; // [rsp+28h] [rbp-D8h]
int v38; // [rsp+28h] [rbp-D8h]
__int64 v39; // [rsp+50h] [rbp-B0h]
__int64 v40; // [rsp+58h] [rbp-A8h]
__int64 v41; // [rsp+60h] [rbp-A0h]
__int64 v42; // [rsp+68h] [rbp-98h]
int v43; // [rsp+70h] [rbp-90h]
int v44; // [rsp+74h] [rbp-8Ch]
int methodOfDeath; // [rsp+78h] [rbp-88h]
char v46; // [rsp+7Ch] [rbp-84h]
int v47; // [rsp+80h] [rbp-80h]
int v48; // [rsp+84h] [rbp-7Ch]
int v49; // [rsp+88h] [rbp-78h]
int v50; // [rsp+8Ch] [rbp-74h]
int v51; // [rsp+90h] [rbp-70h]
int v52; // [rsp+94h] [rbp-6Ch]
char v53; // [rsp+98h] [rbp-68h]
char v54; // [rsp+A4h] [rbp-5Ch]
char v55; // [rsp+B0h] [rbp-50h]
unsigned int v56; // [rsp+FCh] [rbp-4h]
char v57; // [rsp+100h] [rbp+0h]
int v58; // [rsp+608h] [rbp+508h]
char v59; // [rsp+610h] [rbp+510h]
v7 = gametime;
weapParms = a3;
v9 = a1;
v10 = weaponEnt;
sub_140457A70(gametime, *a1, &v57);
v11 = *(v9 + 43);
if ( v11 )
{
v39 = *(v11 + 7760);
v40 = *(v11 + 7768);
}
else
{
v12 = *(v9 + 45);
if ( v12 )
{
v39 = *(v12 + 7760);
v40 = *(v12 + 7768);
}
else
{
v39 = 0i64;
v40 = 0i64;
}
}
v13 = sub_140291640(&v39, *(weapParms + 60), *(weapParms + 68));
v14 = *(v9 + 43);
v15 = v13;
if ( v14 || (v14 = *(v9 + 45)) != 0 )
{
v37 = &v59;
sub_14028B7F0(v14 + 7760, *(weapParms + 60));
}
else
{
sub_14028A4C0(*(weapParms + 60));
}
if ( v15 )
{
v18 = sub_14028FDF0(*(weapParms + 60), *(weapParms + 68));
}
else
{
v18 = 1;
if ( sub_1404E5470(v17, v16) )
sub_14028C520(*(weapParms + 60), *(weapParms + 68));
}
v58 = v7;
if ( a5 )
v58 = v7 + 10;
sub_1402634B0(&v58);
v56 = -1;
v20 = 0.0;
v21 = 0;
v22 = 0.0;
v23 = 0.0;
v24 = 360.0;
if ( v15 && v18 > 1 && a2 > 0.0 )
{
LOBYTE(gametime) = 1;
v22 = COERCE_FLOAT(COERCE_UNSIGNED_INT64(sub_140263480(&v58))) * 360.0;
v21 = (v18 * 0.25);
if ( v21 <= 1 )
v21 = 1;
v23 = 360.0 / (2 * v21);
}
else
{
LOBYTE(gametime) = 0;
}
v25 = 0;
if ( v18 > 0 )
{
*&a5 = -v21;
do
{
if ( v10 )
{
LOBYTE(v19) = 1;
LOWORD(v43) = *v10;
HIWORD(v43) = sub_14028C100(v19, v10);
}
else
{
v43 = 0x7FE07FE;
}
v26 = *(v9 + 43);
v44 = 0x3F800000;
if ( v26 )
{
v41 = *(v26 + 7760);
v42 = *(v26 + 7768);
}
else
{
v41 = 0i64;
v42 = 0i64;
}
v27 = BG_WeaponBulletFire_GetMethodOfDeath(&v41, *(weapParms + 60), *(weapParms + 68));
v30 = *(weapParms + 36);
v31 = *(weapParms + 40);
v32 = *(weapParms + 44);
methodOfDeath = v27;
v47 = v30;
v48 = v31;
v49 = v32;
v46 = noRicochet;
v50 = v30;
v51 = v31;
v52 = v32;
if ( gametime )
{
if ( v25 >= v21 )
{
if ( v25 == v21 )
v23 = 360.0 / (2 * (v18 - v21));
v20 = ((v25 + a5) * (v23 * 2.0)) + (v22 + 180.0);
}
else
{
v20 = ((v23 * 2.0) * v25) + v22;
}
v24 = v20 + v23;
}
*&v37 = v20;
Bullet_Endpos(&v58, v28, v29, &v53, &v54, v37, LODWORD(v24));
v33 = BG_WeaponBulletFire_ShouldPenetrate(&v39, *(weapParms + 60), *(weapParms + 68));
v34 = *(weapParms + 60);
v38 = *(weapParms + 64);
LOBYTE(v36) = *(weapParms + 68);
if ( v33 )
Bullet_FirePenetrate(&v58, &v43, &v55, v34, v36, v38, v9, v7);
else
Bullet_FireExtended(&v58, &v43, &v55, v34, v36, v38);
++v25;
}
while ( v25 < v18 );
}
sub_140457E80(&v57);
return v56;
}