local wearables = {} function CA_AttachWorldModel(player, wmIndex) { local hWorldModel = CreateByClassname("tf_wearable"); hWorldModel.Teleport(true, player.GetOrigin(), true, player.GetAbsAngles(), false, Vector()); SetPropInt(hWorldModel, "m_nModelIndex", wmIndex); SetPropBool(hWorldModel, "m_bValidatedAttachedEntity", true); SetPropBool(hWorldModel, "m_AttributeManager.m_Item.m_bInitialized", true); SetPropEntity(hWorldModel, "m_hOwnerEntity", player); hWorldModel.SetOwner(player); hWorldModel.DispatchSpawn(); hWorldModel.AcceptInput("SetParent", "!activator", player, player); SetPropInt(hWorldModel, "m_fEffects", 129); //EF_BONEMERGE | EF_BONEMERGE_FASTCULL if (!(player in wearables)) wearables[player] <- [] wearables[player].push(hWorldModel) return hWorldModel; } function CA_ClearWearables(entity) { if (entity in wearables) { foreach(wearable in wearables[entity]) KillIfValid(wearable) delete wearables[entity] } } function CA_OnRoundReset() { foreach(_, i_wearables in wearables) foreach(wearable in i_wearables) KillIfValid(wearable) wearables = {} } function CW_ProvideCustomWeapon(player, weaponClass, weaponId) { local weaponEnt = CreateByClassname(weaponClass) weaponEnt.Teleport(true, player.GetCenter(), true, player.GetAbsAngles(), false, Vector()) SetPropInt(weaponEnt, "m_AttributeManager.m_Item.m_iItemDefinitionIndex", weaponId) SetPropBool(weaponEnt, "m_AttributeManager.m_Item.m_bInitialized", true) SetPropBool(weaponEnt, "m_bValidatedAttachedEntity", true) weaponEnt.SetTeam(player.GetTeam()) weaponEnt.DispatchSpawn() player.Weapon_Equip(weaponEnt) player.Weapon_Switch(weaponEnt) return weaponEnt }