LiCe
From AlexWiki
The following information is dated.
LiCe is an addon for World of Warcraft, based on the ircII-EPIC4 script LiCe written by an old friend of mine, SrfRoG. This basically contains a mixture of features from the script and from the ircII-EPIC4 program as well as some other things that are only useful for a game like World of Warcraft.
Contents
|
Current Features
- custom command/lua script aliases (with /alias)
- all non-essential LiCe functionality/shortcuts created as aliases so you can remove/change them if you don't like them
- /wow alias to open main menu (failsafe against accidentally unbinding the main menu key binding)
- intelligent command line (only type in minimum needed letters of a command to uniquely identify it (ie. /sil -> /silly))
- extremely simple and intuitive configuration (with /sensors, /tog and /mtog and (for more advanced users) /set)
- on-the-fly cycling of chat targets in both directions (by tapping a preset char, doubletap to insert char (default: `))
- stacked messages (multiple lines of items condensed into one line with items separated by spaces)
- LiCe Status Bars - 3 fully-configurable status bars around the most viewed place in the game. (Chat window)
- improved /reply (matches customizable auto-reply words against say/yell/chan msgs and adds author to /reply list)
- auto-reply beeps/message highlighting (highlights sender name and matching auto-reply words in messages)
- AFK in battlegrounds/arena confirmation (shows optional warning confirmation before allowing AFK in battlegrounds/arena)
- AFK/DND event logging (logs auto-reply matches/whispers/alerts while AFK/DND. type /play for interactive playback)
- enhanced DND (whispers are hidden and auto-reply matches are silenced while you are in DND)
- Chat FLOOD protection (auto-ignores users who say/chan/emote/textemote flood (XX msgs in YY milliseconds) (configurable))
- Yell ANNOYANCE protection (auto-ignores users who yell more than XX times per YY seconds (configurable))
- buffered chat frames/reply lists/etc. (say goodbye to losing msgs on continent/instance loading (cleared on logout after 15mins))
- persistent conversations (with /query - makes whisper conversations with someone easy to carry out)
- chat timestamps w/fully-customizable formatting
- enable use of arrow keys in editbox without using alt
- advanced scrolling of ChatFrame with mouse wheel (with customizable acceleration and sensitivity)
- rewritten /friend system (per-realm/faction shared friends lists, super easy friend adding/removing/listing)
- /friend easy whisper (after listing online friends, type "/wXX " where XX is the index to automatically whisper that person)
- /friend easy /query (after listing online friends, type "/qXX " where XX is the index to automatically /query that person)
- rewritten /ignore system (same as /friend plus interactive ignore removal with /noig)
- WHO Database maintains information about auto-reply matches and people who whisper you.
- Automatic /who for auto-reply matches. No more wondering where that person who wants a chant/port/etc. is.
- Extended information in whispers. Shows level, class, and location right with the person's name.
- Channel statistics on join/chatinfo request. Including Friend/Ignore notification.
Getting Around in LiCe
The program is really easy to use. In this part of the page I will show you how to get around the program easily starting with the configuration, and then pretty much telling you how to use each of the separate features.
Configuration
Configuration of LiCe is extremely easy. Virtually all of LiCe's configuration is controlled by four commands. One of which houses mostly advanced settings that you probably wouldn't want to change anyway. These commands are /tog, /mtog, /sensors and /set. There is a fifth one, /ar, but it only serves one function and it's a no brainer. I will discuss that in the Auto-Reply section.
/tog
This command is the way that you turn on/off certain features of LiCe to set it up how you like. Typing /tog by itself will print out a list of settings you can turn on/off and it will display their default and current settings. By typing out the letter of the option you wish to change, it will change it to the opposite value, like a light switch. If it's on, it will turn it off, if it's off, it will turn it on and vice versa. Once you get used to the letters and what they mean, you can simply type /tog <letters> to toggle those settings. The settings controlled here are mostly general purpose settings.
/mtog
This works exactly the same way that /tog does, except that the settings are more geared towards messages and communication and how that stuff is treated. For example, this is where you tell it exactly what types of messages you want to record when you're AFK, whether you want to hide whispers while you're DND, etc. It's all in here.
/sensors
This command is where you set up the various sensors for different features of LiCe. For example, how long to keep the chat window messages after you log off, how many messages per how much time constitutes a flood, and even the format the timestamps are in. Some of this stuff you probably won't want to change.
/set
This command controls all low-level variables for LiCe. Things like mouse acceleration speed and mouse sensitivity for the mouse-wheel scrolling, colors of various messages, certain other features. Basically things that you will not want to change often, if at all. While this command is a little more advanced, it is very intelligent so you cannot possibly do anything (really) bad. It knows what variable you are changing and knows what is, and is not, supposed to be in there. Usage is pretty simple, just type /set by itself to list all the variables. If you're looking for something in particular you can use part of a variable name and it will show all variables starting with what you typed. I won't put the full list here, I will put that at the end of this page, since it's not really vital to using the program or testing.
Command Interpretation
The first thing you have to know about LiCe is that it has its own command interpreter sitting on top of Blizzard's. This is basically a clone of how ircII-EPIC's command interpreter is. You only have to type in enough of a command to isolate it from other commands. Example: Say you have a command called /addfriend that will add a friend to your friends list. Well, most likely typing just /addf will be seen the same way, because there are no other commands starting out with /addf (this is just an example). The LiCe command interpreter knows all the commands available from all loaded addons, and thus interprets them appropriately. If you type in something that matches more than one command, it will tell you it's ambiguous and ask you to type out a few more letters of the command.
Channel Surfing
Ok, so the official name is channel cycling, but channel surfing sounds better so from now on, I'm making that the official name. Channel surfing is basically the ability to easily switch chat targets on the fly while you're typing your message. The chat targets cycle in this order:
Say, Whisper, Party, Raid, Guild, [1. General - Wherever you are], etc. (list of channels you are in)
You can surf the channels in both directions. The way this works is while the editbox is open, you tap the back tick character ( ` ) to cycle channels to the right in the above order, and use shift-back tick ( ~ ) to cycle them in reverse order. Certain targets like party, raid and guild will be skipped if you are not in a party, raid or guild (respectively) when you are channel surfing.
Whispers are a different story, because it's not REALLY a channel that you type /w and you're talking in it. You're just sending messages to people. There are two situations in which you will see the whisper actually in the cycling process:
- If you already were in the middle of typing a whisper, and started channel surfing from there. The whisper will be available for 15 seconds after the last time you switched to it. Everytime you switch back to it the 15 seconds starts over.
- If you are in a /query conversation with somebody, then the whisper will always be there when you channel surf until you end the conversation.
So you might be wondering "Well, what if I want to really type the backtick character in the edit box??" Well it's really simple. You just double tap it! It's like a double click. It's easy to do, but not so easy that you're forced to have to cycle channels really slowly in order to avoid inserting the character into the box. However, the timing is fully configurable using the DOUBLE_TAP_TIME /set variable. You can also change the characters you have to tap using the CHAT_CYCLE_CHAR and CHAT_CYCLE_CHAR2 /set variables as well. I chose the backtick because I thought it is probably the last character anyone would choose to type out in the edit box.
Scrolling the Chat Frame with the Mouse Wheel
LiCe allows you to smoothly scroll the chat frame with the mouse wheel. The default is that scrolling the mouse wheel by itself while hovering over the Chat frame will scroll it, while holding the Control key and scrolling the wheel will zoom in and out (normal behavior for the mouse wheel when not hovering over the Chat frame). If the X toggle is set, then this is reversed. You will have to hold Control while you scroll the mouse wheel in order to scroll the chat frame, while the wheel by itself is not changed from its default behavior.
While scrolling with the mouse wheel you can hold shift to scroll one page at a time, or hold alt and shift to scroll to the top or bottom of the frame with one flick of the mouse wheel.
Auto-Reply
Auto-Reply is what SrfRoG called the common feature in IRC (and in WoW) where you can hit TAB to reply to someone who has just sent you a message. In WoW, you have to type R instead (or type /r or /reply) because TAB switches targets, but the idea is exactly the same. This, however, does not need a name or configuration because it's very simple.
LiCe extends Auto-Reply however because you can set words that when said by anyone inside any channel, inside party or guild chat, in an emote or /say, it will beep at you as if it were a whisper, and you can reply to that person privately by typing R just as if it were a whisper. It will also highlight the word in the message, as well as the sender's name.
/ar
This is the command you use to set your Auto-Reply words. You just type /ar <list of words> to set your words. In WoW LiCe this is a bit more advanced than in the LiCe for IRC, in that you can specify what are called regular expressions into the words. They are a fancy (and somewhat odd?) name for pattern matching. You may or may not be familiar with the use of * to match anything and everything. Ie "far*" will match Farcry, Farcroft, and Far, but will not match Fact.
My Auto-Reply words are Larcos and port. By default your Auto-Reply word is your name. I use port so that I get beeped when someone asks to be ported somewhere in chat. After a while I got sick of messages saying "reported" being matched, and that's why I changed it to "%sport". %s basically will match a space character (or any other type of space character.. tab, etc.) so it will match port, portal, but not report or reported. This is where it comes in useful to use the simple pattern matching. If you really want to know all about regular expressions (which I doubt you do but anyway) just ask me and I can fill you in.
Some of the message toggles (remember /mtog?) specifically affect how Auto-Reply works.
Query Conversations
The Query feature is an easy way to have a no-frills conversation with someone via whisper. Don't you wish you could just hit enter and type out stuff just like you do when you type to party or guild chat? Now you can.
/query
In order to start a conversation, you type /query <name> and then you will be ready to roll. Once you are querying somebody anything you type out will go out to them in a whisper message automatically. To stop querying somebody you simply type /query by itself, or to query someone else just query someone else. You don't have to end a conversation to begin a new one, although it does sound like it might be somewhat rude I assure you it's perfectly okay. :)
Oops!
Everyone who has ever talked online whether it be in instant message, or a chat room knows the situation of getting confused and typing out a message to the wrong person. With LiCe, correcting this common mistake is a breeze.
/oops
Whenever you send a message to the wrong person, simply type /oops <name> where <name> is the person you meant to send it to, and LiCe will automatically inform the person you sent it to that it was meant for someone else, and send it along to the right person. If you don't want a random message to be picked, simply type /oops <name> <reason> and your apology will be sent to the person instead of a random one.
Friends
LiCe has a robust friends system written from scratch, including several aliases to make things easier (read about aliases in a later section). LiCe will keep track of your friends across characters but not only that, it will keep track of friends on multiple realms, and in different factions. Friends are also exempt from triggering flood protection and being ignored. You will be notified of their flood of course, but it will not ignore them.
/friend (or /fr)
The /friend command, or its alias /fr control the friend system. You can of course add friends with the friends panel. That works too, but this command makes it a lot easier to add multiple friends, or remove multiple friends. It basically works like this:
/friend +Buddy Pal -FriendNoMore
In that example, the two persons named Buddy and Pal will be added, and the person named FriendNoMore will be removed. You can specify literally as many names as you want, there is no limit (except for the amount of letters you are allowed to type in the edit box) and it will handle all the names you give it. Friends information as far as their level, class, location, etc. will be saved with your friends and gets used in various places. (For example, when you receive a whisper from your friends you see all this information because it does not need a /who to be gotten).
LiCe also has a way to list your friends to the chat frame, and has a feature this enables called "Easy Whisper." What easy whisper means is that you can list out your friends by typing /friend -l (online friends) and then you see a list like this:
[01] Buddy <23 Paladin @ Ironforge> [02] Pal <1 Priest @ Elwynn Forest> [03] Fireeagle <70 Rogue @ Undercity> [04] Nostradamus <60 Warlock @ Shattrath>
Then you simply would type /w3 and hit space to whisper Fireeagle or /w4 to whisper Nostradamus. You get the idea. There is also something called Easy Query, which is /q but works the same way, and that will /query somebody instead of whispering them.
You can also list all friends, whether online or not, by providing the -a flag to the command, like so:
/friend -la
In addition to this, both listing online friends, and listing all friends can be bound to keys in Key Bindings. There is a section for WoW LiCe near the very bottom.
But what if I want to remove some guy named Al from my friends list?
Wow, ya thought of that huh? So did I. Actually, the guys that wrote UNIX did. So since you specify options to /friend with - and the letter of the option, and you remove friends with - and the person's name, what happens if you have a friend who's name coincides with possible options? like Al (/friend -al which would list all friends, online or not). Well that is simple buckaroo! It was solved in UNIX a long time ago. You simply type this:
/friend -- -al
and voila, it knows that you want to remove Al and not list all your friends. This works for all commands that use the same style of arguments. :)
/sf and /sff
SF stands for show friends, and SFF is well, because your finger is already on the F. /sf will list your online friends and /sff will list all your friends. These aliases, like all others, can be removed or changed if you don't like them.
Ignore
They say ignorance is bliss. That's why you have the ability to ignore people in World of Warcraft. Just like for friends, LiCe has a similar ignore system written from scratch.
/ignore (or /ig)
Even though I copied and pasted the friends code to make the ignore system, it works a little bit differently. You are only able to add one ignore per line because you are able to specify a reason or comment for ignoring them. This allows you to look at your ignore list later and not have to wonder why the person is on your ignore list, and also, not delete someone off of it that you don't remember is a total asshole. The command is simple:
/ignore [+]<asshole> [<reason>] or: /ignore -GeorgeBush -Hitler -StupidNoob -NSyncBoy
The reason is only specified when you want to add a name, therefore you can remove as many names as you want, just like with /friend. If a user is ignored due to flooding, the reason is set as such, so when you look at your ignore list and see the new names, you will immediately no why without question.
/noig
This is a command unique to the ignore system. It will list all of your ignores and then prompt you as to which one to remove, by number. You can also type * to remove them all. I plan in the future to let you do ranges and lists, like 1-4 or 1,2,5-10, etc. You can type /noig #/* to remove that number or all ignores if you know who you want to remove without having to list the ignore list.
AFK/DND Message Recording
LiCe has a mechanism that will record all whispers and any auto-reply matches that come in while you are AFK or DND, so that you can view them later. It also will record various alerts, such as flood alerts and alerting you that you were set away because of being idle. What gets recorded is fully configurable in /mtog.
/play
The /play command is how you play your messages back. You just type in /play and then it will start going through your messages, one by one, like a voice mail system. You will get prompted after each message for what to do. Simply hit enter to go to the next message, or you can type ? and hit enter to see the full list of what you can do. Hitting escape or typing q and hitting enter will exit the playback.
/erase
This is how you erase messages from your answering machine. If you type /erase by itself it will erase all messages recorded, or you can specify a message number to erase. You can also erase messages from the /play mechanism. (Type ? to the prompt and hit enter for a list of things you can do)
Aliases
Aliases are one of three things:
- A command shortcut, so that you don't have to type out as many characters to type that command (and the built-in system of intelligently recognizing commands based on minimum letters typed isn't working out for ya). This kind of alias points to another already existing command. or:
- A completely new command altogether.
- A command that runs another command with parameters that are written in the alias (/sf is an example of this, it points to /fr -l)
/alias
The way you create an alias is like so:
/alias <alias> <command(s)>
An alias can either point to a command, or it can point to some Lua code (for more advanced users). An alias can even point to another alias! In the above example of /sf being an alias to /fr, /fr is also an alias itself which points to /friend!
To remove an alias, you simply type:
/alias -<alias>
All non-vital commands in LiCe have been written as aliases, and if you don't like any of them you can remove them. In the future you will be able to save aliases and even share aliases with other users. Aliases are so powerful that all of LiCe's commands could be written in them, but then if you did /alias -friend then the friends system would probably break. An example of this is the /clear alias that clears the current Chat frame. It's not just boom simple to clear the chat frame, it's a Lua function and you have to know which Chat frame to clear, however aliases make it easy to dynamically create commands that run almost anything you can think of.
To see a list of aliases simply type /alias by itself, or type in /alias followed by part of an alias name to list all aliases starting with those letters.
Note: Lua code is truncated when listing out multiple aliases. If you want to see all the Lua code for a particular alias, try typing out /alias <full alias name>. It will show all the code nicely tabbed out for ya.
Escape Menu Failsafe
There is a failsafe command that will do the same thing as the ESCAPE key normally does. In case you accidentally bind your ESCAPE key to something else and can't get to the menu, just type /esc .. At first it will ask if you really want to enable the failsafe. If you say yes it will enable it, then typing /esc will do the same thing hitting ESCAPE normally does to allow you to bind it back.
Note: This by Blizzard is considered protected, and the game will complain that LiCe is doing something that is only allowed by the Blizzard UI, this is normal. This is why you have to enable the failsafe, so that doesn't happen if you type /esc by accident. This is a drastic measure that will only be used if you screw up your ESCAPE key binding. I'm sure Blizzard would understand :)
That's it!
That's basically all of what you need to know. As promised, here is that list of /set variables, but first...
Using Set
To set a variable using set you simply do this:
/set <variable> <value>
To remove a variable's value (not the variable itself, because variables cannot be removed) type:
/set -<variable>
Example: /set -BANNER
In the example above, the BANNER variable would be set to nothing, so basically the message:
:: You are now infested with LiCe v0.1.50!
would be shown as
You are now infested with LiCe v0.1.50!
The color variables must be in the format "R G B" where R, G, and B are numbers from 0-1.. So they can be .4, .5 etc. LiCe will not let you set it to something incorrect. Numeric values cannot be less than 1, and certain variables can only be ON or OFF. Setting them to TOGGLE will flip them like a light switch. You do not have to type ON, OFF or TOGGLE in capital letters. toggle, ToGGle or tOGGlE will work just fine :)
Set Variables
- BANNER - this changes the banner that appears in front of all LiCe messages. (default is currently ::)
- CHAT_CYCLE_CHAR - this is the key you tap to cycle channels right
- CHAT_CYCLE_CHAR2 - this is the key you tap to cycle channels left
- CHAT_CYCLE_WTIMEOUT - the amount of seconds before whispers timeout from the Channel Surfing list.
- CLOCK - doesn't do anything right now.
- CLOCK_24HOUR - whether anything in LiCe that uses the clock is in 24hour time or 12hour time (this does not affect message timestamps, for that see /sensors)
- CLOCK_FORMAT - if this is set to anything it overrides clock_24hour and this format is used instead (this is in strftime() format)
- COLOR_ALERT - the color used for alert messages, like flood protection. (all COLOR_* variables control the color of the banner only unless specified otherwise)
- COLOR_DEFAULTMSG - the color of LiCe messages (entire message color, not just the banner)
- COLOR_FRIEND - the color of the banner for friend-related messages
- COLOR_FRIEND_SIGNON - the color of the banner used in a friend signon message
- COLOR_FRIEND_SIGNOFF - the color of the banner used in a friend signoff message
- COLOR_IGNORES - the color of the banner used in /ignore related messages
- COLOR_HELP - the color of the banner used in help messages
- COLOR_JOIN - the color of the banner used in channel join messages (someone joins a channel)
- COLOR_LEFT - the color of the banner used in channel left messages (someone left a channel)
- COLOR_INFO - the color of the banner used in informational messages
- COLOR_SETTINGS - the color of the banner used in settings related messages
- COLOR_SYSTEM - the color of SYSTEM WoW messages (usually appear in bright yellow, which is the default here)
- DATE_FORMAT - The format of long dates in strftime() format (if you don't know what that is leave it alone)
- DOUBLE_TAP_TIME - this is the double-tap speed of how quickly you have to double tap things for it to count as a double tap (just like double-click speed in Windows)
- HELP_WINDOW - not used yet. Will determine whether or not you get a help frame that pops up when you use /help
- HELP_PROMPT - not used yet. Will determine whether the help system will lead you through a series of prompts or just spit out the help you told it to and leave you at that.
- IGNORED_COMMANDS - does nothing now. This used to handle the inline-command completion that I deleted prior to this alpha period because it will be replaced by the new TAB completion system. Basically this will be a list of commands that TAB will ignore. Honestly this should be deleted. Right now /friends is the only one because it's stupid, /friends and /friend? wtf. :)
- MAX_ALIAS_ITERATIONS - maximum times a Lua script alias will be allowed to loop before LiCe shuts it down. This is to prevent accidental infinite loops that would otherwise lead to the game or even the computer freezing up and requiring to be manually turned off and restarted.
- MAX_ALIAS_RECURSIONS - maximum amount of times an alias can point to another alias. This is made to prevent bozos from doing /alias bob /bob or other similar things that would cause a call stack overflow (which could lead to unpredictable behavior or even the game crashing)
- MAX_CHAT_LINES - this controls the scrollback buffer of the Chat frames. The default is set to 128, and the normal interface gives you no way to change it. You can change it here. Keep in mind that all the chat lines are saved in memory, and thus you want to be careful with this. I wouldn't set it to anything more than 500. It's a game, do you really need a huge scrollback buffer? :) 128 is a bit small though. Keep in mind if you have 5 windows and set this to 500, that means it will save 500 lines FOR EACH WINDOW (that's 500*5 (2500) lines)
- MOUSE_WHEEL_ACCELERATION - the multiplier used for the scroll speed acceleration of the mouse. the whole number part of it is THE MINIMUM LINES you will scroll by slowly moving the wheel once.
- MOUSE_WHEEL_SENSITIVITY - this controls how sensitive the mouse wheel is to your finger movements. The more sensitive it is, the faster it with scroll with the smaller amount of effort.

