Revision Difference
NEXTBOT:RunBehaviour#510687
<function name="RunBehaviour" parent="NEXTBOT" type="hook">⤶
<ishook>yes</ishook>⤶
<description>⤶
A hook called to process nextbot logic.⤶
⤶
This hook runs in a <page>coroutine</page> by default. It will only be called if <page>NEXTBOT:BehaveStart</page> is not overriden.⤶
</description>⤶
<realm>Server</realm>⤶
<predicted>No</predicted>⤶
</function>⤶
⤶
<example>⤶
<description>Example usage of the hook to make NextBot logic from the Example NextBot NPC shipped with the game.</description>⤶
<code>⤶
function ENT:RunBehaviour()⤶
⤶
while ( true ) do⤶
⤶
-- walk somewhere random⤶
self:StartActivity( ACT_WALK ) -- walk anims⤶
self.loco:SetDesiredSpeed( 100 ) -- walk speeds⤶
self:MoveToPos( self:GetPos() + Vector( math.Rand( -1, 1 ), math.Rand( -1, 1 ), 0 ) * 200 ) -- walk to a random place within about 200 units (yielding)⤶
⤶
self:StartActivity( ACT_IDLE ) -- revert to idle activity⤶
⤶
self:PlaySequenceAndWait( "idle_to_sit_ground" ) -- Sit on the floor⤶
self:SetSequence( "sit_ground" ) -- Stay sitting⤶
coroutine.wait( self:PlayScene( "scenes/eli_lab/mo_gowithalyx01.vcd" ) ) -- play a scene and wait for it to finish before progressing⤶
self:PlaySequenceAndWait( "sit_ground_to_idle" ) -- Get up⤶
⤶
-- find the furthest away hiding spot⤶
local pos = self:FindSpot( "random", { type = 'hiding', radius = 5000 } )⤶
⤶
-- if the position is valid⤶
if ( pos ) then⤶
self:StartActivity( ACT_RUN ) -- run anim⤶
self.loco:SetDesiredSpeed( 200 ) -- run speed⤶
self:PlayScene( "scenes/npc/female01/watchout.vcd" ) -- shout something while we run just for a laugh⤶
self:MoveToPos( pos ) -- move to position (yielding)⤶
self:PlaySequenceAndWait( "fear_reaction" ) -- play a fear animation⤶
self:StartActivity( ACT_IDLE ) -- when we finished, go into the idle anim⤶
else⤶
⤶
-- some activity to signify that we didn't find shit⤶
⤶
end⤶
⤶
coroutine.yield()⤶
⤶
end⤶
⤶
⤶
end⤶
</code>⤶
⤶
</example>