XiSMS
A Windower addon for Final Fantasy XI that sends SMS notifications based on in-game events and conditions. Configure custom triggers and receive alerts via SMS using the XiSMS web service.
Features
- Send SMS notifications for custom in-game conditions (e.g., low HP, job points reached)
- Filter and match chat log messages using wildcards
- Easy configuration via XML
- Supports multiple notification types and conditions
- Simple command interface
Requirements
Installation
- Download or clone this repository into your Windower
addonsdirectory:git clone <repo-url> <Windower>/addons/XiSMS - Copy the example settings file:
cp data/settings.example.xml data/settings.xml - Edit
data/settings.xml:- Enter your API key from XiSMS in the
<key>field. - Customize notification conditions and messages as needed (see below).
- Enter your API key from XiSMS in the
Updating
To update XiSMS to the latest version, run the following command in your XiSMS addon directory:
git pull This will fetch and apply the latest changes from the repository. Note that your settings.xml will remain untouched as it is excluded.
Configuration
Edit data/settings.xml to set your API key and notification rules. Example:
<settings>
<global>
<key>your_api_key_here</key>
<tells>on</tells>
<notifications>
<when>
<condition>
<!-- eq, gt, lt, gte, lte, ne -->
<lt>
<!-- property path in the player object -->
<var>vitals.hp</var>
<val>800</val>
</lt>
</condition>
<message>HP is below 800!</message>
</when>
<when>
<!-- You can also use a filter to match messages in the log. * is a wildcard. -->
<filter>Romeo earns a job point! *499*</filter>
<message>Job Points are at 499!</message>
</when>
</notifications>
</global>
</settings> Condition-based Notifications
- Supported condition operators:
eq(equals),gt(greater than),lt(less than),gte(greater than or equal),lte(less than or equal),ne(not equal) - Use property paths from the player object (e.g.,
vitals.hp,job_points.rdm.jp)
Chat Log Filtering
You can filter chat log messages using wildcards in the <filter> tag:
- Use
*as a wildcard to match any sequence of characters - Examples:
Romeo earns a job point! *499*- matches job point messages containing “499”*finds a monster*- matches any monster discovery message*obtained*- matches any message containing “obtained”
The filter is case-sensitive and matches against the raw chat log messages.
Usage
- Load the addon in Windower:
//lua load XiSMS - Start the SMS listener:
//xsms start - Stop the SMS listener:
//xsms stop - Send a test SMS:
//xsms test - Reload the addon:
//xsms reload - Dump player object (for advanced users):
//xsms dump - Reset notification sent flags:
//xsms reset - Enable SMS on /tell:
//xsms tellson - Disable SMS on /tell:
//xsms tellsoff - Show help:
//xsms help Auto-Loading XiSMS on Startup
To automatically load and start XiSMS when Windower launches, add the following lines to your Windower/scripts/init.txt file:
lua l xisms
xsms start This ensures XiSMS is loaded and the SMS listener is started every time you launch Windower.
Command Reference
start— Starts SMS listenerstop— Stops SMS listenerreload— Reloads the addondump— Dumps player object as formatted tablereset— Resets the notification sent flagtest— Sends a test SMStellson— Enables SMS notifications for /tell messagestellsoff— Disables SMS notifications for /tell messageshelp— Displays help text
Notes
- The addon uses
lib/dkjson.luafor JSON encoding (included). - All configuration is done via
data/settings.xml. - You must have a valid API key from XiSMS.
- Game ID references (e.g., job, emote, chat mode, weather, skill, bag IDs, etc.) can be found at: Windower Lua Game ID Reference
License
- XiSMS addon: MIT License
lib/dkjson.lua: Copyright (C) 2010-2024 David Heiko Kolf (MIT License)
For support or questions, open an issue or contact the author.