chalkos / marketbuddy Goto Github PK
View Code? Open in Web Editor NEWPlugin for XivLauncher/Dalamud to help with your day-to-day market operations.
License: Apache License 2.0
Plugin for XivLauncher/Dalamud to help with your day-to-day market operations.
License: Apache License 2.0
Plugin's fantastic already and saves a lot of time, but there's one little option missing that would perfect it:
If that's not going too far, would be cool to have an option to hold a modifier key so when you're right clicking an already listed item (not one in your inventory) it adjusts the price to the value in your clipboard.
Would be cool if when you're selling the same item 20x you can just adjust the price of the first one, then hold a modifier and right click every item once in the list of items that are already on sale, to adjust the prices instead of having to right click, then aim at "Adjust price" and click again.
When using ctrl to quickly price items, game crashes on 2nd item that im listing.
pricing 2nd item should get priced with whatever is in clipboard
game just hard crashes without stacktrace or writing anything to the logfile.
resetting config doesnt help.
No clue what changed afaik there was no update. and it still worked a few weeks ago.
tried resetting the settings. and cleanboot without any other plugin running
No response
No response
Buying a Pactmaker's Spinning Wheel (HQ)
Not seeing an error
[20:41][Marketbuddy] Error getting price per item or setting the new price. Use /xllog to see the error and submit it in a github issue
I don't know, the log told me to post it on github
--------------------------------
20:41:13.169 | ERR [Marketbuddy] Error getting price per item or setting the new price
System.NullReferenceException: Object reference not set to an instance of an object.
at Marketbuddy.MarketGuiEventHandler.SetPrice(Int32 newPrice) in C:\Users\chalkos\Software\ffxiv\Marketbuddy\Marketbuddy\MarketGuiEventHandler.cs:line 210
at Marketbuddy.MarketGuiEventHandler.AddonItemSearchResult_ReceiveEvent_Delegate_Detour(IntPtr self, UInt16 eventType, UInt32 eventParam, IntPtr eventStruct, IntPtr nodeParam) in C:\Users\chalkos\Software\ffxiv\Marketbuddy\Marketbuddy\MarketGuiEventHandler.cs:line 196
{ } [ Send ]
trying to copy the price with 1gil undercut to the clipboard
the 1gil undercut price gets copied to the clipboard
error message "[Marketbuddy] Clipboard does not contain a valid price"
No response
No response
When i open my retainers selling menu to try and change a price of an item the game hard crashes and locks up. When the plugin is disabled nothing causes the crash but because dalumud doesn't tell you if a plugin conflicts with another idk what is causing it.
The plugin should open the search history of any item you try to sell through retainers and show previous history of sales
Game just hard crashes the moment you try to put anything up for sale
No response
No response
Maximum stack size used to be higher than 999 (which was helpful when selling crystals)
can we have that feature back or have a separate option for selling maximum crystal stacks
Crashdump message:
Unhandled exception at 0x00007FFD89EA43C3 in ffxiv_dx11.exe.15144.dmp: 0xC0000005: Access violation reading location 0x0000000000000108.
Patch broke stuff, I'll get to updating it when I can
This will probably bloat the mod but I was wondering if it were possible to add in a setting so that you could set a minimum sell value for an item so you could still just list an item and click on the current listings to copy the price to your clip board, but if that price is less than your minimum for the specific item it instead copies the minimum.
For example if I wanted to sell a stack of lumber at 100 a piece but the current listings are all 95, when I click on a listing that's at 95 the system would instead copy 100 and use that for the quick list feature instead.
currently:
suggestion:
As the title says, would be neat if clicking on your own retainers' price listing didn't result in undercutting yourself.
Hello thanks for this great plugin!
The current behavior allows for opening current price list when adjusting price, or to hold shift to prevent that from happening. Could there be another toggle to reverse that behavior? Hold shift to open current price list; behaves normally if shift is not held.
Control click an adjust listing option (by accident) when clipboard does not contain numbers (or empty clipboard?)
Program doesn't crash.
FFXIV client crashed
Not sure what's the expected output here; perhaps throw out an error message and not adjust price listing?
No response
I can find the plugin in warehouse, but I can't install it. It said installed failed. CN version now is in 6.4, I think it is because the latest plug-in version is incompatible with China's XIVLauncher. I can install the plugin correctly before but yesterday I reinstalled the game and also the XIVLauncher and I found I couldn't install the plugin. If I remember correctly, Chinese XIVLauncher is still using API8. Can you leave a special .json path for the previous version so that we can always use this plug-in?
I was checking the price on supply mission items. Then the black box that pops whenever you press ctrl to fetch the updates keeps flickering as if ctrl is being constantly held down. This behavior doesn't happen in Inventory/Crafting list. (I'm not sure where else I can check for it.)
That it doesn't flicker/remains static.
It doesn't automatically fetch prices (I think? Unless something changed)
It seems to be automatically refreshing prices without me holding ctrl down.
Not qualified enough for that sorry.
There's no log errors for this I think.
Sell stuff through retainer
Being able to click the listing to undercut automatically
Sales window does not pop up, because plugin does not load properly
No response
16:44:53.548 INF | [PLUGINM] Loading plugin Marketbuddy
16:44:53.567 INF | [LOCALPLUGIN] Loading Marketbuddy.dll
16:44:53.583 ERR | [Marketbuddy] Error loading plugin
16:44:53.583 ERR | System.NullReferenceException: Object reference not set to an instance of an object.
16:44:53.583 ERR | at FFXIVClientStructs.Interop.Resolver.ResolveFromCache() in D:\a\Dalamud\Dalamud\lib\FFXIVClientStructs\FFXIVClientStructs\Interop\Resolver.cs:line 151
16:44:53.583 ERR | at FFXIVClientStructs.Interop.Resolver.Resolve() in D:\a\Dalamud\Dalamud\lib\FFXIVClientStructs\FFXIVClientStructs\Interop\Resolver.cs:line 171
16:44:53.583 ERR | at Marketbuddy.Marketbuddy..ctor(DalamudPluginInterface pluginInterface) in C:\Users\chalkos\Software\ffxiv\Marketbuddy\Marketbuddy\Marketbuddy.cs:line 39
16:44:53.642 INF | [LOCALPLUGIN] Finished loading Marketbuddy.dll
16:44:53.643 INF | [PLUGINM] Loading plugin Market board
16:44:53.643 INF | [LOCALPLUGIN] Loading MarketBoardPlugin.dll
16:45:00.222 INF | [LOCALPLUGIN] Finished loading MarketBoardPlugin.dll
16:45:55.616 INF | [PLUGINR] Fetching repo: https://github.com/chalkos/Marketbuddy/raw/main/repo.json
16:45:56.002 INF | [PLUGINR] Successfully fetched repo: https://github.com/chalkos/Marketbuddy/raw/main/repo.json
16:47:55.448 INF | [PLUGINR] Fetching repo: https://github.com/chalkos/Marketbuddy/raw/main/repo.json
16:47:55.673 INF | [PLUGINR] Successfully fetched repo: https://github.com/chalkos/Marketbuddy/raw/main/repo.json
16:48:24.584 INF | [LOCALPLUGIN] Unloading Marketbuddy.dll
16:48:24.586 ERR | [LOCALPLUGIN] Error while unloading Marketbuddy
16:48:24.586 ERR | at Marketbuddy.Marketbuddy.Dispose() in C:\Users\chalkos\Software\ffxiv\Marketbuddy\Marketbuddy\Marketbuddy.cs:line 68
16:48:24.588 ERR | at Marketbuddy.Marketbuddy.Dispose() in C:\Users\chalkos\Software\ffxiv\Marketbuddy\Marketbuddy\Marketbuddy.cs:line 68
One note, maybe also allow 0 as a value for undercut gil.
I have heard from many people that they always set the price as low as possible without undercutting it.
Originally posted by @xPumaa in #6 (comment)
I hope you can update your Marketbuddy plugin for api4.
It's been so useful until now, but sadly api4 doesn't allow using older plugins q_q
When listing stacked items, for some reason a few items are left out and not all of them are listed.
Example
Listing 50 stacked items โ 45 items are specified as the default number of items.
I can't tell if I've done something wrong, but Marketbuddy hasn't updated for me in several months. I'm just being prompted to "wait for it to be updated by its author."
With the 6.3 patch dalamud has introduced some changes and the plugin requires an update to work.
I was wondering if it would be possible to add something that showed your spent/gained gil for a time period or your net gil across all your retainers.
I know teamcraft does something similar but it bugs out if you change characters for some reason and I was looking to for easier way to track profit/loss.
Other thought was showing what you've spent or gained on a given item?
Buying items on the marketboard.
No error message.
After clicking on an item to buy it, an error message is thrown in the chat.
Error message:
[2:19][Marketbuddy] Error getting price per item or setting the new price. Use /xllog to see the error and submit it in a github issue
Price check only for retainers
--------------------------------
02:20:27.465 | ERR [Marketbuddy] Error getting price per item or setting the new price
System.NullReferenceException: Object reference not set to an instance of an object.
at Marketbuddy.MarketGuiEventHandler.SetPrice(Int32 newPrice) in C:\Users\chalkos\Software\ffxiv\Marketbuddy\Marketbuddy\MarketGuiEventHandler.cs:line 210
at Marketbuddy.MarketGuiEventHandler.AddonItemSearchResult_ReceiveEvent_Delegate_Detour(IntPtr self, UInt16 eventType, UInt32 eventParam, IntPtr eventStruct, IntPtr nodeParam) in C:\Users\chalkos\Software\ffxiv\Marketbuddy\Marketbuddy\MarketGuiEventHandler.cs:line 196
--------------------------------
Plogon is installed, but in-game it's not running and shows up as not installed.
When I try to install it, it spits out the generic error message that it failed to install.
Also tried deletin it from both installedPlugins and pluginConfig within %appdata% and installing it again, but it still gives me the error message that it couldn't install it.
Use case: In most times I want to undercut by 1gil or w/e the setting is. But with some specific item vs certain sellers I have a deal with, I'd like to undercut by 0. Having to change setting back and forth is a bit troublesome.
Would be great if we could hold on a modified key when clicking a listing to match price (undercut by 0 gil). Thanks!
hey, excellent plugin and one I use every hour of every day now. was just wondering if it was possible to add a user-configurable undercut value (via a textbox or something)?
either way, thanks for creating this plugin, its incredibly useful!
Use the plugin
It work
Game Crashes (and fills the .log file up VERY fast.
No response
2023-01-16 06:21:53.225 -06:00 [INF] LASTEXCEPTION:eyJXaGVuIjoiMjAyMy0wMS0xNlQwNjoyMTo1My4yMjUyNjkyLTA2OjAwIiwiSW5mbyI6IlN5c3RlbS5SZWZsZWN0aW9uLlRhcmdldEludm9jYXRpb25FeGNlcHRpb246IEV4Y2VwdGlvbiBoYXMgYmVlbiB0aHJvd24gYnkgdGhlIHRhcmdldCBvZiBhbiBpbnZvY2F0aW9uLlxyXG4gLS0tPiBOZXd0b25zb2Z0Lkpzb24uSnNvblJlYWRlckV4Y2VwdGlvbjogSW5wdXQgc3RyaW5nICcxLjAnIGlzIG5vdCBhIHZhbGlkIGludGVnZXIuIFBhdGggJ1VuZGVyY3V0UHJpY2UnLCBsaW5lIDIwLCBwb3NpdGlvbiAyMi5cclxuICAgYXQgTmV3dG9uc29mdC5Kc29uLkpzb25UZXh0UmVhZGVyLlBhcnNlUmVhZE51bWJlcihSZWFkVHlwZSByZWFkVHlwZSwgQ2hhciBmaXJzdENoYXIsIEludDMyIGluaXRpYWxQb3NpdGlvbilcclxuICAgYXQgTmV3dG9uc29mdC5Kc29uLkpzb25UZXh0UmVhZGVyLlJlYWROdW1iZXJWYWx1ZShSZWFkVHlwZSByZWFkVHlwZSlcclxuICAgYXQgTmV3dG9uc29mdC5Kc29uLkpzb25SZWFkZXIuUmVhZEZvclR5cGUoSnNvbkNvbnRyYWN0IGNvbnRyYWN0LCBCb29sZWFuIGhhc0NvbnZlcnRlcilcclxuICAgYXQgTmV3dG9uc29mdC5Kc29uLlNlcmlhbGl6YXRpb24uSnNvblNlcmlhbGl6ZXJJbnRlcm5hbFJlYWRlci5Qb3B1bGF0ZU9iamVjdChPYmplY3QgbmV3T2JqZWN0LCBKc29uUmVhZGVyIHJlYWRlciwgSnNvbk9iamVjdENvbnRyYWN0IGNvbnRyYWN0LCBKc29uUHJvcGVydHkgbWVtYmVyLCBTdHJpbmcgaWQpXHJcbiAgIGF0IE5ld3RvbnNvZnQuSnNvbi5TZXJpYWxpemF0aW9uLkpzb25TZXJpYWxpemVySW50ZXJuYWxSZWFkZXIuQ3JlYXRlT2JqZWN0KEpzb25SZWFkZXIgcmVhZGVyLCBUeXBlIG9iamVjdFR5cGUsIEpzb25Db250cmFjdCBjb250cmFjdCwgSnNvblByb3BlcnR5IG1lbWJlciwgSnNvbkNvbnRhaW5lckNvbnRyYWN0IGNvbnRhaW5lckNvbnRyYWN0LCBKc29uUHJvcGVydHkgY29udGFpbmVyTWVtYmVyLCBPYmplY3QgZXhpc3RpbmdWYWx1ZSlcclxuICAgYXQgTmV3dG9uc29mdC5Kc29uLlNlcmlhbGl6YXRpb24uSnNvblNlcmlhbGl6ZXJJbnRlcm5hbFJlYWRlci5DcmVhdGVWYWx1ZUludGVybmFsKEpzb25SZWFkZXIgcmVhZGVyLCBUeXBlIG9iamVjdFR5cGUsIEpzb25Db250cmFjdCBjb250cmFjdCwgSnNvblByb3BlcnR5IG1lbWJlciwgSnNvbkNvbnRhaW5lckNvbnRyYWN0IGNvbnRhaW5lckNvbnRyYWN0LCBKc29uUHJvcGVydHkgY29udGFpbmVyTWVtYmVyLCBPYmplY3QgZXhpc3RpbmdWYWx1ZSlcclxuICAgYXQgTmV3dG9uc29mdC5Kc29uLlNlcmlhbGl6YXRpb24uSnNvblNlcmlhbGl6ZXJJbnRlcm5hbFJlYWRlci5EZXNlcmlhbGl6ZShKc29uUmVhZGVyIHJlYWRlciwgVHlwZSBvYmplY3RUeXBlLCBCb29sZWFuIGNoZWNrQWRkaXRpb25hbENvbnRlbnQpXHJcbiAgIGF0IE5ld3RvbnNvZnQuSnNvbi5Kc29uQ29udmVydC5EZXNlcmlhbGl6ZU9iamVjdChTdHJpbmcgdmFsdWUsIFR5cGUgdHlwZSwgSnNvblNlcmlhbGl6ZXJTZXR0aW5ncyBzZXR0aW5ncylcclxuICAgYXQgTmV3dG9uc29mdC5Kc29uLkpzb25Db252ZXJ0LkRlc2VyaWFsaXplT2JqZWN0W1RdKFN0cmluZyB2YWx1ZSwgSnNvblNlcmlhbGl6ZXJTZXR0aW5ncyBzZXR0aW5ncylcclxuICAgYXQgRGFsYW11ZC5Db25maWd1cmF0aW9uLlBsdWdpbkNvbmZpZ3VyYXRpb25zLkxvYWRGb3JUeXBlW1RdKFN0cmluZyBwbHVnaW5OYW1lKSBpbiBDOlxcZ29hdHNvZnRcXGNvbXBhbnlzZWNyZXRzXFxkYWxhbXVkXFxDb25maWd1cmF0aW9uXFxQbHVnaW5Db25maWd1cmF0aW9ucy5jczpsaW5lIDEwM1xyXG4gICBhdCBJbnZva2VTdHViX1BsdWdpbkNvbmZpZ3VyYXRpb25zLkxvYWRGb3JUeXBlKE9iamVjdCwgT2JqZWN0LCBJbnRQdHIqKVxyXG4gICBhdCBTeXN0ZW0uUmVmbGVjdGlvbi5NZXRob2RJbnZva2VyLkludm9rZShPYmplY3Qgb2JqLCBJbnRQdHIqIGFyZ3MsIEJpbmRpbmdGbGFncyBpbnZva2VBdHRyKVxyXG4gICAtLS0gRW5kIG9mIGlubmVyIGV4Y2VwdGlvbiBzdGFjayB0cmFjZSAtLS1cclxuICAgYXQgU3lzdGVtLlJlZmxlY3Rpb24uTWV0aG9kSW52b2tlci5JbnZva2UoT2JqZWN0IG9iaiwgSW50UHRyKiBhcmdzLCBCaW5kaW5nRmxhZ3MgaW52b2tlQXR0cilcclxuICAgYXQgU3lzdGVtLlJlZmxlY3Rpb24uUnVudGltZU1ldGhvZEluZm8uSW52b2tlKE9iamVjdCBvYmosIEJpbmRpbmdGbGFncyBpbnZva2VBdHRyLCBCaW5kZXIgYmluZGVyLCBPYmplY3RbXSBwYXJhbWV0ZXJzLCBDdWx0dXJlSW5mbyBjdWx0dXJlKVxyXG4gICBhdCBEYWxhbXVkLlBsdWdpbi5EYWxhbXVkUGx1Z2luSW50ZXJmYWNlLkdldFBsdWdpbkNvbmZpZygpIGluIEM6XFxnb2F0c29mdFxcY29tcGFueXNlY3JldHNcXGRhbGFtdWRcXFBsdWdpblxcRGFsYW11ZFBsdWdpbkludGVyZmFjZS5jczpsaW5lIDMzOFxyXG4gICBhdCBNYXJrZXRidWRkeS5Db25maWd1cmF0aW9uLkdldE9yTG9hZCgpIGluIEM6XFxVc2Vyc1xcY2hhbGtvc1xcU29mdHdhcmVcXGZmeGl2XFxNYXJrZXRidWRkeVxcTWFya2V0YnVkZHlcXENvbmZpZ3VyYXRpb24uY3M6bGluZSA0NFxyXG4gICBhdCBNYXJrZXRidWRkeS5QbHVnaW5VSS5EcmF3T3ZlcmxheVdpbmRvdygpIGluIEM6XFxVc2Vyc1xcY2hhbGtvc1xcU29mdHdhcmVcXGZmeGl2XFxNYXJrZXRidWRkeVxcTWFya2V0YnVkZHlcXFBsdWdpblVJLmNzOmxpbmUgNDNcclxuICAgYXQgRGFsYW11ZC5VdGlsaXR5LkV2ZW50SGFuZGxlckV4dGVuc2lvbnMuSGFuZGxlSW52b2tlKEFjdGlvbiBhY3QpIGluIEM6XFxnb2F0c29mdFxcY29tcGFueXNlY3JldHNcXGRhbGFtdWRcXFV0aWxpdHlcXEV2ZW50SGFuZGxlckV4dGVuc2lvbnMuY3M6bGluZSA5NiIsIkNvbnRleHQiOiJFeGNlcHRpb24gZHVyaW5nIHJhaXNlIG9mIFwiVm9pZCBEcmF3VWkoKVwiIn0=
2023-01-16 06:21:53.224 -06:00 [ERR] Exception during raise of Void DrawUi()
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> Newtonsoft.Json.JsonReaderException: Input string '1.0' is not a valid integer. Path 'UndercutPrice', line 20, position 22.
at Newtonsoft.Json.JsonTextReader.ParseReadNumber(ReadType readType, Char firstChar, Int32 initialPosition)
at Newtonsoft.Json.JsonTextReader.ReadNumberValue(ReadType readType)
at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Dalamud.Configuration.PluginConfigurations.LoadForType[T](String pluginName) in C:\goatsoft\companysecrets\dalamud\Configuration\PluginConfigurations.cs:line 103
at InvokeStub_PluginConfigurations.LoadForType(Object, Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
--- End of inner exception stack trace ---
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Dalamud.Plugin.DalamudPluginInterface.GetPluginConfig() in C:\goatsoft\companysecrets\dalamud\Plugin\DalamudPluginInterface.cs:line 338
at Marketbuddy.Configuration.GetOrLoad() in C:\Users\chalkos\Software\ffxiv\Marketbuddy\Marketbuddy\Configuration.cs:line 44
at Marketbuddy.PluginUI.DrawOverlayWindow() in C:\Users\chalkos\Software\ffxiv\Marketbuddy\Marketbuddy\PluginUI.cs:line 43
at Dalamud.Utility.EventHandlerExtensions.HandleInvoke(Action act) in C:\goatsoft\companysecrets\dalamud\Utility\EventHandlerExtensions.cs:line 96
There's no reaction when I try to change the price while holding CRTL. Also I it seems there's no configuration window. I enter "mbuddy" but the system told me the command isn't exist. In a nutshell, I successfully installed it but totally can't use it.
Click adjust price, while holding CTRL and change the price.
Enter /mbuddy and open the configuration window.
Nothing happend.
"/mbuddy" is not exist.
No response
No response
Something really cool for marketbuddy would be an option to either auto-refresh the "current prices" window when you open it too fast and it says "Please wait and try your search again.", or to disable this clientside thing that it rejects searches going out too fast to begin with.
I've already talked about this on the official Goat Discord, and to quote the people directly:
goat:
"maybe something for simple tweaks"
"it's so simple that it's really something SE should do"
"it's a very common thing with this type of design"
caraxi:
"maybe its in client somewhere"
"yea it should be"
"since its client rejecting search"
But no clue how motivated Caraxi is to look for that for simple tweaks. Just asking around because of that, especially since it's something that sounds like it would fit right into marketbuddy.
Cheers :)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.