Agents
Agents are tools to help you reduce the amount of button-click, click-drag, and other repetitive tasks within the Enhanced Client UI. Agents process UI controls at the same speed as a mouse click or button press, but can dramatically reduce the amounts of those types of user inputs needed to interact with the game. For things you have to do over and over again as a player, which is most of UO's inventory management, agents help you get back to playing the game, instead of playing the UI. If you find yourself constantly having to bother with item management and are feeling less enjoyment for UO because of it, try setting up an agent or two. Agents can make a world of difference in your engagement and happiness with UO.
If on the other hand, you really enjoy the fine control of moving each item from one place to another, you are free to continue doing so! Agents do not replace the basic discrete control over every item in the game, but instead provide a way to scale that control so that those players who do not enjoy moving each piece again and again, do not have to.
Six Agents are present in the Enhanced Client, each with a unique function. The Enhanced Client Guide has a tutorial for each:
Agent backups and porting
Each character has their own unique agents. So, your fisher can have a different set of agents than your scribe. This is wonderful for customizing agents to fit each character's tasks, but also means there are no "global" agents. You will need to build each agent for each character. Building an agent once, or even a couple of times isn't bad. However, as you build more complex agents, or want to use the same agent on multiple characters, the task of building agents can become daunting. What follows is a set of instructions for finding your character's agent information. Once you know where the information is, you can back up an agent or agents to a .txt file, or export the agent to other characters.
Every character has a unique character file. Within each character file is a set of data which record all of the information about that character's agents. Each agent has a unique set of data. The data is contained in the last section, <UI Variables>, of the character file. The <UI Variables> section has four subsections: StringVar, WStringVar, BoolVar, and NumberVar. Some agents have data in each section, some do not.
For most of the data, the entries will look something like Organizer1it1Name, which would be read "organizer 1, item 1 name". However, for certain lines of data the format is different. For example
<NumberVar name="OrganizerOrganizers_Items1" value="6.000000" />
is read as "Organizer 1 Items = 6", or there are 6 items in Organizer 1.
The line
<NumberVar name="OrganizerOrganizers_Items2" value="8.000000" />
would be read as "Organizer 2 Items = 8", or there are 8 items in Organizer 2.
These differences in syntax are called out in each example below, but are still worth highlighting in this introduction.
The data for each agent is unique to an agent and will have that agent's identifier (Buy1, Sell3, Restock5, etc.) somewhere in the lines of code associated with that agent. Most of the data for an agent will be grouped together in UIVaraibles by subsection (StringVar, WStringVar, BoolVar, or NumberVar). So, all of Sell3's data in NumberVar is likely to be in sequential lines of code, or a code chunk. However, there are two data lines for each type of agent which are shared between all agents of that type. There are two lines of code within the character file which relate to all the buy agents, two lines of code which relate to all the organizers, two lines of code which relate to all the undress agents, etc. These two lines are always in the NumberVar subsection of UIVariables, but can be anywhere in the subsection, as the lines are written and updated as agents are created and deleted. The two lines look like
<NumberVar name="OrganizerBuys" value="7.000000" /> --Total number of Buy Agents for this character (7) <NumberVar name="OrganizerActiveBuy" value="3.000000" /> --Active Buy Agent for this character (3)
where "Buy" will be replaced by "Organizer" or "Restock" depending on which agents the lines are associated with. When exporting or importing agents, these two lines do not need to be copied over, but they do need to be updated. As with syntax differences, these two lines are called out in each example below but are mentioned here to explicitly denote these two lines per agent as different from the other agent data.
Now, let us go through an example of each agent's data, to detail how agent data is stored.
Buy Agent
A buy agent stores data in three subsections of <UI Variables>: StringVar, WStringVar, and NumberVar. Here is a commented example of a buy agent to purchase items for poisoning. This is the first buy agent for this character, so it is listed as "Buy1". If you had a second buy agent for this character, that agent's associated data would be listed as "Buy2", etc.
<UIVariables>
<StringVar name="Buy1it1Name" value="Blank Scroll" /> --Buy1 Item1 <StringVar name="Buy1it2Name" value="Empty Bottle" /> --Buy1 Item2 <StringVar name="Buy1it3Name" value="Nightshade" /> --Buy1 Item3 <WStringVar name="OrganizerBuys_Desc1">PoisonTrain</WStringVar> --Name of Buy Agent 1 <NumberVar name="OrganizerBuys_Items1" value="3.000000" /> --The number of items(value=3) in Buy Agent 1 (Buys_Items1) <NumberVar name="Buy1it1Type" value="3827.000000" /> --Buy1 Item1 icon <NumberVar name="Buy1it1Hue" value="0.000000" /> --Buy1 Item1 color <NumberVar name="Buy1it1Qta" value="100.000000" /> --Buy1 Item1 quantity <NumberVar name="Buy1it2Type" value="3854.000000" /> --Buy1 Item2 icon <NumberVar name="Buy1it2Hue" value="0.000000" /> --Buy1 Item2 color <NumberVar name="Buy1it2Qta" value="20.000000" /> --Buy1 Item2 quantity <NumberVar name="Buy1it3Type" value="3976.000000" /> --Buy1 Item3 icon <NumberVar name="Buy1it3Hue" value="0.000000" /> --Buy1 Item3 color <NumberVar name="Buy1it3Qta" value="50.000000" /> --Buy1 Item3 quantity
</UIVariables>
The entirety of this buy agent's data is in the blockquote above. If you copied that data to a .txt file, you would have a backup of the buy agent. Since all of the data for this buy agent is stored as icon data, not specific objectID data, this buy agent is generic. You could copy the blockquote above into any character file, but you would need to account for three potential conflicts. First, the comments would need to be removed. Second, you would need to ensure the agent number (Buy1) did not conflict with an existing agent. If a character already had, say, two buy agents, you would need to rename all of this agent's data Buy3. Third, you would need to change the value in an additional line in the NumberVar subsection of UIVariables
<NumberVar name="OrganizerBuys" value="2.000000" /> --Total number of Buy Agents for this character (2) prior to import
to reflect the acutal number of buy agents that character has. If a character had zero buy agents and you imported one agent, then the line would need to be written value=1. However, as in our example, if the character already had two buy agents and you imported a third buy agent, then you would need to update the line so that value=3
<NumberVar name="OrganizerBuys" value="3.000000" /> --Total number of Buy Agents for this character (3) after import
This particular line can be found anywhere in the NumberVar subsection of UIVariables, not necessarily grouped with buy agent data, as the line is written when that character's second buy agent is created. If you import additional buy agents, but don't update this line, then not all buy agents will be shown in game. A character could have seven buy agents, but if OrganizerBuys value=3, only three of the seven buy agents would been seen in game.
One additional line is written to the character file when you set a buy agent as the active agent.
<NumberVar name="OrganizerActiveBuy" value="1.000000" /> --Active Buy Agent for this character
This line can also appear anywhere in the NumberVar subsection of UIVariables, as the line is written when you first select a buy agent in game. This line does not have to be manually updated, as value="" simply controls the buy agent which will run when you click the buy agent button. This line will automatically update as you select different buy agents in game.
Organizer Agent
An organizer agent stores data in all four subsections of <UI Variables>: StringVar, WStringVar, BoolVar, and NumberVar. Here is a commented example of an organizer to move gems. This is the first organizer agent for this character, so it is listed as "Organizer1". If you had a second organizer agent for this character, that agent's associated data would be listed as "Organizer2", etc.
<UIVariables>
<StringVar name="Organizer1it1Name" value="Amber" /> --Organizer1 Item1 <StringVar name="Organizer1it2Name" value="Amethyst" /> --Organizer1 Item2 <StringVar name="Organizer1it3Name" value="Citrine" /> --Organizer1 Item3 <StringVar name="Organizer1it4Name" value="Diamond" /> --Organizer1 Item4 <StringVar name="Organizer1it5Name" value="Emerald" /> --Organizer1 Item5 <StringVar name="Organizer1it6Name" value="Ruby" /> --Organizer1 Item6 <StringVar name="Organizer1it7Name" value="Sapphire" /> --Organizer1 Item7 <StringVar name="Organizer1it8Name" value="Star Sapphire" /> --Organizer1 Item8 <StringVar name="Organizer1it9Name" value="Tourmaline" /> --Organizer1 Item9 <StringVar name="Organizer1it10Name" value="Amethyst" /> --Organizer1 Item10 <WStringVar name="OrganizerOrganizers_Desc1">Gems</WStringVar> --Name of Organizer Agent 1 <BoolVar name="OrganizerOrganizers_CloseCont1" value="false" /> --Do not close container when organizer completes <NumberVar name="Organizer1it1Type" value="3877.000000" /> --Organizer1 Item 1 icon <NumberVar name="Organizer1it1Hue" value="0.000000" /> --Organizer1 Item 1 color <NumberVar name="Organizer1it1Id" value="0.000000" /> --Organizer1 Item 1 objectID <NumberVar name="Organizer1it2Type" value="3862.000000" /> --Organizer1 Item 2 icon <NumberVar name="Organizer1it2Hue" value="0.000000" /> --Organizer1 Item 2 color <NumberVar name="Organizer1it2Id" value="0.000000" /> --Organizer1 Item 2 objectID <NumberVar name="Organizer1it3Type" value="3861.000000" /> --Organizer1 Item 3 icon <NumberVar name="Organizer1it3Hue" value="0.000000" /> --Organizer1 Item 3 color <NumberVar name="Organizer1it3Id" value="0.000000" /> --Organizer1 Item 3 objectID <NumberVar name="Organizer1it4Type" value="3878.000000" /> --Organizer1 Item 4 icon <NumberVar name="Organizer1it4Hue" value="0.000000" /> --Organizer1 Item 4 color <NumberVar name="Organizer1it4Id" value="0.000000" /> --Organizer1 Item 4 objectID <NumberVar name="Organizer1it5Type" value="3856.000000" /> --Organizer1 Item 5 icon <NumberVar name="Organizer1it5Hue" value="0.000000" /> --Organizer1 Item 5 color <NumberVar name="Organizer1it5Id" value="0.000000" /> --Organizer1 Item 5 objectID <NumberVar name="Organizer1it6Type" value="3859.000000" /> --Organizer1 Item 6 icon <NumberVar name="Organizer1it6Hue" value="0.000000" /> --Organizer1 Item 6 color <NumberVar name="Organizer1it6Id" value="0.000000" /> --Organizer1 Item 6 objectID <NumberVar name="Organizer1it7Type" value="3857.000000" /> --Organizer1 Item 7 icon <NumberVar name="Organizer1it7Hue" value="0.000000" /> --Organizer1 Item 7 color <NumberVar name="Organizer1it7Id" value="0.000000" /> --Organizer1 Item 7 objectID <NumberVar name="Organizer1it8Type" value="3855.000000" /> --Organizer1 Item 8 icon <NumberVar name="Organizer1it8Hue" value="0.000000" /> --Organizer1 Item 8 color <NumberVar name="Organizer1it8Id" value="0.000000" /> --Organizer1 Item 8 objectID <NumberVar name="Organizer1it9Type" value="3864.000000" /> --Organizer1 Item 9 icon <NumberVar name="Organizer1it9Hue" value="0.000000" /> --Organizer1 Item 9 color <NumberVar name="Organizer1it9Id" value="0.000000" /> --Organizer1 Item 9 objectID <NumberVar name="Organizer1it10Type" value="3874.000000" /> --Organizer1 Item 10 icon <NumberVar name="Organizer1it10Hue" value="0.000000" /> --Organizer1 Item 10 color <NumberVar name="Organizer1it10Id" value="0.000000" /> --Organizer1 Item 10 objectID <NumberVar name="OrganizerOrganizers_Items1" value="10.000000" /> --The number of items (value=10) in Organizer Agent 1 (Organizers_Items1) <NumberVar name="OrganizerOrganizers_Cont1" value="0.000000" /> --No destination container for Organizer 1
</UIVariables>
If a default container was set for this organizer (a container into which the organizer will place the gems), the final line would have a number instead of 0's.
<NumberVar name="OrganizerOrganizers_Cont1" value="1111521078.000000" /> --Destination container objectID for Organizer 1
The entirety of this organizer agent's data is in the blockquote above. If you copied that data to a .txt file, you would have a backup of the organizer agent. Since all of the data for this organizer agent is stored as icon data, not specific objectID data, this organizer agent is generic. You could copy the blockquote above into any character file, but you would need to account for four potential conflicts. First, the comments would need to be removed. Second, you should reset the destination container. Third, you would need to ensure the agent number (Organizer1) did not conflict with an existing agent. If a character already had an organizer agent, you would need to rename all of this agent's data Organizer2. Fourth, you would need to change the value in an additional line in the NumberVar subsection of UIVariables
<NumberVar name="OrganizerOrganizers" value="1.000000" /> --Total number of Organizer Agents for this character (1) prior to import
to reflect the acutal number of organizer agents that character has. If a character had zero organizer agents and you imported one agent, then the line would need to be written value=1. However, as in our example, if the character already had one organizer agent and you imported a second organizer agent, then you would need to update the line so that value=2
<NumberVar name="OrganizerOrganizers" value="2.000000" /> --Total number of Organizer Agents for this character (2) after import
This particular line can be found anywhere in the NumberVar subsection of UIVariables, not necessarily grouped with organizer agent data, as the line is written when that character's second organizer agent is created. If you import additional organizer agents, but don't update this line, then not all organizer agents will be shown in game. A character could have four organizer agents, but if OrganizerOrganizers value=2, only two of the four organizer agents would been seen in game.
One additional line is written to the character file when you set a organizer agent as the active agent.
<NumberVar name="OrganizerActiveOrganizer" value="1.000000" /> --Active Organizer Agent for this character
This line can also appear anywhere in the NumberVar subsection of UIVariables, as the line is written when you first select an organizer agent in game. This line does not have to be manually updated, as value="" simply controls the organizer agent which will run when you click the organizer agent button. This line will automatically update as you select different organizer agents in game.
Restock Agent
A restock agent stores data in three subsections of <UI Variables>: StringVar, WStringVar, and NumberVar. Here is a commented example of a restock agent to pick up items for carpentry. This is the second restock agent for this character, so it is listed as "Restock2". The first restock agent for this character will have it's associated data listed as "Restock1" and if you added a third restock agent, that agent's associated data would be listed as "Restock3", etc.
<UIVariables>
<StringVar name="Restock2it1Name" value="Board" /> --Restock2 Item1 <StringVar name="Restock2it2Name" value="Cut Cloth" /> --Restock2 Item2 <WStringVar name="OrganizerRestocks_Desc2">Carpentry</WStringVar> --Name of Restock Agent 2 <NumberVar name="OrganizerRestocks_Items2" value="2.000000" /> --The number of items (value=2) in Restock Agent 2 (Restocks_Items2) <NumberVar name="Restock2it1Type" value="7127.000000" /> --Restock2 Item1 icon <NumberVar name="Restock2it1Hue" value="0.000000" /> --Restock2 Item1 color <NumberVar name="Restock2it1Qta" value="100.000000" /> --Restock2 Item1 quantity <NumberVar name="Restock2it2Type" value="5990.000000" /> --Restock2 Item2 icon <NumberVar name="Restock2it2Hue" value="0.000000" /> --Restock2 Item2 color <NumberVar name="Restock2it2Qta" value="1000.000000" /> --Restock2 Item2 quantity <NumberVar name="OrganizerRestocks_Cont2" value="1103322826.000000" /> --Default container objectID (value=1103322826) for Restock Agent 2 (Restocks_Cont2)
</UIVariables>
A default container is set for this restock (a container into which the restock will place the items) and is recorded in the line
<NumberVar name="OrganizerRestocks_Cont2" value="1103322826" /> --Destination container objectID for Restock 2
If no default container was set for this restock, then "value" would be 0
<NumberVar name="OrganizerRestocks_Cont2" value="0.000000" /> --No destination container for Restock 2
The entirety of this restock agent's data is in the blockquote above. If you copied that data to a .txt file, you would have a backup of the restock agent. Since all of the data for this restock agent is stored as icon data, not specific objectID data, this restock agent is generic. You could copy the blockquote above into any character file, but you would need to account for four potential conflicts. First, the comments would need to be removed. Second, you should reset the destination container. Third, you would need to ensure the agent number (Restock2) did not conflict with an existing agent. If a character already had two restock agents, you would need to rename all of this agent's data Restock3. Fourth, you would need to change the value in the additional line in the NumberVar subsection of UIVariables
<NumberVar name="OrganizerRestocks" value="2.000000" /> --Total number of Restock Agents for this character (2) prior to import
to reflect the acutal number of restock agents that character has. If a character had zero restock agents and you imported one agent, then the line would need to be written value=1. However, as in our example, if the character already had two restock agents and you imported a third restock agent, then you would need to update the line so that value=3
<NumberVar name="OrganizerRestocks" value="3.000000" /> --Total number of Restock Agents for this character (3) after import
This particular line can be found anywhere in the NumberVar subsection of UIVariables, not necessarily grouped with restock agent data, as the line is written when that character's second restock agent is created. If you import additional restock agents, but don't update this line, then not all restock agents will be shown in game. A character could have four restock agents, but if OrganizerRestocks value=3, only three of the four restock agents would been seen in game.
One additional line is written to the character file when you set a restock agent as the active agent.
<NumberVar name="OrganizerActiveRestock" value="2.000000" /> --Active Restock Agent for this character
This line can also appear anywhere in the NumberVar subsection of UIVariables, as the line is written when you first select a restock agent in game. This line does not have to be manually updated, as value="" simply controls the restock agent which will run when you click the restock agent button. This line will automatically update as you select different restock agents in game.
Scavenger Agent
To switch scavengers, since no icon exists in game to do so, open the Agents Settings Window, select the scavenger you would like to be the active scavenger from the drop down menu and push the green "+" button, labeled "Set As Default", to the right of the "Agents:" drop down menu. If the current scavenger is already the active scavenger, the green "+" button will be replaced by the text "Default".
A scavenger agent stores data in three subsections of <UI Variables>: StringVar, WStringVar, and NumberVar. Here is a commented example of a scavenger agent to pick up gold at champion spawns. This is the first scavenger agent for this character, so it is listed as "Scavenger1". If you had a second scavenger agent for this character, that agent's associated data would be listed as "Scavenger2", etc.
<UIVariables>
<StringVar name="Scavenger1it1Name" value="Gold Coin" /> --Scavenger1 Item1 <WStringVar name="OrganizerScavengers_Desc1">Gold</WStringVar> --Name of Scavenger Agent 1 <NumberVar name="OrganizerScavengers_Cont1" value="1096317.000000" /> --Default container objectID (1096317) for Scavenger Agent 1 (Scavengers_Cont1) <NumberVar name="OrganizerScavengers_Items1" value="1.000000" /> --The number of items (value=1) in Scavenger Agent 1 (Scavengers_Items1) <NumberVar name="Scavenger1it1Type" value="3821.000000" /> --Scavenger1 Item1 icon <NumberVar name="Scavenger1it1Hue" value="0.000000" /> --Scavenger1 Item1 hue
</UIVariables>
A default container is set for this scavenger (a container into which the scavenger will place the items) and is recorded in the line
<NumberVar name="OrganizerScavengers_Cont1" value="1096317" /> --Destination container objectID for Scavenger 1
If no default container was set for this scavenger, then "value" would be 0
<NumberVar name="OrganizerScavengers_Cont1" value="0.000000" /> --No destination container for Scavenger 1
The entirety of this scavenger agent's data is in the blockquote above. If you copied that data to a .txt file, you would have a backup of the scavenger agent. Since all of the data for this scavenger agent is stored as icon data, not specific objectID data, this scavenger agent is generic. You could copy the blockquote above into any character file, but you would need to account for four potential conflicts. First, the comments would need to be removed. Second, you should reset the default container. Third, you would need to ensure the agent number (Scavenger1) did not conflict with an existing agent. If a character already had two scavenger agents, you would need to rename all of this agent's data Scavenger3. Fourth, you would need to change the value in the additional line in the NumberVar subsection of UIVariables
<NumberVar name="OrganizerScavengers" value="2.000000" /> --Total number of Scavenger Agents for this character (2) prior to import
to reflect the acutal number of scavenger agents that character has. If a character had zero scavenger agents and you imported one agent, then the line would need to be written value=1. However, as in our example, if the character already had two scavenger agents and you imported a third scavenger agent, then you would need to update the line so that value=3
<NumberVar name="OrganizerScavengers" value="3.000000" /> --Total number of Scavenger Agents for this character (3) after import
This particular line can be found anywhere in the NumberVar subsection of UIVariables, not necessarily grouped with scavenger agent data, as the line is written when that character's second scavenger agent is created. If you import additional scavenger agents, but don't update this line, then not all scavenger agents will be shown in game. A character could have three scavenger agents, but if OrganizerScavengers value=1, only one of the three scavenger agents would been seen in game.
One additional line is written to the character file when you set a scavenger agent as the active agent.
<NumberVar name="OrganizerActiveScavenger" value="1.000000" /> --Active Scavenger Agent for this character
This line can also appear anywhere in the NumberVar subsection of UIVariables, as the line is written when you first select a scavenger agent in game. This line does not have to be manually updated, as value="" simply controls the scavenger agent which will run when you display object handles (Control+Shift by default). This line will automatically update as you select different scavenger agents in game.
Sell Agent
A sell agent stores data in three subsections of <UI Variables>: StringVar, WStringVar, and NumberVar. Here is a commented example of a sell agent to peddle reagents to shopkeepers. This is the first sell agent for this character, so it is listed as "Sell1". If you had a second sell agent for this character, that agent's associated data would be listed as "Sell2", etc.
<UIVariables>
<StringVar name="Sell1it1Name" value="Black Pearl" /> --Sell1 Item1 <StringVar name="Sell1it2Name" value="Blood Moss" /> --Sell1 Item2 <StringVar name="Sell1it3Name" value="Garlic" /> --Sell1 Item3 <StringVar name="Sell1it4Name" value="Ginseng" /> --Sell1 Item4 <StringVar name="Sell1it5Name" value="Mandrake Root" /> --Sell1 Item5 <StringVar name="Sell1it6Name" value="Nightshade" /> --Sell1 Item6 <StringVar name="Sell1it7Name" value="Spiders' Silk" /> --Sell1 Item7 <StringVar name="Sell1it8Name" value="Sulfurous Ash" /> --Sell1 Item8 <WStringVar name="OrganizerSells_Desc1">Reagents</WStringVar> --Name of Sell Agent 1 <NumberVar name="OrganizerSells_Items1" value="8.000000" /> --The number of items(value=8) in Sell Agent 1 (Sells_Items1) <NumberVar name="Sell1it1Type" value="3962.000000" /> --Sell1 Item1 icon <NumberVar name="Sell1it1Hue" value="0.000000" /> --Sell1 Item1 color <NumberVar name="Sell1it1Qta" value="100.000000" /> --Sell1 Item1 quantity <NumberVar name="Sell1it2Type" value="3963.000000" /> --Sell1 Item2 icon <NumberVar name="Sell1it2Hue" value="0.000000" /> --Sell1 Item2 color <NumberVar name="Sell1it2Qta" value="100.000000" /> --Sell1 Item2 quantity <NumberVar name="Sell1it3Type" value="3972.000000" /> --Sell1 Item3 icon <NumberVar name="Sell1it3Hue" value="0.000000" /> --Sell1 Item3 color <NumberVar name="Sell1it3Qta" value="100.000000" /> --Sell1 Item3 quantity <NumberVar name="Sell1it4Type" value="3973.000000" /> --Sell1 Item4 icon <NumberVar name="Sell1it4Hue" value="0.000000" /> --Sell1 Item4 color <NumberVar name="Sell1it4Qta" value="100.000000" /> --Sell1 Item4 quantity <NumberVar name="Sell1it5Type" value="3974.000000" /> --Sell1 Item5 icon <NumberVar name="Sell1it5Hue" value="0.000000" /> --Sell1 Item5 color <NumberVar name="Sell1it5Qta" value="100.000000" /> --Sell1 Item5 quantity <NumberVar name="Sell1it6Type" value="3976.000000" /> --Sell1 Item6 icon <NumberVar name="Sell1it6Hue" value="0.000000" /> --Sell1 Item6 color <NumberVar name="Sell1it6Qta" value="100.000000" /> --Sell1 Item6 quantity <NumberVar name="Sell1it7Type" value="3981.000000" /> --Sell1 Item7 icon <NumberVar name="Sell1it7Hue" value="0.000000" /> --Sell1 Item7 color <NumberVar name="Sell1it7Qta" value="100.000000" /> --Sell1 Item7 quantity <NumberVar name="Sell1it8Type" value="3980.000000" /> --Sell1 Item8 icon <NumberVar name="Sell1it8Hue" value="0.000000" /> --Sell1 Item8 color <NumberVar name="Sell1it8Qta" value="100.000000" /> --Sell1 Item8 quantity
</UIVariables>
The entirety of this sell agent's data is in the blockquote above. If you copied that data to a .txt file, you would have a backup of the sell agent. Since all of the data for this sell agent is stored as icon data, not specific objectID data, this sell agent is generic. You could copy the blockquote above into any character file, but you would need to account for three potential conflicts. First, the comments would need to be removed. Second, you would need to ensure the agent number (Sell1) did not conflict with an existing agent. If a character already had, say, two sell agents, you would need to rename all of this agent's data Sell3. Third, you would need to change the value in an additional line in the NumberVar subsection of UIVariables
<NumberVar name="OrganizerSells" value="2.000000" /> --Total number of Sell Agents for this character (2) prior to import
to reflect the acutal number of sell agents that character has. If a character had zero sell agents and you imported one agent, then the line would need to be written value=1. However, as in our example, if the character already had two sell agents and you imported a third sell agent, then you would need to update the line so that value=3
<NumberVar name="OrganizerSells" value="3.000000" /> --Total number of Sell Agents for this character (3) after import
This particular line can be found anywhere in the NumberVar subsection of UIVariables, not necessarily grouped with sell agent data, as the line is written when that character's second sell agent is created. If you import additional sell agents, but don't update this line, then not all sell agents will be shown in game. A character could have six sell agents, but if OrganizerSells value=3, only three of the six sell agents would been seen in game.
One additional line is written to the character file when you set a sell agent as the active agent.
<NumberVar name="OrganizerActiveSell" value="1.000000" /> --Active Sell Agent for this character
This line can also appear anywhere in the NumberVar subsection of UIVariables, as the line is written when you first select a sell agent in game. This line does not have to be manually updated, as value="" simply controls the sell agent which will run when you click the sell agent button. This line will automatically update as you select different sell agents in game.
Undress Agent
An undress agent stores data in three subsections of <UI Variables>: StringVar, WStringVar, and NumberVar. Here is a commented example of an undress agent to take off a hat and coat. This is the first undress agent for this character, so it is listed as "Undress1". If you had a second undress agent for this character, that agent's associated data would be listed as "Undress2", etc.
<UIVariables>
<StringVar name="Undress1it1Name" value="Fortified Leather Jingasa Of Wizardry" /> --Undress1 Item1 <StringVar name="Undress1it2Name" value="Full Apron" /> --Undress1 Item2 <WStringVar name="OrganizerUndresses_Desc1">HatAndCoat</WStringVar> --Name of Undress Agent 1 <NumberVar name="OrganizerUndresses_Cont1" value="124589.000000" /> --Default container objectID (124589) for Undress Agent 1 (Undresses_Cont1) <NumberVar name="OrganizerUndresses_Items1" value="2.000000" /> --The number of items (value=2) in Undress Agent 1 (Undresses_Items1) <NumberVar name="Undress1it1Type" value="0.000000" /> --Undress1 Item1 icon <NumberVar name="Undress1it1Hue" value="0.000000" /> --Undress1 Item1 color <NumberVar name="Undress1it1Id" value="1114968595.000000" /> --Undress1 Item1 objectID <NumberVar name="Undress1it2Type" value="0.000000" /> --Undress1 Item2 icon <NumberVar name="Undress1it2Hue" value="0.000000" /> --Undress1 Item2 color <NumberVar name="Undress1it2Id" value="1115731329.000000" /> --Undress1 Item2 objectID
</UIVariables>
A default container is set for this undress (a container into which the undress will place the items) and is recorded in the line
<NumberVar name="OrganizerUndresses_Cont1" value="124589" /> --Destination container objectID for Undress 1
If no default container was set for this undress, then "value" would be 0
<NumberVar name="OrganizerUndresses_Cont1" value="0.000000" /> --No destination container for Undress 1
The entirety of this undress agent's data is in the blockquote above. If you copied that data to a .txt file, you would have a backup of the undress agent. Unlike other agents, the data for this undress agent is stored as specific objectID data, not generic icon or hue data. Therefore this undress agent is not generic. If you wanted this undress to work with another character you would have to export both the undress agent and the specific pieces of gear to that other character. You could copy the blockquote above into any character file, but you would need to account for four potential conflicts. First, the comments would need to be removed. Second, you should reset the default container. Third, you would need to ensure the agent number (Undress1) did not conflict with an existing agent. If a character already had three undress agents, you would need to rename all of this agent's data Undress4. Fourth, you would need to change the value in an additional line in the NumberVar subsection of UIVariables
<NumberVar name="OrganizerUndresses" value="3.000000" /> --Total number of Undress Agents for this character (3) prior to import
to reflect the acutal number of undress agents that character has. If a character had zero undress agents and you imported one agent, then the line would need to be written value=1. However, as in our example, if the character already had three undress agents and you imported a fourth undress agent, then you would need to update the line so that value=4
<NumberVar name="OrganizerUndresses" value="4.000000" /> --Total number of Undress Agents for this character (4) after import
This particular line can be found anywhere in the NumberVar subsection of UIVariables, not necessarily grouped with undress agent data, as the line is written when that character's second undress agent is created. If you import additional undress agents, but don't update this line, then not all undress agents will be shown in game. A character could have four undress agents, but if OrganizerUndresses value=3, only three of the four undress agents would been seen in game.
One additional line is written to the character file when you set an undress agent as the active agent.
<NumberVar name="OrganizerActiveUndress" value="1.000000" /> --Active Undress Agent for this character
This line can also appear anywhere in the NumberVar subsection of UIVariables, as the line is written when you first select an undress agent in game. This line does not have to be manually updated, as value="" simply controls the undress agent which will run when you click the undress agent button. This line will automatically update as you select different undress agents in game.