From 386874900721140d5cd8a161dafa31268e5cc13c Mon Sep 17 00:00:00 2001 From: Connor <34824423+EasterLee@users.noreply.github.com> Date: Wed, 22 Apr 2026 16:09:01 -0400 Subject: [PATCH 1/5] Update playermanager.cpp --- src/playermanager.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/playermanager.cpp b/src/playermanager.cpp index 9f4ef075..dd4a2dc3 100644 --- a/src/playermanager.cpp +++ b/src/playermanager.cpp @@ -46,7 +46,7 @@ CConVar g_cvarAdminImmunityTargetting("cs2f_admin_immunity", FCVAR_NONE, "M CConVar g_cvarEnableMapSteamIds("cs2f_map_steamids_enable", FCVAR_NONE, "Whether to make Steam ID's available to maps", false); ZEPlayerHandle::ZEPlayerHandle() : - m_Index(INVALID_ZEPLAYERHANDLE_INDEX){}; + m_Index(INVALID_ZEPLAYERHANDLE_INDEX) {}; ZEPlayerHandle::ZEPlayerHandle(CPlayerSlot slot) { @@ -171,6 +171,8 @@ CConVar g_cvarFlashLightAngle("cs2f_flashlight_angle", FCVAR_NONE, "How w CConVar g_cvarFlashLightColor("cs2f_flashlight_color", FCVAR_NONE, "What color to use for flashlights", Color(255, 255, 255)); CConVar g_cvarFlashLightAttachment("cs2f_flashlight_attachment", FCVAR_NONE, "Which attachment to parent a flashlight to. If the player model is not properly setup, you might have to use clip_limit here instead", "axis_of_intent"); +CConVar g_cvarFlashLightParticle("cs2f_flashlight_particle", FCVAR_NONE, "Ignore All other flashlight settings and spawn this particle as flashlight", ""); + void TeleportFlashLight(CCSPlayerPawn* pPawn, CBaseEntity* pLight, float flDistance = -1.f, QAngle angOverride = vec3_angle) { if (!pPawn || !pLight) @@ -239,6 +241,14 @@ void ZEPlayer::ToggleFlashLight() CSingleRecipientFilter filter(GetPlayerSlot()); pController->EmitSoundFilter(filter, "HudChat.Message"); + // particle flashlight + if (g_cvarFlashLightParticle.Get().Length()) + { + pController->DispatchParticle(g_cvarFlashLightParticle.Get().String(), &filter); + return; + } + + // entity flashlight if (!GetFlashLight()) SpawnFlashLight(); @@ -286,6 +296,7 @@ bool ZEPlayer::IsFlooding() void PrecacheBeaconParticle(IEntityResourceManifest* pResourceManifest) { pResourceManifest->AddResource(g_cvarBeaconParticle.Get().String()); + pResourceManifest->AddResource(g_cvarFlashLightParticle.Get().String()); } void ZEPlayer::StartBeacon(Color color, ZEPlayerHandle hGiver /* = 0*/) From 578a858b470a4be903b1584f64b8f9994a23edb1 Mon Sep 17 00:00:00 2001 From: Connor <34824423+EasterLee@users.noreply.github.com> Date: Wed, 22 Apr 2026 16:21:46 -0400 Subject: [PATCH 2/5] particle file and cfg --- PackageScript | 1 + .../cs2fixes/simple_flashlight.vpcf_c | Bin 0 -> 3514 bytes .../particles/cs2fixes/simple_flashlight.vpcf | 855 ++++++++++++++++++ cfg/cs2fixes/cs2fixes.cfg | 1 + src/playermanager.cpp | 3 +- 5 files changed, 858 insertions(+), 2 deletions(-) create mode 100644 assets/particles/cs2fixes/simple_flashlight.vpcf_c create mode 100644 assets_source/particles/cs2fixes/simple_flashlight.vpcf diff --git a/PackageScript b/PackageScript index 44cfacd1..ab59251e 100644 --- a/PackageScript +++ b/PackageScript @@ -130,6 +130,7 @@ for task in MMSPlugin.binaries: builder.AddCopy(os.path.join('assets', 'particles', MMSPlugin.metadata['name'], 'leader_defend_mark_ground.vpcf_c'), particles_cs2f_folder) builder.AddCopy(os.path.join('assets', 'particles', MMSPlugin.metadata['name'], 'leader_tracer.vpcf_c'), particles_cs2f_folder) builder.AddCopy(os.path.join('assets', 'particles', MMSPlugin.metadata['name'], 'napalm_fire.vpcf_c'), particles_cs2f_folder) + builder.AddCopy(os.path.join('assets', 'particles', MMSPlugin.metadata['name'], 'simple_flashlight.vpcf_c'), particles_cs2f_folder) materials_cs2f_folder = builder.AddFolder(os.path.join(packages[sdk_name].sdk_name, 'materials', MMSPlugin.metadata['name'])) builder.AddCopy(os.path.join('assets', 'materials', MMSPlugin.metadata['name'], 'leader_defend_mark.vtex_c'), materials_cs2f_folder) diff --git a/assets/particles/cs2fixes/simple_flashlight.vpcf_c b/assets/particles/cs2fixes/simple_flashlight.vpcf_c new file mode 100644 index 0000000000000000000000000000000000000000..137c39bb770de6ebe9e16778110ddc04a04b96a1 GIT binary patch literal 3514 zcmaKuYj7LY703T~wOUJ&Ey9lm(Qs_*l?U#OmJ_v9=kX;`nU(Q)5S7Cm5=`3qxGk#|MTUW)b}*Ka5pXZhz2iD*-mYD zkBx*YlZ*TMg<8FoHX2PQDH_743ZtS48}*VZbna*~VqDXO!RrDIZaG>-7xqBK9-h+X zs9|gMhAv7|I=5@OHeGWz&onAiw74L+RjK8Ed+ttyhJafegK2AuO0=NkfJn!&C4G2JZF>gRCEm=;#U(hMhr zMv??->dq%P+z=Iw>&NjysNm4xGgVbQf_6o};DM^?pevl?*IogyaEJP8_ zHyKQfPTIoyE;_Ir!QJrQgWyW$yMeJYEGDWd3)}b5iEEl(RfTOft%}HK_OEbypWug8 zF(oWvbU=EIrFdBv4?$io-Cvrv%w|KYw&VUfpR1Tn!-?Qy=4f?Ma?Fyg3(-K@o&`#1 zHp|?$g)@szdj}Smn+;)c$Fz_rwI3U!dXw+upMsDzc8D2 zs;)WC3cQofri)}5nlrAO+-b)-BrL%lu}^bqnlWb1jp3QN-l*}UsPK6co@;?178F&~ zd824?!=5s&dd|{FOME{YE1Igg3=#Wk4CPJx2uozl%HbWr!|W-mK<}<{tC|_{C?5kU zX;?F~I2vT1n}|~ZdMJb}Bkvlq--iSvBM$@15cR}x%uBtGY@gM3pwL21-=J&lqsyqd zAB&x2R3LvO`G62X>(EX_h$zuPEGO^04bje(=<8YuIof>)(HaxCOR-UZw_j0OgKa^dAFD&55W*oDzw}Y@ zhr-^F-yde~A>a7N1zPi2apS|Y%KN**FaIHPe8slY|EzrfaaR>oMjs_-c2E5Xv6USD zY8=EV678Jp?c2D;qsnwO(J&}8gbE``g@^2dnaqLpu;5*aG?tjr#4PPwwI~8vJy=+w#T|!NYD=D+j~9#a#IDl5oSI4I)b!4D zmgc(7=*(y1c*_>L8-((fAX~Oi;UhVB$r0!jmp$PD9J}NJ)^R+a$PdwqvTLn97)s5H zlNcr|{Rn3R`M6q4Co-v0>OiVMld`5m0n!a+qo^)9i>M)zZe^8={?iMVg&bzFqS@(M zm-HvRJzgpv$frt~bTOsIGdHo0MlXgZ;`u)CWLixniY9w0qfr#&`d+R##aECdMO53+ zZM@^^>@S51*SSSHu(Wd1S%cDEQE|*D*bz52nTEI?gJo4bz_`d+RbkEIq)IMj)+aP0 zh!~&Sh~Zt_4&zusn>NOEtx<$0g6o8+1~D{YR)3ELS&e6txrx$5E}1GNa@j&Lo;`ze zlI>UpgE#D&=@gn}3NH)Tl1mQy(J@2}`w<>Fi087VW{agn@&;B<=~tkdYdVxxehyz0 z>-ZeG*#N_}7@iT8HJG28qK#C33s?udvuNfj4xbSu;3LJRRc=zwsr()PLN=E!q)Np} zb*z-lWmD_0VZIRq{>nr?rDoFEe%wdGF9l(8y8%{AkEc`WEx2Y%KLYt@XzRiH3GE$> zrR&pq(<2X}x7>{_8Es}K-b#>;Ek4e5z050zH{ulv-eVMCt9C*dXC!tflh3e1I-8#? zzRq|iK9Nr)cjM3mWr}hBEyhA%Bj_9qK>8z-9%WsFt%wdii0?R+8U=e!3FZ~n(t!

<90vB#?tWuIq?h9 za5ApG?s{bTVzvvjp+wUfWqG@yYX<4xc^ZR;V;_)CCe1q6jLRQAh;Vw^JH~bG&I$RP zcPXNOE{LC!;9;5k-c;fSxp$^l_JlB$F!dQWUmiDg-JBhw?jesHl@1$8p*uV)56vX< z+u&X2c_xv+d`sBm^>-qc)aEd`lrC6)DxBld2nu-5GWI0cX@(iu zlVt%%k(aanjJe%I7n)(!bXMW*|4u-6DQtPmrR1ahM3D@5HYynLek>&>RW+3@mXfJ) zGWW@BakH`~n=2-E&3huo1*qei(5qQ|D1Vma$o*CKl4Silis|G^dolR z47Fd*(^R0~CO%0<)ayfGh}x7m3tdzXv?An#w~uW=cNcwusMLWjkK@LezLp(e_cF#j zk|cQ;*3lCRLu)6FNRmvwjM8NtEhi9douhl~c|?^t9J_px>}Jux2K2X)oQuK#n`qZk zmThH=k!}*Ghgd=M5|OKTL7L_TQFiq45*HrEx4zIA*m3%GFY%@G!L=u7`e=6a8&5Fw|M=!G2Hv7aJ#-RRvKDMQ7T<>F z{Yt*9r+wOUZsHA1pfj`;kFIWy+z3wsp-=E`xNVEn?oFXD lk|KK>mac76lzS06BCTo%e**<{HRS*R literal 0 HcmV?d00001 diff --git a/assets_source/particles/cs2fixes/simple_flashlight.vpcf b/assets_source/particles/cs2fixes/simple_flashlight.vpcf new file mode 100644 index 00000000..0f90aa63 --- /dev/null +++ b/assets_source/particles/cs2fixes/simple_flashlight.vpcf @@ -0,0 +1,855 @@ + +{ + _class = "CParticleSystemDefinition" + m_nBehaviorVersion = 12 + m_flConstantRadius = 60.0 + m_nMaxParticles = 1 + m_controlPointConfigurations = + [ + { + m_name = "preview" + m_drivers = + [ + { + m_iAttachType = "PATTACH_WORLDORIGIN" + m_entityName = "self" + }, + ] + }, + ] + m_PreEmissionOperators = + [ + { + _class = "C_OP_SetControlPointToPlayer" + m_nCP1 = 0 + m_bOrientToEyes = true + m_nPosition = "PARTICLE_EYES" + m_Notes = "easter" + }, + ] + m_Emitters = + [ + { + _class = "C_OP_InstantaneousEmitter" + m_nParticlesToEmit = + { + m_nType = "PF_TYPE_LITERAL" + m_nMapType = "PF_MAP_TYPE_DIRECT" + m_flLiteralValue = 1.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_bReverseOrder = false + m_flRandomMin = 0.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_strSnapshotSubset = "" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + }, + ] + m_Initializers = + [ + { + _class = "C_INIT_CreateWithinBox" + m_vecMin = + { + m_nType = "PVEC_TYPE_LITERAL" + m_vLiteralValue = [ 15.0, 0.0, 0.0 ] + m_LiteralColor = [ 0, 0, 0 ] + m_NamedValue = "" + m_bFollowNamedValue = false + m_nVectorAttribute = 6 + m_vVectorAttributeScale = [ 1.0, 1.0, 1.0 ] + m_nControlPoint = 0 + m_nDeltaControlPoint = 0 + m_vCPValueScale = [ 1.0, 1.0, 1.0 ] + m_vCPRelativePosition = [ 0.0, 0.0, 0.0 ] + m_vCPRelativeDir = [ 1.0, 0.0, 0.0 ] + m_FloatComponentX = + { + m_nType = "PF_TYPE_LITERAL" + m_nMapType = "PF_MAP_TYPE_DIRECT" + m_flLiteralValue = 0.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_flRandomMin = 0.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + m_FloatComponentY = + { + m_nType = "PF_TYPE_LITERAL" + m_nMapType = "PF_MAP_TYPE_DIRECT" + m_flLiteralValue = 0.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_flRandomMin = 0.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + m_FloatComponentZ = + { + m_nType = "PF_TYPE_LITERAL" + m_nMapType = "PF_MAP_TYPE_DIRECT" + m_flLiteralValue = 0.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_flRandomMin = 0.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + m_FloatInterp = + { + m_nType = "PF_TYPE_LITERAL" + m_nMapType = "PF_MAP_TYPE_DIRECT" + m_flLiteralValue = 0.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_flRandomMin = 0.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + m_flInterpInput0 = 0.0 + m_flInterpInput1 = 1.0 + m_vInterpOutput0 = [ 0.0, 0.0, 0.0 ] + m_vInterpOutput1 = [ 1.0, 1.0, 1.0 ] + m_Gradient = + { + m_Stops = [ ] + } + m_vRandomMin = [ 0.0, 0.0, 0.0 ] + m_vRandomMax = [ 0.0, 0.0, 0.0 ] + } + m_vecMax = + { + m_nType = "PVEC_TYPE_LITERAL" + m_vLiteralValue = [ 15.0, 0.0, 0.0 ] + m_LiteralColor = [ 0, 0, 0 ] + m_NamedValue = "" + m_bFollowNamedValue = false + m_nVectorAttribute = 6 + m_vVectorAttributeScale = [ 1.0, 1.0, 1.0 ] + m_nControlPoint = 0 + m_nDeltaControlPoint = 0 + m_vCPValueScale = [ 1.0, 1.0, 1.0 ] + m_vCPRelativePosition = [ 0.0, 0.0, 0.0 ] + m_vCPRelativeDir = [ 1.0, 0.0, 0.0 ] + m_FloatComponentX = + { + m_nType = "PF_TYPE_LITERAL" + m_nMapType = "PF_MAP_TYPE_DIRECT" + m_flLiteralValue = 0.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_flRandomMin = 0.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + m_FloatComponentY = + { + m_nType = "PF_TYPE_LITERAL" + m_nMapType = "PF_MAP_TYPE_DIRECT" + m_flLiteralValue = 0.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_flRandomMin = 0.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + m_FloatComponentZ = + { + m_nType = "PF_TYPE_LITERAL" + m_nMapType = "PF_MAP_TYPE_DIRECT" + m_flLiteralValue = 0.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_flRandomMin = 0.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + m_FloatInterp = + { + m_nType = "PF_TYPE_LITERAL" + m_nMapType = "PF_MAP_TYPE_DIRECT" + m_flLiteralValue = 0.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_flRandomMin = 0.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + m_flInterpInput0 = 0.0 + m_flInterpInput1 = 1.0 + m_vInterpOutput0 = [ 0.0, 0.0, 0.0 ] + m_vInterpOutput1 = [ 1.0, 1.0, 1.0 ] + m_Gradient = + { + m_Stops = [ ] + } + m_vRandomMin = [ 0.0, 0.0, 0.0 ] + m_vRandomMax = [ 0.0, 0.0, 0.0 ] + } + m_bLocalSpace = true + }, + { + _class = "C_INIT_InitFloat" + m_InputValue = + { + m_nType = "PF_TYPE_LITERAL" + m_nMapType = "PF_MAP_TYPE_DIRECT" + m_flLiteralValue = 60.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_flRandomMin = 1.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + }, + ] + m_Operators = + [ + { + _class = "C_OP_PositionLock" + m_bLockRot = true + }, + { + _class = "C_OP_RemapTransformOrientationToRotations" + }, + { + _class = "C_OP_SetFloat" + m_InputValue = + { + m_nType = "PF_TYPE_CONCURRENT_DEF_COUNT" + m_nMapType = "PF_MAP_TYPE_NOTCHED" + m_flLiteralValue = 0.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_bReverseOrder = false + m_flRandomMin = 0.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_strSnapshotSubset = "" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + m_nOutputField = 7 + }, + { + _class = "C_OP_AlphaDecay" + }, + ] + m_Renderers = + [ + { + _class = "C_OP_RenderStandardLight" + m_nLightType = "PARTICLE_LIGHT_TYPE_SPOT" + m_flTheta = + { + m_nType = "PF_TYPE_LITERAL" + m_nMapType = "PF_MAP_TYPE_DIRECT" + m_flLiteralValue = 0.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_flRandomMin = 0.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + m_flPhi = + { + m_nType = "PF_TYPE_LITERAL" + m_nMapType = "PF_MAP_TYPE_DIRECT" + m_flLiteralValue = 35.0 + m_NamedValue = "" + m_nControlPoint = 0 + m_nScalarAttribute = 3 + m_nVectorAttribute = 6 + m_nVectorComponent = 0 + m_flRandomMin = 0.0 + m_flRandomMax = 1.0 + m_bHasRandomSignFlip = false + m_nRandomSeed = -1 + m_nRandomMode = "PF_RANDOM_MODE_CONSTANT" + m_flLOD0 = 0.0 + m_flLOD1 = 0.0 + m_flLOD2 = 0.0 + m_flLOD3 = 0.0 + m_nNoiseInputVectorAttribute = 0 + m_flNoiseOutputMin = 0.0 + m_flNoiseOutputMax = 1.0 + m_flNoiseScale = 0.1 + m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ] + m_flNoiseOffset = 0.0 + m_nNoiseOctaves = 1 + m_nNoiseTurbulence = "PF_NOISE_TURB_NONE" + m_nNoiseType = "PF_NOISE_TYPE_PERLIN" + m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE" + m_flNoiseTurbulenceScale = 1.0 + m_flNoiseTurbulenceMix = 0.5 + m_flNoiseImgPreviewScale = 1.0 + m_bNoiseImgPreviewLive = true + m_flNoCameraFallback = 0.0 + m_bUseBoundsCenter = false + m_nInputMode = "PF_INPUT_MODE_CLAMPED" + m_flMultFactor = 1.0 + m_flInput0 = 0.0 + m_flInput1 = 1.0 + m_flOutput0 = 0.0 + m_flOutput1 = 1.0 + m_flNotchedRangeMin = 0.0 + m_flNotchedRangeMax = 1.0 + m_flNotchedOutputOutside = 0.0 + m_flNotchedOutputInside = 1.0 + m_nRoundType = "PF_ROUND_TYPE_NEAREST" + m_nBiasType = "PF_BIAS_TYPE_STANDARD" + m_flBiasParameter = 0.0 + m_Curve = + { + m_spline = [ ] + m_tangents = [ ] + m_vDomainMins = [ 0.0, 0.0 ] + m_vDomainMaxs = [ 0.0, 0.0 ] + } + } + m_nAttenuationStyle = "LIGHT_STYLE_NEW" + m_nMaxAllowed = 1 + m_Notes = "you're so skibidi" + }, + ] +} \ No newline at end of file diff --git a/cfg/cs2fixes/cs2fixes.cfg b/cfg/cs2fixes/cs2fixes.cfg index 893392d1..7a484d44 100644 --- a/cfg/cs2fixes/cs2fixes.cfg +++ b/cfg/cs2fixes/cs2fixes.cfg @@ -41,6 +41,7 @@ cs2f_flashlight_distance 54 // How far flashlights should be from the player's cs2f_flashlight_angle 45.0 // How wide should the flashlight be in degrees cs2f_flashlight_color "255 255 255 0" // What color to use for flashlights cs2f_flashlight_attachment axis_of_intent // Which attachment to parent a flashlight to. If the player model is not properly setup, you might have to use clip_limit here instead +cs2f_flashlight_particle "particles/cs2fixes/simple_flashlight.vpcf" //If set, ignore all other flashlight settings and spawn this particle as flashlight // Damage block settings cs2f_block_molotov_self_dmg 0 // Whether to block self-damage from molotovs diff --git a/src/playermanager.cpp b/src/playermanager.cpp index dd4a2dc3..74f06748 100644 --- a/src/playermanager.cpp +++ b/src/playermanager.cpp @@ -170,8 +170,7 @@ CConVar g_cvarFlashLightDistance("cs2f_flashlight_distance", FCVAR_NONE, CConVar g_cvarFlashLightAngle("cs2f_flashlight_angle", FCVAR_NONE, "How wide should the flashlight be in degrees", 45.0f); CConVar g_cvarFlashLightColor("cs2f_flashlight_color", FCVAR_NONE, "What color to use for flashlights", Color(255, 255, 255)); CConVar g_cvarFlashLightAttachment("cs2f_flashlight_attachment", FCVAR_NONE, "Which attachment to parent a flashlight to. If the player model is not properly setup, you might have to use clip_limit here instead", "axis_of_intent"); - -CConVar g_cvarFlashLightParticle("cs2f_flashlight_particle", FCVAR_NONE, "Ignore All other flashlight settings and spawn this particle as flashlight", ""); +CConVar g_cvarFlashLightParticle("cs2f_flashlight_particle", FCVAR_NONE, "If set, ignore all other flashlight settings and spawn this particle as flashlight", ""); void TeleportFlashLight(CCSPlayerPawn* pPawn, CBaseEntity* pLight, float flDistance = -1.f, QAngle angOverride = vec3_angle) { From 58713d05a5ebb619d0ea957ea72311e9a1da9533 Mon Sep 17 00:00:00 2001 From: Vauff Date: Thu, 23 Apr 2026 18:06:34 -0400 Subject: [PATCH 3/5] adjustments --- cfg/cs2fixes/cs2fixes.cfg | 6 +++--- src/playermanager.cpp | 11 +++++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/cfg/cs2fixes/cs2fixes.cfg b/cfg/cs2fixes/cs2fixes.cfg index 7a484d44..f5276218 100644 --- a/cfg/cs2fixes/cs2fixes.cfg +++ b/cfg/cs2fixes/cs2fixes.cfg @@ -13,7 +13,7 @@ cs2f_hide_enable 0 // Whether to enable hide (WARNING: randomly crashes cli cs2f_votemanager_enable 0 // Whether to enable votemanager features such as map vote fix, nominations, RTV and extends cs2f_trigger_timer_enable 0 // Whether to process countdown messages said by Console (e.g. Hold for 10 seconds) and append the round time where the countdown resolves cs2f_block_nav_lookup 0 // Whether to block navigation mesh lookup, improves server performance but breaks bot navigation -cs2f_flashlight_enable 0 // Whether to enable flashlights +cs2f_flashlight_enable 0 // Whether to enable flashlights (0=disabled, 1=light_barn flashlight, limited vertical movement, 2=particle flashlight, no cvar customization) cs2f_infinite_reserve_ammo 0 // Whether to enable infinite reserve ammo on weapons cs2f_disable_subtick_move 0 // Whether to disable subtick movement cs2f_disable_subtick_shooting 0 // Whether to disable subtick shooting, experimental (WARNING: add "log_flags Shooting +DoNotEcho" to your cfg to prevent console spam on every shot fired) @@ -40,8 +40,8 @@ cs2f_flashlight_brightness 1.0 // How bright should flashlights be cs2f_flashlight_distance 54 // How far flashlights should be from the player's head (the default is such that an equipped awp doesn't block the light if shadows are enabled) cs2f_flashlight_angle 45.0 // How wide should the flashlight be in degrees cs2f_flashlight_color "255 255 255 0" // What color to use for flashlights -cs2f_flashlight_attachment axis_of_intent // Which attachment to parent a flashlight to. If the player model is not properly setup, you might have to use clip_limit here instead -cs2f_flashlight_particle "particles/cs2fixes/simple_flashlight.vpcf" //If set, ignore all other flashlight settings and spawn this particle as flashlight +cs2f_flashlight_attachment "clip_limit" // Which attachment to parent a flashlight to +cs2f_flashlight_particle "particles/cs2fixes/simple_flashlight.vpcf" // Path to flashlight particle // Damage block settings cs2f_block_molotov_self_dmg 0 // Whether to block self-damage from molotovs diff --git a/src/playermanager.cpp b/src/playermanager.cpp index 74f06748..3322d389 100644 --- a/src/playermanager.cpp +++ b/src/playermanager.cpp @@ -46,7 +46,7 @@ CConVar g_cvarAdminImmunityTargetting("cs2f_admin_immunity", FCVAR_NONE, "M CConVar g_cvarEnableMapSteamIds("cs2f_map_steamids_enable", FCVAR_NONE, "Whether to make Steam ID's available to maps", false); ZEPlayerHandle::ZEPlayerHandle() : - m_Index(INVALID_ZEPLAYERHANDLE_INDEX) {}; + m_Index(INVALID_ZEPLAYERHANDLE_INDEX){}; ZEPlayerHandle::ZEPlayerHandle(CPlayerSlot slot) { @@ -163,14 +163,15 @@ void ZEPlayer::SetHideDistance(int distance) g_pUserPreferencesSystem->SetPreferenceInt(m_slot.Get(), HIDE_DISTANCE_PREF_KEY_NAME, distance); } +CConVar g_cvarFlashLightEnable("cs2f_flashlight_enable", FCVAR_NONE, "Whether to enable flashlights (0=disabled, 1=light_barn flashlight, limited vertical movement, 2=particle flashlight, no cvar customization)", false); CConVar g_cvarFlashLightShadows("cs2f_flashlight_shadows", FCVAR_NONE, "Whether to enable flashlight shadows", true); CConVar g_cvarFlashLightTransmitOthers("cs2f_flashlight_transmit_others", FCVAR_NONE, "Whether to transmit other player's flashlights, recommended to have shadows off for this", false); CConVar g_cvarFlashLightBrightness("cs2f_flashlight_brightness", FCVAR_NONE, "How bright should flashlights be", 1.0f); CConVar g_cvarFlashLightDistance("cs2f_flashlight_distance", FCVAR_NONE, "How far flashlights should be from the player's head", 54.0f); // The minimum distance such that an awp wouldn't block the light CConVar g_cvarFlashLightAngle("cs2f_flashlight_angle", FCVAR_NONE, "How wide should the flashlight be in degrees", 45.0f); CConVar g_cvarFlashLightColor("cs2f_flashlight_color", FCVAR_NONE, "What color to use for flashlights", Color(255, 255, 255)); -CConVar g_cvarFlashLightAttachment("cs2f_flashlight_attachment", FCVAR_NONE, "Which attachment to parent a flashlight to. If the player model is not properly setup, you might have to use clip_limit here instead", "axis_of_intent"); -CConVar g_cvarFlashLightParticle("cs2f_flashlight_particle", FCVAR_NONE, "If set, ignore all other flashlight settings and spawn this particle as flashlight", ""); +CConVar g_cvarFlashLightAttachment("cs2f_flashlight_attachment", FCVAR_NONE, "Which attachment to parent a flashlight to. If the player model is not properly setup, you might have to use clip_limit here instead", "clip_limit"); +CConVar g_cvarFlashLightParticle("cs2f_flashlight_particle", FCVAR_NONE, "If set, ignore all other flashlight settings and spawn this particle as flashlight", "particles/cs2fixes/simple_flashlight.vpcf"); void TeleportFlashLight(CCSPlayerPawn* pPawn, CBaseEntity* pLight, float flDistance = -1.f, QAngle angOverride = vec3_angle) { @@ -241,7 +242,7 @@ void ZEPlayer::ToggleFlashLight() pController->EmitSoundFilter(filter, "HudChat.Message"); // particle flashlight - if (g_cvarFlashLightParticle.Get().Length()) + if (g_cvarFlashLightEnable.Get() == 2) { pController->DispatchParticle(g_cvarFlashLightParticle.Get().String(), &filter); return; @@ -951,8 +952,6 @@ void CPlayerManager::CheckInfractions() g_pAdminSystem->SaveInfractions(); } -CConVar g_cvarFlashLightEnable("cs2f_flashlight_enable", FCVAR_NONE, "Whether to enable flashlights", false); - void CPlayerManager::FlashLightThink() { if (!g_cvarFlashLightEnable.Get() || !GetGlobals()) From 5ba6892efe03e4417a7e40a4a8cd932c34c1e434 Mon Sep 17 00:00:00 2001 From: Vauff Date: Thu, 23 Apr 2026 18:07:44 -0400 Subject: [PATCH 4/5] ops --- src/playermanager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/playermanager.cpp b/src/playermanager.cpp index 3322d389..0304b955 100644 --- a/src/playermanager.cpp +++ b/src/playermanager.cpp @@ -170,8 +170,8 @@ CConVar g_cvarFlashLightBrightness("cs2f_flashlight_brightness", FCVAR_NO CConVar g_cvarFlashLightDistance("cs2f_flashlight_distance", FCVAR_NONE, "How far flashlights should be from the player's head", 54.0f); // The minimum distance such that an awp wouldn't block the light CConVar g_cvarFlashLightAngle("cs2f_flashlight_angle", FCVAR_NONE, "How wide should the flashlight be in degrees", 45.0f); CConVar g_cvarFlashLightColor("cs2f_flashlight_color", FCVAR_NONE, "What color to use for flashlights", Color(255, 255, 255)); -CConVar g_cvarFlashLightAttachment("cs2f_flashlight_attachment", FCVAR_NONE, "Which attachment to parent a flashlight to. If the player model is not properly setup, you might have to use clip_limit here instead", "clip_limit"); -CConVar g_cvarFlashLightParticle("cs2f_flashlight_particle", FCVAR_NONE, "If set, ignore all other flashlight settings and spawn this particle as flashlight", "particles/cs2fixes/simple_flashlight.vpcf"); +CConVar g_cvarFlashLightAttachment("cs2f_flashlight_attachment", FCVAR_NONE, "Which attachment to parent a flashlight to", "clip_limit"); +CConVar g_cvarFlashLightParticle("cs2f_flashlight_particle", FCVAR_NONE, "Path to flashlight particle", "particles/cs2fixes/simple_flashlight.vpcf"); void TeleportFlashLight(CCSPlayerPawn* pPawn, CBaseEntity* pLight, float flDistance = -1.f, QAngle angOverride = vec3_angle) { From c0f4411ec01b6958f340f2e84bfc0f0742a5d100 Mon Sep 17 00:00:00 2001 From: Vauff Date: Thu, 23 Apr 2026 18:08:46 -0400 Subject: [PATCH 5/5] rename this too ig --- src/playermanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/playermanager.cpp b/src/playermanager.cpp index 0304b955..4bd47367 100644 --- a/src/playermanager.cpp +++ b/src/playermanager.cpp @@ -248,7 +248,7 @@ void ZEPlayer::ToggleFlashLight() return; } - // entity flashlight + // light_barn flashlight if (!GetFlashLight()) SpawnFlashLight();