View Full Version : Path from Zone A to Zone D?
Bleyld
03-09-2023, 06:26 PM
As a non-consistent (been in and out the past ~15-20 years) with a terrible memory, is there any web tools that can tell me how to get from Zone A to Zone D?
ideally just entering the 'Start' and 'Destination', providing each zone in turn for the most direct path.
Zone A
Zone B
Zone C
Zone D
Bonus points for faction info/cities you'd have to cross, a map on the page, and other helpful features.
If not, would a tool like this be useful to the community? I would personally love it, but idk if I'm an odd man out here. I'm a software engineer irl, but know very little web dev. I'd be willing to try if there's a little bit of other interest?
loramin
03-09-2023, 08:10 PM
https://wiki.project1999.com/Zone_Connection_World
In theory it would be possible to write an automated tool (it's a variant of a classic programming problem "the traveling salesman"), but I don't think anyone has done so yet ... so the maps I linked above are probably your best bet.
Oh, and if you did want to automate it, I'd be happy to help with the web bits (as a JS dev myself). We even have a JSON zone data file in the wiki (https://wiki.project1999.com/MediaWiki:Zones.js) ... but it doesn't yet have the connections, so someone would need to parse them out of the HTML.
Bleyld
03-19-2023, 04:31 PM
Ah good comparison, didn’t think about it.
These are great links, ty! I might throw together a quick API this week then, and if I do I’ll ping you to see if you want to throw up a FE for it.
Bleyld
03-21-2023, 01:59 PM
https://wiki.project1999.com/Zone_Connection_World
In theory it would be possible to write an automated tool (it's a variant of a classic programming problem "the traveling salesman"), but I don't think anyone has done so yet ... so the maps I linked above are probably your best bet.
Oh, and if you did want to automate it, I'd be happy to help with the web bits (as a JS dev myself). We even have a JSON zone data file in the wiki (https://wiki.project1999.com/MediaWiki:Zones.js) ... but it doesn't yet have the connections, so someone would need to parse them out of the HTML.
Starting working on this, but the dataset it going to take a little logger than I originally thought.
tl;dr - I want something in between the map link you posted and the wiki pages for each zone. I've started a web scraping script to accomplish this, ideally gathering the top summary table on each page along with information in the image being input.
Once the data is gathered, putting into a csv, json, sqlite, something and placing in a fastapi should be quick work. I'll continue to keep you posted!
Gustoo
03-22-2023, 01:36 AM
It would be a really fun tool.
I love thinking through zone by zone journeys
Bleyld
03-22-2023, 04:22 PM
...
https://wiki.project1999.com/Zones.json
https://github.com/pastram-i/eqatlas_api
Still no API yet, but the scraper is coming together!
loramin
03-22-2023, 09:35 PM
Looks great.
I am rethinking my idea to merge taht data with https://wiki.project1999.com/MediaWiki:Zones.js though, just because every user has to download that file, so we don't want it to be too heavy.
However, we could absolutely have all this data as an include on its own page ... we just need the traveling salesman agorithim to make it uesful :)
Bleyld
03-23-2023, 09:27 AM
Poop agreed on the merge rethink - I think these are to be separate from that.
Yep! I’m planning that in the API! :)
loramin
03-23-2023, 11:43 AM
Poop agreed on the merge rethink - I think these are to be separate from that.
Yep! I’m planning that in the API! :)
https://media1.giphy.com/media/111ebonMs90YLu/200.gif
Bleyld
03-23-2023, 12:53 PM
Poop agreed on the merge rethink - I think these are to be separate from that.
Yep! I’m planning that in the API! :)
Wtf poop? Autocorrect while barely awake lol - who knows what I was even trying to type!
Bleyld
03-23-2023, 06:06 PM
https://media1.giphy.com/media/111ebonMs90YLu/200.gif
Updated with the API 'bones', just need to button up the endpoints and alg. All items that need to be done include a comment of `#TODO:`
https://github.com/pastram-i/eqatlas_api
Take note of changes in the json, made quite a few. tl;dr Overall more detail, better organized, that kinda stuff.
https://raw.githubusercontent.com/pastram-i/eqatlas_api/master/app/data/zones.json
Updated the wiki page with a better schema to match
https://wiki.project1999.com/Zones.json
The real next barrier will be hosting though... I've got a little pi? Idk. I could always throw into an AWS API Gateway + Lambda, but also $...
Thoughts?
loramin
03-23-2023, 08:22 PM
Updated with the API 'bones', just need to button up the endpoints and alg. All items that need to be done include a comment of `#TODO:`
https://github.com/pastram-i/eqatlas_api
Take note of changes in the json, made quite a few. tl;dr Overall more detail, better organized, that kinda stuff.
https://raw.githubusercontent.com/pastram-i/eqatlas_api/master/app/data/zones.json
Updated the wiki page with a better schema to match
https://wiki.project1999.com/Zones.json
The real next barrier will be hosting though... I've got a little pi? Idk. I could always throw into an AWS API Gateway + Lambda, but also $...
Thoughts?
Looks good.
As for hosting, the problem with any sort of API is (unless you want to write it as a PHP Mediawiki extension) that we'd need an external server. It'd be a lot simpler if we could make a JS version, and just let people run it on their browser.
Bleyld
03-24-2023, 04:30 PM
Any ideas on what we can do with the JS version?
I don't know much about php but a mediawiki extension sounds like it could be the most convenient option for users. I'm going to look into that when I have the time.
Tbh - I don't have to go down the api path, it's just the one I'm most familiar with. Can leave this as a scraper+json, and write a script for tts algorithm, to be implemented in JS how you see fit?
loramin
03-24-2023, 04:46 PM
Well, to do it in JS you'd just ... do it in JS :)
I could easily see a page with two drop-down menus ("select elements") to let you pick the to/from zones, and a button. See https://wiki.project1999.com/Per-Level_Hunting_Guide for a general idea of wiki pages with custom forms.
When someone clicks the button, some code would grab the two zone names, plug it into the algorithm, and then that algorithm would return an array of zones. The code would then add a bunch of properly-ordered links to the zones on the page, describing the path from A to B.
If you can get the algorithm part working I'd be happy to help with the form, connecting it to the algorithm, and the display of the results ... I'm just not willing to sign up to write the algorithm itself.
As for using an extension, I'm not a PHP dev, but you can see how the existing custom extensions (for stuff like the auction tracker or the dynamic zone lists work) by downloading the source code here: https://wiki.project1999.com/utils/wikiUtils.php ("Custom Extensions Source").
Bleyld
03-27-2023, 12:20 PM
Well, to do it in JS you'd just ... do it in JS :)
...
Yeah I guess more... how? Lol - my knowledge of JS is limited, but idk that we'd be able to incorporate that in the wiki here, so it would still have a similar hosting conundrum elsewhere?
...
I could easily see a page with two drop-down menus ("select elements") to let you pick the to/from zones, and a button. See https://wiki.project1999.com/Per-Level_Hunting_Guide for a general idea of wiki pages with custom forms.
When someone clicks the button, some code would grab the two zone names, plug it into the algorithm, and then that algorithm would return an array of zones. The code would then add a bunch of properly-ordered links to the zones on the page, describing the path from A to B.
...
As for using an extension, I'm not a PHP dev, but you can see how the existing custom extensions (for stuff like the auction tracker or the dynamic zone lists work) by downloading the source code here: https://wiki.project1999.com/utils/wikiUtils.php ("Custom Extensions Source").
I think this is the more direct route, but goes back to the PHP which we both lack. The link is helpful though, and I may do some exploration there when I have the chance.
...
If you can get the algorithm part working I'd be happy to help with the form, connecting it to the algorithm, and the display of the results ... I'm just not willing to sign up to write the algorithm itself.
...
At this point, I just don't want any wasted effort. I could have a quick turnaround for the algorithm in python, but if it's just in a `.py` that's my limitation of knowing where to go with it. For example, can some PHP/JS magic be used to utilize a `.py` script? I've only setup public/private APIs in the past to communicate between the two.
tl;dr the algorithm is the easy part for my experience, but idk what form for it to take, that is going to be the best bet for the end deliverable.
loramin
03-27-2023, 02:51 PM
The wiki can host custom JS files; you just have to be an admin (like myself) to edit them. For example, here are the files for "loc mapping" (ie. showing a red X where an NPC is on a map):
https://wiki.project1999.com/MediaWiki:LocMaps.js
There's a single common JS file for the whole wiki, https://wiki.project1999.com/MediaWiki:Common.js, and it has the power to bring in specific files for specific pages. For instance, the Per-Level Hunting guide page has its own JS file, which is brought in via this line:
case 'Per-Level Hunting Guide':
importScript('MediaWiki:HuntingGuide.js');
So again, we could very easily do something similar with a "Traveling Adventurer" page ... but
A) it would need to be in Javascript (or PHP if you want to build it server-side, though I see no need for that), and
B) while I'm happy to help with adding the code to the wiki, showing you how to make the form through JS, etc. ... I personally don't want to actually write the code myself.
loramin
03-27-2023, 02:59 PM
P.S. If you wanted to write (say) a Python command line script, that takes two zone names as arguments, and prints out an array of the (minimal) zones needed in-between, I could, potentially, be convinced to convert that script to JS, throw up a form with two-dropdowns to get the zone names, and then "print" links to each in-between zone onto the page.
However, that's definitely more work than I was hoping to sign up for. Also, if anything doesn't work, or more functionality is needed, it could easily turn into a big project for me, which is what I'm trying to avoid.
So, on my end it'd be ideal if you could brush up on a little bit of JS syntax and try to write a JS version ... but if you give me a well-tested, fully functional Python script that only requires me to convert it to JS, and change the inputs/outputs ... I could be talked into that :)
Bleyld
03-27-2023, 04:59 PM
Short/unorganized reply - in meeting.
Understood both though; yeah to be clear my hope was and still is to NOT require work from you/others if possible. That’s why my initial idea was of an api that does the lifting, for others to make FE/tools as they see fit and when time/desire allows. I appreciate the help you’re providing so far; def not looking to pawn the rest off. But the replies have helped me understand the bounds/scope that the wiki can handle to decide what routes would even be worth the effort!
I’ll be going down the exploration paths as mentioned (JS/PHP), and may even finish up the api repo I’ve already made to potentially self host or something in the future.
Once I have the algo I’ll keep you posted, as a clean script should be already delivered to complete it. So if you decide to convert at your leisure then feel free, but no worries if not!
Then later I’ll let you know which route if any was able to be closed off as complete, and if there’s any need from you to plug into wiki!
Bleyld
05-02-2023, 06:46 PM
P.S. If you wanted to write (say) a Python command line script, that takes two zone names as arguments, and prints out an array of the (minimal) zones needed in-between, I could, potentially, be convinced to convert that script to JS, throw up a form with two-dropdowns to get the zone names, and then "print" links to each in-between zone onto the page.
However, that's definitely more work than I was hoping to sign up for. Also, if anything doesn't work, or more functionality is needed, it could easily turn into a big project for me, which is what I'm trying to avoid.
So, on my end it'd be ideal if you could brush up on a little bit of JS syntax and try to write a JS version ... but if you give me a well-tested, fully functional Python script that only requires me to convert it to JS, and change the inputs/outputs ... I could be talked into that :)
FYI I'm still around ;)
Haven't made much progress on this lately, work imploded. I've hardly enough had enough time to play sadly!
Anyways - I've migrated from the initial concept, and leaning more towards a discord bot, to either be implemented in the p99 discord, captains discord, or a separate server.
You can see the template coming together here (https://github.com/pastram-i/EQAtlas_DiscordBot/tree/main).
If there's any other developers who wish to contribute, absolutely feel free!
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.