From 7909d380e9b613f3dbc78db15e2356cf8312bcdb Mon Sep 17 00:00:00 2001 From: Refosel Date: Sat, 28 Mar 2026 15:22:25 +0300 Subject: [PATCH] Update lua files --- lua/autorun/server/refoselbots.lua | 30 ++++---------------- lua/entities/refoselbots_navigator.lua | 14 ++++----- lua/refoselbots/gamemodes/cod_custom.lua | 36 ++++++++++++++++++++---- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lua/autorun/server/refoselbots.lua b/lua/autorun/server/refoselbots.lua index 304c146..4f46b66 100644 --- a/lua/autorun/server/refoselbots.lua +++ b/lua/autorun/server/refoselbots.lua @@ -1,28 +1,8 @@ ---if game.SinglePlayer() or CLIENT then return end +RefoselBots = {} +RefoselBots.NoNavMesh = {} +RefoselBots.Models = {} -LeadBot = {} -LeadBot.NoNavMesh = {} -LeadBot.Models = {} -- Models, leave as {} if random is desired - ---[[----- - -CONFIG START CONFIG START -CONFIG START CONFIG START -CONFIG START CONFIG START - ---]]----- - --- Name Prefix - -LeadBot.Prefix = "" - ---[[----- - -CONFIG END CONFIG END -CONFIG END CONFIG END -CONFIG END CONFIG END - ---]]----- +RefoselBots.Prefix = "" include("refoselbots/base.lua") @@ -56,4 +36,4 @@ if file.Find("refoselbots/gamemodes/" .. map .. ".lua", "LUA")[1] then include("refoselbots/gamemodes/" .. map .. ".lua") elseif file.Find("refoselbots/gamemodes/" .. gamemode .. ".lua", "LUA")[1] then include("refoselbots/gamemodes/" .. gamemode .. ".lua") -end \ No newline at end of file +end diff --git a/lua/entities/refoselbots_navigator.lua b/lua/entities/refoselbots_navigator.lua index 7800bb0..62b1a34 100644 --- a/lua/entities/refoselbots_navigator.lua +++ b/lua/entities/refoselbots_navigator.lua @@ -79,11 +79,10 @@ end function ENT:InFOV(pos, fov) local owner = self:GetOwner() + + if not IsValid(owner) then return false end if IsEntity(pos) then - -- we must check eyepos and worldspacecenter - -- maybe in the future add more points - if PointWithinViewAngle(owner:EyePos(), pos:WorldSpaceCenter(), owner:GetAimVector(), fov) then return true end @@ -95,22 +94,19 @@ function ENT:InFOV(pos, fov) end function ENT:CanSee(ply, fov) + local owner = self:GetOwner() + if not IsValid(owner) then return false end + if ply:GetPos():DistToSqr(self:GetPos()) > self:GetMaxVisionRange() * self:GetMaxVisionRange() then return false end - -- TODO: check fog farz and compare with distance - - -- half fov or something - -- probably should move this to a variable fov = fov or true if fov and !self:InFOV(ply, math.cos(0.5 * (self:GetFOV() or 90) * math.pi / 180)) then return false end - -- TODO: we really should check worldspacecenter too - local owner = self:GetOwner() return util.QuickTrace(owner:EyePos(), ply:EyePos() - owner:EyePos(), {owner, self}).Entity == ply end diff --git a/lua/refoselbots/gamemodes/cod_custom.lua b/lua/refoselbots/gamemodes/cod_custom.lua index 9cd4f04..1d2eb19 100644 --- a/lua/refoselbots/gamemodes/cod_custom.lua +++ b/lua/refoselbots/gamemodes/cod_custom.lua @@ -1,6 +1,30 @@ -LeadBot.RespawnAllowed = true -LeadBot.SetModel = false -LeadBot.Gamemode = "cod_custom" -LeadBot.TeamPlay = true -LeadBot.LerpAim = true -LeadBot.NoFlashlight = true +RefoselBots.RespawnAllowed = true +RefoselBots.SetModel = false +RefoselBots.Gamemode = "cod_custom" +RefoselBots.TeamPlay = true +RefoselBots.LerpAim = true +RefoselBots.NoFlashlight = true + +function RefoselBots.PlayerSpawn(bot) + timer.Simple(0.1, function() + if not IsValid(bot) then return end + + local t1, t2 = 0, 0 + + for _, ply in ipairs(player.GetAll()) do + if ply ~= bot and ply:Team() then + if ply:Team() == 1 then t1 = t1 + 1 + elseif ply:Team() == 2 then t2 = t2 + 1 + end + end + end + + if t1 <= t2 then + bot:SetTeam(1) + else + bot:SetTeam(2) + end + + bot:ResetParametrsCOD() + end) +end