Search the database
Search forum topics
Search members
Search for trades
diablo2.io is supported by ads
diablo2.io is supported by ads
28 replies   2367 views
2

Description

Edit:
This page only exists now as a historical example of the evolution of D2io. This generator was a very crude attempt to quickly help build the database. After writing this, we instead moved onto directly parsing the game files. This was accomplished by using this resource: https://github.com/blizzhackers/d2data, which enumerates all the internal Diablo2 textfiles as JSON objects. After writing a parser and converter for this, we managed to populate much of the game database in a more elegant and automated fashion.



To streamline the contribution speed of this site, I decided to write a parser/markup generator for monster auxiliary data. It's really simple to use. You quite literally go to a D2 website (I'll link the specific one) and copy the tables there. Then you paste the tables into notepad++, and replace "/t" with "_". This helps delimit the data segments, and is required. Then, after the data looks pretty, you start the program, and enter in each table row as they're requested. When you're done, the program will generate the monster auxiliary markup, which you can copy and paste into a contribution post. It might take a few minutes to familiarize yourself with the data layout that's expected, but after that, really anyone can do it.

Known Bugs:

N/A

Instructions:

1. Find a monster that does not have auxiliary data in monsters/
2. Click: "Add aux data for MONSTER_NAME 1" on the left.
3. Go to https://diablo2.diablowiki.net/Main_Page and search for the monster you're submitting. (This is the required website, because the generator expects the layout it provides)
4. Open Notepad++
5. Copy the Stats chart so it looks like this:

Image

6. Paste that data into Notepad++
7. Search and Replace "/t" with "_" and make everything a single line. (Some data tables paste weird)
8. Your data should look like this:

Image

9. Copy the Defenses chart like this:

Image

10. Repeat the same steps from step 7 and 8, pasting this data directly below the first row.
11. Copy the Resistances chart like this:

Image

12. Repeat the same steps from step 7 and 8, pasting this data directly below the second row.
(Your data should look like this:)

Image

13. Self-define the monster's attack1 and attack2 damage and attack rating. This is the difficult part. Teebling has stated that the input for this needs to be simple. We cannot define extravagant poison damage, or added elemental damage. He wants just the BASE damage range, with no additional modifiers. Some monsters, such as
Bone Ash
, has mathematical formulas and stuff for their attacks, and some monsters have no attack rating, or attack ratings that match both attack1 and attack2. Here is an example of what we're looking for:

Image

See how there's nothing except for the base damage and base attack ratings? That's what we want it to look like. If you're doing a monster that has something like "10-20 + 1-40 Lightning damage", you should ONLY enter in "10-20", NOT "10-20 + 1-40 Lightning Damge" or whatever it says. There CANNOT be any exotic characters in the input other than "-". My generator won't crash if you do this, but the website itself does not support this sort of input, and your submision will be flagged for errors.

You can also leave attack1 and attack2 NULL in generator app by entering "null" when prompted for them. This is useful for monsters that have no way of simply defining said attacks, or monsters that have no attacks, like
Coldworm the Burrower
.

When all is said and done, your document should now look like this:
Image

(You can also have spaces between the slashes, but it's more readable without them)
14. Start the Auxiliary Data Generator app
15. Enter the base monster type or enter "null" for super unique monsters, which do not require this field. Finding the base monster type is something you're going to have to search for. As an example,
Bartuc the Bloody
is a base monster type of "
Council Member
". This will take trial and error, because the base monster types are not explicitly defined on the aforementioned website in which we're gleaning this data from.
16. Input the rows as they're requested. When you get to the Resistances column, you must enter in an integer which symbolizes the resistance table layout. This is important. Some monster web pages have different layouts. (We've only found two layouts currently; be sure to report it to us if you find another!) If the app crashes while you're entering data, check your data and try again.
17. If everything works well, it will print out the markup in the console. Copy and paste this output into the contribution submission. (You may need to submit it, then edit it to access the markup directly)
18. Submit the monster auxiliary data.
19. Done! Rinse and repeat for every monster in the database!

Disclaimer:

Clearly, this app is not fully tested. I made it in the span of probably two hours. There are probably quite a few edge cases that are not yet known about. If you find one, tell me and I'll try to patch it. Otherwise, you would be better off doing it the old fashioned way.

v1.3 Source Code & Recent Build:

https://drive.google.com/file/d/1myyxEM ... sp=sharing

If you just want to spelunk the source itself, here's a pastebin link:
Spoiler
Description by Krythic
5

Can be used to make Runewords:

7

Edit:
This page only exists now as a historical example of the evolution of D2io. This generator was a very crude attempt to quickly help build the database. After writing this, we instead moved onto directly parsing the game files. This was accomplished by using this resource: https://github.com/blizzhackers/d2data, which enumerates all the internal Diablo2 textfiles as JSON objects. After writing a parser and converter for this, we managed to populate much of the game database in a more elegant and automated fashion.



To streamline the contribution speed of this site, I decided to write a parser/markup generator for monster auxiliary data. It's really simple to use. You quite literally go to a D2 website (I'll link the specific one) and copy the tables there. Then you paste the tables into notepad++, and replace "/t" with "_". This helps delimit the data segments, and is required. Then, after the data looks pretty, you start the program, and enter in each table row as they're requested. When you're done, the program will generate the monster auxiliary markup, which you can copy and paste into a contribution post. It might take a few minutes to familiarize yourself with the data layout that's expected, but after that, really anyone can do it.

Known Bugs:

N/A

Instructions:

1. Find a monster that does not have auxiliary data in monsters/
2. Click: "Add aux data for MONSTER_NAME 1" on the left.
3. Go to https://diablo2.diablowiki.net/Main_Page and search for the monster you're submitting. (This is the required website, because the generator expects the layout it provides)
4. Open Notepad++
5. Copy the Stats chart so it looks like this:

Image

6. Paste that data into Notepad++
7. Search and Replace "/t" with "_" and make everything a single line. (Some data tables paste weird)
8. Your data should look like this:

Image

9. Copy the Defenses chart like this:

Image

10. Repeat the same steps from step 7 and 8, pasting this data directly below the first row.
11. Copy the Resistances chart like this:

Image

12. Repeat the same steps from step 7 and 8, pasting this data directly below the second row.
(Your data should look like this:)

Image

13. Self-define the monster's attack1 and attack2 damage and attack rating. This is the difficult part. Teebling has stated that the input for this needs to be simple. We cannot define extravagant poison damage, or added elemental damage. He wants just the BASE damage range, with no additional modifiers. Some monsters, such as
Bone Ash
, has mathematical formulas and stuff for their attacks, and some monsters have no attack rating, or attack ratings that match both attack1 and attack2. Here is an example of what we're looking for:

Image

See how there's nothing except for the base damage and base attack ratings? That's what we want it to look like. If you're doing a monster that has something like "10-20 + 1-40 Lightning damage", you should ONLY enter in "10-20", NOT "10-20 + 1-40 Lightning Damge" or whatever it says. There CANNOT be any exotic characters in the input other than "-". My generator won't crash if you do this, but the website itself does not support this sort of input, and your submision will be flagged for errors.

You can also leave attack1 and attack2 NULL in generator app by entering "null" when prompted for them. This is useful for monsters that have no way of simply defining said attacks, or monsters that have no attacks, like
Coldworm the Burrower
.

When all is said and done, your document should now look like this:
Image

(You can also have spaces between the slashes, but it's more readable without them)
14. Start the Auxiliary Data Generator app
15. Enter the base monster type or enter "null" for super unique monsters, which do not require this field. Finding the base monster type is something you're going to have to search for. As an example,
Bartuc the Bloody
is a base monster type of "
Council Member
". This will take trial and error, because the base monster types are not explicitly defined on the aforementioned website in which we're gleaning this data from.
16. Input the rows as they're requested. When you get to the Resistances column, you must enter in an integer which symbolizes the resistance table layout. This is important. Some monster web pages have different layouts. (We've only found two layouts currently; be sure to report it to us if you find another!) If the app crashes while you're entering data, check your data and try again.
17. If everything works well, it will print out the markup in the console. Copy and paste this output into the contribution submission. (You may need to submit it, then edit it to access the markup directly)
18. Submit the monster auxiliary data.
19. Done! Rinse and repeat for every monster in the database!

Disclaimer:

Clearly, this app is not fully tested. I made it in the span of probably two hours. There are probably quite a few edge cases that are not yet known about. If you find one, tell me and I'll try to patch it. Otherwise, you would be better off doing it the old fashioned way.

v1.3 Source Code & Recent Build:

https://drive.google.com/file/d/1myyxEM ... sp=sharing

If you just want to spelunk the source itself, here's a pastebin link:
Spoiler
7
OP
@Teebling
Hey, my images aren't showing up.
7
OP
Version 1.1 of this generator is finished. However, I'm not going to upload the full project source code tonight. I'll do it tomorrow when I update this page with new instructions.
  • I added the ability to assign damage and attack rating for attack1 and attack2.
  • And I added an additional parsing feature which automagically detects immunities.
See you gentlemen tomorrow!
7
User avatar

Teebling 6862Admin

Europe PC
Krythic wrote: 3 years ago
@Teebling
Hey, my images aren't showing up.
Hey Krythic, good job man! This should speed things up immensely but as you say will require some testing first for any unforeseen, non-standardised stuff. Can't wait to try it out :)

As for the images that's because you're not linking the actual images - you're linking the imgur page. Get the URLs that end with an image extension (.png/.jpg or whatever) - I think on imgur these are described as 'direct link' - after that it'll work just fine.

7
OP
V1.2 is uploaded. I still need to update the instructions, so give me a minute to do that.

I added the ability to define a base monster type.
7
OP
@Teebling Alright, updates have been made, and I'm releasing this out into the wild now. I have to take a break for a few hours, but when I come back I'll start submitting things.

Let me know if you guys find any bugs or whatever.
7
User avatar

Teebling 6862Admin

Europe PC
Nice one! I won't get round to utilising this today personally as I have another round of contribs to make, and then some development work to do.

But I certainly will give her a spin tomorrow... if there are any left to populate! :P

7
OP
Updated again. 1.3 brings two fixes.
  • Users can now define the column order of resistances. Yes. Some tables on the website are different, and it's pretty rage inducing.
  • Tried to handle null double dashes better, because evidently they're used way more than I thought. Hopefully everything is good now!
7
User avatar

Teebling 6862Admin

Europe PC
@Krythic was just about to try this but I don't know how to install the app - would you mind giving me some instructions or adding them to the first post?

7
OP
@Teebling
Just download the project source from the linked Google Drive. Copy the contents of the zip folder to your desktop. Then you have two options:

1. Open the entire project in visual studio and run it.

OR

2. Navigate to the "bin" and "debug" folder in the project and run the most recent build.
7
OP
@Teebling

It should be noted that if you build from source, windows won't try to block it. If you run just the executable, windows is likely to try and block it. It's just a false positive because the app executable doesn't have any valid credentials, and it did not originate from your PC. You can circumvent this by clicking on the options on the thing that pops up.
7
User avatar

Teebling 6862Admin

Europe PC
Krythic wrote: 3 years ago
@Teebling

It should be noted that if you build from source, windows won't try to block it. If you run just the executable, windows is likely to try and block it. It's just a false positive because the app executable doesn't have any valid credentials, and it did not originate from your PC. You can circumvent this by clicking on the options on the thing that pops up.
Gotcha. I'll have to switch over to the Windows partition then, as I have MS VS on my Mac now and guessing that this always compiles an .exe.. forgot about that!

7
OP
Teebling wrote: 3 years ago
Krythic wrote: 3 years ago
@Teebling

It should be noted that if you build from source, windows won't try to block it. If you run just the executable, windows is likely to try and block it. It's just a false positive because the app executable doesn't have any valid credentials, and it did not originate from your PC. You can circumvent this by clicking on the options on the thing that pops up.
Gotcha. I'll have to switch over to the Windows partition then, as I have MS VS on my Mac now and guessing that this always compiles an .exe.. forgot about that!
Yeah, you can't run the executable at all unless you use windows. =P
7
(this is after I atted you Krythic) So I guess I can still do it the manual way hehe.
7
OP
CitationNumber wrote: 3 years ago
(this is after I atted you Krythic) So I guess I can still do it the manual way hehe.
You can do it however you want. You don't need to use this app. If you can do it quickly without it, more power to you. I don't care if I hop on tomorrow and all the aux data is finished by you or someone else. It took me maybe two hours to write that app; it's just a few lines of code. If it goes to waste it's no biggie. I just want to see diablo2.io completed! I enjoy little coding ventures like this.
7
Krythic wrote: 3 years ago
CitationNumber wrote: 3 years ago
(this is after I atted you Krythic) So I guess I can still do it the manual way hehe.
You can do it however you want. You don't need to use this app. If you can do it quickly without it, more power to you. I don't care if I hop on tomorrow and all the aux data is finished by you or someone else. It took me maybe two hours to write that app; it's just a few lines of code. If it goes to waste it's no biggie. I just want to see diablo2.io completed! I enjoy little coding ventures like this.
I read your other reply to, there is enough Aux to go around hahah. Right on, I'm having the same mission as all of yall! I'll focus on base monster types for now.
7
I got jack goin on this weekend, yall down to do all the Monsters?
7
OP
CitationNumber wrote: 3 years ago
I got jack goin on this weekend, yall down to do all the Monsters?
My time is split a few ways. I have two kids to look after, working, and game dev. I'll try to do as many as I can this weekend, so we can knock it out.
7
Krythic wrote: 3 years ago
CitationNumber wrote: 3 years ago
I got jack goin on this weekend, yall down to do all the Monsters?
My time is split a few ways. I have two kids to look after, working, and game dev. I'll try to do as many as I can this weekend, so we can knock it out.
Good lord. I have one and its crazy. I think about another... Idk. If its going to happen it has to be in the next two years. No probs mate, no stress needs to be induced. Just poking some thoughts out there!
7
OP
CitationNumber wrote: 3 years ago
Krythic wrote: 3 years ago
CitationNumber wrote: 3 years ago
I got jack goin on this weekend, yall down to do all the Monsters?
My time is split a few ways. I have two kids to look after, working, and game dev. I'll try to do as many as I can this weekend, so we can knock it out.
Good lord. I have one and its crazy. I think about another... Idk. If its going to happen it has to be in the next two years. No probs mate, no stress needs to be induced. Just poking some thoughts out there!
I very happily got a vasectomy after our second kid. I was done. Greatest decision I've ever made; it's pretty great getting to blow indiscriminately, and not worry about it. 10/10 would recommend.
9

Advertisment

Hide ads
999

Greetings stranger!

You don't appear to be logged in...

99

Who is online

Users browsing Forums: Felsbestie, Maf, mohoo and 65 guests.

No matches
 

 

 

 

Value:
Hide ads forever by supporting the site with a donation.

Greetings adblocker...

Warriv asks that you consider disabling your adblocker when using diablo2.io

Ad revenue helps keep the servers going and supports me, the site's creator :)

A one-time donation hides all ads, forever:
Make a donation