diff --git a/lua/entities/gmod_wire_lever.lua b/lua/entities/gmod_wire_lever.lua index 0300929793..d62e7017a9 100644 --- a/lua/entities/gmod_wire_lever.lua +++ b/lua/entities/gmod_wire_lever.lua @@ -58,18 +58,21 @@ if CLIENT then local isClicking = LocalPlayer():KeyDown(IN_USE) or LocalPlayer():KeyDown(IN_ATTACK) if isClicking and not self.wasClicking and IsValid(self.csmodel) then - local rayPos = util.IntersectRayWithOBB( - LocalPlayer():GetShootPos(), - LocalPlayer():GetEyeTrace().Normal * 75, - self.csmodel:GetPos(), - self.csmodel:GetAngles(), - self.csmodel:OBBMins(), - self.csmodel:OBBMaxs() - ) - if rayPos then - net.Start("wire_lever_activate") - net.WriteEntity(self) - net.SendToServer() + local aimPos = LocalPlayer():GetShootPos() + if aimPos:DistToSqr(self:GetPos())<100^2 then + local rayPos = util.IntersectRayWithOBB( + aimPos, + LocalPlayer():GetAimVector() * 100, + self.csmodel:GetPos(), + self.csmodel:GetAngles(), + self.csmodel:OBBMins() - Vector(2,2,2), + self.csmodel:OBBMaxs() + Vector(2,2,2) + ) + if rayPos then + net.Start("wire_lever_activate") + net.WriteEntity(self) + net.SendToServer() + end end end self.wasClicking = isClicking @@ -123,7 +126,7 @@ else if not IsValid(ply) or not IsValid(ent) or not ent.Use or ent:GetClass() ~= "gmod_wire_lever" then return end if IsValid(ent.User) then return end - if ply:GetShootPos():Distance(ent:GetPos()) < 100 then + if ply:GetShootPos():DistToSqr(ent:GetPos()) < 100^2 then ent:Use(ply, ply, USE_ON, 1) end end) @@ -133,8 +136,7 @@ else if IsValid(self.User) then local shootPos = self.User:GetShootPos() - local distSqr = shootPos:DistToSqr(self:GetPos()) - if distSqr < 160^2 and (self.User:KeyDown(IN_USE) or self.User:KeyDown(IN_ATTACK)) then + if shootPos:DistToSqr(self:GetPos()) < 100^2 and (self.User:KeyDown(IN_USE) or self.User:KeyDown(IN_ATTACK)) then local shootDir = self.User:GetAimVector() self:CalcAngle(shootPos, shootDir) else