mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
109 lines
2.6 KiB
Lua
109 lines
2.6 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
|
|
-- Serverside only.
|
|
if ( CLIENT ) then return end
|
|
|
|
local setmetatable = setmetatable
|
|
local tostring = tostring
|
|
local table = table
|
|
local ai_task = ai_task
|
|
|
|
module( "ai_schedule" )
|
|
|
|
-- Define the Schedule object
|
|
|
|
local Schedule = {}
|
|
Schedule.__index = Schedule
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: Init
|
|
Sets the object up. Called automatically from ai_schedule.new.
|
|
-----------------------------------------------------------]]
|
|
function Schedule:Init( _debugname_ )
|
|
|
|
self.DebugName = tostring( _debugname_ )
|
|
self.Tasks = {}
|
|
self.TaskCount = 0
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
|
|
Adds an engine task to the schedule
|
|
|
|
schd:EngTask( "TASK_TARGET_PLAYER", 0 )
|
|
|
|
-----------------------------------------------------------]]
|
|
function Schedule:EngTask( _taskname_, _taskdata_ )
|
|
|
|
local NewTask = ai_task.New()
|
|
NewTask:InitEngine( _taskname_, _taskdata_ )
|
|
self.TaskCount = table.insert( self.Tasks, NewTask )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
|
|
Adds Lua NPC task to the schedule
|
|
|
|
schdChase:AddTask( "LookForPlayer", "AnyDataYouWant" )
|
|
|
|
will call the functions
|
|
|
|
NPC:TaskStart_LookForPlayer( "AnyDataYouWant" ) - once on start
|
|
NPC:Task_LookForPlayer( "AnyDataYouWant" ) - every think until TaskComplete
|
|
|
|
-----------------------------------------------------------]]
|
|
function Schedule:AddTask( _functionname_, _data_ )
|
|
|
|
local NewTask = ai_task.New()
|
|
NewTask:InitFunctionName( "TaskStart_" .. _functionname_, "Task_" .. _functionname_, _data_ )
|
|
self.TaskCount = table.insert( self.Tasks, NewTask )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
|
|
The same as above but you get to specify the exact
|
|
function name to call
|
|
|
|
-----------------------------------------------------------]]
|
|
function Schedule:AddTaskEx( _start, _run, _data_ )
|
|
|
|
local NewTask = ai_task.New()
|
|
NewTask:InitFunctionName( _start, _run, _data_ )
|
|
self.TaskCount = table.insert( self.Tasks, NewTask )
|
|
|
|
end
|
|
|
|
function Schedule:NumTasks()
|
|
return self.TaskCount
|
|
end
|
|
|
|
function Schedule:GetTask( num )
|
|
return self.Tasks[ num ]
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Create a new empty task (this is ai_schedule.New )
|
|
-----------------------------------------------------------]]
|
|
function New( debugname )
|
|
|
|
local pNewSchedule = {}
|
|
setmetatable( pNewSchedule, Schedule )
|
|
|
|
pNewSchedule:Init( debugname )
|
|
|
|
return pNewSchedule
|
|
|
|
end
|