From 2c104f0c9d310864cea36fc62942650abeab5f77 Mon Sep 17 00:00:00 2001 From: Name Date: Fri, 15 Dec 2023 19:21:41 +0100 Subject: [PATCH 01/12] Copy PAC3 Swep --- lua/weapons/empty_hands.lua | 80 +++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 lua/weapons/empty_hands.lua diff --git a/lua/weapons/empty_hands.lua b/lua/weapons/empty_hands.lua new file mode 100644 index 0000000..bda86fa --- /dev/null +++ b/lua/weapons/empty_hands.lua @@ -0,0 +1,80 @@ +AddCSLuaFile() + +local SWEP = { Primary = {}, Secondary = {} } + +local baseClass = baseclass.Get( "weapon_base" ) + +SWEP.Author = "" +SWEP.Contact = "" +SWEP.Purpose = "" +SWEP.Instructions = "Right-Click to toggle crosshair" +SWEP.PrintName = "Hands" +SWEP.DrawAmmo = false +SWEP.DrawCrosshair = true +SWEP.DrawWeaponInfoBox = true + +SWEP.SlotPos = 1 +SWEP.Slot = 1 + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false + +SWEP.AutoSwitchTo = true +SWEP.AutoSwitchFrom = true +SWEP.Weight = 1 + +SWEP.HoldType = "normal" +SWEP.ViewModel = "models/weapons/c_arms.mdl" + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = -1 +SWEP.Primary.Automatic = false +SWEP.Primary.Ammo = "none" + +SWEP.Secondary.ClipSize = -1 +SWEP.Secondary.DefaultClip = -1 +SWEP.Secondary.Automatic = false +SWEP.Secondary.Ammo = "none" + + +function SWEP:DrawHUD() end +function SWEP:DrawWorldModel() end +function SWEP:DrawWorldModelTranslucent() end +function SWEP:CanPrimaryAttack() return false end +function SWEP:CanSecondaryAttack() return false end +function SWEP:Reload() return false end +function SWEP:Holster() return true end +function SWEP:ShouldDropOnDie() return false end + +local weaponSelectionColor = Color( 255, 220, 0, 255 ) +function SWEP:DrawWeaponSelection( x, y, w, t, a ) + weaponSelectionColor.a = a + draw.SimpleText( "C", "creditslogo", x + w / 2, y, weaponSelectionColor, TEXT_ALIGN_CENTER ) + + baseClass.PrintWeaponInfo( self, x + w + 20, y + t * 0.95, alpha ) +end + +function SWEP:Initialize() + if self.SetHoldType then + self:SetHoldType( "normal" ) + else + self:SetWeaponHoldType( "normal" ) + end + + self:DrawShadow( false ) + self:SetSequence( "ragdoll" ) -- paired with SWEP.ViewModel = "models/weapons/c_arms.mdl" to make the arms invisible +end + +function SWEP:OnDrop() + if SERVER then + self:Remove() + end +end + +function SWEP:SecondaryAttack() + if not IsFirstTimePredicted() then return end + self.DrawCrosshair = not self.DrawCrosshair + self:SetNextSecondaryFire( CurTime() + 0.3 ) +end + +weapons.Register( SWEP, "none", true ) From defcd7fac5b78b4bea6aa645db0367b778b0f0f3 Mon Sep 17 00:00:00 2001 From: Name Date: Fri, 15 Dec 2023 19:32:26 +0100 Subject: [PATCH 02/12] Add icon --- lua/weapons/empty_hands.lua | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lua/weapons/empty_hands.lua b/lua/weapons/empty_hands.lua index bda86fa..e64ef1f 100644 --- a/lua/weapons/empty_hands.lua +++ b/lua/weapons/empty_hands.lua @@ -2,17 +2,18 @@ AddCSLuaFile() local SWEP = { Primary = {}, Secondary = {} } -local baseClass = baseclass.Get( "weapon_base" ) +local baseClass = baseclass.Get("weapon_base") -SWEP.Author = "" -SWEP.Contact = "" +SWEP.Author = "PAC3 Team & TAS Team" +SWEP.Contact = "https://taservers.com/" SWEP.Purpose = "" SWEP.Instructions = "Right-Click to toggle crosshair" -SWEP.PrintName = "Hands" +SWEP.PrintName = "Empty Hands" +SWEP.IconOverride = "entities/weapon_fists.png" + SWEP.DrawAmmo = false SWEP.DrawCrosshair = true SWEP.DrawWeaponInfoBox = true - SWEP.SlotPos = 1 SWEP.Slot = 1 From a19143eac0764d97bc2306af40c3dfa6cfc06d8b Mon Sep 17 00:00:00 2001 From: Name Date: Fri, 15 Dec 2023 19:43:19 +0100 Subject: [PATCH 03/12] General cleanup --- lua/weapons/empty_hands.lua | 67 ++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/lua/weapons/empty_hands.lua b/lua/weapons/empty_hands.lua index e64ef1f..ec36f11 100644 --- a/lua/weapons/empty_hands.lua +++ b/lua/weapons/empty_hands.lua @@ -1,31 +1,28 @@ + AddCSLuaFile() local SWEP = { Primary = {}, Secondary = {} } - local baseClass = baseclass.Get("weapon_base") -SWEP.Author = "PAC3 Team & TAS Team" -SWEP.Contact = "https://taservers.com/" -SWEP.Purpose = "" -SWEP.Instructions = "Right-Click to toggle crosshair" -SWEP.PrintName = "Empty Hands" -SWEP.IconOverride = "entities/weapon_fists.png" - -SWEP.DrawAmmo = false -SWEP.DrawCrosshair = true -SWEP.DrawWeaponInfoBox = true -SWEP.SlotPos = 1 -SWEP.Slot = 1 - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false - -SWEP.AutoSwitchTo = true -SWEP.AutoSwitchFrom = true -SWEP.Weight = 1 - -SWEP.HoldType = "normal" -SWEP.ViewModel = "models/weapons/c_arms.mdl" +SWEP.Author = "PAC3 Team & TAS Team" +SWEP.Contact = "https://taservers.com/" +SWEP.Purpose = "" +SWEP.Instructions = "Right-click while walking and crouching to toggle the crosshair" +SWEP.PrintName = "Hands" +SWEP.IconOverride = "entities/weapon_fists.png" +SWEP.Spawnable = true +SWEP.AdminSpawnable = false + +SWEP.AutoSwitchTo = true +SWEP.AutoSwitchFrom = true +SWEP.Weight = 1 +SWEP.DrawAmmo = false +SWEP.DrawCrosshair = true +SWEP.DrawWeaponInfoBox = true +SWEP.SlotPos = 1 +SWEP.Slot = 1 +SWEP.HoldType = "normal" +SWEP.ViewModel = "models/weapons/c_arms.mdl" SWEP.Primary.ClipSize = -1 SWEP.Primary.DefaultClip = -1 @@ -37,7 +34,6 @@ SWEP.Secondary.DefaultClip = -1 SWEP.Secondary.Automatic = false SWEP.Secondary.Ammo = "none" - function SWEP:DrawHUD() end function SWEP:DrawWorldModel() end function SWEP:DrawWorldModelTranslucent() end @@ -47,23 +43,23 @@ function SWEP:Reload() return false end function SWEP:Holster() return true end function SWEP:ShouldDropOnDie() return false end -local weaponSelectionColor = Color( 255, 220, 0, 255 ) -function SWEP:DrawWeaponSelection( x, y, w, t, a ) +local weaponSelectionColor = Color(255, 220, 0, 255) +function SWEP:DrawWeaponSelection(x, y, w, t, a) weaponSelectionColor.a = a - draw.SimpleText( "C", "creditslogo", x + w / 2, y, weaponSelectionColor, TEXT_ALIGN_CENTER ) - - baseClass.PrintWeaponInfo( self, x + w + 20, y + t * 0.95, alpha ) + draw.SimpleText("C", "creditslogo", x + w / 2, y, weaponSelectionColor, TEXT_ALIGN_CENTER) + baseClass.PrintWeaponInfo(self, x + w + 20, y + t * 0.95, alpha) end function SWEP:Initialize() if self.SetHoldType then - self:SetHoldType( "normal" ) + self:SetHoldType("normal") else - self:SetWeaponHoldType( "normal" ) + self:SetWeaponHoldType("normal") end - self:DrawShadow( false ) - self:SetSequence( "ragdoll" ) -- paired with SWEP.ViewModel = "models/weapons/c_arms.mdl" to make the arms invisible + -- Paired with SWEP.ViewModel = "models/weapons/c_arms.mdl" to make the arms invisible + self:SetSequence("ragdoll") + self:DrawShadow(false) end function SWEP:OnDrop() @@ -74,8 +70,9 @@ end function SWEP:SecondaryAttack() if not IsFirstTimePredicted() then return end + if not self.Owner:IsWalking() or not self.Owner:Crouching() then return end self.DrawCrosshair = not self.DrawCrosshair - self:SetNextSecondaryFire( CurTime() + 0.3 ) + self:SetNextSecondaryFire(CurTime() + 0.3) end -weapons.Register( SWEP, "none", true ) +weapons.Register(SWEP, "hands", true) From 050e898ae4dc00fdcc3256cd5faf0d03fcae03bc Mon Sep 17 00:00:00 2001 From: Name Date: Fri, 15 Dec 2023 19:46:05 +0100 Subject: [PATCH 04/12] Rename to hands.lua --- lua/weapons/{empty_hands.lua => hands.lua} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lua/weapons/{empty_hands.lua => hands.lua} (100%) diff --git a/lua/weapons/empty_hands.lua b/lua/weapons/hands.lua similarity index 100% rename from lua/weapons/empty_hands.lua rename to lua/weapons/hands.lua From f3053d98efed4be57f4a4f8de6d0c01f3f9335d1 Mon Sep 17 00:00:00 2001 From: Name Date: Fri, 15 Dec 2023 20:34:31 +0100 Subject: [PATCH 05/12] Remove useless PAC3 crap, use `self.PrintWeaponInfo` --- lua/weapons/hands.lua | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/lua/weapons/hands.lua b/lua/weapons/hands.lua index ec36f11..1dd55c8 100644 --- a/lua/weapons/hands.lua +++ b/lua/weapons/hands.lua @@ -1,9 +1,3 @@ - -AddCSLuaFile() - -local SWEP = { Primary = {}, Secondary = {} } -local baseClass = baseclass.Get("weapon_base") - SWEP.Author = "PAC3 Team & TAS Team" SWEP.Contact = "https://taservers.com/" SWEP.Purpose = "" @@ -47,7 +41,7 @@ local weaponSelectionColor = Color(255, 220, 0, 255) function SWEP:DrawWeaponSelection(x, y, w, t, a) weaponSelectionColor.a = a draw.SimpleText("C", "creditslogo", x + w / 2, y, weaponSelectionColor, TEXT_ALIGN_CENTER) - baseClass.PrintWeaponInfo(self, x + w + 20, y + t * 0.95, alpha) + self:PrintWeaponInfo(x + w + 20, y + t * 0.95, alpha) end function SWEP:Initialize() From feaec9539003f0c9e119600ed5bffb1171d9e82a Mon Sep 17 00:00:00 2001 From: Name Date: Fri, 15 Dec 2023 20:47:47 +0100 Subject: [PATCH 06/12] Use static icon --- lua/weapons/hands.lua | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/lua/weapons/hands.lua b/lua/weapons/hands.lua index 1dd55c8..0708f74 100644 --- a/lua/weapons/hands.lua +++ b/lua/weapons/hands.lua @@ -37,12 +37,8 @@ function SWEP:Reload() return false end function SWEP:Holster() return true end function SWEP:ShouldDropOnDie() return false end -local weaponSelectionColor = Color(255, 220, 0, 255) -function SWEP:DrawWeaponSelection(x, y, w, t, a) - weaponSelectionColor.a = a - draw.SimpleText("C", "creditslogo", x + w / 2, y, weaponSelectionColor, TEXT_ALIGN_CENTER) - self:PrintWeaponInfo(x + w + 20, y + t * 0.95, alpha) -end +SWEP.WepSelectIcon = surface.GetTextureID("gui/faceposer_indicator") +SWEP.BounceWeaponIcon = false function SWEP:Initialize() if self.SetHoldType then From 411c47f3cf09e4df89848ab2cdc3193507803b31 Mon Sep 17 00:00:00 2001 From: Name Date: Fri, 15 Dec 2023 21:04:54 +0100 Subject: [PATCH 07/12] Get rid of bunch of unnecessary crap --- lua/weapons/hands.lua | 91 ++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 57 deletions(-) diff --git a/lua/weapons/hands.lua b/lua/weapons/hands.lua index 0708f74..ea689bd 100644 --- a/lua/weapons/hands.lua +++ b/lua/weapons/hands.lua @@ -1,68 +1,45 @@ -SWEP.Author = "PAC3 Team & TAS Team" -SWEP.Contact = "https://taservers.com/" -SWEP.Purpose = "" -SWEP.Instructions = "Right-click while walking and crouching to toggle the crosshair" -SWEP.PrintName = "Hands" -SWEP.IconOverride = "entities/weapon_fists.png" -SWEP.Spawnable = true -SWEP.AdminSpawnable = false - -SWEP.AutoSwitchTo = true -SWEP.AutoSwitchFrom = true -SWEP.Weight = 1 -SWEP.DrawAmmo = false -SWEP.DrawCrosshair = true -SWEP.DrawWeaponInfoBox = true -SWEP.SlotPos = 1 -SWEP.Slot = 1 -SWEP.HoldType = "normal" -SWEP.ViewModel = "models/weapons/c_arms.mdl" - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.DefaultClip = -1 -SWEP.Primary.Automatic = false -SWEP.Primary.Ammo = "none" - -SWEP.Secondary.ClipSize = -1 -SWEP.Secondary.DefaultClip = -1 -SWEP.Secondary.Automatic = false -SWEP.Secondary.Ammo = "none" - -function SWEP:DrawHUD() end -function SWEP:DrawWorldModel() end -function SWEP:DrawWorldModelTranslucent() end -function SWEP:CanPrimaryAttack() return false end -function SWEP:CanSecondaryAttack() return false end -function SWEP:Reload() return false end -function SWEP:Holster() return true end -function SWEP:ShouldDropOnDie() return false end - -SWEP.WepSelectIcon = surface.GetTextureID("gui/faceposer_indicator") -SWEP.BounceWeaponIcon = false - -function SWEP:Initialize() - if self.SetHoldType then - self:SetHoldType("normal") - else - self:SetWeaponHoldType("normal") +SWEP.PrintName = "Hands" +SWEP.Author = "TAS Team" +SWEP.Contact = "https://taservers.com/" +SWEP.Instructions = "Right-click while walking and crouching to toggle the crosshair" +SWEP.IconOverride = "entities/weapon_fists.png" +SWEP.Spawnable = true +SWEP.AdminSpawnable = false + +SWEP.Slot = 1 +SWEP.SlotPos = 1 +SWEP.HoldType = "normal" +SWEP.ViewModel = "models/weapons/c_arms.mdl" +SWEP.Primary.Ammo = "none" +SWEP.Secondary.Ammo = "none" + +if CLIENT then + SWEP.DrawAmmo = false + SWEP.DrawCrosshair = true + SWEP.WepSelectIcon = surface.GetTextureID("gui/faceposer_indicator") + SWEP.BounceWeaponIcon = false + + function SWEP:DrawWorldModel() end + function SWEP:DrawWorldModelTranslucent() end +else + function SWEP:ShouldDropOnDie() return false end + function SWEP:OnDrop() + if SERVER then + self:Remove() + end end - - -- Paired with SWEP.ViewModel = "models/weapons/c_arms.mdl" to make the arms invisible - self:SetSequence("ragdoll") - self:DrawShadow(false) end -function SWEP:OnDrop() - if SERVER then - self:Remove() - end +function SWEP:Initialize() + self:DrawShadow(false) + self:SetHoldType("normal") + self:SetSequence("ragdoll") -- Along with the viewmodel, makes the hands invisible end +function SWEP:PrimaryAttack() end function SWEP:SecondaryAttack() if not IsFirstTimePredicted() then return end if not self.Owner:IsWalking() or not self.Owner:Crouching() then return end self.DrawCrosshair = not self.DrawCrosshair self:SetNextSecondaryFire(CurTime() + 0.3) end - -weapons.Register(SWEP, "hands", true) From b892349dace44c07c78743f23c7d4b1b684f5372 Mon Sep 17 00:00:00 2001 From: Name Date: Fri, 15 Dec 2023 21:08:23 +0100 Subject: [PATCH 08/12] Linter stfu --- lua/weapons/hands.lua | 49 +++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/lua/weapons/hands.lua b/lua/weapons/hands.lua index ea689bd..c8c7d18 100644 --- a/lua/weapons/hands.lua +++ b/lua/weapons/hands.lua @@ -1,28 +1,34 @@ -SWEP.PrintName = "Hands" -SWEP.Author = "TAS Team" -SWEP.Contact = "https://taservers.com/" -SWEP.Instructions = "Right-click while walking and crouching to toggle the crosshair" -SWEP.IconOverride = "entities/weapon_fists.png" -SWEP.Spawnable = true +SWEP.PrintName = "Hands" +SWEP.Author = "TAS Team" +SWEP.Contact = "https://taservers.com/" +SWEP.Instructions = "Right-click while walking and crouching to toggle the crosshair" +SWEP.IconOverride = "entities/weapon_fists.png" +SWEP.Spawnable = true SWEP.AdminSpawnable = false -SWEP.Slot = 1 -SWEP.SlotPos = 1 -SWEP.HoldType = "normal" -SWEP.ViewModel = "models/weapons/c_arms.mdl" -SWEP.Primary.Ammo = "none" +SWEP.Slot = 1 +SWEP.SlotPos = 1 +SWEP.HoldType = "normal" +SWEP.ViewModel = "models/weapons/c_arms.mdl" +SWEP.Primary.Ammo = "none" SWEP.Secondary.Ammo = "none" if CLIENT then - SWEP.DrawAmmo = false - SWEP.DrawCrosshair = true - SWEP.WepSelectIcon = surface.GetTextureID("gui/faceposer_indicator") + SWEP.DrawAmmo = false + SWEP.DrawCrosshair = true + SWEP.WepSelectIcon = surface.GetTextureID("gui/faceposer_indicator") SWEP.BounceWeaponIcon = false - function SWEP:DrawWorldModel() end - function SWEP:DrawWorldModelTranslucent() end + function SWEP:DrawWorldModel() + end + + function SWEP:DrawWorldModelTranslucent() + end else - function SWEP:ShouldDropOnDie() return false end + function SWEP:ShouldDropOnDie() + return false + end + function SWEP:OnDrop() if SERVER then self:Remove() @@ -36,10 +42,13 @@ function SWEP:Initialize() self:SetSequence("ragdoll") -- Along with the viewmodel, makes the hands invisible end -function SWEP:PrimaryAttack() end +function SWEP:PrimaryAttack() +end + function SWEP:SecondaryAttack() - if not IsFirstTimePredicted() then return end - if not self.Owner:IsWalking() or not self.Owner:Crouching() then return end + if not IsFirstTimePredicted() or not self.Owner:IsWalking() or not self.Owner:Crouching() then + return + end self.DrawCrosshair = not self.DrawCrosshair self:SetNextSecondaryFire(CurTime() + 0.3) end From 4ec6c42887fac2d4e8c5e2153497b2fcc355063f Mon Sep 17 00:00:00 2001 From: Name Date: Fri, 15 Dec 2023 21:11:40 +0100 Subject: [PATCH 09/12] Linter stfu 2 --- lua/weapons/hands.lua | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lua/weapons/hands.lua b/lua/weapons/hands.lua index c8c7d18..6fb2490 100644 --- a/lua/weapons/hands.lua +++ b/lua/weapons/hands.lua @@ -1,10 +1,11 @@ SWEP.PrintName = "Hands" SWEP.Author = "TAS Team" SWEP.Contact = "https://taservers.com/" -SWEP.Instructions = "Right-click while walking and crouching to toggle the crosshair" +SWEP.Instructions = + "Right-click while walking and crouching to toggle the crosshair" SWEP.IconOverride = "entities/weapon_fists.png" SWEP.Spawnable = true -SWEP.AdminSpawnable = false +SWEP.AdminSpawnable = false SWEP.Slot = 1 SWEP.SlotPos = 1 @@ -18,17 +19,14 @@ if CLIENT then SWEP.DrawCrosshair = true SWEP.WepSelectIcon = surface.GetTextureID("gui/faceposer_indicator") SWEP.BounceWeaponIcon = false - - function SWEP:DrawWorldModel() - end - - function SWEP:DrawWorldModelTranslucent() - end + + function SWEP:DrawWorldModel() end + function SWEP:DrawWorldModelTranslucent() end else function SWEP:ShouldDropOnDie() return false end - + function SWEP:OnDrop() if SERVER then self:Remove() @@ -42,11 +40,13 @@ function SWEP:Initialize() self:SetSequence("ragdoll") -- Along with the viewmodel, makes the hands invisible end -function SWEP:PrimaryAttack() -end - +function SWEP:PrimaryAttack() end function SWEP:SecondaryAttack() - if not IsFirstTimePredicted() or not self.Owner:IsWalking() or not self.Owner:Crouching() then + if + not IsFirstTimePredicted() + or not self.Owner:IsWalking() + or not self.Owner:Crouching() + then return end self.DrawCrosshair = not self.DrawCrosshair From c102d42407c88abd1ed368bc7f7130744789c25a Mon Sep 17 00:00:00 2001 From: Name Date: Fri, 15 Dec 2023 21:12:30 +0100 Subject: [PATCH 10/12] Remove custom weapon selection icon --- lua/weapons/hands.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/lua/weapons/hands.lua b/lua/weapons/hands.lua index 6fb2490..feda4a0 100644 --- a/lua/weapons/hands.lua +++ b/lua/weapons/hands.lua @@ -17,8 +17,6 @@ SWEP.Secondary.Ammo = "none" if CLIENT then SWEP.DrawAmmo = false SWEP.DrawCrosshair = true - SWEP.WepSelectIcon = surface.GetTextureID("gui/faceposer_indicator") - SWEP.BounceWeaponIcon = false function SWEP:DrawWorldModel() end function SWEP:DrawWorldModelTranslucent() end From c59615501510b45031aec26b05bfa32f206f2ed7 Mon Sep 17 00:00:00 2001 From: Name Date: Fri, 15 Dec 2023 21:13:55 +0100 Subject: [PATCH 11/12] Use self:GetOwner() instead of self.Owner --- lua/weapons/hands.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/weapons/hands.lua b/lua/weapons/hands.lua index feda4a0..cbb6b14 100644 --- a/lua/weapons/hands.lua +++ b/lua/weapons/hands.lua @@ -42,8 +42,8 @@ function SWEP:PrimaryAttack() end function SWEP:SecondaryAttack() if not IsFirstTimePredicted() - or not self.Owner:IsWalking() - or not self.Owner:Crouching() + or not self:GetOwner():IsWalking() + or not self:GetOwner():Crouching() then return end From 80cf22944cd27d21fa6abd53495574b5c7340dc8 Mon Sep 17 00:00:00 2001 From: Name Date: Fri, 15 Dec 2023 21:17:16 +0100 Subject: [PATCH 12/12] Remove useless SERVER check --- lua/weapons/hands.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lua/weapons/hands.lua b/lua/weapons/hands.lua index cbb6b14..1985fcc 100644 --- a/lua/weapons/hands.lua +++ b/lua/weapons/hands.lua @@ -26,9 +26,7 @@ else end function SWEP:OnDrop() - if SERVER then - self:Remove() - end + self:Remove() end end