Modme Forums

Vehicles

Game Modding | Call of Duty: Black Ops 3 | Scripting


ModmeBot:

Thread By: snprym

Are there any tutorials on vehicles? I have a train in my map, but it uses script_structs and some people its better to use vehicles nodes but I dont know how to get them working.


ModmeBot:

Reply By: natesmithzombies

I wrote this a while back and I still haven't messed with the settings for a vehicle. You need to figure out the GDT settings for a vehicle by yourself because I still dont understand it, but here is the scripting aspect that I have used to help others:

Adding a Vehicle to Path Around Your Map

by: NSZ

====================

A. Setting Up the Path

----------------------

1) Insert a starting node in Entity Browser:

Info>Vehicle>node (This vehicle node is for a straight path)

2) Correct the KVP's of the starting node:

- check START_NODE to true

3) Insert a Vehicle

- This is a bit goofy because I dont understand it entirely, but what I do is drag a misc_model onto radiant and then Press N. At the top of Entity Info you can "Remap Class" to vehicle_motd_plane

- If you did it right the plane should be yellow when unselected in the 2D window

4) Now you need to add a Targetname of the plane to anything you want. In my script I make it "motd_plane"

5) Select the plane and then the starting node and press W to link them.

6) Now place successive Vehicle Nodes for the plane to follow.

- Info>Vehicle>Node>rotate is a rotation node. As you rotate the node the plane will adjust to the node's angles

- Select the start node and the new node (in that order) and Press W

7) Repeat step 6 for as many nodes as you want the plane to follow.

Note: you should be able to see a rough estimate of the planes path in radiant while you are doing this. If you dont select view>show>connections on the top toolbar.

Also note the direction and angles of the triangles it will give you an idea of the planes angles.

8) Once you get to the end you can select all the nodes and change their speed. This KVP is already preset to 10. For reference my video used a speed of 30.

9) If you want your plane to always loop you can link the final node to the node after the START_NODE. Then your plane will always go in a circle.

B. Setting Up the Script

-------------------------------

I just threaded this in my mapname.gsc and pasted the function at the bottom:

function test_plane()
{
	level flag::wait_till( "all_players_connected" );
	plane = GetEnt( "motd_plane", "targetname" ); 
	plane_path = GetVehicleNode( plane.target, "targetname" ); 
	plane AttachPath( plane_path ); 
	plane thread follow_path( plane_path );
}

function follow_path( node )
{
	self endon("death");
	self endon("crash_plane");
	
	assert( isdefined( node ), "vehicle_path() called without a path" );
	self notify( "newpath" );

	 // dynamicpaths unique.  node isn't defined by info vehicle node calls to this function
	if( isdefined( node ) )
	{
		self.attachedpath = node; 
	}
	
	pathstart = self.attachedpath; 
	self.currentNode = self.attachedpath; 

	if( !isdefined( pathstart ) )
	{
		return; 
	}

	self AttachPath( pathstart );
	self StartPath();

	self endon( "newpath" );

	nextpoint = pathstart;

	while ( isdefined( nextpoint ) )
	{
		self waittill( "reached_node", nextpoint );	

		self.currentNode = nextpoint;
		
		// the sweet stuff! Pathpoints handled in script as triggers!
		nextpoint notify( "trigger", self );

		if ( isdefined( nextpoint.script_noteworthy ) )
		{
			self notify( nextpoint.script_noteworthy );
			self notify( "noteworthy", nextpoint.script_noteworthy, nextpoint );
		}
		
		waittillframeend; 
	}
}



C. Edit the included vehicle file in the GDT

--------------------------------------------------

There are alot of settings I still dont understand in the GDT, but the biggest thing you need to change is the model and the "Move Ment Settings". I was okay with all the settings in GDT but you may not like them

Also take a look at Health and the settings will be straightforward. Make it invincible if you like.


ModmeBot:

Reply By: snprym

natesmithzombies

I wrote this a while back and I still haven't messed with the settings for a vehicle. You need to figure out the GDT settings for a vehicle by yourself because I still dont understand it, but here is the scripting aspect that I have used to help others:

Adding a Vehicle to Path Around Your Map

by: NSZ

====================

A. Setting Up the Path

----------------------

1) Insert a starting node in Entity Browser:

Info>Vehicle>node (This vehicle node is for a straight path)

2) Correct the KVP's of the starting node:

- check START_NODE to true

3) Insert a Vehicle

- This is a bit goofy because I dont understand it entirely, but what I do is drag a misc_model onto radiant and then Press N. At the top of Entity Info you can "Remap Class" to vehicle_motd_plane

- If you did it right the plane should be yellow when unselected in the 2D window

4) Now you need to add a Targetname of the plane to anything you want. In my script I make it "motd_plane"

5) Select the plane and then the starting node and press W to link them.

6) Now place successive Vehicle Nodes for the plane to follow.

- Info>Vehicle>Node>rotate is a rotation node. As you rotate the node the plane will adjust to the node's angles

- Select the start node and the new node (in that order) and Press W

7) Repeat step 6 for as many nodes as you want the plane to follow.

Note: you should be able to see a rough estimate of the planes path in radiant while you are doing this. If you dont select view>show>connections on the top toolbar.

Also note the direction and angles of the triangles it will give you an idea of the planes angles.

8) Once you get to the end you can select all the nodes and change their speed. This KVP is already preset to 10. For reference my video used a speed of 30.

9) If you want your plane to always loop you can link the final node to the node after the START_NODE. Then your plane will always go in a circle.

B. Setting Up the Script

-------------------------------

I just threaded this in my mapname.gsc and pasted the function at the bottom:

function test_plane()
{
	level flag::wait_till( "all_players_connected" );
	plane = GetEnt( "motd_plane", "targetname" ); 
	plane_path = GetVehicleNode( plane.target, "targetname" ); 
	plane AttachPath( plane_path ); 
	plane thread follow_path( plane_path );
}

function follow_path( node )
{
	self endon("death");
	self endon("crash_plane");
	
	assert( isdefined( node ), "vehicle_path() called without a path" );
	self notify( "newpath" );

	 // dynamicpaths unique.  node isn't defined by info vehicle node calls to this function
	if( isdefined( node ) )
	{
		self.attachedpath = node; 
	}
	
	pathstart = self.attachedpath; 
	self.currentNode = self.attachedpath; 

	if( !isdefined( pathstart ) )
	{
		return; 
	}

	self AttachPath( pathstart );
	self StartPath();

	self endon( "newpath" );

	nextpoint = pathstart;

	while ( isdefined( nextpoint ) )
	{
		self waittill( "reached_node", nextpoint );	

		self.currentNode = nextpoint;
		
		// the sweet stuff! Pathpoints handled in script as triggers!
		nextpoint notify( "trigger", self );

		if ( isdefined( nextpoint.script_noteworthy ) )
		{
			self notify( nextpoint.script_noteworthy );
			self notify( "noteworthy", nextpoint.script_noteworthy, nextpoint );
		}
		
		waittillframeend; 
	}
}



C. Edit the included vehicle file in the GDT

--------------------------------------------------

There are alot of settings I still dont understand in the GDT, but the biggest thing you need to change is the model and the "Move Ment Settings". I was okay with all the settings in GDT but you may not like them

Also take a look at Health and the settings will be straightforward. Make it invincible if you like.

vehicle_motd_plane isnt there when i type "veh" the only thing that comes up is veh_t7_civ_citycar_destructible.


ModmeBot:

Reply By: natesmithzombies

snprym
natesmithzombies

I wrote this a while back and I still haven't messed with the settings for a vehicle. You need to figure out the GDT settings for a vehicle by yourself because I still dont understand it, but here is the scripting aspect that I have used to help others:

Adding a Vehicle to Path Around Your Map

by: NSZ

====================

A. Setting Up the Path

----------------------

1) Insert a starting node in Entity Browser:

Info>Vehicle>node (This vehicle node is for a straight path)

2) Correct the KVP's of the starting node:

- check START_NODE to true

3) Insert a Vehicle

- This is a bit goofy because I dont understand it entirely, but what I do is drag a misc_model onto radiant and then Press N. At the top of Entity Info you can "Remap Class" to vehicle_motd_plane

- If you did it right the plane should be yellow when unselected in the 2D window

4) Now you need to add a Targetname of the plane to anything you want. In my script I make it "motd_plane"

5) Select the plane and then the starting node and press W to link them.

6) Now place successive Vehicle Nodes for the plane to follow.

- Info>Vehicle>Node>rotate is a rotation node. As you rotate the node the plane will adjust to the node's angles

- Select the start node and the new node (in that order) and Press W

7) Repeat step 6 for as many nodes as you want the plane to follow.

Note: you should be able to see a rough estimate of the planes path in radiant while you are doing this. If you dont select view>show>connections on the top toolbar.

Also note the direction and angles of the triangles it will give you an idea of the planes angles.

8) Once you get to the end you can select all the nodes and change their speed. This KVP is already preset to 10. For reference my video used a speed of 30.

9) If you want your plane to always loop you can link the final node to the node after the START_NODE. Then your plane will always go in a circle.

B. Setting Up the Script

-------------------------------

I just threaded this in my mapname.gsc and pasted the function at the bottom:

function test_plane()
{
	level flag::wait_till( "all_players_connected" );
	plane = GetEnt( "motd_plane", "targetname" ); 
	plane_path = GetVehicleNode( plane.target, "targetname" ); 
	plane AttachPath( plane_path ); 
	plane thread follow_path( plane_path );
}

function follow_path( node )
{
	self endon("death");
	self endon("crash_plane");
	
	assert( isdefined( node ), "vehicle_path() called without a path" );
	self notify( "newpath" );

	 // dynamicpaths unique.  node isn't defined by info vehicle node calls to this function
	if( isdefined( node ) )
	{
		self.attachedpath = node; 
	}
	
	pathstart = self.attachedpath; 
	self.currentNode = self.attachedpath; 

	if( !isdefined( pathstart ) )
	{
		return; 
	}

	self AttachPath( pathstart );
	self StartPath();

	self endon( "newpath" );

	nextpoint = pathstart;

	while ( isdefined( nextpoint ) )
	{
		self waittill( "reached_node", nextpoint );	

		self.currentNode = nextpoint;
		
		// the sweet stuff! Pathpoints handled in script as triggers!
		nextpoint notify( "trigger", self );

		if ( isdefined( nextpoint.script_noteworthy ) )
		{
			self notify( nextpoint.script_noteworthy );
			self notify( "noteworthy", nextpoint.script_noteworthy, nextpoint );
		}
		
		waittillframeend; 
	}
}



C. Edit the included vehicle file in the GDT

--------------------------------------------------

There are alot of settings I still dont understand in the GDT, but the biggest thing you need to change is the model and the "Move Ment Settings". I was okay with all the settings in GDT but you may not like them

Also take a look at Health and the settings will be straightforward. Make it invincible if you like.

vehicle_motd_plane isnt there when i type "veh" the only thing that comes up is veh_t7_civ_citycar_destructible.

Yeah thats what I meant by you need to make your own vehicle in a GDT. That was a vehicle I created


ModmeBot:

Reply By: snprym

natesmithzombies
snprym
natesmithzombies

I wrote this a while back and I still haven't messed with the settings for a vehicle. You need to figure out the GDT settings for a vehicle by yourself because I still dont understand it, but here is the scripting aspect that I have used to help others:

Adding a Vehicle to Path Around Your Map

by: NSZ

====================

A. Setting Up the Path

----------------------

1) Insert a starting node in Entity Browser:

Info>Vehicle>node (This vehicle node is for a straight path)

2) Correct the KVP's of the starting node:

- check START_NODE to true

3) Insert a Vehicle

- This is a bit goofy because I dont understand it entirely, but what I do is drag a misc_model onto radiant and then Press N. At the top of Entity Info you can "Remap Class" to vehicle_motd_plane

- If you did it right the plane should be yellow when unselected in the 2D window

4) Now you need to add a Targetname of the plane to anything you want. In my script I make it "motd_plane"

5) Select the plane and then the starting node and press W to link them.

6) Now place successive Vehicle Nodes for the plane to follow.

- Info>Vehicle>Node>rotate is a rotation node. As you rotate the node the plane will adjust to the node's angles

- Select the start node and the new node (in that order) and Press W

7) Repeat step 6 for as many nodes as you want the plane to follow.

Note: you should be able to see a rough estimate of the planes path in radiant while you are doing this. If you dont select view>show>connections on the top toolbar.

Also note the direction and angles of the triangles it will give you an idea of the planes angles.

8) Once you get to the end you can select all the nodes and change their speed. This KVP is already preset to 10. For reference my video used a speed of 30.

9) If you want your plane to always loop you can link the final node to the node after the START_NODE. Then your plane will always go in a circle.

B. Setting Up the Script

-------------------------------

I just threaded this in my mapname.gsc and pasted the function at the bottom:

function test_plane()
{
	level flag::wait_till( "all_players_connected" );
	plane = GetEnt( "motd_plane", "targetname" ); 
	plane_path = GetVehicleNode( plane.target, "targetname" ); 
	plane AttachPath( plane_path ); 
	plane thread follow_path( plane_path );
}

function follow_path( node )
{
	self endon("death");
	self endon("crash_plane");
	
	assert( isdefined( node ), "vehicle_path() called without a path" );
	self notify( "newpath" );

	 // dynamicpaths unique.  node isn't defined by info vehicle node calls to this function
	if( isdefined( node ) )
	{
		self.attachedpath = node; 
	}
	
	pathstart = self.attachedpath; 
	self.currentNode = self.attachedpath; 

	if( !isdefined( pathstart ) )
	{
		return; 
	}

	self AttachPath( pathstart );
	self StartPath();

	self endon( "newpath" );

	nextpoint = pathstart;

	while ( isdefined( nextpoint ) )
	{
		self waittill( "reached_node", nextpoint );	

		self.currentNode = nextpoint;
		
		// the sweet stuff! Pathpoints handled in script as triggers!
		nextpoint notify( "trigger", self );

		if ( isdefined( nextpoint.script_noteworthy ) )
		{
			self notify( nextpoint.script_noteworthy );
			self notify( "noteworthy", nextpoint.script_noteworthy, nextpoint );
		}
		
		waittillframeend; 
	}
}



C. Edit the included vehicle file in the GDT

--------------------------------------------------

There are alot of settings I still dont understand in the GDT, but the biggest thing you need to change is the model and the "Move Ment Settings". I was okay with all the settings in GDT but you may not like them

Also take a look at Health and the settings will be straightforward. Make it invincible if you like.

vehicle_motd_plane isnt there when i type "veh" the only thing that comes up is veh_t7_civ_citycar_destructible.

Yeah thats what I meant by you need to make your own vehicle in a GDT. That was a vehicle I created

Oh im sorry, didnt get that. Thank you for the instructions.


ModmeBot:

Reply By: natesmithzombies

snprym
natesmithzombies

Yeah thats what I meant by you need to make your own vehicle in a GDT. That was a vehicle I created

Oh im sorry, didnt get that. Thank you for the instructions.

It's alright. Good luck!