Difference between revisions of "Manual:Networking Functions"

From Mudlet
Jump to navigation Jump to search
(→‎downloadFile: fix example to work)
Line 23: Line 23:
 
;Example
 
;Example
 
<lua>
 
<lua>
-- this example will check the Imperian homepage to see how many players are on right now
+
-- create a function to parse the downloaded webpage and display a result
 
 
-- in an alias, download the Imperian homepage for stats processing
 
downloadFile(getMudletHomeDir().."/page.html", "http://www.imperian.com/")
 
 
 
-- then create a new script with the name of downloaded_file, add the event handler
 
-- for sysDownloadDone, and use this to parse the webpage and display the amount
 
 
function downloaded_file(_, filename)
 
function downloaded_file(_, filename)
 
   -- is the file that downloaded ours?
 
   -- is the file that downloaded ours?
   if not filename:match("page", 1, true) then return end
+
   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
 
   -- parse our downloaded file for the player count
  io.input(filename)
+
   local pc = webpage:match([[Total: (%d+) players online]])
  local s = io.read("*all")
+
   display("Achaea has "..tostring(pc).." players on right now.")
   local pc = s:match([[<a href='players.php%?search=who'>(%d+)</a>]])
 
   display("Imperian has "..tostring(pc).." players on right now.")
 
  io.open():close()
 
  os.remove(filename)
 
 
end
 
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>
 
</lua>
  

Revision as of 20:47, 22 February 2017

Networking Functions

A collection of functions for managing networking.

disconnect

disconnect()
Disconnects you from the game right away. Note that this will not properly log you out of the game.
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.

Returns the actual download URL that was used since Mudlet 3.0.

Note Note: HTTPS downloads are supported since Mudlet 3.0.

Example

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

getNetworkLatency

getNetworkLatency()
Returns the last measured response time between the sent command and the server reply e.g. 0.058 (=58 milliseconds lag) or 0.309 (=309 milliseconds). 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>