Difference between revisions of "Manual:Miscellaneous Functions"
(→feedTriggers: update to reflect change to using UTF-8 in Mudlet 4.0.0 and further changes pending) |
m (→feedTriggers) |
||
Line 102: | Line 102: | ||
:string which is sent to the trigger processing system almost as if it came from the MUD Game Server. This string must be byte encoded in a manner to match the currently selected ''Server Encoding''. | :string which is sent to the trigger processing system almost as if it came from the MUD Game Server. This string must be byte encoded in a manner to match the currently selected ''Server Encoding''. | ||
* ''dataIsUtf8Encoded:'' | * ''dataIsUtf8Encoded:'' | ||
− | :from TBA a boolean which, when ''false'' is used to defeat the conversion of ''text'' from UTF-8 to the currently selected MUD Game Server which was introduced in Mudlet 4.0.0; prior to that version the text had to be encoded directly in whatever encoding the setting in the preferences was set to - this could involve using the Lua string character escaping mechanism of ''\'' and a (one to three digit) base 10 number for character codes from ''\1'' to ''\255''. By default from '''4.0.0''' it is assumed that the text is UTF-8 encoded but since TBA it is possible to revert to the original behavior if required - this is only likely to be useful to Mudlet developers testing things or possibly to those who are creating handlers for Telnet protocols within the Lua subsystem who need to avoid the transcoding of individual protocol bytes when they might otherwise be seen as extended ASCII characters. | + | :from TBA a boolean which, when ''false'' is used to defeat the conversion of ''text'' from UTF-8 to the currently selected MUD Game Server encoding, which was introduced in Mudlet 4.0.0; prior to that version the text had to be encoded directly in whatever encoding the setting in the preferences was set to - this could involve using the Lua string character escaping mechanism of ''\'' and a (one to three digit) base 10 number for character codes from ''\1'' to ''\255''. By default from '''4.0.0''' it is assumed that the text is UTF-8 encoded but since TBA it is possible to revert to the original behavior if required - this is only likely to be useful to Mudlet developers testing things or possibly to those who are creating handlers for Telnet protocols within the Lua subsystem who need to avoid the transcoding of individual protocol bytes when they might otherwise be seen as extended ASCII characters. |
;Returns | ;Returns |
Revision as of 18:02, 6 October 2019
Miscellaneous Functions
addSupportedTelnetOption
- addSupportedTelnetOption(option)
- Adds a telnet option, which when queried by a MUD server, Mudlet will return DO (253) on. Use this to register the telnet option that you will be adding support for with Mudlet - see additional protocols section for more.
- Example
<event handlers that add support for MSDP... see http://www.mudbytes.net/forum/comment/63920/#c63920 for an example>
-- register with Mudlet that it should not decline the request of MSDP support
local TN_MSDP = 69
addSupportedTelnetOption(TN_MSDP)
alert
- alert([seconds])
- alerts the user to something happening - makes Mudlet flash in the Windows window bar, bounce in the macOS dock, or flash on Linux.
Note: Available in Mudlet 3.2+
- Parameters
- seconds:
- (optional) number of seconds to have the alert for. If not provided, Mudlet will flash until the user opens Mudlet again.
- Example
-- flash indefinitely until Mudlet is open
alert()
-- flash for just 3 seconds
alert(3)
closeMudlet
- closeMudlet()
- Closes Mudlet and all profiles immediately.
- See also: saveProfile()
Note: Use with care. This potentially lead to data loss, if "save on close" is not activated and the user didn't save the profile manually as this will NOT ask for confirmation nor will the profile be saved. Also it does not consider if there are other profiles open if multi-playing: they all will be closed!
Note: Available in Mudlet 3.1+
- Example
closeMudlet()
denyCurrentSend
- denyCurrentSend()
- Cancels a send() or user-entered command, but only if used within a sysDataSendRequest event.
- Example
-- cancels all "eat hambuger" commands
function cancelEatHamburger(event, command)
if command == "eat hamburger" then
denyCurrentSend()
cecho("<red>Denied! Didn't let the command through.\n")
end
end
registerAnonymousEventHandler("sysDataSendRequest", "cancelEatHamburger")
expandAlias
- expandAlias(command, [echoBackToBuffer])
- Runs the command as if it was from the command line - so aliases are checked and if none match, it's sent to the game unchanged.
- Parameters
- command
- Text of the command you want to send to the game. Will be checked for aliases.
- echoBackToBuffer
- (optional) If false, the command will not be echoed back in your buffer. Defaults to true if omitted.
Note: Using expandAlias is not recommended anymore as it is not very robust and may lead to problems down the road. The recommendation is to use lua functions instead. See Manual:Functions_vs_expandAlias for details and examples.
Note: If you want to be using the matches table after calling expandAlias, you should save it first, as, e.g. local oldmatches = matches before calling expandAlias, since expandAlias will overwrite it after using it again.
Note: Since Mudlet 3.17.1 the optional second argument to echo the command on screen will be ineffective whilst the game server has negotiated the telnet ECHO option to provide the echoing of text we send to him.
- Example
expandAlias("t rat")
-- don't echo the command
expandAlias("t rat", false)
feedTriggers
- feedTriggers(text)
- feedTriggers(text[, dataIsUtf8Encoded = true]) from Mudlet TBA
- This function will have Mudlet parse the given text as if it came from the MUD - one great application is trigger testing. The built-in `echo alias provides this functionality as well.
- Parameters
- text:
- string which is sent to the trigger processing system almost as if it came from the MUD Game Server. This string must be byte encoded in a manner to match the currently selected Server Encoding.
- dataIsUtf8Encoded:
- from TBA a boolean which, when false is used to defeat the conversion of text from UTF-8 to the currently selected MUD Game Server encoding, which was introduced in Mudlet 4.0.0; prior to that version the text had to be encoded directly in whatever encoding the setting in the preferences was set to - this could involve using the Lua string character escaping mechanism of \ and a (one to three digit) base 10 number for character codes from \1 to \255. By default from 4.0.0 it is assumed that the text is UTF-8 encoded but since TBA it is possible to revert to the original behavior if required - this is only likely to be useful to Mudlet developers testing things or possibly to those who are creating handlers for Telnet protocols within the Lua subsystem who need to avoid the transcoding of individual protocol bytes when they might otherwise be seen as extended ASCII characters.
- Returns
- (prior to TBA) nothing
- (since TBA) true on success, nil and an error message if the text contains characters that cannot be conveyed by the current Game Server encoding.
Note: The trigger processing system also requires that some data is (or appears to be) received from the game to process the feedTriggers(), so use a send("\n") to get a new prompt (thus new data) right after or ensure that the text includes a new-line "\n" character so as to simulate a line of data from the Game Server.
Note: It is important to ensure that in Mudlet 4.0.0 and beyond the text data only contains characters that can be encoded in the current Game Server encoding, from TBA the content is checked that it can successfully be converted from the UTF-8 that the Mudlet Lua subsystem uses internally into that particular encoding and if it cannot the function call will fail and not pass any of the data, this will be significant if the text component contains any characters that are not plain ASCII.
- Example
-- try using this on the command line
`echo This is a sample line from the game
-- You can use \n to represent a new line - you also want to use it before and after the text you’re testing, like so:
feedTriggers("\nYou sit yourself down.\n")
send("\n")
-- The function also accept ANSI color codes that are used in MUDs. A sample table can be found http://codeworld.wikidot.com/ansicolorcodes
feedTriggers("\nThis is \27[1;32mgreen\27[0;37m, \27[1;31mred\27[0;37m, \27[46mcyan background\27[0;37m," ..
"\27[32;47mwhite background and green foreground\27[0;37m.\n")
send("\n")
getModulePath
- path = getModulePath(module name)
- Returns the location of a module on the disk. If the given name does not correspond to an installed module, it'll return
nil
- See also: installModule()
Note: Available in Mudlet 3.0+
- Example
getModulePath("mudlet-mapper")
getModulePriority
- priority = getModulePriority(module name)
- Returns the priority of a module as an integer. This determines the order modules will be loaded in - default is 0. Useful if you have a module that depends on another module being loaded first, for example.
- See also: setModulePriority()
- Example
getModulePriority("mudlet-mapper")
getMudletHomeDir
- getMudletHomeDir()
- Returns the current home directory of the current profile. This can be used to store data, save statistical information, or load resource files from packages.
Note: intentionally uses forward slashes /
as separators on Windows since stylesheets require them.
- Example
-- save a table
table.save(getMudletHomeDir().."/myinfo.dat", myinfo)
-- or access package data. The forward slash works even on Windows fine
local path = getMudletHomeDir().."/mypackagename"
getMudletLuaDefaultPaths
- getMudletLuaDefaultPaths()
- Returns the compiled in default location that this version of Mudlet tries as the last ditch attempt to find the luaGlobal.lua Lua script. luaGlobal.lua is the "loader" for all the Mudlet (and included Geyser but NOT Vyzor GUI management system packages) - failure to find this when a profile is loaded will be associated with a:
[ ERROR ] - LuaGlobal.lua compile error - please report!
message in the main console, instead of the expected:
[ OK ] - Mudlet-lua API & Geyser Layout manager loaded.
Note: This command is initially for *nix (but NOT MacOs) versions that need to support having shared, read-only copies of non-executable files used by an application in a directory that is not directly associated with that executable; for MacOs and Windows version it will not return a useful result either an empty string "" or a single slash "/". It is currently present only in the development branch of code in the GitHub repository and will not be included in the 3.0.0 release or its previews. This command was renamed from getMudletLuaDefaultPath().
getMudletVersion
- getMudletVersion(style)
- Returns the current Mudlet version. Note that you shouldn't hardcode against a specific Mudlet version if you'd like to see if a function is present - instead, check for the existence of the function itself. Otherwise, checking for the version can come in handy if you'd like to test for a broken function or so on.
Note: Available since Mudlet 3.0.0-alpha.
- Parameters
- style:
- (optional) allows you to choose what you'd like returned. By default, if you don't specify it, a key-value table with all the values will be returned: major version, minor version, revision number and the optional build name.
- Values you can choose
- "string":
- Returns the full Mudlet version as text.
- "table":
- Returns the full Mudlet version as four values (multi-return)
- "major":
- Returns the major version number (the first one).
- "minor":
- Returns the minor version number (the second one).
- "revision":
- Returns the revision version number (the third one).
- "build":
- Returns the build of Mudlet (the ending suffix, if any).
- Example
-- see the full Mudlet version as text:
getMudletVersion("string")
-- returns for example "3.0.0-alpha"
-- check that the major Mudlet version is at least 3:
if getMudletVersion("major") >= 3 then echo("You're running on Mudlet 3+!") end
-- if you'd like to see if a function is available however, test for it explicitly instead:
if setAppStyleSheet then
-- example credit to http://qt-project.org/doc/qt-4.8/stylesheet-examples.html#customizing-qscrollbar
setAppStyleSheet[[
QScrollBar:vertical {
border: 2px solid grey;
background: #32CC99;
width: 15px;
margin: 22px 0 22px 0;
}
QScrollBar::handle:vertical {
background: white;
min-height: 20px;
}
QScrollBar::add-line:vertical {
border: 2px solid grey;
background: #32CC99;
height: 20px;
subcontrol-position: bottom;
subcontrol-origin: margin;
}
QScrollBar::sub-line:vertical {
border: 2px solid grey;
background: #32CC99;
height: 20px;
subcontrol-position: top;
subcontrol-origin: margin;
}
QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {
border: 2px solid grey;
width: 3px;
height: 3px;
background: white;
}
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
background: none;
}
]]
end
getOS
- getOS()
- Returns the name of the Operating system. Useful for applying particular scripts only under particular operating systems, such as applying a stylesheet only when the OS is Windows.
- Returned string will be one of these: "cygwin", "windows", "mac", "linux", "hurd", "freebsd", "kfreebsd", "openbsd", "netbsd", "bsd4", "unix" or "unknown" otherwise.
- Example
display(getOS())
if getOS() == "windows" then
echo("\nWindows OS detected.\n")
else
echo("\nDetected Operating system is NOT windows.\n")
end
getProfileName
- getProfileName()
- Returns the name of the profile. Useful when combined with raiseGlobalEvent() to know which profile a global event came from.
Note: Available in Mudlet 3.1+
- Example
-- if connected to the Achaea profile, will print Achaea to the main console
echo(getProfileName())
getCommandSeparator
- getCommandSeparator()
- Returns the command separator in use by the profile.
Note: Available in Mudlet 3.18+
- Example
-- if your command separator is ;;, the following would send("do thing 1;;do thing 2").
-- This way you can determine what it is set to and use that and share this script with
-- someone who has changed their command separator.
-- Note: This is not really the preferred way to send this, using sendAll("do thing 1", "do thing 2") is,
-- but this illustates the use case.
local s = getCommandSeparator()
expandAlias("do thing 1" .. s .. "do thing 2")
getServerEncoding
- getServerEncoding()
- Returns the current server data encoding in use.
- See also: setServerEncoding(), getServerEncodingsList()
- Example
getServerEncoding()
getServerEncodingsList
- getServerEncodingsList()
- Returns an indexed list of the server data encodings that Mudlet knows. This is not the list of encodings the servers knows - there's unfortunately no agreed standard for checking that. See encodings in Mudlet for the list of which encodings are available in which Mudlet version.
- See also: setServerEncoding(), getServerEncoding()
- Example
-- check if UTF-8 is available:
if table.contains(getServerEncodingsList(), "UTF-8") then
print("UTF-8 is available!")
end
getWindowsCodepage
- getWindowsCodepage()
- Returns the current codepage of your Windows system.
Note: Available since Mudlet 3.22 Note: This function only works on Windows - It is only needed internally in Mudlet to enable Lua to work with non-ASCII usernames (e.g. Iksiński, Jäger) for the purposes of IO. Linux and macOS work fine with with these out of the box.
- Example
print(getWindowsCodepage())
installModule
- installModule(location)
- Installs a Mudlet XML, zip, or mpackage as a module.
- Parameters
- location:
- Exact location of the file install.
- See also: uninstallModule()
- Example
installModule([[C:\Documents and Settings\bub\Desktop\myalias.xml]])
installPackage
- installPackage(location)
- Installs a Mudlet XML or package.
- Parameters
- location:
- Exact location of the xml or package to install.
- See also: uninstallPackage()
- Example
installPackage([[C:\Documents and Settings\bub\Desktop\myalias.xml]])
killAnonymousEventHandler
- killAnonymousEventHandler(handler id)
- Disables and removes the given event handler.
- Parameters
- handler id
- ID of the event handler to remove as returned by the registerAnonymousEventHandler function.
- See also: registerAnonymousEventHandler
Note: Available in Mudlet 3.5+.
- Example
-- registers an event handler that prints the first 5 GMCP events and then terminates itself
local counter = 0
local handlerId = registerAnonymousEventHandler("gmcp", function(_, origEvent)
print(origEvent)
counter = counter + 1
if counter == 5 then
killAnonymousEventHandler(handlerId)
end
end)
loadWindowLayout
- loadWindowLayout
- Resets the layout of userwindows (floating miniconsoles) to the last saved state.
- See also: saveWindowLayout()
Note: Available in Mudlet 3.2+
- Example
loadWindowLayout()
mudletOlderThan
- mudletOlderThan(major, [minor], [patch])
- Returns true if Mudlet is older than the given version to check. This is useful if you'd like to use a feature that you can't check for easily, such as coroutines support. However, if you'd like to check if a certain function exists, do not use this and use
if mudletfunction then
- it'll be much more readable and reliable.
- Parameters
- major:
- Mudlet major version to check. Given a Mudlet version 3.0.1, 3 is the major version, second 0 is the minor version, and third 1 is the patch version.
- minor:
- (optional) minor version to check.
- patch:
- (optional) patch version to check.
- Example
-- stop doing the script of Mudlet is older than 3.2
if mudletOlderThan(3,2) then return end
-- or older than 2.1.3
if mudletOlderThan(2, 1, 3) then return end
-- however, if you'd like to check that a certain function is available, like getMousePosition(), do this instead:
if not getMousePosition then return end
-- if you'd like to check that coroutines are supported, do this instead:
if not mudlet.supportscoroutines then return end
openWebPage
- openWebPage(URL)
- Opens the browser to the given webpage.
- Parameters
- URL:
- Exact URL to open.
- Example
openWebPage("http://google.com")
playSoundFile
- playSoundFile(fileName, volume)
- This function plays a sound file (no limit on how many you can start).
- Parameters
- fileName:
- Exact path of the sound file.
- volume:
- Set the volume (in percent) of the sound. If no volume is given, 100 (maximum) is used.
- Optional, available since 3.0
See also: stopSounds()
- Example
-- play a sound in Windows
playSoundFile([[C:\My folder\boing.wav]])
-- play a sound in Linux
playSoundFile([[/home/myname/Desktop/boingboing.wav]])
-- play a sound from a package
playSoundFile(getMudletHomeDir().. [[/mypackage/boingboing.wav]])
-- play a sound in Linux at half volume
playSoundFile([[/home/myname/Desktop/boingboing.wav]], 50)
registerAnonymousEventHandler
- id = registerAnonymousEventHandler(event name, functionReference, [one shot])
- Registers a function to an event handler, not requiring you to set one up via script. See here for a list of Mudlet-raised events. The function may be refered to either by name as a string containing a global function name, or with the lua function object itself.
- The optional
one shot
parameter allows you to automatically kill an event handler after it is done by giving a true value. If the event you waited for did not occur yet, returntrue
from the function to keep it registered.
- The function returns an ID that can be used in killAnonymousEventHandler() to unregister the handler again.
Note: The ability to refer lua functions directly, the one shot
parameter and the returned ID are features of Mudlet 3.5 and above.
- See also
- killAnonymousEventHandler()
- Example
-- example taken from the God Wars 2 (http://godwars2.org) Mudlet UI - forces the window to keep to a certain size
function keepStaticSize()
setMainWindowSize(1280,720)
end -- keepStaticSize
registerAnonymousEventHandler("sysWindowResizeEvent", "keepStaticSize")
-- simple inventory tracker for GMCP enabled games. This version does not leak any of the methods
-- or tables into the global namespace. If you want to access it, you should export the inventory
-- table via an own namespace.
local inventory = {}
local function inventoryAdd()
if gmcp.Char.Items.Add.location == "inv" then
inventory[#inventory + 1] = table.deepcopy(gmcp.Char.Items.Add.item)
end
end
registerAnonymousEventHandler("gmcp.Char.Items.Add", inventoryAdd)
local function inventoryList()
if gmcp.Char.Items.List.location == "inv" then
inventory = table.deepcopy(gmcp.Char.Items.List.items)
end
end
registerAnonymousEventHandler("gmcp.Char.Items.List", inventoryList)
local function inventoryUpdate()
if gmcp.Char.Items.Remove.location == "inv" then
local found
local updatedItem = gmcp.Char.Items.Update.item
for index, item in ipairs(inventory) do
if item.id == updatedItem.id then
found = index
break
end
end
if found then
inventory[found] = table.deepcopy(updatedItem)
end
end
end
registerAnonymousEventHandler("gmcp.Char.Items.Update", inventoryUpdate)
local function inventoryRemove()
if gmcp.Char.Items.Remove.location == "inv" then
local found
local removedItem = gmcp.Char.Items.Remove.item
for index, item in ipairs(inventory) do
if item.id == removedItem.id then
found = index
break
end
end
if found then
table.remove(inventory, found)
end
end
end
registerAnonymousEventHandler("gmcp.Char.Items.Remove", inventoryRemove)
-- downloads a package from the internet and kills itself after it is installed.
local saveto = getMudletHomeDir().."/dark-theme-mudlet.zip"
local url = "http://www.mudlet.org/wp-content/files/dark-theme-mudlet.zip"
registerAnonymousEventHandler(
"sysDownloadDone",
function(_, filename)
if filename ~= saveto then
return true -- keep the event handler since this was not our file
end
installPackage(saveto)
os.remove(b)
end,
true
)
downloadFile(saveto, url)
cecho("<white>Downloading <green>"..url.."<white> to <green>"..saveto.."\n")
reloadModule
- reloadModule(module name)
- Reload a module (by uninstalling and reinstalling).
- See also: installModule(), uninstallModule()
- Example
reloadModule("3k-mapper")
resetProfile
- resetProfile()
- Reloads your entire Mudlet profile - as if you've just opened it. All UI elements will be cleared, so this useful when you're coding your UI.
- Example
resetProfile()
The function used to require input from the game to work, but as of Mudlet 3.20 that is no longer the case.
saveProfile
- saveProfile()
- Saves the current Mudlet profile to disk, which is equivalent to pressing the "Save Profile" button.
- Example
saveProfile()
saveWindowLayout
- saveWindowLayout
- Saves the layout of userwindows (floating miniconsoles), in case you'd like to load them again later.
- See also: loadWindowLayout()
Note: Available in Mudlet 3.2+
- Example
saveWindowLayout()
sendSocket
- sendSocket(data)
- Sends given binary data as-is to the MUD. You can use this to implement support for a new telnet protocol, simultronics login or etcetera.
- Example
TN_IAC = 255
TN_WILL = 251
TN_DO = 253
TN_SB = 250
TN_SE = 240
TN_MSDP = 69
MSDP_VAL = 1
MSDP_VAR = 2
sendSocket( string.char( TN_IAC, TN_DO, TN_MSDP ) ) -- sends IAC DO MSDP
--sends: IAC SB MSDP MSDP_VAR "LIST" MSDP_VAL "COMMANDS" IAC SE
local msg = string.char( TN_IAC, TN_SB, TN_MSDP, MSDP_VAR ) .. " LIST " ..string.char( MSDP_VAL ) .. " COMMANDS " .. string.char( TN_IAC, TN_SE )
sendSocket( msg )
Note: Remember that should it be necessary to send the byte value of 255 as a data byte and not as the Telnet IAC value it is required to repeat it for Telnet to ignore it and not treat it as the latter.
setMergeTables
- setMergeTables(module)
- Makes Mudlet merge the table of the given GMCP or MSDP module instead of overwriting the data. This is useful if the game sends only partial updates which need combining for the full data. By default "Char.Status" is the only merged module.
- Parameters
- module:
- Name of the GMCP or MSDP module that should be merged as a string.
- Example
setMergeTables("Char.Skills", "Char.Vitals")
setModulePriority
- setModulePriority(moduleName, priority)
- Sets the module priority on a given module as a number - the module priority determines the order modules are loaded in, which can be helpful if you have ones dependent on each other. This can also be set from the module manager window.
- See also: getModulePriority()
setModulePriority("mudlet-mapper", 1)
setServerEncoding
- setServerEncoding(encoding)
- Makes Mudlet use the specified encoding for communicating with the game.
- Parameters
- encoding:
- Encoding to use.
- See also: getServerEncodingsList(), getServerEncoding()
- Example
-- use UTF-8 if Mudlet knows it. Unfortunately there's no way to check if the game's server knows it too.
if table.contains(getServerEncodingsList(), "UTF-8") then
setServerEncoding("UTF-8")
end
spawn
- spawn(readFunction, processToSpawn[, ...arguments])
- Spawns a process and opens a communicatable link with it - read function is the function you'd like to use for reading output from the process, and t is a table containing functions specific to this connection - send(data), true/false = isRunning(), and close().
- Examples
-- simple example on a program that quits right away, but prints whatever it gets using the 'display' function
local f = spawn(display, "ls")
display(f.isRunning())
f.close()
local f = spawn(display, "ls", "-la")
display(f.isRunning())
f.close()
startLogging
- startLogging(state)
- Control logging of the main console text as text or HTML (as specified by the "Save log files in HTML format instead of plain text" setting on the "General" tab of the "Profile preferences" or "Settings" dialog). Despite being called startLogging it can also stop the process and correctly close the file being created. The file will have an extension of type ".txt" or ".html" as appropriate and the name will be in the form of a date/time "yyyy-MM-dd#hh-mm-ss" using the time/date of when logging started. Note that this control parallels the corresponding icon in the "bottom buttons" for the profile and that button can also start and stop the same logging process and will reflect the state as well.
- Parameters
- state:
- Required: logging state. Passed as a boolean
- Returns (4 values)
- successful (bool)
- true if the logging state actually changed; if, for instance, logging was already active and true was supplied then no change in logging state actually occurred and nil will be returned (and logging will continue).
- fileName (string)
- The log will be/is being written to the path/file name returned.
- message (string)
- A displayable message given one of four messages depending on the current and previous logging states, this will include the file name except for the case when logging was not taking place and the supplied argument was also false.
- code (number)
- A value indicating the response to the system to this instruction:
* 0 = logging has just stopped * 1 = logging has just started * -1 = logging was already in progress so no change in logging state * -2 = logging was already not in progress so no change in logging state
- Example
-- start logging
startLogging(true)
-- stop logging
startLogging(false)
stopSounds
- stopSounds()
- Stops all currently playing sounds.
Note: Available in Mudlet 3.0.
- See also: playSoundFile()
- Example
stopSounds()
timeframe
- timeframe(vname, true_time, nil_time, ...)
- A utility function that helps you change and track variable states without using a lot of tempTimers.
Note: Available in Mudlet 3.6+
- Parameters
- vname:
- A string or function to use as the variable placeholder.
- true_time:
- Time before setting the variable to true. Can be a number or a table in the format:
{time, value}
- nil_time:
- (optional) Number of seconds until
vname
is set back to nil. Leaving it undefined will leave it at whatever it was set to last. Can be a number of a table in the format:{time, value}
- ...:
- (optional) Further list of times and values to set the variable to, in the following format:
{time, value}
- Example
-- sets the global 'limiter' variable to true immediately (see the 0) and back to nil in one second (that's the 1).
timeframe("limiter", 0, 1)
-- An angry variable 'giant' immediately set to "fee", followed every second after by "fi", "fo", and "fum" before being reset to nil at four seconds.
timeframe("giant", {0, "fee"}, 4, {1, "fi"}, {2, "fo"}, {3, "fum"})
-- sets the local 'width' variable to true immediately and back to nil in one second.
local width
timeframe(function(value) width = value end, 0, 1)
translateTable
- translateTable(directions, [languagecode])
- Given a table of directions (such as
speedWalkDir
), translates directions to another language for you. Right now, it can only translate it into the language of Mudlet's user interface - but let us know if you need more.
Note: Available in Mudlet 3.22+
- Parameters
- directions:
- An indexed table of directions (eg.
{"sw", "w", "nw", "s"}
).
- languagecode:
- (optional) Language code (eg
ru_RU
orit_IT
) - by default,mudlet.translations.interfacelanguage
is used.
- Example
-- get the path from room 2 to room 5 and translate directions
if getPath(2, 5) then
speedWalkDir = translateTable(speedWalkDir)
print("Translated directions:")
display(speedWalkDir)
uninstallModule
- uninstallModule(name)
- Uninstalls a Mudlet module with the given name.
- See also: installModule()
- Example
uninstallModule("myalias")
uninstallPackage
- uninstallPackage(name)
- Uninstalls a Mudlet package with the given name.
- See also: installPackage()
- Example
uninstallPackage("myalias")
yajl.to_string
- yajl.to_string(data)
- Encodes a Lua table into JSON data and returns it as a string. This function is very efficient - if you need to encode into JSON, use this.
- Example
-- on IRE MUDs, you can send a GMCP request to request the skills in a particular skillset. Here's an example:
sendGMCP("Char.Skills.Get "..yajl.to_string{group = "combat"})
-- you can also use it to convert a Lua table into a string, so you can, for example, store it as room's userdata
local toserialize = yajl.to_string(continents)
setRoomUserData(1, "areaContinents", toserialize)
yajl.to_value
- yajl.to_value(data)
- Decodes JSON data (as a string) into a Lua table. This function is very efficient - if you need to dencode into JSON, use this.
- Example
-- given the serialization example above with yajl.to_string, you can deserialize room userdata back into a table
local tmp = getRoomUserData(1, "areaContinents")
if tmp == "" then return end
local continents = yajl.to_value(tmp)
display(continents)