From f7f603c48658b0c3f74bd7ef500c3de355651161 Mon Sep 17 00:00:00 2001 From: David Pierron Date: Thu, 31 Jul 2025 08:15:31 +0200 Subject: [PATCH] Added checks to avoind nil errors in ctld.adjustRoute --- CTLD.lua | 64 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/CTLD.lua b/CTLD.lua index 34d5130..c2ea133 100644 --- a/CTLD.lua +++ b/CTLD.lua @@ -7887,26 +7887,56 @@ function ctld.adjustRoute(_initialRouteTable, _firstWpOfNewRoute) -- create a r -- apply offset (_firstWpOfNewRoute) to SwitchWaypoint tasks local lastWpAsAlreadySwitchWaypoint = false - for idx = 1, #adjustedRoute do - for j=1, #adjustedRoute[idx].task.params.tasks do - if adjustedRoute[idx].task.params.tasks[j].id ~= "ControlledTask" then - if adjustedRoute[idx].task.params.tasks[j].params.action.id == "SwitchWaypoint" then - local goToWaypointIndex = adjustedRoute[idx].task.params.tasks[j].params.action.params.goToWaypointIndex - adjustedRoute[idx].task.params.tasks[j].params.action.params.fromWaypointIndex = idx - adjustedRoute[idx].task.params.tasks[j].params.action.params.goToWaypointIndex = mappingWP[goToWaypointIndex] - if idx == #adjustedRoute then - lastWpAsAlreadySwitchWaypoint = true + for idx2 = 1, #adjustedRoute do + if #adjustedRoute[idx2] and + #adjustedRoute[idx2].task and + #adjustedRoute[idx2].task.params and + #adjustedRoute[idx2].task.params.tasks then + + for j=1, #adjustedRoute[idx2].task.params.tasks do + if adjustedRoute[idx2].task.params.tasks[j].id and + adjustedRoute[idx2].task.params.tasks[j].id ~= "ControlledTask" then + + if adjustedRoute[idx2].task.params.tasks[j].params and + adjustedRoute[idx2].task.params.tasks[j].params.action and + adjustedRoute[idx2].task.params.tasks[j].params.action.id and + adjustedRoute[idx2].task.params.tasks[j].params.action.id == "SwitchWaypoint" then + + if adjustedRoute[idx2].task.params.tasks[j].params.action.params then + + local goToWaypointIndex = adjustedRoute[idx2].task.params.tasks[j].params.action.params.goToWaypointIndex + adjustedRoute[idx2].task.params.tasks[j].params.action.params.fromWaypointIndex = idx2 + adjustedRoute[idx2].task.params.tasks[j].params.action.params.goToWaypointIndex = mappingWP[goToWaypointIndex] + if idx2 == #adjustedRoute then + lastWpAsAlreadySwitchWaypoint = true + end + + end + end - end - else -- for "ControlledTask" - if adjustedRoute[idx].task.params.tasks[j].params.task.params.action.id == "SwitchWaypoint" then - local goToWaypointIndex = adjustedRoute[idx].task.params.tasks[j].params.task.params.action.params.goToWaypointIndex - adjustedRoute[idx].task.params.tasks[j].params.task.params.action.params.fromWaypointIndex = idx - adjustedRoute[idx].task.params.tasks[j].params.task.params.action.params.goToWaypointIndex = mappingWP[goToWaypointIndex] - if idx == #adjustedRoute then - lastWpAsAlreadySwitchWaypoint = true + + else -- for "ControlledTask" + if adjustedRoute[idx2].task.params.tasks[j].params and + adjustedRoute[idx2].task.params.tasks[j].params.task and + adjustedRoute[idx2].task.params.tasks[j].params.task.params and + adjustedRoute[idx2].task.params.tasks[j].params.task.params.action and + adjustedRoute[idx2].task.params.tasks[j].params.task.params.action.id and + adjustedRoute[idx2].task.params.tasks[j].params.task.params.action.id == "SwitchWaypoint" then + + if adjustedRoute[idx2].task.params.tasks[j].params.task.params.action.params then + + local goToWaypointIndex = adjustedRoute[idx2].task.params.tasks[j].params.task.params.action.params.goToWaypointIndex + adjustedRoute[idx2].task.params.tasks[j].params.task.params.action.params.fromWaypointIndex = idx2 + adjustedRoute[idx2].task.params.tasks[j].params.task.params.action.params.goToWaypointIndex = mappingWP[goToWaypointIndex] + if idx2 == #adjustedRoute then + lastWpAsAlreadySwitchWaypoint = true + end + + end end + end + end end end