• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver
Bazaar.mac

Release Bazaar.mac 2023.8.20.1

No permission to download
Is the documentation on this macro up to date? Is this statement from the overview still correct?

As I understand this, you can only really use increments of 5% because the macro will always round down. For example, if I chose UndercutPct=6, would it actually be the same as if I used UndercutPct=5??
I believe that is correct as I have just recently played around with it for awhile. That is the behavior I witnessed on my end.

Any macro is easily detected if a GM simply spends a little time observing the actions of the characters. If you're 2-6 boxing and all your casters are casting at same time or while tank is moving it is very obvious. Bazaar macro is no different. You typically tell who is using the macro to set pricing just by looking at the bazaar pricing. We as players want ease of use but at the same time, if they aren't tweaking the INI and just going out of the box, it is even easier to tell.
I wouldn't say that is completely truthful with battle rituals. Before I was using a mac, I would multi box with ISB and just broadcasting. That would do what you are describing, but isn't a result from using a macro. The bazaar thing is 100% accurate if everyone is using the same settings. But as long as you adjust for something that isn't "out of the box", I find this to be the best way to go about it. So that your settings aren't the same as everyone else's.

Does anyone know what the "Safeseller" option is used for exactly? I know what it does, but I am trying to decide what usefulness it has in general. Because I can't see why I would want my trader to stop selling when the pricing is updated. I would want to seller to sell all the time. Is there some function to this that is useful? Any input is greatly appreciated!

When using the bazaar mac. There is an option to have the trader stop selling via the "safeseller" toggle to TRUE. I understand what that does, but I am trying to figure out why would I ever want the trader to stop selling when pricing is updated in general? I would figure it's best to always have the trader selling. Is there some sort of effect this has on something else I am not aware of? Any input is appreciated. Thanks guys!
 
Is there a way to set a default price for unpriced items in a range instead of one number? Instead of having a static price have the macro assign say a random number between 12k-15k? That way it looks less conspicuous.
 
Is there a way to set a default price for unpriced items in a range instead of one number? Instead of having a static price have the macro assign say a random number between 12k-15k? That way it looks less conspicuous.
What? You don't like the defiant gear priced at 2m? lol
 
Is there a way to set a default price for unpriced items in a range instead of one number? Instead of having a static price have the macro assign say a random number between 12k-15k? That way it looks less conspicuous.

I have a procedure for this problem.

1. I set the initial and max price to 1111111 in the bazaarsettings.ini file.
2. I run the macro just long enough to populate the bazaar.ini file with the new items and this "weird" price.
3. I /end the macro.
4. I open bazaar.ini in Notepad++ and search for the "weird" price and manually adjust the items max price to something more reasonable.
5. I save the bazaar.ini file.
6. I run the macro again to actually compare and set prices correctly.
 
Does anyone know what the "Safeseller" option is used for exactly? I know what it does, but I am trying to decide what usefulness it has in general. Because I can't see why I would want my trader to stop selling when the pricing is updated. I would want to seller to sell all the time. Is there some function to this that is useful? Any input is greatly appreciated!

The purpose of turning the trader off during updates was to catch any errors before the validation phase.
1) Trader Off
2) Update Prices
3) Validate
4) Trader On

While working on the macro I would click on the screen while it was running the price changes. This sometimes (not often) would cause the price to get set to 1 plat. Luck would have it that after it made that mistake, and while it was reviewing the rest of my items, someone was able to buy 5 rings worth about a million plat for 5 plat. The validation step would have caught it, but this person got real lucky.

So that's the reason it there.

Is the documentation on this macro up to date? Is this statement from the overview still correct?

As I understand this, you can only really use increments of 5% because the macro will always round down. For example, if I chose UndercutPct=6, would it actually be the same as if I used UndercutPct=5??

This may be an adverse effect of the rounding. At lower numbers you would likely not see a difference between 5 and 6, at higher numbers you should.
The macro is built to accommodate many preferences, for me I never used the percentage as I think it's not human like. I always undercut but a couple of plat.
Who has time to do that type of math :)

Is there a way to set a default price for unpriced items in a range instead of one number? Instead of having a static price have the macro assign say a random number between 12k-15k? That way it looks less conspicuous.

There is not.

This macro has not seen any updates in a while as I do not play as much anymore. Before that; the update I was working on has the ability for you to customize.
At certain points of the script you could insert your own code without breaking anything and those customizations would survive updates.

For instance, with my current test; when I kick off the macro and it finds a new item it prompts me (with the Lua window) to set my highs and lows.
I took at peak at it today and the custom breaks are

Script Start Up - Mine runs to my normal trader spot
Start of trader price scan - Mine sets the Window title
Find an item with no INI entry in /trader - Mine prompts for initial INI values
Find an item with no INI entry in /buyer - Mine prompts for initial INI values
If validation finds an error. - Main pauses

It's cool so far, just not sure it's ready to push yet. Its development was going well and then the bans started happening.
 
We'll need a swift update to this macro, as the commas have killed it. ;)

1663788866787.png

1663788881881.png


Code:
|-------------------------------------------------------------|
| Checks your /trader prices and updates if needed.
|-------------------------------------------------------------**|
Sub CheckTraderPrices
    /declare slot int local -1
    /declare dupCheck int local
    /declare searchResult int local
    /declare lowestPrice int local
    /declare found int local 0
    /declare dataWaitVar int local 0
    /declare Excludelist string local
    /declare ShopingListMin int local 2000000
    /declare ShopingListMax int local 0
    /declare ShopingListRunning int local 0

    /call logIt "3" "Checking current prices."
    /if (${SellerReview}) /call logIt "2" "Seller Review Mode is: ${SellerReview}"

    /if (!${AggressiveSeller}) {
        /call logIt "1" "Undercutting all other vendors by \ag${UndercutPct}%"
    } else {
        /call logIt "1" "Undercutting all other vendors by \ag${UndercutAmount}\ay platinum."
    }
   
    /for slot 0 to 144
        /call logIt "3" "Scanning Trader Slot ${slot}"
        /varset lowestPrice 2000000
        /varset ShopingListMin 2000000
        /varset ShopingListMax 0
        /varset ShopingListRunning 0
        /notify BazaarWnd BZR_BazaarSlot${slot} leftmouseup
        /varset thisItem ${Window[BazaarWnd].Child[BZR_BazaarSlot${slot}].Tooltip}
        /varset currentPrice ${Window[BazaarWnd].Child[BZW_Money0].Text}

        /if (!${Window[BazaarWnd].Child[BZR_BazaarSlot${slot}].Tooltip.Length}) /break
        /if (${Bool[${Window[BazaarWnd].Child[BZR_BazaarSlot${slot}].Tooltip}]}) {
            |Check if this item should be skipped
            /if (${Ini[${itemPrices},${thisItem},SellPriceMax]} == -1) {
                /call logIt "2" "\aoINI set to skip this item, skipping." "${thisItem}"
                /varset SkipItem TRUE
            }
            /if (${slot}) {
                /for dupCheck 0 to ${Math.Calc[${slot}-1]}
                    /if (${Window[BazaarWnd].Child[BZR_BazaarSlot${dupCheck}].Tooltip.Equal[${thisItem}]}) {
                        /call logIt "2" "\aoPreviously checked, skipping." "${thisItem}"
                        /varset SkipItem TRUE
                    }
                /next dupCheck
            }
            /if (${SkipItem}) {
                /varset SkipItem FALSE
                /continue
            }
            /varset SellerFound FALSE
            /notify BazaarWnd BZR_BazaarSlot${slot} leftmouseup
            /delay 5
            /call logIt "3" "Your current asking price is (\ag${currentPrice}\ax)" "${thisItem}"
            /call logIt "2" "Checking item. Your \aoMin: \ag${Ini[${itemPrices},${thisItem},SellPriceMin]}\ay, \aoMax: \ag${Ini[${itemPrices},${thisItem},SellPriceMax]}" "${thisItem}"
            |If my Current Price is less than SellPriceMin set new price to SellPriceMin
            /if (${Ini[${itemPrices},${thisItem},SellPriceMin]} != 1) {
                /if (${currentPrice} < ${Ini[${itemPrices},${thisItem},SellPriceMin]}) {
                    /call logIt "3" "The price was less than SellPriceMin: ${Ini[${itemPrices},${thisItem},SellPriceMin]}" "${thisItem}"
                    /varset newPrice ${Ini[${itemPrices},${thisItem},SellPriceMin]}
                }
            }
            |If you have a max price, default to that.  Profits First!
            /if (${Ini[${itemPrices},${thisItem},SellPriceMax]} != 1) {
                    /call logIt "3" "Setting starting price to SellPriceMax: (\ag${Ini[${itemPrices},${thisItem},SellPriceMax]}\ay)" "${thisItem}"
                /varset newPrice ${Ini[${itemPrices},${thisItem},SellPriceMax]}
            } else {
                /call logIt "3" "Your SellPriceMax not set. Using current starting price: (\ag${currentPrice}\ay)" "${thisItem}"
                /varset newPrice ${currentPrice}
            }
            /call BazaarSearch
            |Lets make sure we have some results
            /varset found 0
            /for dataWaitVar 1 to ${SearchWaitTime}
                /varset found ${Window[BazaarSearchWnd].Child[BZR_ItemList].List[1,3]}
                /delay 5
                /if (${found}>0) /break
            /next dataWaitVar
            /if (${dataWaitVar} >=${SearchWaitTime}) {
                /call logIt "0" "Notice! No search results returned." "${thisItem}"
                /call logIt "1" "If this was a common item you may wish to consider increasing your SearchWaitTime" "${thisItem}"
            }
            /call logIt "3" "Waited ${dataWaitVar} cycles for Sellers" "${thisItem}"

            /for searchResult 1 to 255
                /if (${Bool[${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},3]}]}) {
                    /if (${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},2].Equal[${thisItem}]}) {
                        /if (!${Ini[${BazINI},Excludes,ExcludeList].Find[${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},8]}]}) {
                            /if (${Ini[${itemPrices},${thisItem},SellPriceMin]} <= ${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},4]}) {
                                /call logIt "3" "\am${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},8]}'s\ay price is (\ag${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},4]}\ay)" "${thisItem}"
                                /varset SellerFound TRUE
                                /if (${lowestPrice} > ${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},4]}) {
                                    /varset lowestPrice ${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},4]}
                                    /call logIt "3" "\am${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},8]}'s\ay price (\ag${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},4]}\ay) is now current lowest qualified." "${thisItem}"
                                }
                            } else {
                                /call logIt "2" "\am${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},8]}'s\a-y price (\ag${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},4]}\a-y) was lower than SellPriceMin. Ignoring Trader" "${thisItem}"
                            }
                            /if (${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},4]}>${ShopingListMax}) /varset ShopingListMax ${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},4]}
                            /if (${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},4]}<${ShopingListMin}) /varset ShopingListMin ${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},4]}
                            /varcalc ShopingListRunning ${ShopingListRunning}+${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},4]}
                        } else {
                            /call logIt "2" "\am${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},8]}\aw was on the Excluded Traders list." "${thisItem}"
                        }
                    } else {
                        /call logIt "3" "\a-y${Window[BazaarSearchWnd].Child[BZR_ItemList].List[${searchResult},2]} is not the same as ${thisItem}" "${thisItem}"
                    }
                } else {
                    /break
                }
                /delay 10s ${Window[BazaarSearchWnd].Child[BZR_QueryButton].Enabled}
            /next searchResult
        } else {
            /call logIt "3" "No more items to check. Finished updating prices." "${thisItem}"
            /break
        }

        |What to do if there are no other sellers.
        /if (!${SellerFound}) {
            |What to do if there are no other sellers.
            /if (${Ini[${itemPrices},${thisItem},SellPriceMax]} != 1) {
                /if (${newPrice} < ${Ini[${itemPrices},${thisItem},SellPriceMax]}) {
                    /varset newPrice ${Ini[${itemPrices},${thisItem},SellPriceMax]}
                    /call logIt "3" "Proposed new price is: (\ag${newPrice}\ay) (Your SellPriceMax)" "${thisItem}"
                }
            }
        } else {
            |A Seller was found.
            /if (!${AggressiveSeller}) {
                /varcalc newPrice ${lowestPrice}-${Math.Calc[${lowestPrice}*0.${UndercutPct}]}
                /if (${newPrice} > 100) {
                    /call roundDown
                }
            } else {
                /varcalc newPrice ${lowestPrice} - ${UndercutAmount}
            }
            |Make sure we are selling within our set parameters
            /call logIt "3" "Proposed new asking price is: (\ag${newPrice}\ay)" "${thisItem}"
            /if (${Ini[${itemPrices},${thisItem},SellPriceMin]} != 1) {
                /if (${newPrice} < ${Ini[${itemPrices},${thisItem},SellPriceMin]}) {
                    /call logIt "3" "The proposed price of was less than SellPriceMin: (\ag${Ini[${itemPrices},${thisItem},SellPriceMin]}\ax) - Increasing to SellPriceMin" "${thisItem}"
                    /varset newPrice ${Ini[${itemPrices},${thisItem},SellPriceMin]}
                }
            }
            /if (${Ini[${itemPrices},${thisItem},SellPriceMax]} != 1) {
                /if (${newPrice} > ${Ini[${itemPrices},${thisItem},SellPriceMax]}) {
                    /call logIt "3" "Proposed price was greater than SellPriceMax: (\ag${Ini[${itemPrices},${thisItem},SellPriceMax]}\ax) - Decreasing to SellPriceMax" "${thisItem}"
                    /varset newPrice ${Ini[${itemPrices},${thisItem},SellPriceMax]}
                }
            }
        }

        |Make sure we are selling it for more than what a vendor will pay
        /call logIt "4" "Verifing a vendor won't just pay more." "${thisItem}"
        /if (${Int[${FindItem[${thisItem}].Value}]} > 1001) {
            /call logIt "4" "Vendor value is greater than 1pp" "${thisItem}"
            /if (${Int[${Math.Calc[${FindItem[${thisItem}].Value}/1000]}]} > ${newPrice}) {
                /call logIt "2" "Proposed price was less than Vendor Purchase price: (\ag${Int[${Math.Calc[${Int[${Math.Calc[${FindItem[${thisItem}].Value}/1000]}]}+1]}]}\ax) - Beating Vendor Price." "${thisItem}"
                /varset newPrice ${Int[${Math.Calc[${Int[${Math.Calc[${FindItem[${thisItem}].Value}/1000]}]}+1]}]}
            }
        }

        /if (${newPrice} != ${currentPrice}) {
            /if (${currentPrice}<${newPrice}) {
                /call logIt "1" "\agIncreasing\ao price from (\aw${currentPrice}\ao) to (\ag${newPrice}\ao)" "${thisItem}"
            } else {
                /call logIt "1" "\arDecreasing\ao price from (\aw${currentPrice}\ao) to (\ar${newPrice}\ao)" "${thisItem}"
            }
            /call UpdatePrice ${newPrice}
        } else {
            /call logIt "3" "Current price (\ag${currentPrice}\ay) is the same as the proposed price (\ag${newPrice}\ay)." "${thisItem}"
        }
        /varset lowestPrice 0
        /if (${SellerReview}) /call INIReviewInterface
        /if (${LogLevel}>=4 && !${SellerReview}) {
            /call logIt "4" "Verbose Logging Enabled, Pausing so you may read the spam." "${thisItem}"
            /mqpause on
        }

        |----------- Write to shopping list
        /if (${CreateShoppingList}) {
            /mqlogcustom bazaar3_${EverQuest.Server}_Shopping_List.cvs ${Time.Date};${Time};seller;${Me.Name};"${thisItem}";${ShopingListMin};${ShopingListMax};${Math.Calc[${ShopingListRunning}/${searchResult}]};0;0;0;${Ini[${itemPrices},${thisItem},SellPriceMin]};${Ini[${itemPrices},${thisItem},SellPriceMax]};${Ini[${itemPrices},${thisItem},BuyPriceMin]};${Ini[${itemPrices},${thisItem},BuyPriceMax]};${Ini[${itemPrices},${thisItem},MinBuyCount]}
        }
    /next slot
/return


I think if we kill the commas before price comparisons, it might be fine?
Setting prices still has no comma required.
 
Last edited:
My guess is the integer of "lowestPrice" needs to be converted to a text string, commas replaced with nothing, and then converted back to an integer so that the Math.Calc can undercut the price. I haven't done real C++ in like 20 years.


I'm guessing someone like Chat, etc knows how to do this off-hand.
 
Last edited:
Today's patch changed something with baz mac. It stops and gives the message:
unparsable in calculation ',' - bazaar.mac@680 (checktraderprices): /if ($(iIni[${itemPrices},${thisItem},SellPriceMin]} <= ${window[BazaarSearchWnd].child[BZR_ItemList].List[$[searchResult},4]])
{
bazaar.mac@272 (main): /call CheckTraderPrices
Failed to parse /if condition '(5000 <= 5,000)', non-numeric encountered
bazaar.mac@680 (checktraderprices): /if ($(iIni[${itemPrices},${thisItem},SellPriceMin]} <= ${window[BazaarSearchWnd].child[BZR_ItemList].List[$[searchResult},4]])
{
bazaar.mac@272 (main): /call CheckTraderPrices
The current macro has ended

Additionally, I have noticed also, that it only does this when someone else is selling the same item.
 
Last edited:
Today's patch changed something with baz mac. It stops and gives the message:
unparsable in calculation ',' - bazaar.mac@680 (checktraderprices): /if ($(iIni[${itemPrices},${thisItem},SellPriceMin]} <= ${window[BazaarSearchWnd].child[BZR_ItemList].List[$[searchResult},4]])
{
bazaar.mac@272 (main): /call CheckTraderPrices
Failed to parse /if condition '(5000 <= 5,000)', non-numeric encountered
bazaar.mac@680 (checktraderprices): /if ($(iIni[${itemPrices},${thisItem},SellPriceMin]} <= ${window[BazaarSearchWnd].child[BZR_ItemList].List[$[searchResult},4]])
{
bazaar.mac@272 (main): /call CheckTraderPrices
The current macro has ended
I merged your post into the location that already has a discussion about this situation
 
Failed to parse /if condition '(5000 <= 5,000)', non-numeric encountered
5,000 is not a number. It's not an integer and has no numeric value. We need to pre-convert the new bazaar results to integers by slicing out the commas, but I'm not technically savvy enough with C++/MQ to handle it myself, safely.
 
I posted an update that should fix the issue with comma's in the bazaar window

Turns out the comma's added to the barter window a few months ago caused issues with that. That is not fixed yet.
I have been out of town and away from family for the last 4 days, so I would like to spend time with them.

There should be a few more updates coming in the next couple of days, hopefully this update fixes the biggest bug.
 
I posted an update that should fix the issue with comma's in the bazaar window

Turns out the comma's added to the barter window a few months ago caused issues with that. That is not fixed yet.
I have been out of town and away from family for the last 4 days, so I would like to spend time with them.

There should be a few more updates coming in the next couple of days, hopefully this update fixes the biggest bug.
Thank you!
 
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]
Is this code still included in the current release? according to the post
 
I'm hesitant to suggest it, but if others might consider using these settings, we might prevent driving our prices into the dirt...
Code:
UndercutPct=0
UndercutAmount=0
 
JerkChicken updated Bazaar.mac with a new update entry:

Lots of Fixes and some new features.

New Feature! Custom Coding Options.

Allows for you to add your own customization to select steps which will not get lost on updates.
This is intended for Advanced Users, see the macro Overview page for more details.

This update has undergone a lot of changes from previous version. If you have customized older versions note some function and variables have bene moved around.

|-------------------
| Updated 2022.09.30 - JerkChicken
| Version 2022.09.29.0
| Fixed: /buyer Would not read...

Read the rest of this update entry...
 
My Modulo code was never included in the public release here. I have not revisited it since the recent patch which implemented commas in the prices. I will probably do that soon though.
Your code can now be used without messing too much with the base code. I included it in the customization sample file. During testing it worked.
 
What causes this macro to keep searching for the same item over and over while scanning others? lag issue?

This can be due to a couple of things. One being lag, two being a bug.
If it is the very last item in your list, then it's a bug, I think I have it squished in the latest version.
If it is happening in the middle of your item list, then we may need to dig into it.

The SearchWaitTime=10 is just how long it will wait for results. Generally, if its lag you increase this, giving the severs longer to return the data.

And SearchWaitTime is about half seconds. So 30 should be around 15 seconds.
 
This can be due to a couple of things. One being lag, two being a bug.
If it is the very last item in your list, then it's a bug, I think I have it squished in the latest version.
If it is happening in the middle of your item list, then we may need to dig into it.

The SearchWaitTime=10 is just how long it will wait for results. Generally, if its lag you increase this, giving the severs longer to return the data.

And SearchWaitTime is about half seconds. So 30 should be around 15 seconds.
Yep it did sound like 500ms in that searchWait. As for the bug, it's still there even with a fresh install and ini cleanups, though it keeps using one item that is NOT the last one in my list.
 
Yep it did sound like 500ms in that searchWait. As for the bug, it's still there even with a fresh install and ini cleanups, though it keeps using one item that is NOT the last one in my list.

Make sure you are running the current release. A lot of stuff has been reworked.
Version: "2022.09.29.0"

If it still happens then in the bazaarSettings file set:
LogLevel=3

Load the logging plugin
/plugin MQ2Log load noauto

This will generate a log file which you can sanitize (rename people, do not delete lines) and DM me. Without seeing something, I'm just through darts in the dark.
 
It looks like the script may have an issue with item names that have a special character in them (or maybe it's the comma in the name?). For example when scanning "Correspondence from Lcea Katta, #8" I get the following

1665606618525.png
 
Code:
DoCommand - Couldn't parse ' #1\ay: Checking item. Your \aoMin: \ag1\ay, \aoMax: \ag1'
DoCommand - Couldn't parse ' #1\ay: \arDecreasing\ao price from (\aw82575\ao) to (\ar75800\ao)'
It looks like the script may have an issue with item names that have a special character in them (or maybe it's the comma in the name?). For example when scanning "Correspondence from Lcea Katta, #8" I get the following

View attachment 42712
 
Attached is the updates I made to work around the errors. It happens to anything with commas and quotes (as Cannonballdex said):

  • Prisoner Grub, Recipe #8
  • Outpost Reclamation Order, "Escape"

It creates new INI entries for any of these "Special" items, so custom min/max values will need to be updated.
 

Attachments

Release Bazaar.mac

Users who are viewing this thread

Back
Top
Cart