From 4a4faf9ef63308ffa8d3059aee6c086da429847d Mon Sep 17 00:00:00 2001 From: Redox Date: Sat, 10 Jun 2023 01:23:14 +0200 Subject: [PATCH 1/3] Fix cl error --- lua/acf/menu/tool_functions.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/acf/menu/tool_functions.lua b/lua/acf/menu/tool_functions.lua index 4e6594466..05b1b6e78 100644 --- a/lua/acf/menu/tool_functions.lua +++ b/lua/acf/menu/tool_functions.lua @@ -162,6 +162,8 @@ do -- Tool Functions Loader local Name = net.ReadString() local Value = net.ReadInt(8) + if not IsValid( LocalPlayer() ) then return end + local Data = Tools[ToolName] local Tool = LocalPlayer():GetTool(ToolName) From a15e7fd290fe7239ba72446323260da73d63eebc Mon Sep 17 00:00:00 2001 From: Redox Date: Sat, 10 Jun 2023 01:23:37 +0200 Subject: [PATCH 2/3] Delete __index wrap --- lua/acf/core/utilities/util_sh.lua | 34 ------------------------------ 1 file changed, 34 deletions(-) diff --git a/lua/acf/core/utilities/util_sh.lua b/lua/acf/core/utilities/util_sh.lua index 2ba667d43..570142d7f 100644 --- a/lua/acf/core/utilities/util_sh.lua +++ b/lua/acf/core/utilities/util_sh.lua @@ -731,37 +731,3 @@ do -- File creation return util.JSONToTable(file.Read(FullPath, "DATA")) end end - -do -- Entity metatable method overriding - -- One of the limitation of the entity __index metamethod is that you cannot override methods that exist on it - -- So having, for example, a custom ENT:SetPos method for a single class was impossible since it would never be called - -- With this hook, all you need to do is set the ENT.UseCustomIndex flag to true - -- You might still need to call the original function from the entity metatable inside yours. - - local EntMeta = FindMetaTable("Entity") - local Index = EntMeta.__index - local SENTs = scripted_ents - local Custom = {} - - function EntMeta:__index(Key, ...) - local Class = Custom[self] - - if Class and Key then - local Value = SENTs.GetMember(Class, Key) - - if Value ~= nil then return Value end - end - - return Index(self, Key, ...) - end - - hook.Add("OnEntityCreated", "ACF Custom __index Metamethod", function(Entity) - if not Entity.UseCustomIndex then return end - - Custom[Entity] = Entity:GetClass() - - Entity:CallOnRemove("ACF Custom Index", function() - Custom[Entity] = nil - end) - end) -end From 32af7b0d4e2b0ae0573e58f8a1beafc7bcb1211a Mon Sep 17 00:00:00 2001 From: Redox Date: Sat, 10 Jun 2023 01:24:12 +0200 Subject: [PATCH 3/3] Change SetModel logic --- lua/entities/acf_ammo/init.lua | 2 +- lua/entities/acf_armor/init.lua | 2 +- lua/entities/acf_fueltank/init.lua | 2 +- lua/entities/acf_gun/init.lua | 2 +- lua/entities/acf_piledriver/init.lua | 2 +- lua/entities/base_scalable/init.lua | 17 ++++++----------- 6 files changed, 11 insertions(+), 16 deletions(-) diff --git a/lua/entities/acf_ammo/init.lua b/lua/entities/acf_ammo/init.lua index 6d0574bcf..611310a84 100644 --- a/lua/entities/acf_ammo/init.lua +++ b/lua/entities/acf_ammo/init.lua @@ -285,7 +285,7 @@ do -- Spawning and Updating -------------------- Crate:SetMaterial("phoenix_storms/Future_vents") Crate:SetPlayer(Player) - Crate:SetModel(Model) + Crate:SetScaledModel(Model) Crate:SetAngles(Ang) Crate:SetPos(Pos) Crate:Spawn() diff --git a/lua/entities/acf_armor/init.lua b/lua/entities/acf_armor/init.lua index ce1379ddf..acaf24ab5 100644 --- a/lua/entities/acf_armor/init.lua +++ b/lua/entities/acf_armor/init.lua @@ -94,7 +94,7 @@ do -- Spawning and Updating Player:AddCount("_acf_armor", Plate) Player:AddCleanup("_acf_armor", Plate) - Plate:SetModel("models/holograms/cube.mdl") + Plate:SetScaledModel("models/holograms/cube.mdl") Plate:SetMaterial("sprops/textures/sprops_metal1") Plate:SetPlayer(Player) Plate:SetAngles(Angle) diff --git a/lua/entities/acf_fueltank/init.lua b/lua/entities/acf_fueltank/init.lua index 68963c0e5..748f31c4f 100644 --- a/lua/entities/acf_fueltank/init.lua +++ b/lua/entities/acf_fueltank/init.lua @@ -83,7 +83,7 @@ do -- Spawn and Update functions Entity.ACF = Entity.ACF or {} Entity.ACF.Model = FuelTank.Model -- Must be set before changing model - Entity:SetModel(FuelTank.Model) + Entity:SetScaledModel(FuelTank.Model) Entity:PhysicsInit(SOLID_VPHYSICS) Entity:SetMoveType(MOVETYPE_VPHYSICS) diff --git a/lua/entities/acf_gun/init.lua b/lua/entities/acf_gun/init.lua index b731b421f..fff8fa019 100644 --- a/lua/entities/acf_gun/init.lua +++ b/lua/entities/acf_gun/init.lua @@ -130,7 +130,7 @@ do -- Spawn and Update functions -------------------------------- Entity.ACF.Model = Model - Entity:SetModel(Model) + Entity:SetScaledModel(Model) Entity:SetScale(Scale) -- Storing all the relevant information on the entity for duping diff --git a/lua/entities/acf_piledriver/init.lua b/lua/entities/acf_piledriver/init.lua index 3cbff5b97..4152ed207 100644 --- a/lua/entities/acf_piledriver/init.lua +++ b/lua/entities/acf_piledriver/init.lua @@ -67,7 +67,7 @@ do -- Spawning and Updating -------------------- Entity.ACF.Model = Class.Model -- Must be set before changing model - Entity:SetModel(Class.Model) + Entity:SetScaledModel(Class.Model) Entity:SetScale(Scale) -- Storing all the relevant information on the entity for duping diff --git a/lua/entities/base_scalable/init.lua b/lua/entities/base_scalable/init.lua index fbc8e7720..f5d1cbc7a 100644 --- a/lua/entities/base_scalable/init.lua +++ b/lua/entities/base_scalable/init.lua @@ -99,18 +99,13 @@ do -- Network sender and receivers end) end -do -- ENT:SetModel override - local EntMeta = FindMetaTable("Entity") +function ENT:SetScaledModel( Model ) + self:SetModel( Model ) - function ENT:SetModel(Model, ...) - local Data = self.ScaleData - - if Model and (Data.Type ~= "Model" or Data.Path ~= Model) then - self:SetScaleData("Model", Model) - self:Restore() - end - - return EntMeta.SetModel(self, Model, ...) + local Data = self.ScaleData + if Model and (Data.Type ~= "Model" or Data.Path ~= Model) then + self:SetScaleData("Model", Model ) + self:Restore() end end