Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


Vadi ✭✭


Last Active
  • Re: Mudlet Scripting

    Great example of using functions as first class variables 
  • Re: Mudlet Scripting

    That might be true too!

    Also, found this interesting tidbit while looking up the history of Lua:

    It turned out that Bret Mogilefsky was the lead programmer on Grim Fandango, the main adventure game LucasArts released in 1997. In another message he told us that "A TREMENDOUS amount of this game is written in Lua" (his emphasis). This first use of Lua in a game attracted the attention of many game developers around the world to the language.

  • Mudlet 3.4 - various improvements

    Change font size in userwindows

    itsTheFae added the ability to change the font size in userwindows - and additionally miniconsoles or the main window - with setFontSize():

    getFontSize() is also available to retrieve the current font size.

    Case-sensitive search

    You can now enable the case-sensitive search when searching in the editor thanks to the veteran Mudlet contributor SlySven.

    Clicking on a search result will now actually focus on the search result itself now, be it whenever inside a script, a trigger pattern, or - new for 3.4 - the event handler the script is for. Previously, it search would just take you to the right item but not show you where exactly it was.

    Additionally, a clear button has been added to unhighlight all search results:

    1-50 trigger patterns per trigger

    The display has been tweaked slightly and the patterns are numbered from 1-50 instead of 0-49 as you'd normally expect when counting things:

    Improved timer and variables layout

    SlySven has also improved the look'n'feel of the script editor, organising the timer and variables layouts:

    As well as aligning trigger/alias/script/etc's name to be consistenylu called "Name" and a plain command to send as "Command":


    Fixed a crash with installModule()

    If you opened and closed the modules dialog and then called installModule() from a script, Mudlet would crash - this is now fixed thanks to SlySven.

    Geyser gauges improved

    demonnic brought Geyser's gauges into alignment with createGauge() , text in set on a gauge will always stay centered now.

    Linux AppImage fixed for Debian

    We've fixed the AppImages to extract correctly on Debian OS.

    Ctrl+/ to toggle commenting

    You can now use the Ctrl+/ shortcut to toggle commenting in the code editor thanks to the work by gamecreature:

    Normal cursor on the profiles window

    When you launched Mudlet and didn't have any profiles enabled to autoconect, the profiles window came up - but the cursor was stuck in the 'loading' state. This has been fixed up by vadi2.

    Multiple MSDP arrays inside an array fixed

    Following a tip-off on the forums, keneanung fixed a case where Mudlet wouldn't properly multiple MSDP arrays inside another array.

    Code quality improvements

    Mudlet now uses the C++11 nullptr keyword all throughout the codebase and several Qt conventions are now better followed.

    Compiling Mudlet on Windows

    vadi2 released a video walkthrough of getting setup with developing Mudlet on Windows. Mudlet is a project made by people like you & me - and it all starts with getting the code, making Mudlet run, making a tweak and seeing what you break!

    We encourage you to have a go at messing around with Mudlet - any improvements, big or small, would make this free and open project better :)

    New editor

    Don't forget, the previous release introduced a new editor that has 300+ skins, allows for easier indenting, and has multi-cursor selection! If you haven't updated to a newer Mudlet already, now's the time to do so.





    Thanks to demonnickaekeneanungSlySven, and vadi2 for making this update!

  • Mudlet 3.0 final is here!

    So long 2.1, 3.0 delta!

    Mudlet 3.0 is the culmination of 4 years of hard work and replaces Mudlet 2.1 as the latest version of Mudlet: it's the recommended upgrade if you're on 2.1 or any of the 3.0 previews (3.0.0-delta, 3.0.0-epsilon).

    This release adds many new features to 2.1 and fixes a lot of the issues that have been present in preview versions of 3.0 - big thanks to everyone involved!

    Big features

    There has been a ton of improvements in Mudlet, so included below a quick summary of the big features.

    Variables view

    You can now view and edit your Lua variables from within Mudlet! No longer are they things that are just "there".

    Additionally, you can now get Mudlet to save your variables by ticking them in the list.

    Windows sound fixes

    Mudlet can now play sound again on Windows!

    HTTPS downloads

    Mudlet can now download over https:// links! This means that Mudlet packages can now be installed and/or self-updated from secure websites like Github.

    As a bonus tip, if you're a package author, check this out for an easy way to install your package.

    Double-click word selection

    You can now double-click in the main window or a miniconsole to select a word:

    You've also got the option of choosing what characters will the selection stop on - in case you don't want to select quotes and such.

    Mudlet is now skinnable

    You can create and apply skins to Mudlet!

    Check this out for a demo you can try yourself.

    Mapper API improvements

    lot of work went into the mapper. Mudlet can now perform automatic quality checks on your map, a lot of the right-click windows in the mapper have been improved, custom exit lines creation has been streamlined, and pathfinding performance across large maps and distances has been improved. For coders, a lot of new functionality has been introduced - check out the API changelog.

    Script loss issues

    Development preview versions of Mudlet have had issues where they'd lose your scripts - this is no more and all such problems have been ironed out in the 3.0 final.

    A ton of db: fixes

    Mudlet's database interface has received a lot of attention and improvements, with a lot of functions getting fixes to work - work better, faster, stronger. If you've got a patched copy of the db: interface in your scripts, try running them without the local fixes so you can enjoy the new functionality.

    macOS improvements

    A lot of improvements have gone into the macOS version of Mudlet: the toolbar no longer goes black when you open the mapper, Mudlet no longer randomly resizes, tab completion works, and the new installer is really good-looking:


    MSDP support

    Mudlet now includes native support for MSDP! Protocol description available here, and as always, Mudlet allows you to add support for your own subchannel protocol.

    Miscellaneous improvements

    Below is a highlight of some other improvements over 2.1:

    • GMCP data overflow on IRE MUDs fixed
    • Mudlet now detects infinite loops in aliases between the pattern and the substitution field
    • Strike-out text support has been added
    • nil and boolean can now be used with raiseEvent()
    • Geyser now supports flyout labels. You can build menus using them in a manner similar to insertPopup().
    • Buttons creation has been fixed

    See here for the list of API changes.

    Work that went into 3.0

    Mudlet is an open project: anyone can contribute to the community, wiki, or even Mudlet's code. Release 3.0 was 4 years in making: 650+ commits, 18 authors, thousands of users (65,000 downloads on 2.1 alone).

    Mudlet is a much different project compared to 2.1. Internally, we've upgraded from Qt4 to Qt5, all development is done on Github, modern C++11 is in use, and quite importantly, a very streamlined development workflow. Sounds interesting? Join us!

    Looking forward

    Mudlet 1.0 was about getting a super-fast, open-source and free client for Windows, macOS and Linux. Mudlet 2.0 was about getting that client an awesome 2D and 3D mapper. Mudlet 3.0 is a culmination of efforts of improvements to all around functionality of the client.

    Mudlet 4.0 will be about taking on the world and making Mudlet international. We aim to make Mudlet enjoyed by MUD players all around the world  - everywhere from Spanish to Chinese MUDs.


    This project would not be possible without the passion and free time contributed by many of individuals. We owe big thanks to:

    Ahmed Charles
    Chris Mitchell
    Stephen Lyons
    Christer Oscarsson
    Colton Rasbury
    Damian Monogue
    Eric Wallace
    Florian Scheel
    Heiko Koehn
    Ian Adkins
    Michael Hupp
    Owen Davison
    Vadim Peretokin


    And, one last thing, Mudlet now has a Discord server! Join up.

  • Mudlet 3.0.0-epsilon

    Hey everyone!

    It's been a while since the last Mudlet update, but here we are again! It's great to see that many people still value a free, open-source, and cross-platform desktop client and continue to make it their choice for playing MUDs to this day.

    As we're getting into making releases again, please forgive us if this one is a little rusty. The idea of this release is to get back to a regular schedule and get closer to the 3.0 Mudlet final.

    Since the last delta release, a lot of work has gone into improving the mapper, with our contributor Stephen Lyons doing the lion's share of work. This release and the tidiness of Mudlet's forums would not be possible without him.

    Mapper improvements

    A lot of the mapper code has been improved and optimized to run faster, both when speedwalking and when editing maps. In addition to performance improvements, a whole host of functions have been added to the API to ease scripting and allow you to get more done with less work!

    The mapper is now more strict on area names and now allows unique area names only, as having duplicate area names was problematic for scripting and UI dropdowns. Along with this, map auditing has been introduced, which auto-corrects duplicate area names and a few other things. Upon loading Mudlet on an old map for the first time, you might see this:

    Mudlet map audit

    Don't be concerned about it, it's just Mudlet cleaning up the map for you. You can see a more detailed report of the audit in the errors.txt file that is mentioned at the bottom of the message.

    The mapper widget's area list has been improved and now updates more dynamically to any map changes. To make map editing easier, the room selection widget is now editable, allowing you to exactly select the rooms you'd like to modify at once.

    Many mapper functions now also allow using names in other than English, as part of the work that has went into making Mudlet more friendly to MUDs in other languages.

    Mapper API function improvements:

    • getAllRoomEntrances() has been added: find all the normal and special exits leading into a room
    • setAreaName() has been improved: now takes an area name for the original area, complementing using the area id
    • searchRoom() has been improved: now allows for case-sensitive and substring/exact match searches
    • getAllRoomUserData(roomID) has been added: given a roomId number returns a lua table of all the user data
    • getRoomUserDataKeys(roomID) has been added: given a roomId number returns a lua list of all the keys of the user data for that room.
    • clearRoomUserDataItem(roomID, key) has been added: given a roomId number and a user data key removes that key/value pair from the user data for that room. Returns true if data was removed, false if not and nil if the room does not exist for that roomId number.
    • searchRoomUserData(key, value) has been improved: given a string "key" and "value" returns a list of the roomIDs which contain that value for that key, now returns a sorted list of room numbers.
    • searchRoomUserData(key) has been improved: given a string "key" returns an ascending sorted list (lua table with monotonically incrementing integer keys from unity) of the unique values stored against that key in all rooms.
    • createRoomID(startingRoomNumber) variant of createRoomID() has been added, allowing you to specify where should Mudlet start searching from for an available room ID when creating a new room
    • setDoor() has been improved to return true on success or nil+false on error
    • new functions for storing userdata in areas and the map itself, however they require upgrading the map format in order to store that data (meaning any Mudlet before 3.0.0-epsilon won't be able to get this data):
      • searchAreaUserData((string)<key>[, (string)<value>])
      • setAreaUserData((number)<area Id>, (string)<key>, (string)<value>)
      • clearAreaUserData((number)<area Id>)
      • clearAreaUserDataItem((number)<area Id>, (string)<key>)
      • getAreaUserData((number)<area Id>, (string)<key>)
      • getAllAreaUserData((number)<area Id>)
      • setMapUserData((string)<key>, (string)<value>)
      • clearMapUserData((string)<key>)
      • clearMapUserDataItem()
      • getMapUserData((string)<key>)
      • getAllMapUserData()

    OSX resizing fixed

    Mudlet 3.0.0-delta had an issue where the main window would resize whenever text got too big for the input line. This has now been fixed.

    HTTPS support

    IRE maps are now downloaded over HTTPS, and the downloadMap() function now supports downloading over HTTPS as well. loadMap() has also been improved to handle importing IRE XML map files in addition to Mudlet map files, so should the URL change in the future, you can still load maps in without waiting for a Mudlet update.

    Colour parsing

    You can now trigger on grey (light white) and cyan colours - colour triggers previously did not differentiate between them properly. Additionally, a few colours weren't rendered exactly right when coming in from the MUD - this has now been fixed as well.

    Strikeout support

    Scripts can now set text to be striken-out via the newly-added setStrikeOut() function, both in the main and console windows. Labels have already supported this feature through CSS formatting.

    New events for data protocols

    sysProtocolEnabled and sysProtocolDisabled  envets have been added to let your scripts know when MDSP, ATCP, GMCP, MXP, or channel102 data protocol has been enabled.

    nil and boolean for raiseEvent()

    The raiseEvent() function has been improved and now supports passing nil and boolean arguments.

    Code cleanup

    Lastly, a lot of Mudlets code has been improved - dead code removed, better coding style and practices applied. Anyone wishing to get into improving Mudlet is welcome to join us on the Gitter chat.


    • fixed small bug in editor where the icon for a script would dissapear when it was activated via saving
    • added options to display spaces and paragraphs in the code editor
    • status bar for the cursor's position in a code editor has been enchanced to report character position and the total amounts of lines/characters
    • a lot of error messages from Lua API functions have been fixed to report the proper function name
    • spawn() function has been fixed to output timely

    Onto 3.0 final

    In order to release the 3.0 final, we need to clear off the last remaining issues that we've introduced since 2.1, and any issues found during testing of 3.0.0-epsilon. Please report any problems you find to our forums or directly on the bugtracker, and a big thank you for taking the time to do so! We strive to ensure that Mudlet is always in good quality.


    Big thanks to Stephen Lyons, chrio, Chris Mitchell, Eric Wallace, keneanung, and Zahatric for making this release possible. We look forward to more regular releases in the future!

    EoghanDiceneIniarKiskanJeremy SaundersMathiaus