Manual:Networking Functions

From Mudlet
Jump to navigation Jump to search

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 Note: save is available in Mudlet 3.2+.

Example

<lua> connectToServer("midnightsun2.org", 3000)

-- save to disk so these parameters are used next time when opening the profile connectToServer("midnightsun2.org", 3000, true) </lua>

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

<lua> disconnect() </lua>

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 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

<lua> -- 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") </lua>

A more advanced example that downloads a webpage, reads it, and prints a result from it: <lua> -- 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") </lua>

Result should look like this:

DownloadFile demo.png.

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

<lua> openUrl("http://google.com") openUrl("www.mudlet.org") </lua>

reconnect

reconnect()
Force-reconnects (so if you're connected, it'll disconnect) you to the game.
Example

<lua> -- you could trigger this on a log out message to reconnect, if you'd like reconnect() </lua>

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

<lua> -- 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) </lua>

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.
See Also: GMCP Scripting
Example

<lua> --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"}]]) </lua>

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.
See Also: MSDP support in Mudlet, Mud Server Data Protocol specification
Example

<lua> -- 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") </lua>

sendIrc

sendIrc(channel, message)
Sends a message to an IRC channel or person. You must have the IRC window open, and if speaking to a channel, be joined in that channel. IRC currently only works on the freenode network and password-protected channels aren't supported.
Parameters
  • channel:
The channel to send the message to. Can be #<channelname> to send to a channel, or <person name> to send to a person. Passed as a string.
  • message:
The message to send. Passed as a string.
Example

<lua> --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") </lua>

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

<lua> -- turn prompt flags on: sendTelnetChannel102("\52\1")

-- turn prompt flags off: sendTelnetChannel102("\52\2") </lua>