- Other Authors
- Sparr, ebs2002, jpetrone, M.D., dkaa, TreeHuginDruid, nytemyst, Maskoi, Tone, ChatWithThisName, Saar, JerkChicken, Doc James
- Software Requirements
- [Bazaar.mac]
[Plugin] MQ2Bzsrch
- Included in Very Vanilla
- Included! No need to download.
Updated for version: 2022.09.29.0
Bazaar.mac is used to automatically update the prices of your buyer or trader to remain competitive. It also contains INI support to allow you to set minimum and maximum prices which your merchants will not pass.
It supports both /trader and /buyer. It will detect which side of the Bazaar you are on and run accordantly.
Usage
INI files
Bazaar.ini - customizes individual item prices
SellPriceMin=Minimal amount of platinum you are willing to sell an item.
SellPriceMax=Maximum amount of platinum you are willing to sell an item. -1 (negative one) will step the item allowing manually pricing.
BuyPriceMin=Minimal amount of platinum you are willing to pay for an item.
BuyPriceMax=Maximum amount of platinum you are willing to pay for an item. -1 (negative one) will step the item allowing manually pricing.
MinBuyCount=Minimal quantity to set your /buyer buy counts to.
bazaarSettings.ini - controls macro behavior
Notes
Common Comments:
It seems slower than the old version.
This macro spend a lot of time waiting for data from the servers. The biggest "slow down" is due to not being able to know when your bazaar search is complete. It will wait up to your "SearchWaitTime" (this is calculated in half seconds, so 30 equals 15 seconds) before assuming there are no results. You may have notice that searching /bazaar can sometimes be fast and sometimes be slow.
If you often sell less common items it spends a lot of time waiting no results. One way to help this is to start your trader, then run the macro. There will always be results if you're selling the item. If you do this, you may want to adjust the InitialPrice to something high.
It is inconstant when I'm the only one selling an item.
It's not, your bazaar.ini is. If no one has qualified competing offer, then your selling price is determined in one of two ways.
Option 1 - If your item has a SellPriceMax setting in the bazaar.ini it will set your sell price to this value.
Option 2 - If your SellPriceMax is set to 1, it keeps the current set selling price. While 1 means no limit, we are not going to set a rusty dagger to 2 million just because you're the only one selling it.
Does not work with non-English keyboards
Yup. This is more of an issue with MacroQuest as a whole.
Details behind each bazaarSettings.ini option:
AggressiveSeller=FALSE
Used in /trader mode.
TRUE will use the "UndercutAmount" value to undercut your competitors by a fixed amount.
FALSE will use the "UndercutPct" value to undercut your competitors by a percentage.
UndercutPct=5
Used in /trader mode.
Percentage you wish to undercut others by in /trader. This value is rounded down to the nearest amount ending in a 0 or 5. Only used when "AggressiveSeller" is set to FALSE.
UndercutAmount=1
Used in /trader mode.
A fixed amount to undercut others by in /trader. This value is rounded down to the nearest amount ending in a 0 or 5. Only used when "AggressiveSeller" is set to TRUE.
UpdateOn=TRUE
Used in /trader and /buyer mode.
TRUE will automatically review and update your prices after a period of time. This time period is based on your "UpdateInterval' and "UpdateDrift" settings
UpdateInterval=50
Used in /trader and /buyer mode.
Minimal amount of time between your price review scans.
UpdateDrift=15
Used in /trader and /buyer mode.
Maximum number of minutes to drift off your UpdateInterval. This is intended to add some randomness to your update cycle. If your UpdateInterval is 50 and your UpdateDrift is 15. The next price scan will happen between 51 and 65 minutes from the last completed scan.
BuyerReview=FALSE
Used in /buyer mode.
TRUE will pause between every buy line and display your current bazaar.ini settings. This will also open /bazaar and search for the item. It's purpose is to allow you to manage your bazaar.ini settings.
FALSE will just move to the next buy line.
SellerReview=FALSE
Used in /trader mode.
TRUE will pause between every item you are selling and display your current bazaar.ini settings. It's purpose is to allow you to manage your bazaar.ini settings.
FALSE will just move to the next item slot.
AggressiveBuyer=FALSE
Used in /buyer mode.
TRUE will increase buyer prices by 1 platinim
FALSE will use the original mazaar.mac calculations. Items under 100 add 1 platinum, items 100 to 5000 adds 5 platinum, items over 5000 will add 0.1% rounded to the nearest 5.
SafeSeller=FALSE
Used in /trader mode.
TRUE will stop your /trader during price reviews.
FALSE will update your trader prices while still selling.
The purpose is to ensure the price validation check at the end of the price scan is ran before offering up your stuff.
LogLevel=2
Used in /trader and /buyer mode.
0=Mostly Quiet; stuff you really need to know about.
1=Info; Show basic info on what's going on.
2=Notice; Provides more information regarding your search requests.
3=Debug; Produces a lot more details on what going on. Hope you can read fast.
4=Verbose; Produces a little bit more than debug but pauses often giving you a change to read the debug. This also generates a debugging log in your logging folder.
SearchWaitTime=30
Used in /trader mode.
How many seconds bazaar search should wait for results. The script is set to process the item as soon as your /bazaar search return some results. If you deal with lag issues, whereas the bazaar search takes a long time to display, the time to wait for this is here. If you sell a lot of uncommon items, you may wish to adjust this. It waits up to this many seconds before going "Guess no one else sells this" and processes the time. One way to ensure there is always something returned is to start your trader before starting the macro.
PauseOnStart=TRUE
Used in /trader and /buyer mode.
TRUE will pause the script at the beginning
FALSE and it's off to the races.
The purpose is to remind you to create a macro pause hotbutton. It can be difficult to stop or pause the script without that button.
UseMQ2bzsrch=TRUE
Removed, if this setting still sits in your INI, it is safe to delete.
BuyCountReset=10
Used in /buyer mode.
Percentage used to trigger updating your item buy count. You must add a "MinBuyCount" to the item in the bazaar.ini file.
If you set an items MinBuyCount=500 and BuyCountReset=10 it will set your buy count to 500 once your current buy count is 450 or less.
If you have purchased your entire buy count; this does not add anything to your buy list. EQ removes the item from your buy list once your buy count has been satisfied.
CreateShoppingList=FALSE
Used in /trader and /buyer mode.
Create a CSV file in your log folder for all price scans.
MQ2log always adds the .log file extension to files. You may need to remove this.
The shopping list can be found in your log folder with the name bazaar3_{server}_Shopping_List.cvs.log
This file is always appended to. All your bazaar mules will write to the same file every time the price scan is done.
You can use tools such as Sheet and Excel to import the data and review.
Its purpose is to help manage your bazaar.ini file
The columns are separated with a semicolon. (Technical reasons), you may need to do a manual import into Excel
Here is the header row, it is not added to the file
date;time;mode;character;itemName;minSellPrice;maxSellPrice;avgSellPrice;minBuyPrice;maxBuyPrice;avgBuyPrice;yourMinSellPrice;yourMaxSellPrice;yourMinBuyPrice;yourMaxBuyPrice;yourMinBuyCount
GoOfflineMode=FALSE
Used in /trader and /buyer mode.
TRUE will take your seller/buyer to Offline mode once the first price scan has completed.
FALSE keeps your seller/buyer logged on
This setting will apply to all bazaar mules the script is ran on. There is also a command line option to take your seller/buyer offline. "/mac bazaar goOffline" (this is case sensitive) will run the first price scan and go offline.
BeMoreHuman=FALSE
Used in /trader and /buyer mode.
TRUE will add a couple of small random delays while doing searches. /trader delay is slightly larger if there is a price change
FALSE will work as fast as it can.
UseLuaReview=FALSE
Used in /trader and /buyer mode.
TRUE during a review mode a GUI is displayed to assist in updating the bazaar.ini
FALSE during review mode, item details as shown in the MQChat box, no GUI.
|-------------------------------------------------------------|
| Advanced Options [Customization_Settings]
|-------------------------------------------------------------|
If you do not understand the MacroQuest scripting language do not proceed with these settings.
The macro allows for some custom functions to specific steps in the process. These customizations will survive updates.
The macro includes a file name "bazaar_custom-sample.inc" which includes some samples and instructions.
Key Break Points
Sub custom_script_initiate
-- Run custom code once during the startup of the macro.
Use Case: The sample code runs the /trader to its normal trading spot.
Sub custom_script_price_scan
-- Run custom code as it initiates a /trader price scan. If you have the macro updating prices every 90 minutes, this will run every 90 minutes.
Use Case: Update the window title, or move your toon
Sub custom_script_buyer_new_item
-- Run custom code when it scans your /buyer and finds an item without INI settings
Use Case: Pause the macro to add the item to the INI. ( I use the LuaReview script)
Sub custom_script_trader_new_item
-- Run custom code when it scans your /trader and finds an item without INI settings. It will still set the initial value to the default value, but when it hits the new item during its price check it will use updated values.
Use Case: Pause the macro to add the item to the INI. ( I use the LuaReview script)
Sub custom_script_trader_validationError
-- Run custom code if /trader validation step fails for any reason
Use Case: Shut down your trader instead of risk losing money
Sub custom_script_trader_price_controls(int var1)
-- Run custom code to adjust your /trader price as you feel fit
Use Case: You hate the way I round numbers.
Bazaar.mac is used to automatically update the prices of your buyer or trader to remain competitive. It also contains INI support to allow you to set minimum and maximum prices which your merchants will not pass.
It supports both /trader and /buyer. It will detect which side of the Bazaar you are on and run accordantly.
Usage
/mac bazaar
- start the macro/mac bazaar goOffline
- start the macro, runs the price scan and enabled Offline Mode./mac bazaar Review
- start the macro in review mode, allows you to review INI settings/mqp
- pause/unpause the macro (the macro starts in paused mode by default)INI files
Bazaar.ini - customizes individual item prices
ini:
[Elegant Defiant Leather Gloves]
SellPriceMin=100
SellPriceMax=400
BuyPriceMin=50
BuyPriceMax=125
MinBuyCount=950
SellPriceMin=Minimal amount of platinum you are willing to sell an item.
SellPriceMax=Maximum amount of platinum you are willing to sell an item. -1 (negative one) will step the item allowing manually pricing.
BuyPriceMin=Minimal amount of platinum you are willing to pay for an item.
BuyPriceMax=Maximum amount of platinum you are willing to pay for an item. -1 (negative one) will step the item allowing manually pricing.
MinBuyCount=Minimal quantity to set your /buyer buy counts to.
bazaarSettings.ini - controls macro behavior
INI:
[Settings]
UndercutPct=5 - Percentage you wish to undercut people by in /trader (AggressiveSeller must be set to FALSE)
UpdateOn=TRUE - Do you want to update after X minutes?
UpdateInterval=50 - How often to rescan and update prices
UpdateDrift=15 - Maximum minutes to drift off your Update Interval (Adds randomness to your update cycle)
BuyerReview=FALSE - Will pause between every /buyer item so you may review your ini.
SellerReview=FALSE - Will pause between every /trader item so you may review your ini.
AggressiveBuyer=FALSE - TRUE will increase buyer prices by 1 plat, FALSE will you previous calculation.
AggressiveSeller=FALSE - TRUE will use a fixed undercut amount (UndercutAmount), FALSE will you previous calculation.
UndercutAmount=1 - The amount of plat to undercut other sellers when AggressiveSeller is TRUE
SafeSeller=FALSE - Stops your /trader during price reviews.
LogLevel=2 - 0=Mostly Quiet 1=Info 2=Notice (Formally ReportSearching) 3=Debug 4=Verbose
SearchWaitTime=30 - How many seconds bazaar search should wait for results
PauseOnStart=TRUE - Pause on start to give info and allow you to setup pause hotkeys
UseMQ2bzsrch=TRUE - Removed Safe To Delete From INI
BuyCountReset=10 - Percentage used to trigger updating your item buy count in /buyer
CreateShoppingList=FALSE -Create a CSV file in your log folder for all /bazaar and /barter searches
GoOfflineMode=FALSE - Will force your seller/buyer to Offline mode once the first price scan has completed.
BeMoreHuman=FALSE - Adds a couple of small random delays while doing searches in /trader and /buyer modes
UseLuaReview=FALSE - Use a LUA GUI script to make updating the Bazaar.ini easier.
[Excludes]
ExcludeList=Smart - Excludes these buyers and sellers when reviewing your prices. (Why compete against yourself?). Will auto add yourself to the list.
[Defaults]
SellPriceMin=1 - The initial minimal you are willing to sell an item. Applies this value to items new INI entry. 1 equals no minimum
SellPriceMax=1 - The initial maximum you are willing to sell an item Applies this value to items new INI entry. 1 equals no maximum
BuyPriceMin=1 - The initial minimal you are willing to pay for an item. Applies this value to items new INI entry. 1 equals no minimum
BuyPriceMax=1 - The initial maximum you are willing to pay for an item. Applies this value to items new INI entry. 1 equals no maximum
InitialPrice=2000000 - When the macro starts and finds items with no sell price, it sets it to the value. It will adjust afterwards
[Customization_Settings]
script_initiate=FALSE - See Advanced Options
script_price_scan=FALSE - See Advanced Options
script_buyer_new_item=FALSE - See Advanced Options
script_buyer_validationError=FALSE - See Advanced Options
script_trader_new_item=FALSE - See Advanced Options
script_trader_price_controls=FALSE - See Advanced Options
Notes
- In /trader mode it will ignore sellers with prices below your sell minimum. For instance, if your SellPriceMin is 100 and other sellers are at 75, 150, and 200 this script will set your sell price to 149.
- In /buyer mode it will ignore sellers with prices below your higher than your maximum. For instance, if your BuyPriceMax is 160 and other buyers are at 75, 150, and 200 this script will set your buy offer to 151.
- Setting your SellPriceMax to -1 (negative one) will skip the item during seller updates. This will allow you to exclude certain items or manage them manually.
Common Comments:
It seems slower than the old version.
This macro spend a lot of time waiting for data from the servers. The biggest "slow down" is due to not being able to know when your bazaar search is complete. It will wait up to your "SearchWaitTime" (this is calculated in half seconds, so 30 equals 15 seconds) before assuming there are no results. You may have notice that searching /bazaar can sometimes be fast and sometimes be slow.
If you often sell less common items it spends a lot of time waiting no results. One way to help this is to start your trader, then run the macro. There will always be results if you're selling the item. If you do this, you may want to adjust the InitialPrice to something high.
It is inconstant when I'm the only one selling an item.
It's not, your bazaar.ini is. If no one has qualified competing offer, then your selling price is determined in one of two ways.
Option 1 - If your item has a SellPriceMax setting in the bazaar.ini it will set your sell price to this value.
Option 2 - If your SellPriceMax is set to 1, it keeps the current set selling price. While 1 means no limit, we are not going to set a rusty dagger to 2 million just because you're the only one selling it.
Does not work with non-English keyboards
Yup. This is more of an issue with MacroQuest as a whole.
Details behind each bazaarSettings.ini option:
AggressiveSeller=FALSE
Used in /trader mode.
TRUE will use the "UndercutAmount" value to undercut your competitors by a fixed amount.
FALSE will use the "UndercutPct" value to undercut your competitors by a percentage.
UndercutPct=5
Used in /trader mode.
Percentage you wish to undercut others by in /trader. This value is rounded down to the nearest amount ending in a 0 or 5. Only used when "AggressiveSeller" is set to FALSE.
UndercutAmount=1
Used in /trader mode.
A fixed amount to undercut others by in /trader. This value is rounded down to the nearest amount ending in a 0 or 5. Only used when "AggressiveSeller" is set to TRUE.
UpdateOn=TRUE
Used in /trader and /buyer mode.
TRUE will automatically review and update your prices after a period of time. This time period is based on your "UpdateInterval' and "UpdateDrift" settings
UpdateInterval=50
Used in /trader and /buyer mode.
Minimal amount of time between your price review scans.
UpdateDrift=15
Used in /trader and /buyer mode.
Maximum number of minutes to drift off your UpdateInterval. This is intended to add some randomness to your update cycle. If your UpdateInterval is 50 and your UpdateDrift is 15. The next price scan will happen between 51 and 65 minutes from the last completed scan.
BuyerReview=FALSE
Used in /buyer mode.
TRUE will pause between every buy line and display your current bazaar.ini settings. This will also open /bazaar and search for the item. It's purpose is to allow you to manage your bazaar.ini settings.
FALSE will just move to the next buy line.
SellerReview=FALSE
Used in /trader mode.
TRUE will pause between every item you are selling and display your current bazaar.ini settings. It's purpose is to allow you to manage your bazaar.ini settings.
FALSE will just move to the next item slot.
AggressiveBuyer=FALSE
Used in /buyer mode.
TRUE will increase buyer prices by 1 platinim
FALSE will use the original mazaar.mac calculations. Items under 100 add 1 platinum, items 100 to 5000 adds 5 platinum, items over 5000 will add 0.1% rounded to the nearest 5.
SafeSeller=FALSE
Used in /trader mode.
TRUE will stop your /trader during price reviews.
FALSE will update your trader prices while still selling.
The purpose is to ensure the price validation check at the end of the price scan is ran before offering up your stuff.
LogLevel=2
Used in /trader and /buyer mode.
0=Mostly Quiet; stuff you really need to know about.
1=Info; Show basic info on what's going on.
2=Notice; Provides more information regarding your search requests.
3=Debug; Produces a lot more details on what going on. Hope you can read fast.
4=Verbose; Produces a little bit more than debug but pauses often giving you a change to read the debug. This also generates a debugging log in your logging folder.
SearchWaitTime=30
Used in /trader mode.
How many seconds bazaar search should wait for results. The script is set to process the item as soon as your /bazaar search return some results. If you deal with lag issues, whereas the bazaar search takes a long time to display, the time to wait for this is here. If you sell a lot of uncommon items, you may wish to adjust this. It waits up to this many seconds before going "Guess no one else sells this" and processes the time. One way to ensure there is always something returned is to start your trader before starting the macro.
PauseOnStart=TRUE
Used in /trader and /buyer mode.
TRUE will pause the script at the beginning
FALSE and it's off to the races.
The purpose is to remind you to create a macro pause hotbutton. It can be difficult to stop or pause the script without that button.
UseMQ2bzsrch=TRUE
Removed, if this setting still sits in your INI, it is safe to delete.
BuyCountReset=10
Used in /buyer mode.
Percentage used to trigger updating your item buy count. You must add a "MinBuyCount" to the item in the bazaar.ini file.
If you set an items MinBuyCount=500 and BuyCountReset=10 it will set your buy count to 500 once your current buy count is 450 or less.
If you have purchased your entire buy count; this does not add anything to your buy list. EQ removes the item from your buy list once your buy count has been satisfied.
CreateShoppingList=FALSE
Used in /trader and /buyer mode.
Create a CSV file in your log folder for all price scans.
MQ2log always adds the .log file extension to files. You may need to remove this.
The shopping list can be found in your log folder with the name bazaar3_{server}_Shopping_List.cvs.log
This file is always appended to. All your bazaar mules will write to the same file every time the price scan is done.
You can use tools such as Sheet and Excel to import the data and review.
Its purpose is to help manage your bazaar.ini file
The columns are separated with a semicolon. (Technical reasons), you may need to do a manual import into Excel
Here is the header row, it is not added to the file
date;time;mode;character;itemName;minSellPrice;maxSellPrice;avgSellPrice;minBuyPrice;maxBuyPrice;avgBuyPrice;yourMinSellPrice;yourMaxSellPrice;yourMinBuyPrice;yourMaxBuyPrice;yourMinBuyCount
GoOfflineMode=FALSE
Used in /trader and /buyer mode.
TRUE will take your seller/buyer to Offline mode once the first price scan has completed.
FALSE keeps your seller/buyer logged on
This setting will apply to all bazaar mules the script is ran on. There is also a command line option to take your seller/buyer offline. "/mac bazaar goOffline" (this is case sensitive) will run the first price scan and go offline.
BeMoreHuman=FALSE
Used in /trader and /buyer mode.
TRUE will add a couple of small random delays while doing searches. /trader delay is slightly larger if there is a price change
FALSE will work as fast as it can.
UseLuaReview=FALSE
Used in /trader and /buyer mode.
TRUE during a review mode a GUI is displayed to assist in updating the bazaar.ini
FALSE during review mode, item details as shown in the MQChat box, no GUI.
|-------------------------------------------------------------|
| Advanced Options [Customization_Settings]
|-------------------------------------------------------------|
If you do not understand the MacroQuest scripting language do not proceed with these settings.
The macro allows for some custom functions to specific steps in the process. These customizations will survive updates.
The macro includes a file name "bazaar_custom-sample.inc" which includes some samples and instructions.
Key Break Points
Sub custom_script_initiate
-- Run custom code once during the startup of the macro.
Use Case: The sample code runs the /trader to its normal trading spot.
Sub custom_script_price_scan
-- Run custom code as it initiates a /trader price scan. If you have the macro updating prices every 90 minutes, this will run every 90 minutes.
Use Case: Update the window title, or move your toon
Sub custom_script_buyer_new_item
-- Run custom code when it scans your /buyer and finds an item without INI settings
Use Case: Pause the macro to add the item to the INI. ( I use the LuaReview script)
Sub custom_script_trader_new_item
-- Run custom code when it scans your /trader and finds an item without INI settings. It will still set the initial value to the default value, but when it hits the new item during its price check it will use updated values.
Use Case: Pause the macro to add the item to the INI. ( I use the LuaReview script)
Sub custom_script_trader_validationError
-- Run custom code if /trader validation step fails for any reason
Use Case: Shut down your trader instead of risk losing money
Sub custom_script_trader_price_controls(int var1)
-- Run custom code to adjust your /trader price as you feel fit
Use Case: You hate the way I round numbers.