Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.

Found out you need ENG layout, SWE layout is the troublemaker....I haven't had access to an item with that in it to test it.
assuming English/Swedish --- yup that'll do itFound out you need ENG layout, SWE layout is the troublemaker....

depending on how comfortable you are digging around in the macro you can search for the 5000 setting and change it to something else. You could do it with a Math.Calc and Rand function so that the minimum is 5000 +/- a few hundred plat. I know I was thinking of doing that, but I'm not near my setup to see if I ever went through and changed it or not. I believe the 5% below could also be altered so that it's like 4.5-5.6% randomized so that each adjustment it's slightly different, but that could cause a price adjust every time it updates too, so there's that to consider as well.I have to agree that it's really confusing having a bazaar.mac and a bazaar2.mac. I actually came here to mention a few issues I was having with Bazaar.mac only to just find out there's a second one not being included in VV.
Things I noticed:
- Is there a way to add an ini setting for us to increase the time it waits for a response for an item from the bazaar? I'd say 20% of the time the scan doesn't wait for results and winds up seeing nothing, or having the items from the previous search mixed in with the items from the next search
- I'm not sure if this happens in Bazaar2.mac, but in the original version, if I tabbed out of the game while it was searching, there would be times where it would set the wrong price, sometimes even setting an item to 1pp. I've lost quite a bit of money on that. This happened with both regular game +CPU throttling, and with mq2eqwire running but no CPU throttling. This means I can only ever leave 1 trader running per PC rather than boxing several
- Can we have an INI setting to set our own default base price for unlisted items? I appreciate the increase from 100pp to 5k in the new version of the mac, but I'd like to set it myself
- Is there a way to set items not to increase their price more than a % per scan, or something other type of logic? I often run into a situation where an item is worth say 5k, but some dope will set it to 600k. Maybe I can increase mine to 6k and still have it sell, but any higher than that it never will. I could set a max price, but prices fluctuate over time, and I have 6000 lines in my INI file... none of which are in alphabetical order or very easy to modify in bulk.
- Is there a way that rounding could be handled, to make it less obvious it is a macro modifying the prices? If people know you're a bot, it is a lot easier for them to exploit you. Having everything set to for example 133332 pp instead of 133000 which is something more likely for a human to set makes it pretty obvious
Maybe it's my own fault for having 6 traders selling 100 things at all times![]()

Everyone who updated on patch day 9-18-2019: I apologize, I nuked your bazaar.ini. I've been working on our new updater and some files became mixed up in the process. I've corrected the issue on our end, but if you've lost your bazaar.ini there's nothing I can do to get it back
If you spent a lot of time on your bazaar.ini and you don't have a backup, please PM me and I'll work something out to make up for it. Again, I apologize.
Ouch thats is going to hurt, 3 toons selling collections. /oh well mistakes happenEveryone who updated on patch day 9-18-2019: I apologize, I nuked your bazaar.ini. I've been working on our new updater and some files became mixed up in the process. I've corrected the issue on our end, but if you've lost your bazaar.ini there's nothing I can do to get it back
If you spent a lot of time on your bazaar.ini and you don't have a backup, please PM me and I'll work something out to make up for it. Again, I apologize.
Not to preach... but this is why you want to configure a regular backup of your \everquest and \mq2 folders. (Along with traditional locations like \Documents and \Pictures)!
Assuming you have Win10 you would go into Settings>Update & Security>Backup and enable File History. Then use <More Options> and <Add a folder> and then select your EQ and MQ folders. The only caveat is the necessity to have an external or extra hard drive to use as the destination drive.
I just used my File History to recover my bazaar.ini from earlier in September!
I see a thread in the DBG Vet lounge bitching about those of us using this macro to undercut by 1%. It does make it pretty obvious those mules are using script-generated pricing. What would a human do?
/if (!${Ini[${BazINI},Defaults,SellPriceMin].Length}) /ini ${BazINI} "Defaults" "SellPriceMin" "1"
/declare SellPriceMin int outer ${Ini[${BazINI},Defaults,SellPriceMin]}
/if (!${Ini[${BazINI},Defaults,SellPriceMax].Length}) /ini ${BazINI} "Defaults" "SellPriceMax" "1"
/declare SellPriceMax int outer ${Ini[${BazINI},Defaults,SellPriceMax]}
/if (!${Ini[${BazINI},Defaults,BuyPriceMin].Length}) /ini ${BazINI} "Defaults" "BuyPriceMin" "1"
/declare BuyPriceMin int outer ${Ini[${BazINI},Defaults,BuyPriceMin]}
/if (!${Ini[${BazINI},Defaults,BuyPriceMax].Length}) /ini ${BazINI} "Defaults" "BuyPriceMax" "1"
/declare BuyPriceMax int outer ${Ini[${BazINI},Defaults,BuyPriceMax]}
/if (!${Ini[${BazINI},Settings,UndercutPct].Length}) /ini ${BazINI} "Settings" "UndercutPct" "5"
/declare UndercutPct string outer ${Ini[${BazINI},Settings,UndercutPct]}
/bazecho \ayUndercutting all other vendors by \ag${UndercutPct}%
/if (${UndercutPct.Length} == 1) /varset UndercutPct 0${UndercutPct}
/if (!${Ini[${BazINI},Defaults,InitialPrice].Length}) /ini ${BazINI} "Defaults" "InitialPrice" "5000"
/declare InitialPrice int outer ${Ini[${BazINI},Defaults,InitialPrice]}
/if (!${Ini[${BazINI},Settings,UpdateOn].Length}) /ini ${BazINI} "Settings" "UpdateOn" "TRUE"
/declare UpdateOn bool outer ${Ini[${BazINI},Settings,UpdateOn]}
/if (!${Ini[${BazINI},Settings,UpdateInterval].Length}) /ini ${BazINI} "Settings" "UpdateInterval" "90"
/declare UpdateInterval timer outer ${Ini[${BazINI},Settings,UpdateInterval]}m
Reading that thread...would it even be possible to have an outside f2p mule checking prices and sending updates to the actual trader?
I wanted to make my bazaar prices less "bot-like" and more human appearing. So I changed a bit of code in order to round prices downward...
Here is the default block of code in bazaar2.mac:
[CODE lang="ini" title="Beginning at Line 179 of bazaar2.mac"] /if (${newPrice} == ${OpponentPrice} && ${OpponentPrice}) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
[/CODE]
I replaced that block with the following lines which uses the Modulo function to chop off the least significant bits of the price. It's somewhat arbitrary how many digits I decided weren't significant! I'm sure there is a more elegant way to do this using a Switch function but my coding skills are very rough.
[CODE lang="ini" title="Round down code"]
/if ((${newPrice} == ${OpponentPrice}) && (${OpponentPrice}) && (${newPrice} > 1000000)) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}%100000]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
/if ((${newPrice} == ${OpponentPrice}) && (${OpponentPrice}) && (${newPrice} > 100000) && (${newPrice} < 999999)) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}%10000]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
/if ((${newPrice} == ${OpponentPrice}) && (${OpponentPrice}) && (${newPrice} > 10000) && (${newPrice} < 99999)) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}%1000]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
/if ((${newPrice} == ${OpponentPrice}) && (${OpponentPrice}) && (${newPrice} > 1000) && (${newPrice} < 9999)) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}%100]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
/if ((${newPrice} == ${OpponentPrice}) && (${OpponentPrice}) && (${newPrice} > 100) && (${newPrice} < 999)) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}%10]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
/if ((${newPrice} == ${OpponentPrice}) && (${OpponentPrice}) && (${newPrice} > 1) && (${newPrice} < 99)) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}%5]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
[/CODE]
I wanted to make my bazaar prices less "bot-like" and more human appearing. So I changed a bit of code in order to round prices downward...
Here is the default block of code in bazaar2.mac:
[CODE lang="ini" title="Beginning at Line 179 of bazaar2.mac"] /if (${newPrice} == ${OpponentPrice} && ${OpponentPrice}) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
[/CODE]
I replaced that block with the following lines which uses the Modulo function to chop off the least significant bits of the price. It's somewhat arbitrary how many digits I decided weren't significant! I'm sure there is a more elegant way to do this using a Switch function but my coding skills are very rough.
[CODE lang="ini" title="Round down code"]
/if ((${newPrice} == ${OpponentPrice}) && (${OpponentPrice}) && (${newPrice} > 1000000)) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}%100000]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
/if ((${newPrice} == ${OpponentPrice}) && (${OpponentPrice}) && (${newPrice} > 100000) && (${newPrice} < 999999)) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}%10000]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
/if ((${newPrice} == ${OpponentPrice}) && (${OpponentPrice}) && (${newPrice} > 10000) && (${newPrice} < 99999)) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}%1000]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
/if ((${newPrice} == ${OpponentPrice}) && (${OpponentPrice}) && (${newPrice} > 1000) && (${newPrice} < 9999)) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}%100]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
/if ((${newPrice} == ${OpponentPrice}) && (${OpponentPrice}) && (${newPrice} > 100) && (${newPrice} < 999)) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}%10]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
/if ((${newPrice} == ${OpponentPrice}) && (${OpponentPrice}) && (${newPrice} > 1) && (${newPrice} < 99)) {
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}*0.${UndercutPct}]}
/varcalc newPrice ${newPrice}-${Math.Calc[${newPrice}%5]}
/if (${Debugging}) /bazecho \arA new price ${UndercutPct}% lower than all other vendors is ${newPrice}
}
[/CODE]
I am not saying price bots are not a thing, but I was not able to determine definitively using the existing logs that automated price adjustment was definitely going on during the time period that I examined (the last several days).
Well to be fair each trader bag holds 100 items. Even if someone has their update timer set to 1 minute, it takes quite a bit longer than that to just update 100 items. Of course if they have only a few items it's more likely they'd be able to achieve this. Back when I first created a bazaar bot to update prices there was no mandatory wait time to query another search, and people were looping through things as fast as they could hit the find button and updating prices took like 2 seconds. Now that the wait has been incorporated it's a much slower process, even programmatically, to update the prices of the items on a character. I expect 90 minutes should be as low as it ever really needs to be at any given moment, but nothing is forced. Just keep in mind that you want to make sure you have Min values set to your items and you likely want to have Max values set for your items so that someone can't post an item for REALLY high that you're the only other person that has one of and then wait 3 hours to see if you try to price match them. Because if they're paying close enough attention to the values and get close to when you're setting the price change they can still snipe you down with a min value hit, and I presume that for two reasons you don't want that to happen. 1: nobody likes being taken for a ride. 2: it becomes clearer that you're automating things, but still may lack a way to "prove" it.
Just because you've matched someones price doesn't mean anything. They can't expect you to be at the keyboard, even if you just updated a price. Because you could have searched, modified and then left. They can't expect you to be at the keyboard while in trader mode like they do while you're actively hunting. It's not as easy as some seem to think it is. I expect their logs aren't great because it's likely you'd be able to find consistent update intervals for players if you look, but making the update interval a modifiable value, and having to account for different quantity of total items to query adding time to the check makes it pretty hard to find patterns. The patterns are there. But they aren't finding them for whatever reason.
Oh, shit.... I never thought of pricing an item super HIGH to catch the people using the mac. That only works if you're the only other person with an item, but it certainly would flag the trader as someone who automates.

/varset UpdateInterval ${UpdateInterval.OriginalValue}
${Math.Calc[80+${Math.Rand[20]}].Int}
/if (!${Ini[${BazINI},Settings,UpdateInterval].Length}) /ini ${BazINI} "Settings" "UpdateInterval" "90"
/declare UpdateInterval timer outer ${Ini[${BazINI},Settings,UpdateInterval]}m
/varset UpdateInterval ${Math.Calc[${Int[${Math.Calc[${Math.Calc[${UpdateInterval.OriginalValue}/10]}/60]}]} + ${Math.Rand[20]}].Int}m
