PSO Shopkeeper

Gender
Male
Guildcard
42053584
Hello everyone! I have created an application to help make every PSO shopkeeper's life easier! One of the biggest pains I have found in selling items in PSO is updating the shop thread. The aid of the item reader in printing an entire bank is greatly helpful for gathering all the data necessary, but does not help with the upkeep of the shop.

Enter PSO Shopkeeper. The aim here is to automate the process of keeping a shop as much as possible.

You can download it from here:

https://github.com/PhantomPhire/PSO-Shopkeeper/releases

(Use the setup.exe in the zip file, windows will complain and say it's an unknown publisher, but I'm not making money on this so I don't really have a good reason to pay for a code signing cert)

How can you use it? What can it do?

Let's start with the data gathering portion. First, you will need the item reader add-on setup. I won't go into that here, but you get more details on that here:

https://www.pioneer2.net/community/threads/psobb-addon-plugin-lua-ui-addons.4543/

You'll want to go to each character and save off their inventory to a text file:

1.png

After that, launch the PSO Shopkeeper application.

First, we will start off on the item list tab. From here you will want to click the "Add Items" button:

2.png

This will pop up an open file dialog. From here, you will want to navigate to your add-on directory where your saved inventory captures should be stored. If you know where your game executable is saved, it should be in this folder relative to there:

EphineaPSO\addons\Item Reader\inventory

Once you reach the correct folder, you can select the file(s) you want to include. You can click the first file and shift + click to select multiple:

3.png

Once you open these files, the table should be populated with all your items. From here, get to pricing items! Remember, you can sort by name, price, etc based on the table. Also, don't forget that you can save your pricing for future use. When you load items in the future, the pricing will auto-populate for items you have already priced!

4.png

After you're done pricing things out, the next thing you will want to look at is the template. Use the tabs at the top to navigate to the template tab. This is where you will construct how your output will look. A default template is provided, but you can change it however you want to. The idea here is to embed the item prints within the BB code you want to be in your post.

On the right side, you will see a hints display. This will serve as your key for what you can use to print out all items. When you type a tag into the template, if it is correct, it will highlight in blue (if auto syntax highlighting is turned off, and it is by default, you will have to click validate to get it to highlight). Also, similar, to the last tab, you can save off the template once you're done editing, and it will auto-populate the next time you use the program.

5.png

Lastly, when you are ready to print out your item thread output, navigate to the final tab "Output". On the tab, click "Generate" to generate the item shop output. From here, you can copy the text using the "Copy to Clipboard" button and paste in your thread!

6.png



In the template tab, if you look on the hints side, you will see a second tab called "Filter Construction". This will allow you to construct complex filters and add them directly to your template, while being able to see what exact items they will print out on the right!

1656371700125.png

There's two types of filter buttons under "Available Filters", filters that require arguments to work, and those that do not. For the latter, if you click them, the filter will be added and the button will turn green and add the filter to "Applied Filters". Clicking it again will turn the button red and invert the filter added. Clicking it a third time will reset the button and remove the filter (the filter can also be removed by press it under "Applied Filters".

For filters that require arguments, there's an extra step. Once pressing the button, a pop-up will show allowing you to populate the arguments. If the arguments you enter are invalid, the text box will turn red. Pressing "Ok" once you've added valid arguments will add the filter to "Applied Filters". The button will not change colors for this however, since argument filters can be applied multiple times (in different permutations). Similar to the non-argument filters, clicking the filter under "Applied Filters" will remove the filter from the display above.

1656371721276.pngLastly, I just want to talk about how the filters work. True to their name, they allow only the items that pass the filter to be displayed. Thus, <sabers> would allow only sabers to be printed. A filter can be inverted with the ! operator. Thus, <!sabers> would allow items that are not sabers to be printed. Filters can be combined with the | operator. As a complex example, <sabers|Hit(50,>=)|!ABeast(0,>)> would allow only sabers with at least 50% Hit and no A. Beast to be printed.

Enjoy!



Since this is the beta release of the software, I'm expecting there are going to be a fair amount of bugs. Let me know if you find any, especially if it's not recognizing certain items, since I entered the database by hand, I expect there will be some typos. Likewise, if you have any feedback to offer or features to suggest, please let me know!

Additionally, if you would like to contribute to the project, the repo is here:

https://github.com/PhantomPhire/PSO-Shopkeeper

Here's the current list of planned features:

1. ItemSet filter (can filter on a set of items instead of having to do one at a time).
2. Optional item listing (checkbox in table allowing for items to be excluded from output entirely)
3. Exclude amount option (parameter in table that allows you to exclude a certain quantity of a given item from being listed)
4. Dynamic sizing of different parts of the window
5. Context menus in text boxes that are missing them (general QoL of cut/copy/paste)
 
Last edited:
Hey everyone, just so you're aware, there's a bug I discovered where the save data gets wiped every time the application gets updated. I am working on a fix for this.


Edit: Issue should be fixed with the latest release! If you spent a bunch of time filling out the pricing and it was wiped, let me know and I'll tell you how to get it back.
 
Last edited:
Version 0.2.0 is released!

New Features:

-Added setting to make bolding of prices optional
-Added ability to print price in multiple units
-Added ability to replace [u ] in code
-Added ability to colorize weapon percentages and specials
 
Fantastic project! and thanks for taking time to make it!

May I suggest self promoting your project a little more ?
I noticed that @Booma slaps
"Formatted using PSO Shopkeeper: https://www.pioneer2.net/community/threads/pso-shopkeeper.18446/"
at the end of his trade list.
I think you should by default put that in the bottom of everyone's outputted list(except make it into a link instead of a raw URL). If they don't like it they can easily remove it themselves.

since I entered the database by hand

OUCH just OUCH. That had to of taken a ton of time! Have you tried asking around to see if any of the ephinea staff can easily whip that up for you? Or if anybody else has made a database of them all? Scraper script could probably cruise the wiki and grab it all for you as well(probably quicker to write the script then to manually enter everything).
 
Fantastic project! and thanks for taking time to make it!

May I suggest self promoting your project a little more ?
I noticed that @Booma slaps
"Formatted using PSO Shopkeeper: https://www.pioneer2.net/community/threads/pso-shopkeeper.18446/"
at the end of his trade list.
I think you should by default put that in the bottom of everyone's outputted list(except make it into a link instead of a raw URL). If they don't like it they can easily remove it themselves.



OUCH just OUCH. That had to of taken a ton of time! Have you tried asking around to see if any of the ephinea staff can easily whip that up for you? Or if anybody else has made a database of them all? Scraper script could probably cruise the wiki and grab it all for you as well(probably quicker to write the script then to manually enter everything).
Thank you! :)

I might add a checkbox for generating the "formatted by" line and just have it enabled on the first boot up, but can be disabled, that way it's not generating every time for someone who would remove it.

As for the db ...yeah I'm not going to argue with the point a web scraper would have been much faster. I just had no experience with web scrapers so I wasn't sure how complex it would be. It did take a huge amount of time but I guess it was a point of stubbornness for me and part of it was me wanting to learn new details about items I had previously not known. But mostly I was feeling stubborn on it haha.
 
Thank you! :)

I might add a checkbox for generating the "formatted by" line and just have it enabled on the first boot up, but can be disabled, that way it's not generating every time for someone who would remove it.

As for the db ...yeah I'm not going to argue with the point a web scraper would have been much faster. I just had no experience with web scrapers so I wasn't sure how complex it would be. It did take a huge amount of time but I guess it was a point of stubbornness for me and part of it was me wanting to learn new details about items I had previously not known. But mostly I was feeling stubborn on it haha.
Did you already get all the info needed into your DB? If so you got dedication! If not there are some scraper extensions out there that might be quicker/easier then writing your own script.
Also very kind of you to consider making your self shoutout optional:D

Once again fantastic little program you wrote anybody with more then 5 items to sell should find some use out of this.
 
Hey everyone! A new release for PSO Shopkeeper has happened! There are numerous small changes but the biggest change to highlight is the new filter types that have been added in the template section. The idea is to create a filter system precise enough for you to be able to specify exactly what types of items you show. Some of the new filters added have argument. For example, <PD(5,>)> prints all items greater than 5 PD in value. Additionally, filters can now be combined with the | operator. If you wanted to print scavenger weapons, you would do <Native(0)|ABeast(0)|Machine(0)|Dark(0)|Hit(50,>=)|Hit(60,<=)>

I realize this is probably somewhat less user friendly than some other items, so if you need help with this, feel free to DM me.
 
Another release this week! This time we have 0.5.0, the filters overhaul.

In the template tab, if you look on the hints side, you will see a second tab called "Filter Construction". This will allow you to construct complex filters and add them directly to your template, while being able to see what exact items they will print out on the right!

1627047954814.png

There's two types of filter buttons under "Available Filters", filters that require arguments to work, and those that do not. For the latter, if you click them, the filter will be added and the button will turn green and add the filter to "Applied Filters". Clicking it again will turn the button red and invert the filter added. Clicking it a third time will reset the button and remove the filter (the filter can also be removed by press it under "Applied Filters".

For filters that require arguments, there's an extra step. Once pressing the button, a pop-up will show allowing you to populate the arguments. If the arguments you enter are invalid, the text box will turn red. Pressing "Ok" once you've added valid arguments will add the filter to "Applied Filters". The button will not change colors for this however, since argument filters can be applied multiple times (in different permutations). Similar to the non-argument filters, clicking the filter under "Applied Filters" will remove the filter from the display above.

1627048230382.png

Lastly, I just want to talk about how the filters work. True to their name, they allow only the items that pass the filter to be displayed. Thus, <sabers> would allow only sabers to be printed. A filter can be inverted with the ! operator. Thus, <!sabers> would allow items that are not sabers to be printed. Filters can be combined with the | operator. As a complex example, <sabers|Hit(50,>=)|!ABeast(0,>)> would allow only sabers with at least 50% Hit and no A. Beast to be printed.
 
Hi. @SweetWilly014 sama
and everyone.

PSOBB CHARACTER ITEM VIEWER has the ability to download INVENTORY and BANK data in one go.
I think it will work well with PSO Shopkeeper.
Please use it if you like.
I have not been active lately so I didn't even know this was an option! I store all my items across all 8 cbanks so gathering the data was always a painful process. The combination of these two tools effectively eliminates that. Thank you for making this and informing me of this!
 
I have not been active lately so I didn't even know this was an option! I store all my items across all 8 cbanks so gathering the data was always a painful process. The combination of these two tools effectively eliminates that. Thank you for making this and informing me of this!
Thank you for your reply.
PSO shopkeeper is a great application.
Have a pleasant PSO life!;)
 
There is now a new release for PSO Shopkeeper! I have improved compatibility with @iyoSakura 's web application PSOBB Character Item Viewer, so PSO shopkeeper should be better at identifying item output coming from there. Additionally, the item database was in sore need of updating, due to all the skins that have been added. I now have (thanks to the recommendation of Tim) a method of exporting ItemPMT and Unitxt of the game in a way that can automatically update the item database. Let me know if you find any issues!
 
The UI of the app has been completely overhauled! I apologize for the lack of originality on this, but I really like the idea of PSO related tools feeling like extensions of the game itself! The panels and the background have taken on a PSO experience and the text has been changed to match!

1.png
2.png
3.png
 
Back
Top