LUA:RD2Tool
From GMod Wiki
Lua: RD2 Toolguns |
Description: | How to create RD2 Toolguns. |
Original Author: | KillerLUA |
Created: | March 12, 2010 |
Contents |
Introduction
RD2 has made it extremely easy for users to add entites to toolguns, you only have to set a few things and your away.
In this tutorial. I will show you how to add the black hole cache, however. It will work with just about any other entity you throw at it!
As in all my other tutorials, you will need a gamemode or pre-coded addon to throw this in with.
Let's create the toolgun!
Setting up the files
Gamemode
Create a new lua file called admin_spawnable.lua in YourGamemode/entites/weapons/gmod_tool/stools/admin_spawnable.lua
Now, let's move on. First we are going to start out with some base code.
Addon
Create a new lua file called admin_spawnable.lua in YourAddon/lua/weapons/gmod_tool/stools/admin_spawnable.lua
Now, let's move on. First we are going to start out with some base coded.
Coding it
TOOL.Category = '(Admin Spawnables)' --Name of catagory TOOL.Name = '#Admin Spawnables' --Name of toolgun TOOL.Command = nil --Just set this to nil TOOL.ConfigName = '' --Set it to '' TOOL.Tab = "Life Support 2" --The tab we want the catagory and tool to appear in TOOL.ClientConVar['type'] = 'black_hole_cache' --Default entity selected TOOL.ClientConVar['model'] = 'models/Combine_Helicopter/helicopter_bomb01.mdl' --Default model of entity selected cleanup.Register('admin_spawn') --Add a cleanup
As explained in the comments, we have set a few key things to the tool. If we don't set TOOL.Tab it will appear in the default tool tab.
Now, we're going to add the language. An important thing is that the name of the lua file, excluding the .lua extension is the lua name of the toolgun. So while adding language, you must use the lua name in the middle like this:
if ( CLIENT ) then language.Add( 'Tool_admin_spawnable_name', 'Admin Spawnables' ) language.Add( 'Tool_admin_spawnable_desc', 'Create an admin spawnable sent on a surface.' ) language.Add( 'Tool_admin_spawnable_0', 'Left-Click: Spawn a SENT.' ) language.Add( 'Undone_admin_spawnable', 'Admin Spawnable undone' ) language.Add( 'Cleanup_admin_spawnable', 'Admin Spawnables' ) language.Add( 'Cleaned_admin_spawnable', 'Cleaned up all admin spawnables.' ) language.Add( 'SBoxLimit_admin_spawnable', 'Maximum Admin Spawnables Reached' ) end
The if client statement checks that the lua file is being run on the client, this way you won't get clientside code being run on the server and causing heavy errors.
Next, we are going to add the rest of the code:
if not ( RES_DISTRIB == 2 ) then Error("Please Install Resource Distribution 2 Addon.'" ) return end --Checks if the RD version is 2. If it's not two, don't run the code. local admin_spawnables = {} --Create a new table local admin_spawnables_models = { { 'Black Hole Cache', 'models/Combine_Helicopter/helicopter_bomb01.mdl', 'black_hole_cache' } --Add the Black Hole Cache to the list }
Now, and the easy bit of the toolgun. Is registering it, this will make the toolgun usable:
RD2_ToolRegister( TOOL, admin_spawnables_models, nil, "admin_spawnable", 30, admin_spawnable ) --RD2_ToolRegister( "The toolgun", "Models table", "Always set to nil", "Unique name", "Maximum of the entites", "Toolgun LUA Name")
Final code
This is all the code done, put it together and get:
TOOL.Category = '(Admin Spawnables)' --Name of catagory TOOL.Name = '#Admin Spawnables' --Name of toolgun TOOL.Command = nil --Just set this to nil TOOL.ConfigName = '' --Set it to '' TOOL.Tab = "Life Support 2" --The tab we want the catagory and tool to appear in TOOL.ClientConVar['type'] = 'black_hole_cache' --Default entity selected TOOL.ClientConVar['model'] = 'models/Combine_Helicopter/helicopter_bomb01.mdl' --Default model of entity selected cleanup.Register('admin_spawn') --Add a cleanup if ( CLIENT ) then language.Add( 'Tool_admin_spawnable_name', 'Admin Spawnables' ) language.Add( 'Tool_admin_spawnable_desc', 'Create an admin spawnable sent on a surface.' ) language.Add( 'Tool_admin_spawnable_0', 'Left-Click: Spawn a SENT.' ) language.Add( 'Undone_admin_spawnable', 'Admin Spawnable undone' ) language.Add( 'Cleanup_admin_spawnable', 'Admin Spawnables' ) language.Add( 'Cleaned_admin_spawnable', 'Cleaned up all admin spawnables.' ) language.Add( 'SBoxLimit_admin_spawnable', 'Maximum Admin Spawnables Reached' ) end if not ( RES_DISTRIB == 2 ) then Error("Please Install Resource Distribution 2 Addon.'" ) return end --Checks if the RD version is 2. If it's not two, don't run the code. local admin_spawnables = {} --Create a new table local admin_spawnables_models = { { 'Black Hole Cache', 'models/Combine_Helicopter/helicopter_bomb01.mdl', 'black_hole_cache' } --Add the Black Hole Cache to the list } RD2_ToolRegister( TOOL, admin_spawnables_models, nil, "admin_spawnable", 30, admin_spawnable ) --RD2_ToolRegister( "The toolgun", "Models table", "Always set to nil", "Unique name", "Maximum of the entites", "Toolgun LUA Name")