Skip to content

Commit d7af2fe

Browse files
authored
Merge pull request #440 from stefanx111/fix-bugs
fix knife, gloves, keychain seed
2 parents 439c6ea + 5b43b2d commit d7af2fe

File tree

3 files changed

+30
-14
lines changed

3 files changed

+30
-14
lines changed

Events.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public partial class WeaponPaints
1313

1414
[GameEventHandler]
1515
public HookResult OnClientFullConnect(EventPlayerConnectFull @event, GameEventInfo info)
16-
{
16+
{
1717
CCSPlayerController? player = @event.Userid;
1818

1919
if (player is null || !player.IsValid || player.IsBot ||
@@ -142,7 +142,10 @@ private HookResult OnPlayerSpawn(EventPlayerSpawn @event, GameEventInfo info)
142142

143143
GivePlayerMusicKit(player);
144144
GivePlayerAgent(player);
145-
GivePlayerGloves(player);
145+
Server.NextFrame(() =>
146+
{
147+
GivePlayerGloves(player);
148+
});
146149
GivePlayerPin(player);
147150

148151
return HookResult.Continue;

Variables.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public partial class WeaponPaints
2525
{"weapon_g3sg1", "G3SG1"},
2626
{"weapon_galilar", "Galil AR"},
2727
{"weapon_m249", "M249"},
28-
{"weapon_m4a1", "M4A1"},
28+
{"weapon_m4a1", "M4A4"},
2929
{"weapon_mac10", "MAC-10"},
3030
{"weapon_p90", "P90"},
3131
{"weapon_mp5sd", "MP5-SD"},

WeaponAction.cs

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ private void GivePlayerWeaponSkin(CCSPlayerController player, CBasePlayerWeapon
3737

3838
weapon.AttributeManager.Item.ItemDefinitionIndex = (ushort)newDefIndex.Key;
3939
weapon.AttributeManager.Item.EntityQuality = 3;
40+
41+
weapon.AttributeManager.Item.AttributeList.Attributes.RemoveAll();
42+
weapon.AttributeManager.Item.NetworkedDynamicAttributes.Attributes.RemoveAll();
4043
break;
4144
}
4245
default:
@@ -96,9 +99,8 @@ private void GivePlayerWeaponSkin(CCSPlayerController player, CBasePlayerWeapon
9699
weapon.AttributeManager.Item.AttributeList.Attributes.RemoveAll();
97100
weapon.AttributeManager.Item.NetworkedDynamicAttributes.Attributes.RemoveAll();
98101

99-
weapon.AttributeManager.Item.ItemID = 16384;
100-
weapon.AttributeManager.Item.ItemIDLow = 16384 & 0xFFFFFFFF;
101-
weapon.AttributeManager.Item.ItemIDHigh = weapon.AttributeManager.Item.ItemIDLow >> 32;
102+
UpdatePlayerEconItemId(weapon.AttributeManager.Item);
103+
102104
weapon.AttributeManager.Item.CustomName = weaponInfo.Nametag;
103105
weapon.FallbackPaintKit = weaponInfo.Paint;
104106

@@ -136,7 +138,7 @@ private void GivePlayerWeaponSkin(CCSPlayerController player, CBasePlayerWeapon
136138

137139
UpdatePlayerWeaponMeshGroupMask(player, weapon, isLegacyModel);
138140
}
139-
141+
140142
// silly method to update sticker when call RefreshWeapons()
141143
private void IncrementWearForWeaponWithStickers(CCSPlayerController player, CBasePlayerWeapon weapon)
142144
{
@@ -170,7 +172,7 @@ private void SetStickers(CCSPlayerController? player, CBasePlayerWeapon weapon)
170172
foreach (var sticker in weaponInfo.Stickers)
171173
{
172174
int stickerSlot = weaponInfo.Stickers.IndexOf(sticker);
173-
175+
174176
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
175177
$"sticker slot {stickerSlot} id", ViewAsFloat(sticker.Id));
176178
if (sticker.OffsetX != 0 || sticker.OffsetY != 0)
@@ -187,7 +189,7 @@ private void SetStickers(CCSPlayerController? player, CBasePlayerWeapon weapon)
187189
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
188190
$"sticker slot {stickerSlot} rotation", sticker.Rotation);
189191
}
190-
192+
191193
if (_temporaryPlayerWeaponWear.TryGetValue(player.Slot, out var playerWear) &&
192194
playerWear.TryGetValue(weaponDefIndex, out float storedWear))
193195
{
@@ -215,7 +217,7 @@ private void SetKeychain(CCSPlayerController? player, CBasePlayerWeapon weapon)
215217
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
216218
"keychain slot 0 offset z", keyChain.OffsetZ);
217219
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
218-
"keychain slot 0 seed", keyChain.Seed);
220+
"keychain slot 0 seed", ViewAsFloat(keyChain.Seed));
219221
}
220222

221223
private static void GiveKnifeToPlayer(CCSPlayerController? player)
@@ -378,9 +380,14 @@ private void GivePlayerGloves(CCSPlayerController player)
378380
pawn.SetModel(model);
379381
}
380382

383+
CEconItemView item = pawn.EconGloves;
384+
385+
item.NetworkedDynamicAttributes.Attributes.RemoveAll();
386+
item.AttributeList.Attributes.RemoveAll();
387+
388+
381389
Instance.AddTimer(0.08f, () =>
382-
{
383-
CEconItemView item = pawn.EconGloves;
390+
{
384391
try
385392
{
386393
if (!player.IsValid)
@@ -396,13 +403,19 @@ private void GivePlayerGloves(CCSPlayerController player)
396403
return;
397404

398405
item.ItemDefinitionIndex = gloveId;
399-
item.ItemIDLow = 16384 & 0xFFFFFFFF;
400-
item.ItemIDHigh = 16384;
406+
407+
UpdatePlayerEconItemId(item);
401408

409+
item.NetworkedDynamicAttributes.Attributes.RemoveAll();
402410
CAttributeListSetOrAddAttributeValueByName.Invoke(item.NetworkedDynamicAttributes.Handle, "set item texture prefab", weaponInfo.Paint);
403411
CAttributeListSetOrAddAttributeValueByName.Invoke(item.NetworkedDynamicAttributes.Handle, "set item texture seed", weaponInfo.Seed);
404412
CAttributeListSetOrAddAttributeValueByName.Invoke(item.NetworkedDynamicAttributes.Handle, "set item texture wear", weaponInfo.Wear);
405413

414+
item.AttributeList.Attributes.RemoveAll();
415+
CAttributeListSetOrAddAttributeValueByName.Invoke(item.AttributeList.Handle, "set item texture prefab", weaponInfo.Paint);
416+
CAttributeListSetOrAddAttributeValueByName.Invoke(item.AttributeList.Handle, "set item texture seed", weaponInfo.Seed);
417+
CAttributeListSetOrAddAttributeValueByName.Invoke(item.AttributeList.Handle, "set item texture wear", weaponInfo.Wear);
418+
406419
item.Initialized = true;
407420

408421
SetBodygroup(pawn, "default_gloves", 1);

0 commit comments

Comments
 (0)