This is a read only copy without any forum functionality of the old Modcraft forum.
If there is anything that you would like to have removed, message me on Discord via Kaev#5208.
Big thanks to Alastor for making this copy!

Menu

Author Topic: [Guide/Tutorial] Creating a brand new profession from scratc  (Read 7374 times)

XxXGenesisXxX

  • Contributors
  • Model Change Addict
  • *****
  • Posts: 204
    • View Profile
[Guide/Tutorial] Creating a brand new profession from scratc
« on: September 03, 2012, 12:59:51 am »
[center:3ifguder]

Introduction


THIS INCLUDES CLIENT SIDE PATCHING!!!

Ok guys, so it's 6:15am and I can't sleep, so I figured I'd make a guide on how to make new custom professions from scratch. My previous guide was inadequately named and should of been "Custom Recipes". I'm not exactly in the most creative mindset right now, so I'm going to be ripping off Runescape (LOL!) and going with the new profession of "Fletching".

To be honest, this is actually very simple to do and I'm surprised not many servers have done it. In saying that, it should be known that this is not for repacks and still requires basic knowledge of compiling your own core. To add to that, this guide is based on ArcEmu and the C++ side of this guide will not work for Trinitycore.

By the end of this guide you will have a basic custom profession and you can move onto my other guide on Custom Recipes. If i can be bothered, I may just merge the 2 guides together another day.

And yes, I did copy the basic layout from my previous guide. Saves time and looks neat in my opinion.

Contents


1. Required Programs
2. Step One: The DBC's
3. Step Two: The C++
4. Step Three: The Recipes
5. Step Four: MPQ Patch
6. The Results!
7. Coming Soon!

Programs


Taliis

MyWarCraftStudio <=== Just google for it. I'll find a good link tomorrow.

Step One: The DBC


SkillLine.dbc


We are going to be using SkillLine.dbc to define "Fletching" as it's own skill. This is the very basic bones of a skill.

First off we are going to need to open up Taliis and open "SkillLine.dbc". After you open it, go down to strings in the left hand pane in here we need to make 3 things.
1 - The name of the profession. (Fletching)
2 - The description. (Higher fletching skill allows you to learn higher level fletching designs. Designs can be found on trainers around the world as well as from quests and monsters.)
3 - The verb. (Fletch)

To do this you need to delete the text where it says "String lenght CANNOT changed at the moment!" and write in each of the above sentences (customized to your profession). And press the green button.



After doing so, if you scroll to the bottom of the list you should see this, (numbers may vary). Make note of those numbers as we'll be needing them.



Now we need to go back to Table in the left hand pane. Find another profession, right-click on it and clone it. I'll be cloning Blacksmithing. After doing so, scroll to the bottom of the table list and you should fine a new entry for Blacksmithing.

The columns we'll be using: SkillLine.dbc
0: ID
1: CatergoryID (Stays the same as it is already set to Profession.)
3: The name of the profession.
20: The description.
37: IconID
38: The verb
55: This allows us to link it to chat. (We don't need to edit this as Blacksmithing already can.)


0: ID. This is very simple, just change it to a unique number, I'll be using 800.
1: As stated above, we do not need to edit this as 11 is what is referred to as Professions.
3: This column is a string column, we cannot just type in "Fletching". We have to call it from the strings table. Remember those numbers in the strings section? Well, they are what we are going to need. Go back to Strings in the left hand pane and scroll too the bottom. Find the one for the name of your profession, mine being Fletching at 5151. After you have your number, go back to the table section and type in the string number. You'll now notice when you click off the column it will automatically update to the name instead.



20: Repeat the steps for column 3 but with your description instead of your profession name. For me 5344.



37: Ok, this one requires a bit more research to find the spell icon you really want. Me? I'm gonna be lazy and just gonna use the stand "cog/gear" looking icon which is ID 1 for column 37. I will (eventually) get round to adding a how to find the right icon. But for now a cheap trick is just to look for a spell with an icon you want, go to it's spell ID, scroll across and copy the icon ID.

38: Repeat column 3 but with your verb (Fletch) instead of your name (Fletching), mine is 5516.



55: Just leave this alone as 1 means CanLink.

We can now close SkillLine.dbc and move onto the next DBC.

SkillRaceClassInfo.dbc


This is so simple I'm not gonna go into detail.

Clone ID 243, scroll to the bottom, change the ID to something unique, I'm gonna do 950. Then change the second column to your Skills ID from "SkillLine.dbc".



OH EM GEE THAT WAS TOO HARD!!!

Spell.dbc


Spell.dbc is where we make the Skill spell you click on to open up the professions pane. Also the trainer spells that handles that removes the previous spell and increases the skill cap (Thanks to Terrorblade for pointing me to this). For example: Blacksmithing - Spell - World of Warcraft and Leatherworking - Spell - World of Warcraft.

Ok, obviously open up Spell.dbc and yet again we will start with the strings. This time we'll need 3+ strings, for this guide I'll be making 3. Why 3+? Well it all depends how high your profession goes. We will have one string for Fletching. But we will have 2+ for the different skill levels (Apprentice, Journeyman, etc.). So if you're making it go to grandmaster you would have to make one for all the previous ranks too.

Anyways, the 5 we will be making are:
1 - The basic name for all the ranks (Fletching)
2 - The Apprentice rank description (Allows a fletcher to fletch bows and arrows up to a maximum potential skill of 75. Requires wood found throughout Azeroth.)
3 - The Journeyman rank description (Allows a fletcher to fletch bows and arrows up to a maximum potential skill of 150. Requires wood found throughout Azeroth.)
4 - The Apprentice trainer/parent spell name (Apprentice Fletcher)
5 - The Journeyman trainer/parent spell name (Journeyman Fletcher)



Now we need to clone some rows: The apprentice spell, the journeyman and parent spells etc... For me I will only be cloning these four from Blacksmithing.

So first I need to go to the ID of the actual spell, so back to Blacksmithing - Spell - World of Warcraft and grab the ID from the end of the link. So 2018. Back into Spell.dbc go to your spells ID. You'll see that we conveniently have 3 spells in a row to clone. 2018 (the Apprentice spell), 2020 (the Apprentice trainer spell) and 2021 (the Journeyman trainer spell). To keep it neater, only clone 2018 and 2020, then find the Journeyman spell (same wowhead steps but journeyman spell), clone it as well (3100 in my case), then back to your journeyman trainer/parent spell and clone it.



And at column 136 it should show

I hate this part... *Sigh*

The columns we'll be using: Spell.dbc
0: ID
111: The skillID (This is the reference to the SkillID in "SkillLine.dbc" mine being 800)
116: The Trigger spell (Honestly I don't know how to explain it better than; the link between spell and trainer/parent spell)
133: Icon ID
136: Spell name
170: Spell description


0: ID, ok just change this to something unique again, I'll use 95000, 95001, 95002 and 95003.



111: Easy enough, change all these to the skillID number from your "SkillLine.dbc".

116: Detail isn't really worth the effort for this, but it is important. For JUST your 2 trainer/parent spells you need to change it to the spell ID of your Ranked spells. For example with my spells: Apprentice Fletcher trainer/parent spell (95001) must have it's trigger spell set to the Apprentice Fletcher ranked spell (95000). Meaning obviously in my case in column 116 for spell 95001 I need to write 95000 and for column 116 of spell 95003 I need to write 95002.

133: Same as with the "SkillLine.dbc" IconID. Again mine being 264.

136: The name, same string name thing as usual. For 95000 and 95002 we need to just put out stringID for "Fletching" (for me it's 2318091) , for 95001 is "Apprentice Fletcher"  (for me it's 2318051), for 95003 is "Journeyman Fletcher" (2318091).



170: Same thing as 136 but with the descriptions, only do this for your actual spells not the trainer/parent spells. 95000 being 2317804 and 95002 being 2317927.



And we're done with "Spell.dbc". Obviously repeat certain steps if you have a higher ranking profession.

SkillLineAbility.dbc


Almost done with the DBC's yay! I'm kinda slacking off at the moment xD This section will set require skill levels.

For some reason this DBC is auto-sorted to Skilline. Scroll down to 164 for Skillline id, then look for normal ID number 1283 (this is Apprentice Blacksmith). Clone it for each ranked spell you have, so for me it's 2 times.



The columns we'll be using: SkillLineAbility.dbc
0: ID
1: Skillline.dbc ID
2: Spell ID (we'll only be doing the 2 ranked spells, not the trainer/parent spells)
7: The minimum skill required. (1 for apprentice, 50 for journeyman etc...)
8: The spell that's next in line. (so for apprentice spell you would put the ID for the journeyman spell)

0: Same as always, just change to a unique number. I'll be using 95000 and 95001.

1: This would be 800 again, or whatever your skills ID number is.

2: This will be our Apprentice spells ID and our Journeyman spells ID. So for ID 95000 we'll put in 95000 and ID 95001 would be 95002.

7: For our apprentice skill we need only need a requirement of 1. Because the trainer/parent spell when you learn it will put your skill to level 1 before you learn the apprentice spell (this happens in a split second, but enough for the code to recognize). And the journeyman spell we need to type in 50 for requirement.

8: For our Apprentice spell we need to put the ID of our Journeyman spell. As for our Journeyman spell, we can put as 0 as it won't be increasing.


Step Two: The C++


For once this is actually the easiest part.

Skill.h


Similar to the "SkillLine.dbc" this is where we actually make the core recognize "Fletching" as a skill.

This step is fairly easy; just search for

Code: [Select]
#define SKILL_PET_EXOTIC_SPIRIT_BEAST 788
Underneath that line add another line saying this

Code: [Select]
#define SKILL_FLETCHING 800 //XxXGenesisXxX
The "SKILL_FLETCHING" is the name of your profession, if it has multiple words, use_underscores_in_between_words.
The "800" is your skills ID.
The "//XxXGenesisXxX" is not necessary but it's a habit I strongly advise. It's a comment that does not effect the code, it's just there so I can go into search and type in my name, it's to easily find where I've editing things. If you choose not to use this remove the // as well.




ItemPrototype.h
As you probably know; items have to classes, class and subclass. For example: Worn Shortsword - Item - World of Warcraft is class 2 subclass 7. This means its Weapon(class) One-Handed Sword(subclass). Same applies for recipes, recipes use class 9 and then the subclass depends on the profession. For example blacksmithing recipes would be class 9 subclass 4, while enchanting is still class 9 but the subclass 8. So to finally make my short point, we need to make a subclass for our recipes.

Search for and don't ask why it's named FISNING not FISHING, it just is:

Code: [Select]
ITEM_SUBCLASS_RECIPE_FISNING = 9,
Then underneath that line we need to write:

Code: [Select]
ITEM_SUBCLASS_RECIPE_FLETCHING =10, // XxXGenesisXxX
"FLETCHING" is the name of your profession.
"10 is the ID (for in the database).
"//XxXGenesisXxX" is the same as before.


Player.h


This step is just so that like all other professions you CAN have a Grand Master title for your profession. This isn't necessary but takes 2 seconds and allows you to add a new title later on if you so choose.

Search for:
Code: [Select]
PVPTITLE_WRATHFUL_GLADIATOR             = 142,
And write underneath:
Code: [Select]
PVPTITLE_GRAND_MASTER_FLETCHER     = 143, // XxXGenesisXxX
Same as the 2 previous.


AchievementMgr.cpp


Just like all the other professions we will be making the code for the realm first achievement for being first to max the skill. Again not necessary but takes 2 seconds and leaves options open.

Search for:

Code: [Select]
case 1463: // Realm First! Northrend Vanguard:
Add underneath:

Code: [Select]
case 1500: // Realm First! Grand Master Fletcher XxXGenesisXxX
This time just change your name and the profession name. If you want to remove your name, leave the "//".



And that also concludes the C++ part of the tutorial, you just need to compile your core now.

Step Three: The Recipes


Very Important!

You must have at least 1 recipe in your profession for the professions pane to show when you click the spell.

As mentioned at the start of the guide, I have already written a guide on this. So you can simply follow that from here on.
You can find it here: http://modcraft.io/viewtopic.php?f=61&t=1755

However for the sake that you can see it work I will tell you some short steps to make Hardened Iron Shortsword - Spell - World of Warcraft work for your profession.

Step 1: Open "spell.dbc" and go to it's spell id (3492).
Step 2: Clone spell, scroll to the bottom change the ID to a unique ID (mine will be 95004)
Step 3: Change column 18 to 0 (This gets rid of the requirement to stand next to an anvil)
Step 4: Change column 222 to 0 (This gets rid of the requirement for a hammer)
Step 5: Save "spell.dbc" and open up "SkillLineAbility.dbc"
Step 6: Scroll down till 164 in the column 1. Then find 1985 in column 0.
Step 7: Clone this row, scroll to the bottom, change the ID to a unique ID (mine will be 95002)
Step 8: Change column 1 to your skill ID (800 for me)
Step 9: Change column 2 to your new spell (95004)
Step 10: Column 9 to 1, column 10 to 50 and column 11 to 75.
Step 11: Save and close. You're done with recipes for now.







Step Four: MPQ Patch


OK so I'm buggered and this is all basically the same... I stole this from my previous guide. The images will be different DBC's but all round it's the same. I'll change text to suit this guide though.

So, now we need to open up MyWarCraftStudio then click Pack-> Create MPQ Archive.



Go to your World of Warcraft folder then into the folder named Data. save the file as "patch-x.mpq" but change the number to one higher than the ones already in the folder. I saved mine as "patch-8.mpq".



Now click Pack->Add file to archive... Go to your dbc folder and select "SkillLine.dbc" but don't push ok yet!
Instead put this in front of it "DBFilesClient". So that it says "DBFilesClientSkillLine.dbc". Then press ok.


Now this time, right click on the folder "DBFilesClient" and select import file. Now find your "Spell.dbc" and click open.
Repeat for "SkillLineAbility.dbc" and "SkillRaceClassInfo.dbc".



Now go to Pack->Sort ListFile.

Now final step of all! Go to Pack->Save and close.

The Result!










Coming Soon!


Going to update my sub-par previous guide.
How to add it to a trainer.
Fix 1 minor bug that creates 2 spell buttons when going up a rank. Does no harm, but no bugs is better.

Hope this helped someone!
I'm completely buggered at this point, I didn't double check it all, however I was making it along the whole time and mine works fine. However sometimes what's written and what was done are two different things. So if you find anything to improve or any mistakes just let me know.

Also BB-Codes may be a little off. I wrote this on Ownedcore.[/center:3ifguder]
« Last Edit: January 01, 1970, 01:00:00 am by Admin »

Ariuss

  • Registred Member
  • BLP Convertor
  • *****
  • Posts: 10
    • View Profile
Re: [Guide/Tutorial] Creating a brand new profession from sc
« Reply #1 on: December 18, 2014, 11:31:28 am »
Hey,
Can anyone tell me, what about C++ part but for TC2 ? I pretty get DBC part, but I'm not sure where should I look for C++ part of this tutorial for TC2.
« Last Edit: January 01, 1970, 01:00:00 am by Admin »