Adding comlink package and subcommand handler utility
This commit is contained in:
parent
f119dfb5a1
commit
5e35d48216
7
src/aliases/comlink-info/aliases.json
Normal file
7
src/aliases/comlink-info/aliases.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "comlinks",
|
||||||
|
"regex": "^comlinks( ?.*)$",
|
||||||
|
"script": "lotj.comlinkInfo.command(matches[2])"
|
||||||
|
}
|
||||||
|
]
|
@ -1,3 +1,5 @@
|
|||||||
|
-- Based on AutoResearch script by @ZakattackLOTJ
|
||||||
|
|
||||||
lotj = lotj or {}
|
lotj = lotj or {}
|
||||||
lotj.autoResearch = lotj.autoResearch or {}
|
lotj.autoResearch = lotj.autoResearch or {}
|
||||||
|
|
||||||
@ -8,10 +10,9 @@ function lotj.autoResearch.log(text, precedingNewline)
|
|||||||
cecho("[<cyan>LOTJ AutoResearch<reset>] "..text.."\n")
|
cecho("[<cyan>LOTJ AutoResearch<reset>] "..text.."\n")
|
||||||
end
|
end
|
||||||
|
|
||||||
function lotj.autoResearch.command(args)
|
local subcommands = {{
|
||||||
argList = splitargs(args)
|
args = {"start"},
|
||||||
|
action = function()
|
||||||
if #argList == 1 and argList[1] == "start" then
|
|
||||||
lotj.autoResearch.enabled = true
|
lotj.autoResearch.enabled = true
|
||||||
lotj.autoResearch.researchList = {}
|
lotj.autoResearch.researchList = {}
|
||||||
lotj.autoResearch.log("Research list cleared.")
|
lotj.autoResearch.log("Research list cleared.")
|
||||||
@ -19,8 +20,11 @@ function lotj.autoResearch.command(args)
|
|||||||
enableTrigger("autoresearch.grabSkills")
|
enableTrigger("autoresearch.grabSkills")
|
||||||
lotj.autoResearch.log("Retrieving research list...")
|
lotj.autoResearch.log("Retrieving research list...")
|
||||||
send("practice", false)
|
send("practice", false)
|
||||||
|
end,
|
||||||
elseif #argList == 1 and argList[1] == "next" then
|
helpText = "Get the practice list and automatically begin researching anything eligible for it. Must be in a library."
|
||||||
|
},{
|
||||||
|
args = {"next"},
|
||||||
|
action = function()
|
||||||
if #(lotj.autoResearch.researchList or {}) == 0 then
|
if #(lotj.autoResearch.researchList or {}) == 0 then
|
||||||
lotj.autoResearch.log("Research list empty.")
|
lotj.autoResearch.log("Research list empty.")
|
||||||
lotj.autoResearch.enabled = false
|
lotj.autoResearch.enabled = false
|
||||||
@ -29,8 +33,11 @@ function lotj.autoResearch.command(args)
|
|||||||
|
|
||||||
table.remove(lotj.autoResearch.researchList, 1)
|
table.remove(lotj.autoResearch.researchList, 1)
|
||||||
expandAlias("autoresearch continue", false)
|
expandAlias("autoresearch continue", false)
|
||||||
|
end,
|
||||||
elseif #argList == 1 and argList[1] == "continue" then
|
helpText = "Resume researching the first skill in the current autoresearch list."
|
||||||
|
},{
|
||||||
|
args = {"continue"},
|
||||||
|
action = function()
|
||||||
if #(lotj.autoResearch.researchList or {}) == 0 then
|
if #(lotj.autoResearch.researchList or {}) == 0 then
|
||||||
lotj.autoResearch.log("Research list empty.")
|
lotj.autoResearch.log("Research list empty.")
|
||||||
lotj.autoResearch.enabled = false
|
lotj.autoResearch.enabled = false
|
||||||
@ -40,30 +47,18 @@ function lotj.autoResearch.command(args)
|
|||||||
local current = lotj.autoResearch.initialCount - #lotj.autoResearch.researchList + 1
|
local current = lotj.autoResearch.initialCount - #lotj.autoResearch.researchList + 1
|
||||||
lotj.autoResearch.log(current.."/"..lotj.autoResearch.initialCount..": Researching "..lotj.autoResearch.researchList[1].."...")
|
lotj.autoResearch.log(current.."/"..lotj.autoResearch.initialCount..": Researching "..lotj.autoResearch.researchList[1].."...")
|
||||||
send("research "..lotj.autoResearch.researchList[1], false)
|
send("research "..lotj.autoResearch.researchList[1], false)
|
||||||
|
end,
|
||||||
elseif #argList == 1 and argList[1] == "stop" then
|
helpText = "Skip to the next skill in the autoresearch list and begin researching it."
|
||||||
|
},{
|
||||||
|
args = {"stop"},
|
||||||
|
action = function()
|
||||||
lotj.autoResearch.enabled = false
|
lotj.autoResearch.enabled = false
|
||||||
lotj.autoResearch.researchList = {}
|
lotj.autoResearch.researchList = {}
|
||||||
lotj.autoResearch.log("Research list cleared.")
|
lotj.autoResearch.log("Research list cleared.")
|
||||||
|
end,
|
||||||
|
helpText = "Clear the autoresearch list and disable triggers for continuing automatically."
|
||||||
|
}}
|
||||||
|
|
||||||
else
|
function lotj.autoResearch.command(args)
|
||||||
lotj.autoResearch.log("AutoResearch Command List\n")
|
processCommand("autoresearch", subcommands, args)
|
||||||
cecho([[
|
|
||||||
<yellow>autoresearch start<reset>
|
|
||||||
|
|
||||||
Get the practice list and automatically begin researching anything eligible for it. Must be in a library.
|
|
||||||
|
|
||||||
<yellow>autoresearch continue<reset>
|
|
||||||
|
|
||||||
Resume researching the first skill in the current autoresearch list.
|
|
||||||
|
|
||||||
<yellow>autoresearch next<reset>
|
|
||||||
|
|
||||||
Skip to the next skill in the autoresearch list and begin researching it.
|
|
||||||
|
|
||||||
<yellow>autoresearch stop<reset>
|
|
||||||
|
|
||||||
Clear the autoresearch list and disable triggers for continuing automatically.
|
|
||||||
]])
|
|
||||||
end
|
|
||||||
end
|
end
|
133
src/scripts/comlink-info/comlink-info.lua
Normal file
133
src/scripts/comlink-info/comlink-info.lua
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
-- Comlink info script by Johnson
|
||||||
|
-- Translated to Mudlet by Kbug
|
||||||
|
|
||||||
|
lotj = lotj or {}
|
||||||
|
lotj.comlinkInfo = lotj.comlinkInfo or {}
|
||||||
|
|
||||||
|
function lotj.comlinkInfo.setup()
|
||||||
|
lotj.comlinkInfo.loadForChar()
|
||||||
|
lotj.setup.registerEventHandler("gmcp.Char.Info", lotj.comlinkInfo.loadForChar)
|
||||||
|
end
|
||||||
|
|
||||||
|
function lotj.comlinkInfo.log(text, precedingNewline)
|
||||||
|
if precedingNewline then
|
||||||
|
echo("\n")
|
||||||
|
end
|
||||||
|
cecho("[<cyan>LOTJ Comlinks<reset>] "..text.."\n")
|
||||||
|
end
|
||||||
|
|
||||||
|
function lotj.comlinkInfo.loadForChar()
|
||||||
|
local charName = gmcpVarByPath("Char.Info.name")
|
||||||
|
if charName and io.exists(getMudletHomeDir() .. "/comlinkdata_" .. charName .. ".lua") then
|
||||||
|
table.load(getMudletHomeDir() .. "/comlinkdata_" .. charName .. ".lua", lotj.comlinkInfo.comlinks)
|
||||||
|
if lotj.comlinkInfo.comlinks then
|
||||||
|
local comlinkCount = 0
|
||||||
|
for _, _ in pairs(lotj.comlinkInfo.comlinks) do
|
||||||
|
comlinkCount = comlinkCount+1
|
||||||
|
end
|
||||||
|
lotj.comlinkInfo.log("Loaded data for "..comlinkCount.." comlinks.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not lotj.comlinkInfo.comlinks then
|
||||||
|
lotj.comlinkInfo.comlinks = {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function lotj.comlinkInfo.saveForChar()
|
||||||
|
local charName = gmcpVarByPath("Char.Info.name")
|
||||||
|
if charName then
|
||||||
|
table.save(getMudletHomeDir() .. "/comlinkdata_" .. charName .. ".lua", lotj.comlinkInfo.comlinks)
|
||||||
|
else
|
||||||
|
lotj.comlinkInfo.log("No character name detected for saving comlink data.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function lotj.comlinkInfo.cleanupComlinkName(line)
|
||||||
|
line = line:gsub("%(Humming%)", '')
|
||||||
|
line = string.trim(line:gsub("%(%d+%)", ''))
|
||||||
|
line = line:gsub('"', '')
|
||||||
|
line = line:gsub("'", '')
|
||||||
|
return line
|
||||||
|
end
|
||||||
|
|
||||||
|
function lotj.comlinkInfo.registerComlink(comlinkName, channel, encryption)
|
||||||
|
local name = lotj.comlinkInfo.cleanupComlinkName(comlinkName)
|
||||||
|
local comlink = { channel = 0, encryption = 0 }
|
||||||
|
comlink = lotj.comlinkInfo.comlinks[name] or comlink -- load an existing comlink or make a new one
|
||||||
|
if channel ~= nil then -- got a channel
|
||||||
|
if comlink.channel ~= channel then -- new channel is different than existing channel
|
||||||
|
comlink.channel = tonumber(channel) or 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if encryption ~= nil then -- got an encryption
|
||||||
|
if comlink.encryption ~= encryption then -- new encryption is different than existing
|
||||||
|
comlink.encryption = tonumber(encryption) or 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
lotj.comlinkInfo.comlinks[name] = comlink -- rip out quotation marks
|
||||||
|
|
||||||
|
lotj.comlinkInfo.saveForChar()
|
||||||
|
end
|
||||||
|
|
||||||
|
local subcommands = {{
|
||||||
|
args = {"reset"},
|
||||||
|
action = function()
|
||||||
|
lotj.comlinkInfo.comlinks = {}
|
||||||
|
lotj.comlinkInfo.log("Stored comlink data erased.")
|
||||||
|
lotj.comlinkInfo.saveForChar()
|
||||||
|
end,
|
||||||
|
helpText = "Deletes the stored comlink list."
|
||||||
|
},{
|
||||||
|
args = {"delete", "comlink:string"},
|
||||||
|
action = function(name)
|
||||||
|
for i, v in pairs(lotj.comlinkInfo.comlinks) do
|
||||||
|
-- search by comlink keyword or note keyword
|
||||||
|
if string.find(i:lower(), name:lower(), 0, true) or (v.note and (string.find(v.note:lower(), name:lower(), 0, true))) then
|
||||||
|
lotj.comlinkInfo.log("Comlink '" .. i .. "' removed from stored comlinks.")
|
||||||
|
lotj.comlinkInfo.comlinks[i] = nil
|
||||||
|
lotj.comlinkInfo.saveForChar()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
lotj.comlinkInfo.log("Comlink '" .. name .. "' not found in comlinks.")
|
||||||
|
end,
|
||||||
|
helpText = "Deletes the first comlink matching the specified keyword from the comlink list.\n"..
|
||||||
|
"Notice: Will match either the comlink description or the note attached to that comlink."
|
||||||
|
},{
|
||||||
|
args = {"notes"},
|
||||||
|
action = function()
|
||||||
|
lotj.comlinkInfo.log("Listing all stored comlinks with notes:")
|
||||||
|
for i, v in pairs(lotj.comlinkInfo.comlinks) do
|
||||||
|
if v.note then
|
||||||
|
cecho(" <dim_gray>" .. i .. " <yellow>-> <dim_gray>(Note:<red>" .. v.note .. "<dim_gray>)\n")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
helpText = "Prints a list of every comlink that has a note."
|
||||||
|
},{
|
||||||
|
args = {"note", "comlink:string", "note:string?"},
|
||||||
|
action = function(com, note)
|
||||||
|
for i, v in pairs(lotj.comlinkInfo.comlinks) do
|
||||||
|
if string.find(i:lower(), com:lower(), 0, true) or (v.note and (string.find(v.note:lower(), com:lower(), 0, true))) then -- search by comlink keyword or note keyword
|
||||||
|
if note == "" or note == nil then
|
||||||
|
lotj.comlinkInfo.log("Removed '"..v.note.."' as note from comlink '"..i.."'.")
|
||||||
|
v.note = nil
|
||||||
|
else
|
||||||
|
v.note = note
|
||||||
|
lotj.comlinkInfo.log("Added '"..v.note.."' as note to comlink '"..i.."'.")
|
||||||
|
end
|
||||||
|
lotj.comlinkInfo.saveForChar()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
lotj.comlinkInfo.log("Comlink '"..com.."' note found in comlinks.")
|
||||||
|
end,
|
||||||
|
helpText = "Adds a note to the first comlink matching the specified keyword.\n"..
|
||||||
|
"Notice: Will match either the comlink description or the note attached to that comlink.\n"..
|
||||||
|
"Use quotes around multi-word notes, as in: comlink note newbtech \"Secret channel for Anakin\""
|
||||||
|
}}
|
||||||
|
|
||||||
|
function lotj.comlinkInfo.command(args)
|
||||||
|
processCommand("comlinks", subcommands, args)
|
||||||
|
end
|
5
src/scripts/comlink-info/scripts.json
Normal file
5
src/scripts/comlink-info/scripts.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "comlink-info"
|
||||||
|
}
|
||||||
|
]
|
@ -52,18 +52,6 @@ local function styleGaugeText(gauge, fontSize)
|
|||||||
gauge:setFontSize(fontSize)
|
gauge:setFontSize(fontSize)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function gmcpVarByPath(varPath)
|
|
||||||
local temp = gmcp
|
|
||||||
for varStep in varPath:gmatch("([^\\.]+)") do
|
|
||||||
if temp and temp[varStep] then
|
|
||||||
temp = temp[varStep]
|
|
||||||
else
|
|
||||||
return nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return temp
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Wires up GMCP subscriptions for a gauge.
|
-- Wires up GMCP subscriptions for a gauge.
|
||||||
-- statName is the short version of the stat name to show after the value (mv, hp, etc)
|
-- statName is the short version of the stat name to show after the value (mv, hp, etc)
|
||||||
local function wireGaugeUpdate(gauge, valueVarName, maxVarName, statName, eventName)
|
local function wireGaugeUpdate(gauge, valueVarName, maxVarName, statName, eventName)
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "setup"
|
"name": "setup"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "util"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -24,6 +24,7 @@ local function setup()
|
|||||||
lotj.infoPanel.setup()
|
lotj.infoPanel.setup()
|
||||||
lotj.mapper.setup()
|
lotj.mapper.setup()
|
||||||
lotj.systemMap.setup()
|
lotj.systemMap.setup()
|
||||||
|
lotj.comlinkInfo.setup()
|
||||||
|
|
||||||
-- Then set our UI default view
|
-- Then set our UI default view
|
||||||
lotj.layout.selectTab(lotj.layout.upperRightTabData, "map")
|
lotj.layout.selectTab(lotj.layout.upperRightTabData, "map")
|
||||||
@ -73,23 +74,3 @@ lotj.setup.registerEventHandler("sysProtocolEnabled", function(_, protocol)
|
|||||||
sendGMCP("Core.Supports.Set", "[\"Ship 1\"]")
|
sendGMCP("Core.Supports.Set", "[\"Ship 1\"]")
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
function splitargs(args)
|
|
||||||
local retval = {}
|
|
||||||
local spat, epat, buf, quoted = [=[^(['"])]=], [=[(['"])$]=]
|
|
||||||
for str in args:gmatch("%S+") do
|
|
||||||
local squoted = str:match(spat)
|
|
||||||
local equoted = str:match(epat)
|
|
||||||
local escaped = str:match([=[(\*)['"]$]=])
|
|
||||||
if squoted and not quoted and not equoted then
|
|
||||||
buf, quoted = str, squoted
|
|
||||||
elseif buf and equoted == quoted and #escaped % 2 == 0 then
|
|
||||||
str, buf, quoted = buf .. ' ' .. str, nil, nil
|
|
||||||
elseif buf then
|
|
||||||
buf = buf .. ' ' .. str
|
|
||||||
end
|
|
||||||
if not buf then table.insert(retval, (str:gsub(spat,""):gsub(epat,""))) end
|
|
||||||
end
|
|
||||||
if buf then error("Missing matching quote for "..buf) end
|
|
||||||
return retval
|
|
||||||
end
|
|
||||||
|
139
src/scripts/setup/util.lua
Normal file
139
src/scripts/setup/util.lua
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
function splitargs(args)
|
||||||
|
local retval = {}
|
||||||
|
local spat, epat, buf, quoted = [=[^(['"])]=], [=[(['"])$]=]
|
||||||
|
for str in args:gmatch("%S+") do
|
||||||
|
local squoted = str:match(spat)
|
||||||
|
local equoted = str:match(epat)
|
||||||
|
local escaped = str:match([=[(\*)['"]$]=])
|
||||||
|
if squoted and not quoted and not equoted then
|
||||||
|
buf, quoted = str, squoted
|
||||||
|
elseif buf and equoted == quoted and #escaped % 2 == 0 then
|
||||||
|
str, buf, quoted = buf .. ' ' .. str, nil, nil
|
||||||
|
elseif buf then
|
||||||
|
buf = buf .. ' ' .. str
|
||||||
|
end
|
||||||
|
if not buf then table.insert(retval, (str:gsub(spat,""):gsub(epat,""))) end
|
||||||
|
end
|
||||||
|
if buf then error("Missing matching quote for "..buf) end
|
||||||
|
return retval
|
||||||
|
end
|
||||||
|
|
||||||
|
function gmcpVarByPath(varPath)
|
||||||
|
local temp = gmcp
|
||||||
|
for varStep in varPath:gmatch("([^\\.]+)") do
|
||||||
|
if temp and temp[varStep] then
|
||||||
|
temp = temp[varStep]
|
||||||
|
else
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return temp
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Handles matching argument text to a list of subcommands.
|
||||||
|
-- Each subcommand should be an object with the following properties:
|
||||||
|
-- args: List of elements to match input against, each matching:
|
||||||
|
-- a string to match exactly for the argument in this position
|
||||||
|
-- a token indicating a type of variable argument in this position, one of:
|
||||||
|
-- argName:string - any string
|
||||||
|
-- argName:string? - any string, optional
|
||||||
|
-- argName:number - any number
|
||||||
|
-- argName:number? - any number, optional
|
||||||
|
-- all optional arguments must appear after all non-optional arguments.
|
||||||
|
-- action: A function, taking each variable argument as an argument.
|
||||||
|
-- helpText: Description of what this subcommand does.
|
||||||
|
--
|
||||||
|
-- If
|
||||||
|
-- For example:
|
||||||
|
-- local subcommands = {{
|
||||||
|
-- "args": {"list"},
|
||||||
|
-- "action": function() ...do stuff... end,
|
||||||
|
-- "helpText": "List the things."
|
||||||
|
-- },{
|
||||||
|
-- "args": {"show", "<thingName:string>"},
|
||||||
|
-- "action": function(thingName) ...do stuff... end,
|
||||||
|
-- "helpText": "Find a given thing by name and show it"
|
||||||
|
-- }}
|
||||||
|
--
|
||||||
|
-- This would match against the second subcommand, effectively calling your function
|
||||||
|
-- with "testName" as the argument.
|
||||||
|
-- processCommand("shopkeeper", subcommands, "show testName")
|
||||||
|
--
|
||||||
|
-- Calling this with "help" or any nonmatching argument will print out the list of
|
||||||
|
-- subcommands and descriptions, using the commandName argument as the overall command
|
||||||
|
-- name for documentation.
|
||||||
|
function processCommand(commandName, subcommands, input)
|
||||||
|
inputArgs = splitargs(input)
|
||||||
|
|
||||||
|
for _, subcommand in pairs(subcommands) do
|
||||||
|
local match = true
|
||||||
|
local matchArgs = {}
|
||||||
|
local foundOptArg = false
|
||||||
|
|
||||||
|
-- Go through each subcommand arg to look for non-matches. Innocent until proven guilty.
|
||||||
|
for i, arg in ipairs(subcommand.args) do
|
||||||
|
local startIdx, _, argName, varType, argOpt = arg:find("([^:]+):?([^?]*)([?]?)")
|
||||||
|
if not startIdx then
|
||||||
|
error("Invalid subcommand argument specifier: "..arg)
|
||||||
|
elseif foundOptArg and argOpt ~= "?" then
|
||||||
|
error("Found non-optional argument ("..arg..") after optional argument.")
|
||||||
|
end
|
||||||
|
|
||||||
|
if varType == "" then
|
||||||
|
-- Exact match for subcommand name
|
||||||
|
if inputArgs[i] ~= argName then
|
||||||
|
match = false
|
||||||
|
end
|
||||||
|
else
|
||||||
|
-- Variable. Check type and optional state
|
||||||
|
local rawValue = inputArgs[i]
|
||||||
|
|
||||||
|
if varType == "number" then
|
||||||
|
rawValue = tonumber(rawValue)
|
||||||
|
if not rawValue then
|
||||||
|
match = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Check that optional arguments are given values, or no match
|
||||||
|
if argOpt == "?" then
|
||||||
|
foundOptArg = true
|
||||||
|
elseif not rawValue or rawValue == "" then
|
||||||
|
match = false
|
||||||
|
end
|
||||||
|
|
||||||
|
table.insert(matchArgs, rawValue)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Got too many arguments, fail
|
||||||
|
if #inputArgs > #subcommand.args then
|
||||||
|
match = false
|
||||||
|
end
|
||||||
|
|
||||||
|
if match then
|
||||||
|
subcommand.action(unpack(matchArgs))
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not (#inputArgs == 1 and inputArgs[1] == "help") then
|
||||||
|
cecho("<red>Invalid syntax.<reset>\n\n")
|
||||||
|
end
|
||||||
|
cecho("<white>Available options for "..commandName.." command:<reset>")
|
||||||
|
for _, subcommand in pairs(subcommands) do
|
||||||
|
cecho("\n\n<yellow>"..commandName)
|
||||||
|
for _, arg in ipairs(subcommand.args) do
|
||||||
|
local _, _, argName, varType, argOpt = arg:find("([^:]+):?([^?]*)([?]?)")
|
||||||
|
if varType == "" then
|
||||||
|
cecho(" <yellow>"..argName)
|
||||||
|
elseif argOpt == "?" then
|
||||||
|
cecho(" <yellow>[<ansi_light_black>"..argName.."<yellow>]")
|
||||||
|
else
|
||||||
|
cecho(" <yellow><<light_gray>"..argName.."<yellow>>")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
cecho("<reset>\n\n"..subcommand.helpText)
|
||||||
|
end
|
||||||
|
echo("\n\n")
|
||||||
|
end
|
11
src/triggers/comlink-info/inv-comlink-info.lua
Normal file
11
src/triggers/comlink-info/inv-comlink-info.lua
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
if not lotj.comlinkInfo.comlinks then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local line = lotj.comlinkInfo.cleanupComlinkName(matches[1])
|
||||||
|
local comlink = lotj.comlinkInfo.comlinks[line]
|
||||||
|
if comlink ~= nil then -- found a comlink with stored data
|
||||||
|
cecho(" <yellow>-> <gray>(Chan:<red>" .. comlink.channel .. "<gray> Enc:<red>" .. comlink.encryption .. "<gray>" .. ((comlink.note and " Note:") or "") .. "<red>" .. ((comlink.note and comlink.note) or "") .. "<gray>)")
|
||||||
|
end
|
||||||
|
|
||||||
|
setTriggerStayOpen("inventory-comlinks", 1)
|
5
src/triggers/comlink-info/store-comlink.lua
Normal file
5
src/triggers/comlink-info/store-comlink.lua
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
lotj.comlinkInfo.registerComlink(matches.comlink, matches.channel, matches.encryption)
|
||||||
|
echo("\n")
|
||||||
|
lotj.comlinkInfo.log("Stored comlink: "..matches.comlink)
|
||||||
|
lotj.comlinkInfo.log("Stored channel: "..matches.channel)
|
||||||
|
lotj.comlinkInfo.log("Stored encryption: "..matches.encryption)
|
50
src/triggers/comlink-info/triggers.json
Normal file
50
src/triggers/comlink-info/triggers.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "store-comlink",
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"pattern": "^You tune (?<comlink>.*) to channel (?<channel>.*)\\.$",
|
||||||
|
"type": "regex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "^You set (?P<comlink>.*) to encryption code (?P<encryption>.*)\\.$",
|
||||||
|
"type": "regex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "^(Current comlink now\\:)?(?P<comlink>.*) Frequency\\:(?P<channel>.*) Encryption\\:(?P<encryption>.*)$",
|
||||||
|
"type": "regex"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "inventory-comlinks",
|
||||||
|
"fireLength": 1,
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"pattern": "^You are carrying\\:$",
|
||||||
|
"type": "regex"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"name": "inv-comlink-info",
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"pattern": "^ (.*)$",
|
||||||
|
"type": "regex"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "equipment-comlink",
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"pattern": "^\\<(.*)\\> +(?P<comlink>.*) \\(Channel\\: (?P<channel>.*?)\\)( \\(Code\\: (?P<encryption>.*?)\\))?$",
|
||||||
|
"type": "regex"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"script": "lotj.comlinkInfo.registerComlink(matches.comlink, matches.channel, matches.encryption)"
|
||||||
|
}
|
||||||
|
]
|
Loading…
Reference in New Issue
Block a user