-- ----------------------------------------------------------------- -- Core AI loop – runs every tick on the server -- ----------------------------------------------------------------- function ENT:RunBehaviour() while true do -- 1️⃣ Acquire / validate target if not IsValid(self.CurrentTarget) or not self.CurrentTarget:Alive() then self.CurrentTarget = self:FindClosestPlayer() end
-- ========================================================= -- CONFIGURATION – tweak these values to suit your map / playstyle -- ========================================================= local CONFIG = Model = "models/props_junk/watermelon01.mdl", -- default placeholder model Speed = 200, -- units per second (walk speed) Acceleration = 600, -- how fast it reaches full speed TurnRate = 8, -- how quickly it can turn (higher = snappier) ChaseRadius = 3000, -- max distance at which it will start chasing a player LoseRadius = 3500, -- distance at which it gives up the chase AttackDistance = 60, -- distance considered a “catch” AttackCooldown = 2, -- seconds between successive attacks ScreamSound = "npc/fast_zombie/idle1.wav", -- replace with your own scream file FootstepSound = "npc/metropolice/gear1.wav", -- replace if you want footstep sounds Nico-s Nextbots Script
-- 4️⃣ Attack if close enough and cooldown elapsed if distToTarget <= CONFIG.AttackDistance ^ 2 and CurTime() > self.NextAttack then self:AttackTarget() self.NextAttack = CurTime() + CONFIG.AttackCooldown end end end Nico-s Nextbots Script
-- ----------------------------------------------------------------- -- Optional: footstep sounds – makes the bot feel more alive -- ----------------------------------------------------------------- function ENT:FootStepSound() self:EmitSound(CONFIG.FootstepSound, 70, 100, 0.5, CHAN_AUTO) end Nico-s Nextbots Script
-- ----------------------------------------------------------------- -- Attack routine – plays a scream and damages the player -- ----------------------------------------------------------------- function ENT:AttackTarget() if not IsValid(self.CurrentTarget) then return end
if SERVER then self:SetMoveType(MOVETYPE_STEP) self:SetSolid(SOLID_BBOX) self:SetHealth(100)