| Information | |
|---|---|
| Developer: | Dewin(Retired) - Maintained by Aikar |
| Download: | Infobar |
| Download Count: | 12874 |
| Support: | Click Here |
| Release Date: | December 8th, 2008 |
Infobar displays contextual information on your current target and your surrounding environment inside the Final Fantasy XI window.
It includes a local database of information which can store notes on players, NPCs and monsters. This database also includes a monster database with levels, drops, etc. Currently the monster database is derived from FFXiclopedia.
Extract the contents of the .zip file into your Windower\Plugins folder. This should result in extracting infobar.dll and an 'infobar' folder containing database.db and infobar.ini.
If you're upgrading from Infobar 0.9.5 or later, you may opt to keep your existing infobar.ini and notes.db files. It is no longer required to download notes.db on new installs.
There are a number of commands you can type in the Windower console to alter Infobar's behavior. (To type them in the FFXI chat log, preface them with two slashes (//))
Some zones have multiple mobs by the same name with different stats. Examples included Ka in Eldieme Necropolis and Dancing Weapons in Qufim, which have different jobs. These commands cycle through the possible options. You may find a keybinding for .infobar next to be useful.
If you have multiple bars setup for one type, this will cycle between them. You may find a keybinding for .infobar nextbar to be useful.
The default configuration allows you to use this to cycle between your own character's info and airship time tables when no target is selected. It also allows you to use this to cycle between a monster's stats and its drops when one is selected.
Jumps to the bar with the given number. If the bar does not exist, the next lowest number is used. (If bars 0, 1 and 4 exist, and you go to bar 2, you will end up on bar 1).
Reloads Infobar's settings, useful if you have made any changes to the configuration file. You can also load an alternate file by specifying a file name. If the file name includes any spaces, put quotes around it, e.g. .infobar reload “infobar config file.ini”
If Infobar is unable to reload the new settings, your old settings will remain and diagnostic output will be displayed in the Infobar window.
Sets a note for the current target. Notes are stored by target type (PC/NPC/Mob) and target name, and are not zone specific. You must put quotes around the note.
To clear the note, do .infobar note without any text.
User notes are stored in the user notes database (notes.db), which will be created if it doesn't exists.
This deletes all monster, NPC and player information from the user notes database (not the main database). It primarily included for users of version 0.9.1 who wish to keep their existing notes.
It is recommended that you don't run this command unless Infobar tells you to.
Locks or unlocks your current target into Infobar. If your target is locked, Infobar will always show this target's stats (instead of your 'real' target's stats) until you zone, move out of range, or the target despawns.
You can also lock on to 'no target' if you have no target selected.
Copies the currently displayed Infobar text to the clipboard.
Changes Infobar to use a different profile as defined in your infobar.ini file. This also will temporarily activate Infobar on a character when the ini file specifies it should be inactive.
Note that .ib and .infobar no longer work as of version 1.00 and later.
There are a number of things you can do to make Infobar work better by using Windower functionality.
ib next and ib nextbar are best used in conjunction with Windower keybindings. I personally prefer using Ctrl-, and Ctrl-. (Ctrl-Comma and Ctrl-Period). You can accomplish this by adding two lines to your init.txt file.
bind ^, ib next bind ^. ib nextbar
You may also bind ib prev and ib prevbar, though there is no real need to do so.
Infobar is designed to be heavily customizable. User preference are stored in infobar.ini, which is mostly self-documenting.
This section addresses customizing the text that actually displays in Infobar.
All examples here assume the default parser.characters setting of $(,)$\
The text displayed in Infobar can be customized in a wide variety of ways. Different strings of text appear in different contexts. Currently, there are several contexts:
Active when you have no target, or if nothing is configured for your current target.
Active when a player is targeted.
Active when a member of your party or alliance is targeted. Overrides player if set.
Active when you target yourself. Overrides player and ally if set.
Active when an NPC is targeted.
Active when a monster is targeted.
Active when the targeted monster is flagged as aggressive. Overrides monster.
Active when the targeted monster is flagged as aggressive AND is high enough to aggro you based on level difference. Note that some mobs aggro regardless of level difference (some NMs and detectors in Sky), so this is not a 100% accurate assessment. Overrides monster and aggressivemonster.
Each context can have one or more text strings associated with it, in addition to several options that control formatting. Formatting options are documented in the .ini file that comes with Infobar. Text strings are documented in the remainder of this customization guide.
A text string is a mixture of static text (such as Target: )and functions that display information about the current environment (such as $target.name$. For example: Monster: $target.name$ will display text “Monster: ”, followed by the name of the current target. If this sounds vaguely like programming, it is because it is a very slimmed-down version of just that – Infobar actually compiles each text string into a set of instructions (a program) that tell it exactly what to do.
Some functions have options: $self.xpcur.percent$ might return '37', but $self.xpcur.percent(2)$ might return 37.15.
And of course, Infobar wouldn't be very useful if you couldn't combine multiple functions:
$target.name$ Aggros: $target.aggressive$ Links: $target.linking$ Detects: $target.detects$ Job: $job$ Weaknesses: $target.weaknesses$ Lv.$target.level$ (~$target.avgxp$xp)
might display as:
Ka Aggros: YES Links: YES Detects: Sound, Low HP Job: BLM Weak to: Fire, Light Lv. 52-54 (~147xp)
This guide consists of a list of functions, followed by a description of what they do. It follows a fairly simple format:
Description of what function does.
A function with options. The meanings of the options are in the description.
Using this function with only one option will treat the option as OPTION2, and use default_value for OPTION1.
Note that $function$ calls function with 0 options, and $function()$ calls function with one empty option. If all of a function's options are optional and you wish to use the default values, use $function$ not $function()$
Your character's current XP.
Shows your character's XP starting from level START_LEVEL. Note that END_LEVEL must be specified, even though it has no effect on the result. This is to consistent with the other XP functions where it makes more sense.
How much percent of the way to next level. (e.g. 307/1000 XP = 30). The percent sign (%) is not included in the output (but $self.xpcur.percent$% works like you might expect)
PRECISION determines how many digits to show after the decimal point (must be >= 0). self.xpcur.percent(1) might show 30.7.
How much % of the way to the specified END_LEVEL, starting from START_LEVEL and 0 XP.
How much more XP is required to level. The various 'flavors' of self.xpcur work here as well. For example, self.xptnl.percent(0,75) shows a percentage of how close you are to level 75.
Total XP required this level. The various 'flavors' of self.xpcur work here as well, though not all are useful. (self.xpmax.percent will always show 100, for instance.)
Total XP required from level 1 to END_LEVEL
Total XP required from level START_LEVEL to END_LEVEL
Displays your current level. If in a level-capped area, DISPLAYMODE determines whether your capped level (DISPLAYMODE=0), real level (DISPLAYMODE=1), or both (DISPLAYMODE=2) are displayed. self.level by itself is equivalent to self.level(2)
When using DISPLAYMODE=2 in a capped area, the output is caplevel(reallevel), e.g. 40(75)
Job/Subjob and levels (e.g. RDM75/BLM37). If you are in a level-capped area, the effective levels (not real levels) are shown.
Job/subjob w/o levels (e.g. RDM/BLM)
Like the above, but only shows your main job.
What level your main job is. If you are capped, the effective level (not real level) is shown.
Like the above, but using your subjob's information instead.
Your character's raw coordinates in 3-D space.
All of these take an optional number of digits of precision. self.x(3) might show 6.123.
Direction your character is currently facing.
| NUM is | Description | Possible values |
|---|---|---|
| 0 | Displays a raw heading between 0 and 360. (0=NORTH, 90=EAST, etc.) | Any number between 0 and 360 |
| 1 | Compass direction with at most one letter. | N, E, S, W |
| 2 | Compass direction with at most two letters. | N, NE, E, SE, S, SW, W, NW |
| 3 | Compass direction with at most three letters. | N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW |
Your character's name. MAXLENGTH determines the maximum number of letters to display if present (0 = no limit).
Name of the current zone. MAXLENGTH determines the maximum number of letters to display if present (0 = no limit).
Abbreviated name of the current zone (How the zone name shows in /search). MAXLENGTH determines the maximum number of letters to display if present (0 = no limit).
Your current HP%.
Synonym for self.zone
Synonym for self.zone.abbv
As per the self.* variables of the same name, but applies to your current target instead.
Saved notes, set with the ”.infobar note” command. Requires database features to be enabled.
Infobar looks up target information based on name, type (Player, NPC or Monster), and zone name. Some zones have multiple identically-named mobs with different level ranges, jobs, and/or drops. You can cycle between multiple matches with the .infobar next and .infobar previous console commands, or the keybindings you have associated with those commands.
The following functions show information about how many matches are found when Infobar looks up target information. These all require database features to be enabled (and have no practical use if database features are disabled).
Which instance of a mob is currently being shown
How many instances exist.
Shows current and total instances, e.g [1/4]
Same as target.instanceinfo, but doesn't shows when only one instance exists.
The following functions are only for targeted monsters. Unless otherwise noted, all of these require database features to be available, and use information previously downloaded from Somepage.
Target's job. Displays nothing if the job is unknown or the target has no job.
Shows the level range, average level, minimum level, or maximum level of the targeted monster.
Estimated base XP gain from killing this monster. This calculation assumes no experience chain or Sanction/Signet bonuses and that you are the highest level member of your party. It also assumes that you have equal access to both ends of the monster's level range.
The XP caps (200/250/300 base XP) are not taken into account.
This is only an estimate and should not be given any serious consideration. Its primary use is to assist in determining if a camp is feasible to move in to.
Displays YESTEXT if the function is applicable, NOTEXT otherwise.
NOTE: Infobar considers mobs that only agro to magic as “aggressive”. This is different from some other mob databases, which split “Aggressive” from “Aggressive to Casting Magic”. However, they will only be listed as detecting magic, and thus have no other way to agro.
Comma-separated list of all the ways a mob detects enemies. Shortcut to using all of the target.detects.XXX options.
What element(s) a target is weak to, if known.
What item(s) a target drops.
What item(s) can be stolen from target.
How many spawn points a target has. This information is rarely available.
Respawn time. This information is rarely available.
As of Infobar 0.9.7 (or any plugin version), your computer clock no longer needs to be set correctly to get accurate results with time.
Displays various attributes about the current Vana'diel time. time.game by itself displays the current time (hours and minutes).
FORMAT specifies how time is to be formatted. FORMAT will be displayed as-is after performing some substitutions:
| Text | Replaced with | Example |
|---|---|---|
| %D | Day of the month, 2 digits with leading zeros | 05 |
| %d | Day of the month, no leading zeros | 5 |
| %W | Day of the week, full version | Firesday |
| %w | Day of the week, shortened version | Fire |
| %n | Day of the week, number (Firesday = 1) | 1 |
| %S | English ordinal suffix for the day of the month, 2 characters | 'st' or 'nd' or 'rd' |
| %M | Numeric representation of a month, with leading zeros | 09 |
| %m | Numeric representation of a month, without leading zeros | 9 |
| %Y | Four-digit year | 1046 |
| %y | Two-digit year | 46 |
| %H | Hour in 24-hour format with leading zeroes | 09 |
| %h | Hour in 24-hour format without leading zeroes | 9 |
| %i | Minutes with leading zeroes | 06 |
| %s | Seconds with leading zeroes | 14 |
| %e | Vana'diel Season | Summer |
| %t | Time (equivalent to %H:%i) | 09:06 |
| %T | Full date (equivalent to %M/%D/%Y) | 09/05/1047 |
| %p | Moon phase % | 47% |
| %P | Moon phase % and direction of change | 47%+ (for a waxing moon) |
| %o | “Waning” or “Waxing” | Waxing |
| %O | Textual description of moon phase | Waxing Gibbous |
| %% | Replaced with a literal '%' | % |
For example:
$time.game(%W %t %O \(%P\) %e %T)$
might display as Darksday 3:04 Waxing Gibbous (83%+) Summer 08/22/1046
Displays airship status for CITY (where CITY is Sandoria, Bastok, Windurst, or Kazham), such as “Leaving San d'Oria in 0:03” or “Arriving at Jeuno in 3:13”. Times shown are real time.
Shows airship status, but only for either the airship's home port or Jeuno.\\If the ship just left San d'Oria, time.airship.sandoria.home will show the next time it will arrive at San d'Oria (e.g. “Arriving in 12:37”), whereas time.airship.sandoria will show when it would (soon) arrive at Jeuno (e.g. “Arriving at Jeuno in 3:17”).
These simply show “Arrives in TIME” or “Leaves in TIME” and omit the city names.
Shows arrival or departure time of the airship in either its home port or in Jeuno. This is just the raw time with no other text.
Shows arrival or departure times of the various Ferries. CITY can be one of selbina (Mhaura-Selbina ferry), whitegate (Mhaura-Whitegate ferry) or nashmau (Whitegate-Nashmau ferry).
Each ferry route is serviced by two ferries that mirror each other's schedule. Thus, if one ferry is due to arrive in Mhaura, its counterpart will arrive in Selbina at the same time. As a result, it is not neccessary to know which port a ferry is arriving/departing at.
time.ferry.CITY will show “Arrives in mm:ss” or “Departs in mm:ss”. The other two forms just display the raw time with no other text.
These primarily are useful for having text display only when certain conditions are met, or making output look a little nicer. While they can be complicated, they add a lot of power.
For example, the default configuration comes with this unsightly mess:
Airships: $if($incity(Sandoria)$,San d'Oria->Jeuno: $time.airship.sandoria.home.departs$ || )$ $if($incity(Bastok)$,Bastok->Jeuno: $time.airship.bastok.home.departs$ || )$ $if($incity(Windurst)$,Windurst->Jeuno: $time.airship.windurst.home.departs$ || )$ $if($incity(Kazham)$,Kazham->Jeuno: $time.airship.kazham.home.departs$ || )$ Jeuno->San d'Oria: $time.airship.sandoria.jeuno.departs$ Jeuno->Bastok: $time.airship.bastok.jeuno.departs$ Jeuno->Windurst: $time.airship.windurst.jeuno.departs$ Jeuno->Kazham: $time.airship.kazham.jeuno.departs$ (Line-breaks added for clarity, this must be all on one line.)
which shows when each Airship leaves Jeuno, and shows when the current city's airship leaves the current city when you are in San d'Oria, Bastok, Windurst or Kazham.
prefix(PREFIX,CODE,SUFFIX
Evaluates CODE. If the result is empty, no text is displayed. Otherwise, PREFIX+CODE+SUFFIX is displayed.
For example, $prefix(Job: ,$target.job$)$ will display "Job: RDM" if the target is an RDM, or no text if the target has no job.
SUFFIX is optional.
if(CODE,TRUE,FALSE
Evaluates CODE. If the result is true, evaluates and displays TRUE, otherwise evaluates and displays FALSE. The output of CODE itself is not displayed.
For example, $if($inzone(Dynamis - ),At crazy death place,At someplace safe)$ will display "At crazy death place" in Dynamis zones and "At someplace safe" elsewhere.
ifempty(CODE,ALTERNATE)
Evaluates CODE. If the result is true, displays it. Otherwise, evaluates and displays ALTERNATE.
This is a shortcut (and more efficient version of) if(CODE,CODE,ALTERNATE)
For example, $ifempty($target.job$,\(none\))$ will display a target's job, or the text (none) if the job is unknown.
inzone(ZONE1,…) inzoneexact(ZONE1,…)
Returns 1 if the zone name contains any of the comma-separated zones listed. The search is case-insensitive. inzone only needs to match part of the zone name but inzoneexact must match the entire zone name.
This is intended for use with if()
incity(CITY1,…)
Returns 1 if you are located in one of the cities listed. All zones of the city are automatically included. Dynamis zones, airships, ferries, etc. are not.
Cities that Infobar knows about are: Selbina, Mhaura, Rabao, Norg, Kazham, Nashmau, Sandoria (or San d'Oria), Windurst, Bastok, Jeuno, and Whitegate (or AlZahbi or Al Zahbi).
or(CODE1,…) and(CODE1,…) not(CODE1,…)
or returns 1 if any of the code evaluates to TRUE.
and returns 1 if ALL of the code evaluates to TRUE.
not returns 1 if ALL of the code evaluates to FALSE.
This is a beta release, so there are bound to be problems.
If you observe the text <?> displaying anywhere, it means that some information that Infobar is trying to display is not currently available. This is most noticeable when zoning and when first logging in, and should be harmless. If you see it under 'normal' circumstances, something is probably wrong.