48 lines
1.2 KiB
Lua
48 lines
1.2 KiB
Lua
-- var.lua
|
|
-- ----------------------------------------------------------
|
|
-- Accessing MUSHclient variables through the 'var' table.
|
|
-- See forum thread:
|
|
-- http://www.gammon.com.au/forum/?id=4904
|
|
|
|
--[[
|
|
|
|
* Set a variable by assigning something to it.
|
|
* Delete a variable by assigning nil to it.
|
|
* Get a variable by retrieving its value, will return nil if the variable does not exist.
|
|
|
|
Examples:
|
|
|
|
var.target = "kobold" -- set MUSHclient variable 'target' to kobold
|
|
print (var.target) -- print contents of MUSHclient variable
|
|
|
|
--]]
|
|
|
|
-- ----------------------------------------------------------
|
|
|
|
var = {} -- variables table
|
|
|
|
setmetatable (var,
|
|
{
|
|
-- called to access an entry
|
|
__index =
|
|
function (t, name)
|
|
return GetVariable (name)
|
|
end,
|
|
|
|
-- called to change or delete an entry
|
|
__newindex =
|
|
function (t, name, val)
|
|
local result
|
|
if val == nil then -- nil deletes it
|
|
result = DeleteVariable (name)
|
|
else
|
|
result = SetVariable (name, tostring (val))
|
|
end
|
|
-- warn if they are using bad variable names
|
|
if result == error_code.eInvalidObjectLabel then
|
|
error ("Bad variable name '" .. name .. "'", 2)
|
|
end
|
|
end
|
|
})
|
|
|
|
return var |