This template is no longer in use as it results in poor readability.
This function will attach a scripting function (handler) to a console command, so that whenever a player or administrator uses the command the function is called.
Multiple command handlers can be attached to a single command, and they will be called in the order that the handlers were attached. Equally, multiple commands can be handled by a single function, and the commandName parameter used to decide the course of action.
player playerSource, string commandName, [string arg1, string arg2, ...]
- playerSource: The player who triggered the command. If not triggered by a player (e.g. by admin), this will be false.
- commandName: The name of the command triggered. This is useful if multiple commands go through one function.
- arg1, arg2, ...: Each word after command name in the original command is passed here in a seperate variable. If there is no value for an argument, its variable will contain nil. You can deal with a variable number of arguments using the vararg expression, as shown in Example 3 below.
string commandName, [string arg1, string arg2, ...]
- commandName: The name of the command triggered. This is useful if multiple commands go through one function.
- arg1, arg2, ...: Each word after command name in the original command is passed here in a seperate variable. If there is no value for an argument, its variable will contain nil. You can deal with a variable number of arguments using the vararg expression, as shown in Example 3 below.
Example 1: This example defines a command handler for the command createmarker. This will create a red marker at the position of the player player who uses it.
-- Define our function that will handle this command
function consoleCreateMarker ( playerSource )
-- If a player triggered it (rather than the admin) then
if ( playerSource ) then
-- Get that player's position
local x, y, z = getElementPosition ( playerSource )
-- Create a size 2, red checkpoint marker at their position
createMarker ( x, y, z, "checkpoint", 2, 255, 0, 0, 255 )
-- Output it in his chat box
outputChatBox ( "You got a red marker", playerSource )
end
end
-- Attach the 'consoleCreateMarker' function to the "createmarker" command
addCommandHandler ( "createmarker", consoleCreateMarker )
Example 2: This example implements a set_vehicle_color command.
-- Define our function that will handle this command
function consoleSetVehicleColor ( playerSource, commandName, col1, col2, col3, col4 )
-- If a player triggered this in-game
if ( playerSource ) then
-- Get the player's vehicle
local playerVehicle = getPlayerOccupiedVehicle ( playerSource )
-- If the player is in a vehicle and we've got at least 1 parameter
if ( playerVehicle and col1 ) then
-- Get the vehicle's existing color and use it if fewer than 4 arguments were passed
local exCol1, exCol2, exCol3, exCol4 = getVehicleColor ( playerVehicle )
if not col2 then col2 = exCol2 end
if not col3 then col3 = exCol3 end
if not col4 then col4 = exCol4 end
-- Set the vehicle's color
setVehicleColor ( playerVehicle, col1, col2, col3, col4 )
else
-- If we didn't get at least 1 parameter or the player doesn't have a vehicle, display some help text
outputConsole ( "This function will set your current vehicle's colors. A vehicle can have up to 4 colors.", playerSource )
outputConsole ( "Syntax: set_vehicle_color color1 [ color2 color3 color4 ]", playerSource )
outputConsole ( "You must be in a vehicle to use this function.", playerSource )
end
end
end
-- Attach the 'consoleSetVehicleColor' function to the "set_vehicle_color" command
addCommandHandler ( "set_vehicle_color", consoleSetVehicleColor )
Example 3: This example makes use of Lua's vararg expression to implement a check_parameters command to count the number of parameters passed, merge them all into a single string and output it.
-- Define our function that will handle this command (which can accept a variable number of arguments after commandName)
function consoleCheckParameters ( playerSource, commandName, ... )
-- If a player, not an admin, triggered it,
if playerSource then
-- Pack all extra arguments passed in a table
local parametersTable = {...}
-- Get the number of arguments in that table
local parameterCount = #parametersTable
-- Output it to the player's chatbox
outputChatBox ( "Number of parameters: " .. parameterCount, playerSource )
-- Join them together in a single comma-separated string
local stringWithAllParameters = table.concat( parametersTable, ", " )
-- Output this parameter list to the player's chatbox
outputChatBox ( "Parameters passed: " .. stringWithAllParameters, playerSource )
end
end
-- Attach the 'consoleCheckParameters' function to the "check_parameters" command
addCommandHandler ( "check_parameters", consoleCheckParamters )
Example 1: This creates a GUI window and allows a player to change its alpha (transparency) value with a command. Note that, in a clientside script, the player using the command is not passed as a parameter to the handler function, since it is always the local player.
--Create a window
myWindow = guiCreateWindow ( 0.30, 0.10, 0.5, 0.60, "GUI window title", true )
--Add a command handler to change the alpha of the GUI window. Usage example: 'alpha 0.15'
function changeAlpha ( commandName, alphaAmount )
-- All command parameters are strings, so we'll convert the value to a number first
alphaAmount = tonumber(alphaAmount)
guiSetAlpha ( myGridList, alphaAmount )
end
addCommandHandler ( "alpha", changeAlpha )