Skip to content

Movers

Movers are entites that move and rotate smoothly. script_mover allows for smooth movement and rotation contrary to script_mover_lightweight which is not able to rotate.

Create a Mover

entity CreateExpensiveScriptMover( vector origin , vector angles )

returns script_mover

entity CreateExpensiveScriptMoverModel( asset model, vector origin, vector angles, int solidType, float fadeDist )

returns script_mover which has a model

entity CreateScriptMover( vector origin, vector angles )

returns script_mover_lightweight

entity CreateScriptMoverModel( asset model, vector origin, vector angles, int solidType, float fadeDist )

returns script_mover_lightweight which has a model

entity CreateOwnedScriptMover( entity owner )

returns script_mover which will be at the location of the owner

Moving

void NonPhysicsMoveTo( vector position, float time, float easeIn, float easeOut )

void NonPhysicsMoveInWorldSpaceToLocalPos( vector localPos, float time, float easeIn, float easeOut )

void NonPhysicsMoveWithGravity( vector velocityForOthers, vector fakeGravity )

void NonPhysicsRotateTo( vector angles, float time, float easeIn, float easeOut )

Only usable by expensive movers

void NonPhysicsRotate( vector angles, float speed )

Only usable by expensive movers

void NonPhysicsStop()

Immediately stop this mover from moving

Behaviour

void ChangeNPCPathsOnMove( bool recalculate )

void SetPusher( bool isPusher )

Pushers move everything that stands on top of them or next to them and can also kill entities by crushing them.

void NonPhysicsSetRotateModeLocal( bool useLocal )

void PhysicsDummyEnableMotion( bool enabled )

Examples

    entity mover = CreateScriptMover( <0,0,0> )

    // moving the mover to <0,0,10> in 1 second
    mover.NonPhysicsMoveTo( <0,0,10>, 1, 0, 0 )

    // wating so the mover gets to the destination
    wait 1

    // sending it back
    mover.NonPhysicsMoveTo( <0,0,0>, 1, 0, 0 )

    // then stoping the mover in 0.5 seconds
    wait 0.5
    mover.NonPhysicsStop()
    // creating a elevator
    // using a mover with a model
    entity mover = CreateScriptMoverModel( $"models/props/turret_base/turret_base.mdl", < -40.5605, -1827.87, -223.944 >, <0,0,0>, SOLID_VPHYSICS, 1000 )
    mover.SetPusher( true ) // making it into a pusher

    // for loop to move the elevator up and down
    for(;;)
    {
        mover.NonPhysicsMoveTo( < -35.4312, -1827.87, 523.046 >, 4.8, 0.1, 0.1 )
        wait 6

        mover.NonPhysicsMoveTo( < -35.4312, -1827.87, -223.944 >, 4.8, 0.1, 0.1 )
        wait 6
    }
    // Phase shifting the player to a destination
    // setting a position
    vector destination = <250,1000,100>
    // checking if the player is valid
    if ( IsValid( player ) )
    {
        // creating the mover
        entity mover = CreateOwnedScriptMover( player )
        player.SetParent( mover ) // parenting the player ( so they move with the mover )
        mover.NonPhysicsMoveTo( destination, 0.5, 0, 0 ) // saying to the moveer to move
        vector angles = player.GetAngles() // angles saved
        PhaseShift( player, 0.1, 1 ) // phase shifitng the player
        player.SetAngles( angles ) // setting the player to the original angles
    }
    wait 0.6 // wating so the mover moves

    if ( IsValid( player ) )
    {
        player.ClearParent() // removing the player from the mover
    }