66using CounterStrikeSharp . API . Modules . Utils ;
77using Microsoft . Extensions . Logging ;
88using System . Collections . Concurrent ;
9- using System . Runtime . InteropServices ;
109using Newtonsoft . Json . Linq ;
1110
1211namespace WeaponPaints
@@ -17,9 +16,9 @@ private void GivePlayerWeaponSkin(CCSPlayerController player, CBasePlayerWeapon
1716 {
1817 if ( ! Config . Additional . SkinEnabled ) return ;
1918 if ( ! GPlayerWeaponsInfo . TryGetValue ( player . Slot , out _ ) ) return ;
20-
19+
2120 bool isKnife = weapon . DesignerName . Contains ( "knife" ) || weapon . DesignerName . Contains ( "bayonet" ) ;
22-
21+
2322 switch ( isKnife )
2423 {
2524 case true when ! HasChangedKnife ( player , out var _ ) :
@@ -64,22 +63,22 @@ private void GivePlayerWeaponSkin(CCSPlayerController player, CBasePlayerWeapon
6463 weapon . FallbackPaintKit = GetRandomPaint ( weaponDefIndex ) ;
6564 weapon . FallbackSeed = 0 ;
6665 weapon . FallbackWear = 0.01f ;
67-
66+
6867 weapon . AttributeManager . Item . NetworkedDynamicAttributes . Attributes . RemoveAll ( ) ;
6968 CAttributeListSetOrAddAttributeValueByName . Invoke ( weapon . AttributeManager . Item . NetworkedDynamicAttributes . Handle , "set item texture prefab" , GetRandomPaint ( weaponDefIndex ) ) ;
7069 CAttributeListSetOrAddAttributeValueByName . Invoke ( weapon . AttributeManager . Item . NetworkedDynamicAttributes . Handle , "set item texture seed" , 0 ) ;
7170 CAttributeListSetOrAddAttributeValueByName . Invoke ( weapon . AttributeManager . Item . NetworkedDynamicAttributes . Handle , "set item texture wear" , 0.01f ) ;
72-
71+
7372 weapon . AttributeManager . Item . AttributeList . Attributes . RemoveAll ( ) ;
7473 CAttributeListSetOrAddAttributeValueByName . Invoke ( weapon . AttributeManager . Item . AttributeList . Handle , "set item texture prefab" , GetRandomPaint ( weaponDefIndex ) ) ;
7574 CAttributeListSetOrAddAttributeValueByName . Invoke ( weapon . AttributeManager . Item . AttributeList . Handle , "set item texture seed" , 0 ) ;
7675 CAttributeListSetOrAddAttributeValueByName . Invoke ( weapon . AttributeManager . Item . AttributeList . Handle , "set item texture wear" , 0.01f ) ;
77-
76+
7877 fallbackPaintKit = weapon . FallbackPaintKit ;
79-
78+
8079 if ( fallbackPaintKit == 0 )
8180 return ;
82-
81+
8382 skinInfo = SkinsList
8483 . Where ( w =>
8584 w [ "weapon_defindex" ] ? . ToObject < int > ( ) == weaponDefIndex &&
@@ -135,7 +134,6 @@ private void GivePlayerWeaponSkin(CCSPlayerController player, CBasePlayerWeapon
135134 . ToList ( ) ;
136135
137136 isLegacyModel = skinInfo . Count <= 0 || skinInfo [ 0 ] . Value < bool > ( "legacy_model" ) ;
138-
139137 UpdatePlayerWeaponMeshGroupMask ( player , weapon , isLegacyModel ) ;
140138 }
141139
@@ -385,7 +383,6 @@ private void GivePlayerGloves(CCSPlayerController player)
385383 item . NetworkedDynamicAttributes . Attributes . RemoveAll ( ) ;
386384 item . AttributeList . Attributes . RemoveAll ( ) ;
387385
388-
389386 Instance . AddTimer ( 0.08f , ( ) =>
390387 {
391388 try
@@ -453,19 +450,17 @@ public static void SetBodygroup(CCSPlayerPawn pawn, string group, int value)
453450 pawn . AcceptInput ( "SetBodygroup" , value : $ "{ group } ,{ value } ") ;
454451 }
455452
456- private static void UpdateWeaponMeshGroupMask ( CBaseEntity weapon , bool isLegacy = false )
453+ private void UpdateWeaponMeshGroupMask ( CBaseEntity weapon , bool isLegacy = false )
457454 {
458- if ( weapon . CBodyComponent ? . SceneNode == null ) return ;
459- var skeleton = weapon . CBodyComponent . SceneNode . GetSkeletonInstance ( ) ;
460- var value = ( ulong ) ( isLegacy ? 2 : 1 ) ;
455+ if ( ! weapon . DesignerName . Contains ( "ak47" ) ) return ;
456+ if ( weapon . CBodyComponent ? . SceneNode == null ) return ;
457+ var skeleton = weapon . CBodyComponent . SceneNode . GetSkeletonInstance ( ) ;
461458
462- if ( skeleton . ModelState . MeshGroupMask != value )
463- {
464- skeleton . ModelState . MeshGroupMask = value ;
465- }
459+ weapon . AcceptInput ( "SetBodygroup" , value : $ "body,{ ( isLegacy ? 1 : 0 ) } ") ;
460+ // skeleton.ModelState.MeshGroupMask = isLegacy ? 2UL : 1UL;
466461 }
467462
468- private static void UpdatePlayerWeaponMeshGroupMask ( CCSPlayerController player , CBasePlayerWeapon weapon , bool isLegacy )
463+ private void UpdatePlayerWeaponMeshGroupMask ( CCSPlayerController player , CBasePlayerWeapon weapon , bool isLegacy )
469464 {
470465 UpdateWeaponMeshGroupMask ( weapon , isLegacy ) ;
471466 }
0 commit comments