Garry's Mod Wiki

Revision Difference

Console_Command_Auto-completion#561119

<cat>Dev.Lua</cat>⤶ <cat>Dev.Game</cat>⤶ # Auto-complete Overview Auto-complete is a feature that predicts words & phrases, it helps the user understand a console command & increase their efficiency whilst using it. ## Auto-completion with functions To create auto-complete for your console command, a function named `AutoComplete` must be created. The function will determine what values are displayed based on what is passed to the function. *@param* `cmd` — Will always be the command, not useful for us right now. (Gives "rp_steamid"). *@param* `stringargs` — Gives us the rest of the input. Typing in "rp_steamid Don" will make stringargs = " Don". In this function we are also meant to return something, a table. This table should contain the set of values we want to display to the user in the autocomplete box. The function below gives the result as seen below the function. ```lua local function AutoComplete(cmd, stringargs) local tbl = { "Test 1", "Test 2", "Test 3", } return tbl end ``` <image src="autocomplete3.jpg"/><br/> The function below gives the result as seen below the function. ```lua local function AutoComplete(cmd, stringargs) --- Trim the arguments & make them lowercase. stringargs = string.Trim(stringargs:lower()) --- Create a new table. local tbl = {} for _, ply in pairs(player.GetAll()) do local name = ply:Nick() if name:lower():find(stringargs) then --- Add the player's name into the auto-complete. name = "rp_steamid \"" .. name .. "\"" table.insert(tbl, name) end end --- Return the table for auto-complete. return tbl end ``` <image src="autocomplete4.jpg"/> <image src="autocomplete5.jpg"/> ## Console command replication Console commands are not replicated. If you'd like to replicate a console command, you'll have to use <page>Global.AddCSLuaFile</page>, or create custom behavior on both the server & the client. Special thanks to old-time contributors for the images. The code was written by shawnjbragdon.