Files
Mush-Soundpack/cosmic rage/scripts/exampscript.lua
2025-07-01 23:28:00 +03:00

276 lines
7.5 KiB
Lua

-- Example of coding script routines for MUSHclient in Lua
-- --------------------------------------------
-- Example trigger routine that just shows what was passed to it
-- --------------------------------------------
function ExampleTrigger (thename, theoutput, wildcards, line)
require "tprint"
Note ("Trigger " .. thename .. " fired.")
Note ("Matching line was: " .. theoutput)
Note ("Wildcards ...")
tprint (wildcards)
Note ("Line with style runs ...")
tprint (line)
end -- of ExampleTrigger
-- ----------------------------------------------------------
-- Example showing iterating through all triggers
-- ----------------------------------------------------------
function showtriggers ()
local _, v
for _, v in ipairs (GetTriggerList ()) do
Note (v)
end
end -- of showtriggers
-- -----------------------------------------------
-- Example showing iterating through all variables
-- ------------------------------------------------
function showvariables ()
table.foreach (GetVariableList(), print)
end -- of showvariables
-- ----------------------------------------------------------
-- Example showing iterating through all aliases with labels
-- ----------------------------------------------------------
function showaliases ()
local _, v
for _, v in ipairs (GetAliasList ()) do
Note (v)
end
end -- of showaliases
-- ---------------------------------------------------------
-- Example showing running a script on world open
-- ---------------------------------------------------------
function OnWorldOpen ()
Note ("---------- World Open ------------")
end -- of OnWorldOpen
-- ---------------------------------------------------------
-- Example showing running a script on world close
-- ---------------------------------------------------------
function OnWorldClose ()
Note ("---------- World Close ------------")
end -- of OnWorldClose
-- ---------------------------------------------------------
-- Example showing running a script on world connect
-- ---------------------------------------------------------
function OnWorldConnect ()
Note ("---------- World Connect ------------")
end -- of OnWorldConnect
-- ---------------------------------------------------------
-- Example showing running a script on world disconnect
-- ---------------------------------------------------------
function OnWorldDisconnect ()
Note ("---------- World Disconnect ------------")
end -- of OnWorldDisconnect
-- ---------------------------------------------------------
-- Example showing running a script on an alias
--
-- This script is designed to be called by an alias: ^teleport(.*)$
--
-- This alias SHOULD have "regular expression" checked.
--
-- It is for teleporting (going to) a room by number
--
-- The room is entered by name and looked up in the variables
-- list.
-- ---------------------------------------------------------
function OnTeleport (name, output, wildcards)
local sDestination
local sHelp = ""
local iRoom
sDestination = Trim (wildcards [1])
-- if nothing entered echo possible destinations
if sDestination == "" then
Note ("-------- TELEPORT destinations ----------")
local k, v
for k, v in pairs (GetVariableList ()) do
if string.sub (k, 1, 9) == "teleport_" then
if sHelp ~= "" then
sHelp = sHelp .. ", "
end
sHelp = sHelp .. string.sub (k, 10)
end
end
-- if no destinations found, tell them
if sHelp == "" then
sHelp = "<no rooms in teleport list>"
end
Note (sHelp)
return
end -- no destination supplied
-- get contents of the destination variable
iRoom = world.GetVariable ("teleport_" .. string.lower (sDestination))
-- if not found, or invalid name, that isn't in the list
if iRoom == nil then
Note ("******** Destination " .. sDestination .. " unknown *********")
return
end
Note ("------> Teleporting to " .. sDestination)
Send ("@teleport #" .. iRoom)
end -- end of OnTeleport
-- ---------------------------------------------------------
-- Example showing running a script on an alias
--
-- This script is designed to be called by an alias: ^add_teleport(|\s*(\w*)\s*(\d*))$
--
-- This alias SHOULD have "regular expression" checked.
--
-- It is for adding a room to the list of rooms to teleport to (by
-- the earlier script).
--
-- eg. ADD_TELEPORT dungeon 1234
--
-- ---------------------------------------------------------
function OnAddTeleport (name, output, wildcards)
local sDestination
local iRoom
local iStatus
sDestination = Trim (wildcards [2])
-- if nothing entered tell them command syntax
if sDestination == "" then
Note ("Syntax: add_teleport name dbref")
Note (" eg. add_teleport LandingBay 4421")
return
end
-- room to go to
iRoom = wildcards [3]
if not tonumber (iRoom) then
Note ("Room number must be numeric, you entered " .. iRoom)
return
end
-- add room and destination location to variable list
iStatus = world.SetVariable ("teleport_" .. string.lower (sDestination), iRoom)
if iStatus ~= 0 then
Note ("Room name must be alphabetic, you entered: " + sDestination)
return
end
Note ("Teleport location " .. sDestination .. "(#"
.. iRoom .. ") added to teleport list")
end -- of OnAddTeleport
-- ------------------------------------------
-- Example showing a script called by a timer
-- -------------------------------------------
function OnTimer (strTimerName)
Note ("Timer has fired!")
end -- of OnTimer
-- --------------------------------------------
-- Example showing a script called by a trigger
-- Should be connected to a trigger matching on: <*hp *m *mv>*
-- (the above example will work for SMAUG default prompts (eg. <100hp 10m 40mv>)
-- it may need to be changed depending on the MUD prompt format).
-- --------------------------------------------
function OnStats (name, trig_line, wildcards)
local iHP = wildcards [1]
local iMana = wildcards [2]
local iMV = wildcards [3]
Note ("Your HP are " .. iHP)
Note ("Your Mana is " .. iMana)
Note ("Your movement points are " .. iMV)
end -- of OnStats
-- --------------------------------------------
-- Subroutine to be called to repeat a command.
--
-- Call from the alias: ^#(\d+)\s+(.+)$
-- Regular Expression: checked
--
-- Example of use: #10 give sword to Trispis
-- This would send "give sword to Trispis" 10 times
-- --------------------------------------------
function OnRepeat (name, line, wildcards)
local count = wildcards [1]
if not tonumber (count) then
Note ("Repeat count must be numeric, you entered ", count)
return
end
local i
for i = 1, count do
Send (wildcards [2])
end
end -- of OnRepeat
-- --------------------------------------------
-- Example showing iterating through all worlds
-- --------------------------------------------
function showworlds ()
local _, v
for _, v in ipairs (GetWorldList ()) do
Note (v)
end
end -- of showworlds
-- --------------------------------------------------
-- Example showing sending a message to another world
-- --------------------------------------------------
function SendToWorld (name, message)
local otherworld
otherworld = GetWorld (name)
if otherworld == nil then
Note ("World " .. name .. " is not open")
return
end
Send (otherworld, message)
-- alternative syntax: otherworld:Send (message)
end -- of SendToWorld
Note ("Lua scripting enabled - script file processed")