Compare commits

...

4 Commits

Author SHA1 Message Date
StefanX
c19f35a5ac Merge be8633f82b into b026ce1e7d 2025-08-10 17:53:14 +00:00
stefanx111
be8633f82b fix keychain seed 2025-08-10 20:13:00 +03:00
stefanx111
191773fc5a fix gloves and knives 2025-08-10 20:12:14 +03:00
stefanx111
40e18c9663 we don't need IncrementWearForWeaponWithStickers anymore 2025-08-06 16:16:23 +03:00
2 changed files with 19 additions and 31 deletions

View File

@@ -13,7 +13,7 @@ namespace WeaponPaints
[GameEventHandler]
public HookResult OnClientFullConnect(EventPlayerConnectFull @event, GameEventInfo info)
{
{
CCSPlayerController? player = @event.Userid;
if (player is null || !player.IsValid || player.IsBot ||
@@ -142,7 +142,10 @@ namespace WeaponPaints
GivePlayerMusicKit(player);
GivePlayerAgent(player);
GivePlayerGloves(player);
Server.NextFrame(() =>
{
GivePlayerGloves(player);
});
GivePlayerPin(player);
return HookResult.Continue;

View File

@@ -37,6 +37,9 @@ namespace WeaponPaints
weapon.AttributeManager.Item.ItemDefinitionIndex = (ushort)newDefIndex.Key;
weapon.AttributeManager.Item.EntityQuality = 3;
weapon.AttributeManager.Item.AttributeList.Attributes.RemoveAll();
weapon.AttributeManager.Item.NetworkedDynamicAttributes.Attributes.RemoveAll();
break;
}
default:
@@ -96,9 +99,8 @@ namespace WeaponPaints
weapon.AttributeManager.Item.AttributeList.Attributes.RemoveAll();
weapon.AttributeManager.Item.NetworkedDynamicAttributes.Attributes.RemoveAll();
weapon.AttributeManager.Item.ItemID = 16384;
weapon.AttributeManager.Item.ItemIDLow = 16384 & 0xFFFFFFFF;
weapon.AttributeManager.Item.ItemIDHigh = weapon.AttributeManager.Item.ItemIDLow >> 32;
UpdatePlayerEconItemId(weapon.AttributeManager.Item);
weapon.AttributeManager.Item.CustomName = weaponInfo.Nametag;
weapon.FallbackPaintKit = weaponInfo.Paint;
@@ -137,27 +139,6 @@ namespace WeaponPaints
UpdatePlayerWeaponMeshGroupMask(player, weapon, isLegacyModel);
}
// silly method to update sticker when call RefreshWeapons()
private void IncrementWearForWeaponWithStickers(CCSPlayerController player, CBasePlayerWeapon weapon)
{
int weaponDefIndex = weapon.AttributeManager.Item.ItemDefinitionIndex;
if (!HasChangedPaint(player, weaponDefIndex, out var weaponInfo) || weaponInfo == null ||
weaponInfo.Stickers.Count <= 0) return;
float wearIncrement = 0.001f;
float currentWear = weaponInfo.Wear;
var playerWear = _temporaryPlayerWeaponWear.GetOrAdd(player.Slot, _ => new ConcurrentDictionary<int, float>());
float incrementedWear = playerWear.AddOrUpdate(
weaponDefIndex,
currentWear + wearIncrement,
(_, oldWear) => Math.Min(oldWear + wearIncrement, 1.0f)
);
weapon.FallbackWear = incrementedWear;
}
private void SetStickers(CCSPlayerController? player, CBasePlayerWeapon weapon)
{
if (player == null || !player.IsValid) return;
@@ -215,7 +196,7 @@ namespace WeaponPaints
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
"keychain slot 0 offset z", keyChain.OffsetZ);
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
"keychain slot 0 seed", keyChain.Seed);
"keychain slot 0 seed", ViewAsFloat(keyChain.Seed));
}
private static void GiveKnifeToPlayer(CCSPlayerController? player)
@@ -350,8 +331,6 @@ namespace WeaponPaints
{
newWeapon.Clip1 = ammo.Item1;
newWeapon.ReserveAmmo[0] = ammo.Item2;
IncrementWearForWeaponWithStickers(player, newWeapon);
}
catch (Exception ex)
{
@@ -396,13 +375,19 @@ namespace WeaponPaints
return;
item.ItemDefinitionIndex = gloveId;
item.ItemIDLow = 16384 & 0xFFFFFFFF;
item.ItemIDHigh = 16384;
UpdatePlayerEconItemId(item);
item.NetworkedDynamicAttributes.Attributes.RemoveAll();
CAttributeListSetOrAddAttributeValueByName.Invoke(item.NetworkedDynamicAttributes.Handle, "set item texture prefab", weaponInfo.Paint);
CAttributeListSetOrAddAttributeValueByName.Invoke(item.NetworkedDynamicAttributes.Handle, "set item texture seed", weaponInfo.Seed);
CAttributeListSetOrAddAttributeValueByName.Invoke(item.NetworkedDynamicAttributes.Handle, "set item texture wear", weaponInfo.Wear);
item.AttributeList.Attributes.RemoveAll();
CAttributeListSetOrAddAttributeValueByName.Invoke(item.AttributeList.Handle, "set item texture prefab", weaponInfo.Paint);
CAttributeListSetOrAddAttributeValueByName.Invoke(item.AttributeList.Handle, "set item texture seed", weaponInfo.Seed);
CAttributeListSetOrAddAttributeValueByName.Invoke(item.AttributeList.Handle, "set item texture wear", weaponInfo.Wear);
item.Initialized = true;
SetBodygroup(pawn, "default_gloves", 1);