SIGN IN YOUR ACCOUNT TO HAVE ACCESS TO DIFFERENT FEATURES

CREATE AN ACCOUNT FORGOT YOUR PASSWORD?

FORGOT YOUR DETAILS?

AAH, WAIT, I REMEMBER NOW!

CREATE ACCOUNT

ALREADY HAVE AN ACCOUNT?
  • SIGN UP
  • LOGIN

Aardwolf Boot Lyceum

MENUMENU
  • Joining
  • Rules
  • Maps
  • Forums
  • Members
    • New Members
    • Promotion Guide
    • Guides
    • Area Quests/Goals
    • Plugins
    • Outcasting
    • External Links
    • Staff Information

Alias for common area actions

Sunday, 27 September 2026 by stayron

Editor’s Note: Remember that stacking commands can cause you to break rules – you should make sure you’re familiar with “help botting” and “help is this botting” before automating anything that sends multiple commands.

I’ve noticed that in certain areas, I occasionally have to perform the same set of actions over and over again. This could be due either to the nature of the area or to the fact that the mapper doesn’t know how to deal with mazes. Creating and maintaining a separate alias for each location is tedious, and on top of that, you have to remember all their names. So I decided to create a single universal alias for all simple, typical actions—but I actually ended up with three 🙂 Let’s start with the simplest, auxiliary one:

Alias: mg *
Send: mapper goto %1
Send To: Execute

Now, in our main alias, we can type mg 1000 to start moving toward the room with ID 1000. Of course, you can also use it on its own. But now let’s move on to the more interesting part. First, I’ll show you the entire alias code, and then I’ll explain what it does for each location.

Alias: aa
Send:

require "gmcphelper"
require "wait"

-- Helper function to setup command line value
local function QueueCommand(command)
    wait.make(function()
        wait.time(0.1)
        SetCommand(command)
    end)
end

local area = gmcp("room.info.zone")  -- area name
local roomNum = tonumber(gmcp("room.info.num"))  -- room ID
local switch = {
    darklight = function()
        Execute("mg 19644")
        QueueCommand("ah lich")
    end,
    desert = function() Execute("mg 20186") end,
    earthplane = function() Execute("mg 1398") end,
    gallows = function() Execute("mg 4384;o n") end,
    goldrush = function ()
        Execute("mg 15044")
        QueueCommand("ah wight")
    end,
    imagi = function() Execute("mg 36808") end,
    knossos = function()
        Queue("open n")
        Queue("run nes")
        Queue("buy steak")
        -- other commands for AQ
    end,
    labyrinth = function()
        SendNoEcho("keyr get vv1")
        Execute("mg 31406")
        SendNoEcho("give vv1 jula")
    end,
    lemdagor = function() Execute("mg 1966") end,
    masq = function() Execute("fly;mg 29836") end,
    nenukon = function() Execute("ah exile") end,
    petstore = function() Execute("mg 996;ad kender") end,
    prosper = function()
        if 28336 == roomNum then
            local bag = GetVariable("portal_bag")
            SendNoEcho("get royale " .. bag)
            SendNoEcho("open w")
            SendNoEcho("put royale " .. bag)
        else
            Execute("mg 28268")
        end
    end,
    ruins = function() Execute("mg 16835") end,
    scarred = function()
        Execute("enter crack;ah pete")
        QueueCommand("aha")
    end,
    stuff = function() SendNoEcho("say shadows") end,
    tombs = function() SendNoEcho("leave") end,  -- goal
    vlad = function()
        if 15970 == roomNum then
           SendNoEcho("autoloot off")
           SendNoEcho("n")
           SendNoEcho("exits")
        else
           SendNoEcho("autoloot on")
        end
    end,
}

if switch[area] then
    switch[area]()
else
    Note("Unknown area: " .. area)
end

Send To: Script

Let’s take a quick look at how this works using the “The DarkLight” area as an example. Let’s say a quest mob is located in a room called “A Dark Street”, which is behind a maze and the mapper can’t guide you there. You simply type aa and find yourself in the room “An Old Twisted Road” (right in front of the maze) with the command ah lich already in your command line. Now, if you just press Enter, then S&D will start an automatic hunt that will lead you to the second portal. In this case, I didn’t send the command automatically, since the target might be inside the puzzle itself or it might be the lich itself (in which case you’d need to hunt the imp).

Now let’s briefly go over the list of areas that are already included in the alias and what’s being done for them.

  • darklight — run to the maze and pre-hunt for exit
  • desert — run to the starting room
  • earthplane — run to the mobprog room (Frozen River)
  • gallows — run to the maze
  • goldrush — run to the maze and pre-hunt for exit
  • imagi — run to the “The master bedroom” (start and exit)
  • knossos — solve area AQ (just the beginning)
  • labyrinth — give key to Jula (AQ)
  • lemdagor — run to the starting room
  • masq — fly again and leave underwater section
  • nenukon — hunt for pre-exit room
  • petstore — adopt kender
  • prosper — run to the starting room or open hotel room (goal and some tuning required)
  • ruins — run to the maze
  • scarred — enter crack and auto-hunt Pete
  • stuff — trigger for “The Stone Vault” teleport
  • tombs — run to the starting room (goal required)
  • vlad — autoloot off and search for maze exit if in the starting room, else autoloot on

Why are there so many sequences where we’re just running to the starting room? Because these locations consist entirely or almost entirely of no-portal + no-recall rooms.

But our automation doesn’t end there. There’s another common task that needs to be handled constantly — searching for keys. To handle this, I decided to write in the notes for the room in front of the door exactly what needs to be done, for example, qw mobname or open chest;get all chest. But I quickly got tired of copying and pasting the commands every time. So I created another alias that takes the text of the note and sends it as a set of commands.

Alias: aa
Send:

require "gmcphelper"

local roomNum = tonumber(gmcp("room.info.num"))
local dbPath = GetInfo(66) .. "Aardwolf.db"
local db, err = sqlite3.open(dbPath)
    
if not db then
    Note("Could not open Aardwolf DB: " .. tostring(err))
    return
end

local sql = "SELECT notes FROM bookmarks WHERE uid = %d"
local query = string.format(sql, roomNum)
local notes = nil

for row in db:nrows(query) do
    if row.notes and "" ~= row.notes then
        notes = row.notes
    end
end

if nil == notes then
    Note("No notes found for the current room.")
    return
end

Execute(notes)

Send To: Script

Now, if there is a note for a room, you can enter the ae command, and it will take the text of the note and execute all of its contents. I think there are many more interesting actions for different locations and other ways to automate things — please share them in the comments.

guideguidesmushclient alias
Read more
  • Published in Public, Public-Guides
No Comments

MUSHClient alias for training stats

Monday, 09 December 2019 by Zafrusteria

Training your stats can be a pain using the standard mud commands. I found the following MUCHClient alias will not only speed up the process but also helped me do it without as many mistakes. This is how it works. The train command gets a new way for you to say what you want trained and how many times. I’ll will use examples to explain. Okay you have just leveled and received 3 trains for the level. You want to train int, wis and luck. Using MUD commands you would use:

train int
train wis
train luck

Using this alias you just use the initial letter of each stat to train it. i=int, w=wis, l=luck. You get the idea. To train all three you can use.

train iwl

They will also be trained up in the order you place them from left to right.
Next time you level you get lucky and get 8 trains. Now you want to bring up all your stats and then Luck, Int and Dex again if you have enough trains. So without doing any maths 🙂

train ilwsdc 3

So you get the idea of how it works just list the first letter for each stat you want to be trained one or more times. IOf you then want to so that multiple time add a number on the end.

The part you really want, the alias.Open the Alias editing GUI. Press Alt+enter. The in the left hand side list  about 1/3 of the way back up from the bottom click on Alias. Then click on the Add button to get the Alias editing GUI. Add the text as shown below.

Alias: train\s+([siwdcl]+)(?:\s+(\d*))?$

Send:
local stats = string.lower("%1")
local len = string.len(stats)
local total = 1
local lookup = {['s'] = 'str', ['i'] = 'int', ['w'] = 'wis',
                ['d'] = 'dex', ['c'] = 'con', ['l'] = 'luck'}

if "%2" ~= "" then
    total = tonumber("%2")
end

for i = 1, len, 1 do
    local st = string.sub(stats, i, i)
    if lookup[st] ~= nil then
        Send("train "..total.." "..lookup[st])
    end
end

Send("train")

In the Send to drop down select Script.

Make sure that the following boxes are ticked on the right hand side. Enabled, Ignore case and regular expression.

A screen shot of what it should look like.

screen shot for the MUSHClient training Alias

mushclient alias
Read more
  • Published in Public, Public-Guides
No Comments

Boot Lyceum © 2016 - 2026. All rights reserved.

TOP