0

So I have been coding a nextbot in Gmod for a while now and have found a bug that causes Gmod to crash every time the function is run. here is the function:

function ENT:RecomputeTargetPath(path_target)
   
   if self.testmode then
      PrintMessage(HUD_PRINTTALK, 'recomputing target path')
   end
   self.path = Path("Chase")
   if (CurTime() - self.LastPathingInfraction < 5) then
      return 
   end

   local targetPos = path_target:GetPos()

   -- Run toward the position below the ENTity we're targetting, since we can't fly.
   trace.start = targetPos
   trace.filter = self:GetEnemy()
   local tr = util.TraceEntity(trace, self:GetEnemy())
   -- Of course, we sure that there IS a "below the target."
   if (tr.Hit and util.IsInWorld(tr.HitPos)) then
      targetPos = tr.HitPos
   end

   local rTime = SysTime()
   self.path:Compute(self, targetPos)
   if (SysTime() - rTime > 0.005) then
      self.LastPathingInfraction = CurTime()
   end
end

When this function is run, it recomputes the target path for the nextbot to make it move differently. It's used in the context of an if that looks like this or something very close:

if (CurTime() - self.LastPathRecompute > 0.1) then
         self.LastPathRecompute = CurTime()
         self:RecomputeTargetPath(self:GetEnemy():GetPos())
      end

As far as I know, all variables in the if are called before each.

As far as I know, all variables in the if are called before each. I tried recalling them but that didn't work at all... I don't know what is happening.

Also, side note, the function gets called multiple times per second based on the player's movement.

I've also added debug prints to every line of the code to see where the issue was and the bug fixed itself when I added them but when I removed them the bug came back...

Any help?

Santrix
  • 1
  • 1

0 Answers0