Difference between revisions of "API RegisterUserCommand"

From Vendetta Lua
Jump to: navigation, search
(split)
 
 
Line 27: Line 27:
 
RegisterUserCommand("printsomething", printfunc, "test")</source><br>
 
RegisterUserCommand("printsomething", printfunc, "test")</source><br>
 
Registers the command "printsomething" that calls a function that prints the text "test" and the first argument appended<br>
 
Registers the command "printsomething" that calls a function that prints the text "test" and the first argument appended<br>
 +
<br>
 +
'''Additional information'''
 +
<br>
 +
If you are authoring a plugin, please consider only using this function once within your code. Below is an example of how this might be done.
 +
<source lang="lua">
 +
-- myplugin/main.lua
 +
declare("myplugin", {})
 +
myplugin.commands = {}
 +
myplugin.commands.start = function(args)
 +
  -- handle start
 +
  print("Starting")
 +
end
 +
myplugin.commands.stop = function(args)
 +
  -- handle stop
 +
  print("Stopping")
 +
end
 +
RegisterUserCommand("myplugin", function(_, args)
 +
if(args ~= nil) then
 +
local func = myplugin.commands[args[1]]
 +
if (func ~= nil) then
 +
table.remove(args, 1)
 +
func(args)
 +
return
 +
end
 +
print("Invalid command")
 +
end
 +
-- do something if no sub-command is requested
 +
print("myplugin v1.0")
 +
end)</source><br>
 +
 +
This setup allows a plugin user to access the functions with /myplugin start, and /myplugin stop.
 +
 
<br>
 
<br>

Latest revision as of 00:41, 21 June 2009

RegisterUserCommand

Definition: RegisterUserCommand(string commandname, func callback(dataarg, {arguments1, ..}), data) -> nil
Description:
hook up object to command
Arguments:
commandname string containing the command
callback function accepting two arguments to run when command is executed
dataarg see data
arguments1 arguments of the command (Note: if there are no arguments the table is nil not an empty table.)
data data to pass callback
Example:

-- function to call when the command is entered
local function printfunc(data, args)
  -- data contains the third parameter of RegisterUserCommand
  local str = tostring(data)
  -- if the command was entered without parameters args is nil otherwise a table containing the parameters
  if args then
    str = str..tostring(args[1])
  end
  print(str)
end
RegisterUserCommand("printsomething", printfunc, "test")

Registers the command "printsomething" that calls a function that prints the text "test" and the first argument appended

Additional information
If you are authoring a plugin, please consider only using this function once within your code. Below is an example of how this might be done.

-- myplugin/main.lua
declare("myplugin", {})
myplugin.commands = {}
myplugin.commands.start = function(args)
  -- handle start
  print("Starting")
end
myplugin.commands.stop = function(args)
  -- handle stop
  print("Stopping")
end
RegisterUserCommand("myplugin", function(_, args) 
	if(args ~= nil) then
		local func = myplugin.commands[args[1]]
		if (func ~= nil) then
			table.remove(args, 1)
			func(args)
			return
		end
		print("Invalid command")
	end
	-- do something if no sub-command is requested
	print("myplugin v1.0")
end)

This setup allows a plugin user to access the functions with /myplugin start, and /myplugin stop.