Difference between revisions of "Manual:Networking Functions"
Jump to navigation
Jump to search
(→sendATCP: section added to manual) |
(→sendIrc: add available IRC commands) |
||
Line 207: | Line 207: | ||
sendIrc("#mudlet", "/topic") | sendIrc("#mudlet", "/topic") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | {{note}} The following IRC commands are available since Mudlet 3.3: | ||
+ | * /ACTION <target> <message...> | ||
+ | * /ADMIN (<server>) | ||
+ | * /AWAY (<reason...>) | ||
+ | * /CLEAR (<buffer>) -- Clears the text log for the given buffer name. Uses the current active buffer if none are given. | ||
+ | * /CLOSE (<buffer>) -- Closes the buffer and removes it from the Buffer list. Uses the current active buffer if none are given. | ||
+ | * /HELP (<command>) -- Displays some help information about a given command or lists all available commands. | ||
+ | * /INFO (<server>) | ||
+ | * /INVITE <user> (<#channel>) | ||
+ | * /JOIN <#channel> (<key>) | ||
+ | * /KICK (<#channel>) <user> (<reason...>) | ||
+ | * /KNOCK <#channel> (<message...>) | ||
+ | * /LIST (<channels>) (<server>) | ||
+ | * /ME [target] <message...> | ||
+ | * /MODE (<channel/user>) (<mode>) (<arg>) | ||
+ | * /MOTD (<server>) | ||
+ | * /MSG <target> <message...> -- Sends a message to target, can be used to send Private messages. | ||
+ | * /NAMES (<#channel>) | ||
+ | * /NICK <nick> | ||
+ | * /NOTICE <#channel/user> <message...> | ||
+ | * /PART (<#channel>) (<message...>) | ||
+ | * /PING (<user>) | ||
+ | * /RECONNECT -- Issues a Quit command to the IRC Server and closes the IRC connection then reconnects to the IRC server. The same as calling ircRestart() in Lua. | ||
+ | * /QUIT (<message...>) | ||
+ | * /QUOTE <command> (<parameters...>) | ||
+ | * /STATS <query> (<server>) | ||
+ | * /TIME (<user>) | ||
+ | * /TOPIC (<#channel>) (<topic...>) | ||
+ | * /TRACE (<target>) | ||
+ | * /USERS (<server>) | ||
+ | * /VERSION (<user>) | ||
+ | * /WHO <mask> | ||
+ | * /WHOIS <user> | ||
+ | * /WHOWAS <user> | ||
==sendTelnetChannel102== | ==sendTelnetChannel102== |
Revision as of 18:38, 30 June 2017
Networking Functions
A collection of functions for managing networking.
connectToServer
- connectToServer(host, port, save)
- Connects to the server and port.
- Parameters
- host:
- Server domain or IP address.
- port:
- Servers port.
- save:
- (optional, boolean) if provided, saves the new connection parameters in the profile so they'll be used next time you open it.
Note: save is available in Mudlet 3.2+.
- Example
connectToServer("midnightsun2.org", 3000)
-- save to disk so these parameters are used next time when opening the profile
connectToServer("midnightsun2.org", 3000, true)
disconnect
- disconnect()
- Disconnects you from the game right away. Note that this will not properly log you out of the game - use an ingame command for that. Such commands vary, but typically QUIT will work.
- See also: reconnect()
- Example
disconnect()
downloadFile
- downloadFile(saveto, url)
- Downloads the resource at the given url into the saveto location on disk. This does not pause the script until the file is downloaded - instead, it lets it continue right away and downloads in the background. When a download is finished, the sysDownloadDone event is raised (with the saveto location as the argument), or when a download fails, the sysDownloadError event is raised with the reason for failure. You may call downloadFile multiple times and have multiple downloads going on at once - but they aren’t guaranteed to be downloaded in the same order that you started them in.
Note: Since Mudlet 3.0, https downloads are supported and the actual url that was used for the download is returned - useful in case of redirects.
- Example
-- just download a file and save it in our profile folder
local saveto = getMudletHomeDir().."/dark-theme-mudlet.zip"
local url = "http://www.mudlet.org/wp-content/files/dark-theme-mudlet.zip"
downloadFile(saveto, url)
cecho("<white>Downloading <green>"..url.."<white> to <green>"..saveto.."\n")
A more advanced example that downloads a webpage, reads it, and prints a result from it:
-- create a function to parse the downloaded webpage and display a result
function downloaded_file(_, filename)
-- is the file that downloaded ours?
if not filename:find("achaea-who-count.html", 1, true) then return end
-- read the contents of the webpage in
local f, s, webpage = io.open(filename)
if f then webpage = f:read("*a"); io.close(f) end
-- delete the file on disk, don't clutter
os.remove(filename)
-- parse our downloaded file for the player count
local pc = webpage:match([[Total: (%d+) players online]])
display("Achaea has "..tostring(pc).." players on right now.")
end
-- register our function to run on the event that something was downloaded
registerAnonymousEventHandler("sysDownloadDone", "downloaded_file")
-- download a list of fake users for a demo
downloadFile(getMudletHomeDir().."/achaea-who-count.html", "https://www.achaea.com/game/who")
Result should look like this:
getNetworkLatency
- getNetworkLatency()
- Returns the last measured response time between the sent command and the server reply in seconds - e.g. 0.058 (=58 milliseconds lag) or 0.309 (=309 milliseconds). This is the N: number you see bottom-right of Mudlet.
Also known as server lag.
- Example
Need example
openUrl
- openUrl (url)
- Opens the default OS browser for the given URL.
- Example
openUrl("http://google.com")
openUrl("www.mudlet.org")
reconnect
- reconnect()
- Force-reconnects (so if you're connected, it'll disconnect) you to the game.
- Example
-- you could trigger this on a log out message to reconnect, if you'd like
reconnect()
sendAll
- sendAll(list of things to send, [echo back or not])
- send()'s a list of things to the game. If you'd like the commands not to be shown, include false at the end.
- Example
-- instead of using many send() calls, you can use one sendAll
sendAll("outr paint", "outr canvas", "paint canvas")
-- can also have the commands not be echoed
sendAll("hi", "bye", false)
sendATCP
- sendATCP(message, what)
- Need description
- See also: ATCP Protocol, ATCP Extensions, Achaea Telnet Client Protocol specification, Description by forum user KaVir (2013), Description by forum user Iocun (2009)
- Parameters
- message:
- The message that you want to send.
- what:
- Need description
- Example
Need example
sendGMCP
- sendGMCP(command)
- Sends a GMCP message to the server. The IRE document on GMCP has information about what can be sent, and what tables it will use, etcetera.
- Note that this function is rarely used in practice. For most GMCP modules, the messages are automatically sent by the server when a relevant event happens in the game. For example, LOOKing in your room prompts the server to send the room description and contents, as well as the GMCP message gmcp.Room. A call to sendGMCP would not be required in this case.
- See also: GMCP Scripting
- Example
--This would send "Core.KeepAlive" to the server, which resets the timeout
sendGMCP("Core.KeepAlive")
--This would send a request for the server to send an update to the gmcp.Char.Skills.Groups table.
sendGMCP("Char.Skills.Get {}")
--This would send a request for the server to send a list of the skills in the
--vision group to the gmcp.Char.Skills.List table.
sendGMCP([[Char.Skills.Get { "group": "vision"}]])
--And finally, this would send a request for the server to send the info for
--hide in the woodlore group to the gmcp.Char.Skills.Info table
sendGMCP([[Char.Skills.Get { "group": "woodlore", "name": "hide"}]])
sendMSDP
- sendMSDP(variable[, value][, value...])
- Sends a MSDP message to the server.
- Parameters
- variable:
- The variable, in MSDP terms, that you want to request from the server.
- value:
- The variables value that you want to request. You can request more than one value at a time.
- Example
-- ask for a list of commands, lists, and reportable variables that the server supports
sendMSDP("LIST", "COMMANDS", "LISTS", "REPORTABLE_VARIABLES")
-- ask the server to start keeping you up to date on your health
sendMSDP("REPORT", "HEALTH")
-- or on your health and location
sendMSDP("REPORT", "HEALTH", "ROOM_VNUM", "ROOM_NAME")
sendIrc
- sendIrc(target, message)
- Sends a message to an IRC channel or person. Returns true+status if message could be sent or was successfully processed by the client, or nil+error if the client is not ready for sending, and false+status if the client filtered the message or failed to send it for some reason. If the IRC client hasn't started yet, this function will initiate the IRC client and begin a connection.
Note: Since Mudlet 3.3, auto-opens the IRC window and returns the success status.
- Parameters
- target:
- nick or channel name and if omitted will default to the first available channel in the list of joined channels.
- message:
- The message to send, may contain IRC client commands which start with
/
and can use all commands which are available through the client window.
- Example
-- this would send "hello from Mudlet!" to the channel #mudlet on freenode.net
sendIrc("#mudlet", "hello from Mudlet!")
-- this would send "identify password" in a private message to Nickserv on freenode.net
sendIrc("Nickserv", "identify password")
-- use an in-built IRC command
sendIrc("#mudlet", "/topic")
Note: The following IRC commands are available since Mudlet 3.3:
- /ACTION <target> <message...>
- /ADMIN (<server>)
- /AWAY (<reason...>)
- /CLEAR (<buffer>) -- Clears the text log for the given buffer name. Uses the current active buffer if none are given.
- /CLOSE (<buffer>) -- Closes the buffer and removes it from the Buffer list. Uses the current active buffer if none are given.
- /HELP (<command>) -- Displays some help information about a given command or lists all available commands.
- /INFO (<server>)
- /INVITE <user> (<#channel>)
- /JOIN <#channel> (<key>)
- /KICK (<#channel>) <user> (<reason...>)
- /KNOCK <#channel> (<message...>)
- /LIST (<channels>) (<server>)
- /ME [target] <message...>
- /MODE (<channel/user>) (<mode>) (<arg>)
- /MOTD (<server>)
- /MSG <target> <message...> -- Sends a message to target, can be used to send Private messages.
- /NAMES (<#channel>)
- /NICK <nick>
- /NOTICE <#channel/user> <message...>
- /PART (<#channel>) (<message...>)
- /PING (<user>)
- /RECONNECT -- Issues a Quit command to the IRC Server and closes the IRC connection then reconnects to the IRC server. The same as calling ircRestart() in Lua.
- /QUIT (<message...>)
- /QUOTE <command> (<parameters...>)
- /STATS <query> (<server>)
- /TIME (<user>)
- /TOPIC (<#channel>) (<topic...>)
- /TRACE (<target>)
- /USERS (<server>)
- /VERSION (<user>)
- /WHO <mask>
- /WHOIS <user>
- /WHOWAS <user>
sendTelnetChannel102
- sendTelnetChannel102(msg)
- Sends a message via the 102 subchannel back to the MUD (that's used in Aardwolf). The msg is in a two byte format - see `help telopts` in Aardwolf on how that works.
- Example
-- turn prompt flags on:
sendTelnetChannel102("\52\1")
-- turn prompt flags off:
sendTelnetChannel102("\52\2")