Modcraft - The community dedicated to quality WoW modding!

Wrath of the Lich King Modding => Miscellaneous => Tutorials => Topic started by: XxXGenesisXxX on May 24, 2012, 09:09:32 pm

Title: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on May 24, 2012, 09:09:32 pm
By XxXGenesisXxX

Introduction


Firstly this is not gonna be a noob friendly guide. It will still be fairly easy to understand for the most part, but going further into every detail will take far too long with far too many images. I'm sorry if this impedes anyone, but if you need any help or have questions feel free to reply on here or inbox me and I'll do my best to help you out.

However keep in mind; this is a guide not a walk-through. Creating a custom class from scratch has so many variables it is impossible to cater to every aspect and angle. So in this guide (especially the C++ section) it will be heavily based on a magic using Necromancer class. When it comes to the C++ area, to branch out further than what I have done, you are going to need to know how to figure things out yourself within the core. Others can help, but if you can't figure things out on your own as well, you are going to have a never ending supply of questions.

What do I mean by a basic shell?


Well basically I won't be writing how to add skills, spells, talents, starting locations etc. This may seems bland or lacking but you will have a fully functioning class by the end of this guide. And the things I just mentioned (adding spells/skills etc...) will be no different to adding it to an existing class after this guide.

Few Notes



Step 1. DBCs


If you've done it before, you'll notice these steps are a lot like creating your own race. So having done that previously is probably going to make this part a lot easier.

First off you need to open up your "ChrClasses.dbc" and clone one of the rows. FSS I suggest copying one that has the closest similarities to your new class. For me? I'll be making a Necromancer and the way I'm designing it, it will be closest to a Mage. Yes a Mage, not a Warlock.

ChrClasses.dbc


For reference: http://www.pxr.dk/wowdev/wiki/index.php?title=ChrClasses.dbc
The columns:

Now you can save and close "ChrClasses.dbc".

CharBaseInfo.dbc


Next we need to open up "CharBaseInfo.dbc". This one is very simple. All we need to do is clone as many rows as race/class combinations as needed. For me, I am only gonna have a Human Necromancer and an Undead Necromancer. So I need to clone 2.

For reference: http://www.pxr.dk/wowdev/wiki/index.php?title=CharBaseInfo.dbc
The columns:
Easy. You can save and close "CharBaseInfo.dbc" now.

TalentTab.dbc


Open up "TalentTab.dbc"

Clone 3 times.

For reference:  http://www.pxr.dk/wowdev/wiki/index.php?title=TalentTab.dbc
The columns:

Once that's done, save and close.

After all that, you are free to pack your MPQ archive.

Step 2. Character Create Screen


Again this is practically the same steps as creating a new race.
Time for client side xml/lua editing. You'll need to use this first in order to remove xml/lua checks from your "wow.exe".
http://modcraft.io/viewtopic.php?f=59&t=883

However for those who have done this before I will move onto the files.

In our InterfaceGlueXML folder, we need to open up:

GlueStrings.lua


In this file we need to hit ctrl+f and search for this

Code: [Select]
CLASS_INFO_WARRIOR4 = "- Uses rage as a resource.";
Now underneath the we need to add these lines (replacing NECROMANCER with your class name in capitals. Then change each description)

Code: [Select]
CLASS_INFO_NECROMANCER0 = "- Role: Damage";
CLASS_INFO_NECROMANCER1 = "- Light Armor (Cloth)";
CLASS_INFO_NECROMANCER2 = "- Can call forth skeletons of different combat abilities.";
CLASS_INFO_NECROMANCER3 = "- Can afflict curses to weaken opponents.";
CLASS_INFO_NECROMANCER4 = "- Uses mana as a resource.";

Now it should look like this

Code: [Select]
CLASS_INFO_WARRIOR0 = "- Role: Tank, Damage";
CLASS_INFO_WARRIOR1 = "- Heavy Armor (Mail / Plate and Shield)";
CLASS_INFO_WARRIOR2 = "- Deals damage with melee weapons.";
CLASS_INFO_WARRIOR3 = "- Has 3 fighting stances with different benefits.";
CLASS_INFO_WARRIOR4 = "- Uses rage as a resource.";
CLASS_INFO_NECROMANCER0 = "- Role: Damage";
CLASS_INFO_NECROMANCER1 = "- Light Armor (Cloth)";
CLASS_INFO_NECROMANCER2 = "- Can call forth skeletons of different combat abilites.";
CLASS_INFO_NECROMANCER3 = "- Can afflict curses to weaken opponents.";
CLASS_INFO_NECROMANCER4 = "- Uses mana as a resource.";

^^^ This is the dot point description you get in the right hand pane in character create screen.

Now hit ctrl+f again and search for

Code: [Select]
tanking warriors desire Stamina as well.";
Now just below that we'll be adding this (again replacing and adjusting to your own class name and descriptions)

Code: [Select]
CLASS_NECROMANCER = "Necromancers are powerful spell casters thought upon by many to be of great evil. These thoughts come from the belief that summoning the dead to fight under controllers will, is a heinously unnatural disrespect towards the dead.";
CLASS_NECROMANCER_FEMALE = "Necromancers are powerful spell casters thought upon by many to be of great evil. These thoughts come from the belief that summoning the dead to fight under controllers will, is a heinously unnatural disrespect towards the dead.";

So now it should look like this

Code: [Select]
CLASS_WARRIOR = "Warriors are plate-wearing fighters who strive for perfection in armed combat. As warriors deal or take damage, they generate rage, which is used to power their special attacks.|n|nWarriors can choose to focus on a two-handed weapon, dual-wielding or using a sword and shield. Warriors have several abilities that let them move quickly around the battlefield. Their primary stat is Strength, though tanking warriors desire Stamina as well.";
CLASS_WARRIOR_FEMALE = "Warriors are plate-wearing fighters who strive for perfection in armed combat. As warriors deal or take damage, they generate rage, which is used to power their special attacks.|n|nWarriors can choose to focus on a two-handed weapon, dual-wielding or using a sword and shield. Warriors have several abilities that let them move quickly around the battlefield. Their primary stat is Strength, though tanking warriors desire Stamina as well.";
CLASS_NECROMANCER = "Necromancers are powerful spell casters thought upon by many to be of great evil. These thoughts come from the belief that summoning the dead to fight under controllers will, is a heinously unnatural disrespect towards the dead.";
CLASS_NECROMANCER_FEMALE = "Necromancers are powerful spell casters thought upon by many to be of great evil. These thoughts come from the belief that summoning the dead to fight under controllers will, is a heinously unnatural disrespect towards the dead.";

^^^ This is the full class description in the right hand character create pane.

Now we can save and close "GlueStrings.lua".

CharacterCreate.lua


Next up we have "CharacterCreate.lua". But before we edit this file we are gonna want to add our class icon to the images. Otherwise we are gonna be looking at a blank image.

So open up your MPQ editor, I'll be using MyWarCraftStudio. Now open up "locale-enUS.MPQ".
Then go to; Interface -> GLUES -> CHARACTERCREATE -> "UI-CHARACTERCREATE-CLASSES.BLP". And now extract this to your desktop.

Ok, so now we need to convert it from a ".blp" to a ".png". To do this we'll be using BLP converter made by PatrickCyr.
http://modcraft.io/viewtopic.php?f=59&t=801

To convert it, all we need to do is simply drag and drop our ".blp" image onto the "BLPConverter.exe" and wait. Shouldn't take long at all. Tada a PNG file!

Now to edit the PNG. Open the image up into your favorite image editor. I'm gonna be awesomely unique and very rare to find........... Adobe Photoshop....... :O

When you open it you'll see exactly how it fits in. All you need to do is copy one of the current ones (for the frame), move it next to DK icon and under the priest icon, then place a new image inside the frame. This will be your class icon. Here's mine if you are too lazy to do it...

(http://www.fileden.com/files/2012/4/30/3298604/Step2-1.png)
Once you've created it, delete your old .blp from the desktop and drop your new png onto the "BLPConverter.exe". Now we need to add this one back to where we found it. So open up your MPQ file again, go to the same path, Interface -> GLUES -> CHARACTERCREATE -> "UI-CHARACTERCREATE-CLASSES.BLP". Only this time delete the current "UI-CHARACTERCREATE-CLASSES.BLP". Now right click on the CHARACTERCREATE folder and choose import. Now import your new "UI-CHARACTER-CLASSES.BLP". Pack your MPQ again and save and close.

Time to go back to the "CharacterCreate.lua", time to edit it.

At the very top change
Code: [Select]
MAX_CLASSES_PER_RACE = 10;to
Code: [Select]
MAX_CLASSES_PER_RACE = 11;
Again in "CharacterCreate.lua" hit ctrl+f (or just scroll down) and search for

Code: [Select]
["DEATHKNIGHT"] = {0.25, 0.49609375, 0.5, 0.75},Now underneath that we are going to need to put
Code: [Select]
["NECROMANCER"] = {0.49609375, 0.7421875, 0.5, 0.75},
^^^ This is the co-ords it searches for on the BLP image we made to show that section.

Save and Close "CharacterCreate.lua".

CharacterCreate.xml


Open up "CharacterCreate.xml".

Search for
Code: [Select]
<CheckButton name="CharacterCreateClassButton10" inherits="CharacterCreateClassButtonTemplate" id="10">
<Anchors>
<Anchor point="TOP" relativeTo="CharacterCreateClassButton5" relativePoint="BOTTOM" x="0" y="-6"/>
</Anchors>
</CheckButton>
Then add after it:
Code: [Select]
<CheckButton name="CharacterCreateClassButton11" inherits="CharacterCreateClassButtonTemplate" id="11">
<Anchors>
<Anchor point="LEFT" relativeTo="CharacterCreateClassButton5" relativePoint="RIGHT" x="6" y="0"/>
</Anchors>
</CheckButton>
^^^ This is telling our button to link on to the 5th button on the top row in class selection.

Now we still have to make them all fit onto the menu bars unlike this:

(http://www.fileden.com/files/2012/4/30/3298604/Step2-2.png)

So search for this:

Code: [Select]
<Anchor point="TOP" x="-90" y="-463"/>And change it to:
Code: [Select]
<Anchor point="TOP" x="-98" y="-463"/>
Now go through all of the "CharacterCreateClassButton"'s and change the x="6" to x="0"

If done right, you should have this:

(http://www.fileden.com/files/2012/4/30/3298604/Step2-3.png)

And that's it for this step for now! =D

P.S I am aware the Necromancer right hand pane icon is missing. I have been awake for over 24 hours and can't remember for the life of me where that BLP is, so I'll get to that when less tired, it's only a minor detail for now, I'm sure you'll live :P

Step 3. Fixing the client crash when checking stats bug!


Ok for all of these, we are going to be doing some cloning of columns in the gt* dbc files. It is highly advised you do this in CSVED.EXE & DBCUtil.exe and that's what my guide is going to be using.

You get CSVED from here: http://csved.sjfrancke.nl/

And DBCUtil from here: http://code.google.com/p/cntc2/downloads/detail?name=DBCUtil.rar&can=2&q=

I would to thank Khira for their original guide that helped me figure this out. However it wasn't the most straightforward on how to do it, so I thought I'd rewrite it a bit easier here. I would link the guide, but I have no idea where it is, it was in spanish and I had sent to me via someone quoting it.

So let's start! Firstly I want you to make a folder on your desktop and name it what ever the hell you want. Then go to your server and copy all the gt* .dbc files into your new folder. We are doing this just to keep it neat and as backup. Now in your new folder go ahead and delete "gtBarberShopCostBase.dbc", "gtNPCManaCostScaler.dbc" and "gtCombatRatings.dbc" as we won't be touching these.

Now that you've done that, go to where you extracted DBCUtil, go into that folder, create a shortcut to DBCUtil.exe and copy that shortcut into your desktop folder, highlight all your DBC's and and drag them over the DBCUtil and let go of your mouse button, it will begin converting them to csv.files. Once done you should have a 1 csv for each DBC. Now to clone entries. WARNING! DO NOT USE MICROSOFT EXCEL FOR THIS STEP!

First open up CSVED.exe. Now go to File->Open ... and navigate to your desktop folder and open up "gtChanceToMeleeCrit.dbc.csv".

gtChanceToMeleeCrit.dbc.csv
This has 1101 entries, that's 100 per class (including the dummy class) + 1, the plus 1 is just stating all these files are floating (don't ask, not important). Now open upen up ChrClasses.dbc in Taliss. Get the ID of the class your custom class is most like stat wise. So for me my class is like a Mage, so the ID I want is 8. So since it's ID of 8, I have to right-click on any entry in CSVED.EXE and select "Go to line". We need to go to line 702. Why 702 for ID of 8? Figure it out like this:

Code: [Select]
Obviously
8*100 = 800
But this starts at 0 not 100, so
800-100 = 700
We have to include the line that stats it's all floating, so
700+1 = 701
And finally, I have no idea why but, we need to add another 1. xD
701+1=702

Now because this program is wierd, click on the entry underneath the highlighted one, then click back on the first entry, this is just to make sure it's selected properly. Right click on the entry it sent you to, that you have highlighted, then select "Go to line" again. This time add 99 lines. So for me I need 801. Now shift click on that entry. All lines between here and there should be highlighted. Right-Click on one and select "Copy Selected Records". Then scroll to the bottom of the page.

Click the very last entry, then right click and select "Add Record", type in any number, we will be deleting this anyway, it's just to keep everything in line, this is a flaw in the program. It has an option to paste below cursor, point but it doesn't always work like that, and we don't want to push the last line to the bottom and throw off the stat calc. Once you've typed in any number, hit Ready. I typed in 999999 so I can tell which it is.

Now select your added line, right-click and select "Paste records below cursor pos". Now find that entry you added and delete it. Look up the top and it should say 1201 recors. If so, you've done this correctly. If not close without saving and try again. If it does say 1201, go to file and select Save As, then save over your csv file.

Repeat these exact steps for these files:

gtChanceToSpellCrit.dbc
gtOCTRegenHP.dbc
gtOCTRegenMP.dbc
gtRegenHPPerSpt.dbc
gtRegenMPPerSpt.dbc

Now do the exact same for these files, but you only need to add 1 entry, so you should have 13 records at the end.

gtChanceToMeleeCritBase.dbc
gtChanceToSpellCritBase.dbc

Now we open up "gtOCTClassCombatRatingScalar.dbc.csv"

Gonna have to do some basic math here because instead of 100, 1 or 10 entries per class it's 32. So to find yours just do this:

Code: [Select]
ID*32, so for me
8*32=256
Plus the float file
256+1=257
And that's the answer

You should end up with the column 1 saying the number 1 below your line number, that's good, it means we can ignore the flot line now. Again click off it then back on it. We need to go down another 32 lines. So do the math and go to the line.

Code: [Select]
257+32=289
Now just do the same as all the others, copy selected records, go to bottom, add new row, paste below cursor, delete created row. Now we've done that we have to edit column 1, just simply go to the top of you copied files and continue the numbers on. So mine says 352, 256, 257, 258. I need it to say 352, 353, 354, 355 etc. Once that's done, check you have 386 records. Save As and close CSVED.exe.

Now delete all the .dbc files in the folder. Then drag and drop all your .dbc.csv files onto DBCUtil shortcut again, this time it should spit out your new working dbc's. Copy them and place them into your patch and your server, then you're done for this step!

Step 4. The Core Modifications


(ArcEmu based, not sure about Trinity or Mangos sorry).

BACK UP YOUR ENTIRE WORLD SOLUTION!!!

Ok this is where we branch far away from create a race (besides the first part) and hit the stuff that most people don't know what to do. But to be completely honest; once you learn how, it's extremely basic. Just a whole bunch of ctrl+f, copy & paste, then editing. This part is not going to be fun...

I already mentioned in my introduction, this is going to be heavily based on my necromancer class, which is an adaption of a Mage class. All these stats and everything in this C++ is the basic of the basic. It isn't going to walk you through every single step for each individual style of class. You have to figure that out on your own. However, luckily, nearly all the spots for the ctrl+f sections, have all original classes listed there. Along with relevant things you will need to adjust for your own personal class.

Please remember in the core, ctrl+f is your best friend.

I apologize if this is difficult and looks very rough, but it is not an easy guide to write.

List of files we are editing:


First up, open your world.sln

Easiest part to do, under "world" section, right click on the "Header Files" folder and click Add -> New item. Then create a new Header File and name it, your class name (normal casing no spaces), so mine would be named "Necromancer".

Ok type this into it (with same caps settings as mine. For full caps, use _ instead of spaces, for normal caps don't use spaces at all. For example DEATH_KNIGHT_H and DeathKnight):
Code: [Select]
#ifndef _NECROMANCER_H
#define _NECROMANCER_H

class Necromancer : public Player
{
public:
Necromancer(uint32 guid) : Player(guid) {}

bool IsNecromancer() { return true; }
};

#endif

Save it and done for that one.

Now do the same, but in the "Source Files" folder with a cpp item instead.

And just add this into it
Code: [Select]
#include "StdAfx.h"Save it.

Now go to "CMakeLists.txt" under the world project. You have to add both of these files into it, so it actually makes them when you build with cmake.
So ctrl+f
Code: [Select]
MovementHandler.cppChange to
Code: [Select]
MovementHandler.cpp
Necromancer.cpp
NPCHandler.cpp

Then ctrl+f
Code: [Select]
NameTables.hChange to
Code: [Select]
NameTables.h
Necromancer.h
NPCHandler.h

Save the cmakelist.

Now go to your "build" folder, so not your source but the folder after CMAKE. Go into world, you'll find both your Necromancer.h and Necromancer.cpp in there. Cut them both, go to your code folder, then the src folder, followed by arcemu-world. Paste both of the items in there. Now leave and build your project with CMAKE again.

To save time I'm just gonna type the .h or .cpp name followed by very brief description/demonstration of what to do or where to add. Just replace necromancer with your class, in same caps format as mine!

Gossip.h


ctrl+f
Code: [Select]
Mage (Match Whole Word)
Code: [Select]
MAGE,
NECROMANCER,
SHAMAN,

Player.h


ctrl+f
Code: [Select]
DRUID = 11,
Code: [Select]
WARLOCK = 9,
DRUID = 11,
NECROMANCER = 12,
MAX_PLAYER_CLASSES

ctrl+f
Code: [Select]
druid - restoration - 282
Code: [Select]
druid - balance - 283
druid - feral combat - 281
druid - restoration - 282

necromancer - curses - 450
necromancer - poison and bones - 451
necromancer - summoning - 452

*/

That part was unneccessary, but it keeps it neat and doesn't hurt.

Scroll down just a little bit to:
Code: [Select]
static const uint32 TalentTreesPerClass[DRUID + 1][3] =change to
Code: [Select]
static const uint32 TalentTreesPerClass[DRUID + 2][3] =
Then a bit further to
Code: [Select]
{ 283, 281, 282 },  // DRUIDchange to
Code: [Select]
{ 283, 281, 282 },  // DRUID
{ 450, 451, 452 },  // NECROMANCER
};

ctrl+f
Code: [Select]
virtual bool IsDruid() { return false; }
change to
Code: [Select]
virtual bool IsDruid() { return false; }
virtual bool IsNecromancer() { return false; }

StdAfx.h
ctrl+f
Code: [Select]
#include "Mage.h" change to
Code: [Select]
#include "Mage.h"
#include "Hunter.h"
#include "Shaman.h"
#include "Necromancer.h"

CharacterHandler.cpp
ctrl+f
Code: [Select]
case DRUID:
plr = new Druid(playerGuid);
break;
   
Change to

Code: [Select]
case DRUID:
plr = new Druid(playerGuid);
break;
case NECROMANCER:
plr = new Necromancer(playerGuid);
break;
   
Creature.cpp
Code: [Select]
ctrl+f static const char* classes[12] = {"None", "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", "None", "Druid"};
change to

Code: [Select]
static const char* classes[13] = {"None", "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", "None", "Druid", "Necromancer"};
Gossip.cpp
Code: [Select]
ctrl+f 81 You must have Wrath of the Lich King Expansion to access this content.
change to

Code: [Select]
81 You must have Wrath of the Lich King Expansion to access this content.
82  Deathknight
83 Necromancer
*/

^^^ Not neccessary.

ctrl+f
Code: [Select]
case ::DEATHKNIGHT:
itemname += string(Plr->GetSession()->LocalizedWorldSrv(Gossip::DEATHKNIGHT));
break;
               
Change to

Code: [Select]
case ::DEATHKNIGHT:
itemname += string(Plr->GetSession()->LocalizedWorldSrv(Gossip::DEATHKNIGHT));
break;
case ::NECROMANCER:
itemname += string(Plr->GetSession()->LocalizedWorldSrv(Gossip::NECROMANCER));
break;
            
               
MiscHandler.cpp
Code: [Select]
ctrl+f case PRIEST:  // allowing priest, warlock, mage to equip ammo will mess up wand shoot. stop it.
change to

Code: [Select]
case PRIEST:  // allowing priest, warlock, mage, necromancer to equip ammo will mess up wand shoot. stop it.
case WARLOCK:
case MAGE:
case NECROMANCER:
      
      
NPCHandler.cpp
ctrl+f
Code: [Select]
{ "Druid", 0 },
change to

Code: [Select]
{ "Druid", 0 },
{ "Necromancer", 0
   
   
ObjectMgr.cpp
ctrl+f
Code: [Select]
case DEATHKNIGHT: // Based on 55-56 more testing will be done.
if(Level < 60)TotalHealthGain += 92;
                  
change to

               
Code: [Select]
case DEATHKNIGHT: // Based on 55-56 more testing will be done.
if(Level < 60)TotalHealthGain += 92;
/*else if(Level <60) TotalHealthGain+=??;
else if(Level <70) TotalHealthGain+=??;*/
else TotalHealthGain += 92;
break;
case NECROMANCER:
if(Level < 23)TotalHealthGain += 15;
// else if(Level >60) TotalHealthGain+=Level+40;
else if(Level > 60) TotalHealthGain += Level + 190;
else TotalHealthGain += Level - 8;

if(Level < 28)TotalManaGain += Level + 23;
// else if(Level>60)TotalManaGain+=Level+26;
else if(Level > 60)TotalManaGain += Level + 115;
else TotalManaGain += 51;
break;
}
               
               
               
ctrl+f       
Code: [Select]
case DRUID:
result = new Druid(guid);
break;
         
change to

      
Code: [Select]
case DRUID:
result = new Druid(guid);
break;
case NECROMANCER:
result = new Necromancer(guid);
break;

ctrl+f    
Code: [Select]
for(uint32 Class = WARRIOR; Class <= DRUID; ++Class)
change to

   
Code: [Select]
for(uint32 Class = WARRIOR; Class <= NECROMANCER; ++Class)         

NPCHandler.h
Code: [Select]
ctrl+f #define TRAINER_TYPE_MAX 16
change to

Code: [Select]
#define TRAINER_TYPE_MAX 17         
player.cpp
Code: [Select]
ctrl+f 1.7f       // Druid
change to

   
Code: [Select]
1.7f,      // Druid
1.0f       // Necromancer
   
   
ctrl+f
Code: [Select]
if((getClass() == MAGE) || (getClass() == PRIEST) || (getClass() == WARLOCK))
change to

Code: [Select]
if((getClass() == MAGE) || (getClass() == PRIEST) || (getClass() == WARLOCK) || (getClass() == NECROMANCER))
ctrl+f
Code: [Select]
default:    //mage,priest,warlock
change to

Code: [Select]
default:    //mage,priest,warlock,necromancer
^^^ Not neccessary

ScriptMgr.cpp
ctrl+f
Code: [Select]
81 You must have Wrath of the Lich King Expansion to access this content.
change to

Code: [Select]
81 You must have Wrath of the Lich King Expansion to access this content.
82 Deathknight
83 Necromancer
*/

Stats.cpp
ctrl+f                
Code: [Select]
case STAT_SPIRIT:
{ gain = CalculateStat(level, 0.000006, 0.002031, 0.278360, -0.340077); }
                  
Change to

      
Code: [Select]
case DEATHKNIGHT:
{
switch(Stat)
{
case STAT_STRENGTH:
{ gain = CalculateStat(level, 0.000039, 0.006902, 1.080040, -1.051701); }
break;
case STAT_AGILITY:
{ gain = CalculateStat(level, 0.000022, 0.004600, 0.655333, -0.600356); }
break;
case STAT_STAMINA:
{ gain = CalculateStat(level, 0.000059, 0.004044, 1.040000, -1.488504); }
break;
case STAT_INTELLECT:
{ gain = CalculateStat(level, 0.000002, 0.001003, 0.100890, -0.076055); }
break;
case STAT_SPIRIT:
{ gain = CalculateStat(level, 0.000006, 0.002031, 0.278360, -0.340077); }
break;
}

}
break;

case NECROMANCER:
{
switch(Stat)
{
case STAT_STRENGTH:
{ gain = CalculateStat(level, 0.000002, 0.001003, 0.100890, -0.076055); }
break;
case STAT_AGILITY:
{ gain = CalculateStat(level, 0.000008, 0.001001, 0.163190, -0.064280); }
break;
case STAT_STAMINA:
{ gain = CalculateStat(level, 0.000006, 0.002031, 0.278360, -0.340077); }
break;
case STAT_INTELLECT:
{ gain = CalculateStat(level, 0.000040, 0.007416, 1.125108, -1.003045); }
break;
case STAT_SPIRIT:
{ gain = CalculateStat(level, 0.000039, 0.006981, 1.090090, -1.006070); }
break;
}
}
break;
      
         
Level3.cpp
Code: [Select]
ctrl+f static const char* classes[12] =
{"None", "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", "None", "Druid"};
   
Change to

Code: [Select]
static const char* classes[13] =
{"None", "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", "None", "Druid", "Necromancer"};


ctrl+f    
Code: [Select]
if(plr->getClass() == DRUID)
{
plr->ClearCooldownsOnLine(573, guid);
plr->ClearCooldownsOnLine(574, guid);
plr->ClearCooldownsOnLine(134, guid);
BlueSystemMessage(m_session, "Cleared all Druid cooldowns.");
return true;
}
break;
Change to

   
Code: [Select]
if(plr->getClass() == DRUID)
{
plr->ClearCooldownsOnLine(573, guid);
plr->ClearCooldownsOnLine(574, guid);
plr->ClearCooldownsOnLine(134, guid);
BlueSystemMessage(m_session, "Cleared all Druid cooldowns.");
return true;
}
if(plr->getClass() == NECROMANCER)
{
plr->ClearCooldownsOnLine(6, guid);
plr->ClearCooldownsOnLine(8, guid);
plr->ClearCooldownsOnLine(237, guid);
BlueSystemMessage(m_session, "Cleared all Necromancer cooldowns.");
return true;
}
   

ctrl+f
Code: [Select]
static uint32 spellarray[DRUID + 1][512] =
change to

Code: [Select]
static uint32 spellarray[DRUID + 2][512] =
Scroll down a bite and find

         
Code: [Select]
{ 0 }, // N/A         
Change to

         
Code: [Select]
{ 0 }, // N/A
{ 0 }, // Necromancer


         
ctrl+f
Code: [Select]
static const char* CLASS[] =
Scroll a little down to find

   
Code: [Select]
"warlock",
"invalid 10",
"druid"
   
Change to

   
Code: [Select]
"warlock",
"invalid 10",
"druid",
"necromancer"
   
AchievementMgr.cpp
ctrl+f    
Code: [Select]
case  458: // Realm First! Level 80 Rogue   
change to

      
Code: [Select]
case  458: // Realm First! Level 80 Rogue
case  480: // Realm First! Level 80 Necromancer
   
ctrl+f    
Code: [Select]
(achievement->ID == 458 && GetPlayer()->getClass() != ROGUE) ||
change to

                 
Code: [Select]
(achievement->ID == 458 && GetPlayer()->getClass() != ROGUE) ||
(achievement->ID == 480 && GetPlayer()->getClass() != NECROMANCER) ||
         
END OF SCRIPTING!!! WOOOOOOOOOOOOOOOOOOOOOOT!!!!

Now you just need to build your World Project.

Step 5. The Database


First thing to know, this is the easiest part of all! That I am sure many of you have done similar stuff before.

Open up the playercreateinfo table add a new line and fill in as the titles say. If you could do step 3 I'm pretty sure you can do step 4 by yourself. Either way here is a basic SQL file I'm using for a Human Necromancer and an Undead Necromancer. Just adjust accordingly.

Code: [Select]
INSERT INTO `playercreateinfo` VALUES (66, 1, 1, 12, 0, 12, -8946.42, -131.35, 83.63, 49, 20, 20, 20, 20, 20, 60, 0, 1000, 0, 0, 20, 3, 4, 81, '2');
INSERT INTO `playercreateinfo` VALUES (67, 5, 5, 12, 0, 85, 1676.62, 1677.2, 121.67, 57, 20, 20, 20, 20, 20, 60, 0, 1000, 0, 0, 20, 3, 4, 2, '1024');

Warning though, these classes will have no spells, no skills, no items and no talents. They are just basic shells!

Results!



(http://www.fileden.com/files/2012/4/30/3298604/Final%20Results%201.png)

(http://www.fileden.com/files/2012/4/30/3298604/Final%20Results%202.png)

(http://www.fileden.com/files/2012/4/30/3298604/Final%20Results%203.png)

Final Notes



As I said at the start, there is a big bug. If you have a look in the 3rd result image I have the stats hidden. If that is not done and the Character/Reputation/Currency/Pet/Skills pane is opened, it crashes your client. That's why I use this macro that has floated around for ages for 255 servers with druids that have the same problem.

Code: [Select]
/console PlayerStatLeftDropDown Melee
/console PlayerStatRightDropDown Spell
/reload

Simply use that, don't use any addons like "All Stats" and it will work fine. It may be an inconvenience, but I'm working on it. And any input on it would be greatly appreciated.

I'm gonna try write some guides up on custom Talents/Spells etc... To accompany this, however I'm a pretty busy lately, so not sure when I'll be able to get round to it.

Again, I apologize for how rough this guide is. It's a very difficult guide to write and touch on the right subjects. I will try and update with more info on things if I can. And any questions I'll reply to as fast as I can.

Might be a few mistakes in there, my class is working fine and my scripts are fine, however I backtracked a few times and might have written a word or two wrong in the guide version of the code as opposed to my own. If you spot anything, let me know and I'll correct it.

Thanks for taking the time read this you guys. Hope you find it helpful and more importantly, hopefully you can help custom classes expand!


Edit: Fixed an error.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: schlumpf on May 25, 2012, 12:10:36 am
I tried fixing formatting a bit, then got pissed of by the major misuse of spoiler tags and gave up. Please replace your spoilers with code tags enclosing the actual code only.

I guess, I will just remove those stupid spoiler tags entirely.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Steff on May 25, 2012, 12:21:57 pm
YES please ;)
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: holyleen on May 27, 2012, 07:18:47 am
what ddi i do worng ?

InterfaceGlueXML/CharacterCreate.lua
Code: [Select]
MAX_RACES = 10;
MAX_CLASSES_PER_RACE = 11;

Code: [Select]
["NECROMANCER"]   = {0.49609375, 0.7421875, 0.5, 0.75},
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on June 05, 2012, 02:11:35 am
Sorry, been away for a few days.

Did you do both CharacterCreate.lua and CharacterCreate.xml before testing it?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Dreamzone on June 10, 2012, 09:42:24 am
Wooot!
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Såcrament on June 30, 2012, 05:06:02 am
Genesis: thank you for this guide. I am now closer to creating a class than I ever was before.

However; I have been faced with an annoying error:

(http://imagr.eu/up/4fee6c8ea9f739_WoWScrnShot_063012_040302.jpg)

Any help will be deeply appreciated.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on July 05, 2012, 10:48:32 pm
Quote from: "Såcrament"
Genesis: thank you for this guide. I am now closer to creating a class than I ever was before.

However; I have been faced with an annoying error:

(http://imagr.eu/up/4fee6c8ea9f739_WoWScrnShot_063012_040302.jpg)

Any help will be deeply appreciated.
After looking into that particular .lua, I saw that it refers to the background. I'd say you didn't create (a proper) background for the class - look into that again, maybe it solves your problem.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on July 14, 2012, 03:25:04 pm
Quote from: "Såcrament"
Genesis: thank you for this guide. I am now closer to creating a class than I ever was before.

However; I have been faced with an annoying error:

(http://imagr.eu/up/4fee6c8ea9f739_WoWScrnShot_063012_040302.jpg)

Any help will be deeply appreciated.

Was this the first time you extracted the .lua and .xml files? Cause you could of extracted an older version of GlueParent.xml and now it's loading the out-dated one over the newest ones.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on October 07, 2012, 03:40:26 am
Updated: Removing the client crash bug. It's the new step 3.
Title: [QUESTION] Re: [TUTORIAL] Creating a shell of a class!
Post by: Diemen on October 18, 2012, 11:52:16 pm
I have to admit its a really nice Tut for Custom Classes !
so Rep for you :-D

But as simple as it is i can't seem to get my Class Icon shown at the Character Create Screen....
I followed every single line you wrote down.
all i have left to do is the Core part but that should't be a part of this problem.

Code: [Select]
<CheckButton name="CharacterCreateClassButton10" inherits="CharacterCreateClassButtonTemplate" id="10">
<Anchors>
<Anchor point="TOP" relativeTo="CharacterCreateClassButton5" relativePoint="BOTTOM" x="0" y="-6"/>
</Anchors>
</CheckButton>
<CheckButton name="CharacterCreateClassButton11" inherits="CharacterCreateClassButtonTemplate" id="11">
<Anchors>
<Anchor point="LEFT" relativeTo="CharacterCreateClassButton5" relativePoint="RIGHT" x="6" y="0"/>
</Anchors>
</CheckButton>


I've changed X=6 to X=0 on Button nr 2 - 10 and tried it for button 11 aswell but without any result.
Any tips would be great ! :D

Thnx !
Title: Re: [QUESTION] Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on October 19, 2012, 12:24:28 am
Quote from: "Diemen"
I have to admit its a really nice Tut for Custom Classes !
so Rep for you :-D

But as simple as it is i can't seem to get my Class Icon shown at the Character Create Screen....
I followed every single line you wrote down.
all i have left to do is the Core part but that should't be a part of this problem.

Code: [Select]
<CheckButton name="CharacterCreateClassButton10" inherits="CharacterCreateClassButtonTemplate" id="10">
<Anchors>
<Anchor point="TOP" relativeTo="CharacterCreateClassButton5" relativePoint="BOTTOM" x="0" y="-6"/>
</Anchors>
</CheckButton>
<CheckButton name="CharacterCreateClassButton11" inherits="CharacterCreateClassButtonTemplate" id="11">
<Anchors>
<Anchor point="LEFT" relativeTo="CharacterCreateClassButton5" relativePoint="RIGHT" x="6" y="0"/>
</Anchors>
</CheckButton>


I've changed X=6 to X=0 on Button nr 2 - 10 and tried it for button 11 aswell but without any result.
Any tips would be great ! :D

Thnx !

Do you mean the actual button or just the display icon?

If it's the button itself make sure you have set the max classes to 11 in the lua file and the DBC's did save (Taliis has a habbit of not saving properly).

If you just mean the actual icon, firstly make the x="6" into x="0", as I said in the guide make all the x="6" into x="0"', the one we made was no exception. If the icon still isn't showing in the button, then either the lua file icon co-ordinates are off, or your class blp file isn't working properly.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Diemen on October 19, 2012, 12:37:06 am
i'm sorry for being not clear , i meant the Button itself.
I Checked the DBC's and they were all Saved properly
Same for the Lua and XML , Checked the Paths and they were also fine.
Tried Your BLP and my own but still no result :-(


(http://i47.tinypic.com/20gjp77.jpg)


This could be the only part i did wrong i Guess..

#CharBaseInfo.DBC


(http://i45.tinypic.com/33bjntt.png)

#1 Races
1-10
13
14
16

#2 Classes
12
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on October 19, 2012, 03:25:51 am
Quote from: "Diemen"
i'm sorry for being not clear , i meant the Button itself.
I Checked the DBC's and they were all Saved properly
Same for the Lua and XML , Checked the Paths and they were also fine.
Tried Your BLP and my own but still no result :-(


(http://i47.tinypic.com/20gjp77.jpg)


This could be the only part i did wrong i Guess..

#CharBaseInfo.DBC


(http://i45.tinypic.com/33bjntt.png)

#1 Races
1-10
13
14
16

#2 Classes
12

How are you applying these to your client? Like are you doing it through an MPQ patch? Or through folders in your clients directory? If folders, are you using a hacked wow.exe, if so which one? And does your GlueXML folder come up as GlueXML.old?
Title: [SOLVED] Re: [TUTORIAL] Creating a shell of a class!
Post by: Diemen on October 20, 2012, 12:32:26 am
i'm using Mjollna's wow.exe so i can just put my Files into maps and don't need to make MPQ's
but now i get an Error when i Click [ Create New Character ]


Code: [Select]
ERROR #132 (0x85100084) Fatal Exception
Program: C:GamesWorld of Warcraft 3.3.5a (no install)World of Warcraft 3.3.5a (no install)Wow.exe
Exception: 0xC0000005 (ACCESS_VIOLATION) at 001B:004E204F
but i can't seem to find the problem.
i think its a Lua Issue..

And it seems it Does change to .old

Edit: I Cracked the Wow.exe from Mjollna With wow_unsig(12340).exe and now it doesn't change to GlueXML.old anymore but still gives an error on Character Create.


EDIT2: My Error is Fixed , i messed up some thing in CharBaseInfo.dbc
Sorry for troubling you Schlumpf, and thanks for the help Guys ;-)
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: detonatorss on October 20, 2012, 04:46:48 pm
can you see your db? please? if you dont put the stats into the class not work ¬¬
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on October 20, 2012, 05:32:09 pm
Quote from: "Diemen"
i'm using Mjollna's wow.exe so i can just put my Files into maps and don't need to make MPQ's
but now i get an Error when i Click [ Create New Character ]


Code: [Select]
ERROR #132 (0x85100084) Fatal Exception
Program: C:GamesWorld of Warcraft 3.3.5a (no install)World of Warcraft 3.3.5a (no install)Wow.exe
Exception: 0xC0000005 (ACCESS_VIOLATION) at 001B:004E204F
but i can't seem to find the problem.
i think its a Lua Issue..

And it seems it Does change to .old

Edit: I Cracked the Wow.exe from Mjollna With wow_unsig(12340).exe and now it doesn't change to GlueXML.old anymore but still gives an error on Character Create.
Good that the unsig is not even remotely related to this, as it is only important on "non-default" interface datas. Crashes regarding a specific screen, or essential character create screen, are always related to DBC.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: schlumpf on October 20, 2012, 06:07:35 pm
Quote from: "Diemen"
Code: [Select]
ERROR #132 (0x85100084) Fatal Exception
Program: C:GamesWorld of Warcraft 3.3.5a (no install)World of Warcraft 3.3.5a (no install)Wow.exe
Exception: 0xC0000005 (ACCESS_VIOLATION) at 001B:004E204F
Great, request investigation in the corresponding thread. There is one only for #132 errors, but nobody seems to notice.
Title: [SOLVED] Re: [TUTORIAL] Creating a shell of a class!
Post by: Diemen on October 22, 2012, 10:45:45 pm
Edited Last Post Problem Solved
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Diemen on November 03, 2012, 05:25:53 pm
Quote
P.S I am aware the Necromancer right hand pane icon is missing. I have been awake for over 24 hours and can't remember for the life of me where that BLP is, so I'll get to that when less tired, it's only a minor detail for now, I'm sure you'll live

I found it ;-)
Maybe you can add this to your Tut.

Patch-enUS.MPQInterfaceTARGETINGFRAMEUI-Classes-Circles.blp

(http://i46.tinypic.com/wkmx41.png)

Just Edit the BLP Like this one and add it to a MPQ or to the maps in your wow folder is you have a Modded Wow.exe



Result :

(http://i45.tinypic.com/11mca9t.jpg)
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on November 03, 2012, 08:05:31 pm
Thanks for that. I did end up finding it again, I just haven't had time to update the guide :P
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Diemen on November 03, 2012, 08:50:31 pm
You're welcome , i just wanted to help the other Modcraft Members ;)
its the least i could do after reading thousand of Tut's haha
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Marwin on December 14, 2012, 02:04:46 pm
Hello, very nice tutorial. Do you have a clue what libraries and cpp files need to TC2? Anyway, someone does not want to make this public tutorial on core work for TC2?
I would be really grateful to him. The first three steps I have successfully completed. :?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on December 14, 2012, 03:03:32 pm
May or may not do something about that later.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Jameyboor on December 19, 2012, 08:34:32 pm
I can't open Charbasinfo.dbc with neither DBC editor nor myDBCEditor, DBCeditor saying : Byte packed DBC files not supported.

and mydbceditor says : invalid fieldsize : 1
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: schlumpf on December 19, 2012, 08:38:57 pm
Quote from: "Jameyboor"
I can't open Charbasinfo.dbc with neither DBC editor nor myDBCEditor, DBCeditor saying : Byte packed DBC files not supported.

and mydbceditor says : invalid fieldsize : 1
Well, great, you told us the error yourself. Take a different editor then.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Jameyboor on December 19, 2012, 09:02:28 pm
Well, I finally managed to open it trying all the available dbc editors, but now there are just 64 rows with in columnn 1 : 184 and 2 : 92 in all of them.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on December 19, 2012, 10:59:24 pm
Quote from: "Jameyboor"
Well, I finally managed to open it trying all the available dbc editors, but now there are just 64 rows with in columnn 1 : 184 and 2 : 92 in all of them.
... Still wrong editor ? Try Tallis for example.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on December 20, 2012, 06:42:39 am
Quote from: "Jameyboor"
Well, I finally managed to open it trying all the available dbc editors, but now there are just 64 rows with in columnn 1 : 184 and 2 : 92 in all of them.

Covert is to CSV and edit it that way. If it still does the same then re-extract the file from the client because it's a dodgey file.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Jameyboor on December 20, 2012, 09:28:44 am
Quote from: "XxXGenesisXxX"
Quote from: "Jameyboor"
Well, I finally managed to open it trying all the available dbc editors, but now there are just 64 rows with in columnn 1 : 184 and 2 : 92 in all of them.

Covert is to CSV and edit it that way. If it still does the same then re-extract the file from the client because it's a dodgey file.
Okay, I'll try that, thanks.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Jameyboor on December 20, 2012, 09:48:37 am
So, I managed to do the dbc part through taliis, problem now is when I use the cracker on my wow.exe it says its succesfull, though I dont got the interface/gluexml folder, I am kind of noobish when it comes to client editting so sorry if it's a dumb question.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on December 20, 2012, 11:54:26 am
Quote from: "Jameyboor"
So, I managed to do the dbc part through taliis, problem now is when I use the cracker on my wow.exe it says its succesfull, though I dont got the interface/gluexml folder, I am kind of noobish when it comes to client editting so sorry if it's a dumb question.
I don't get what you need. It's successful - at least that's what you say.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on December 20, 2012, 12:32:14 pm
Quote from: "Jameyboor"
So, I managed to do the dbc part through taliis, problem now is when I use the cracker on my wow.exe it says its succesfull, though I dont got the interface/gluexml folder, I am kind of noobish when it comes to client editting so sorry if it's a dumb question.

I'm assuming you mean the gluexml folder isn't showing up. You have to extract it from the local patches. Extract all the GlueXML folders from these patches in this order:

locale-enXX.MPQ
patch-enXX.MPQ
patch-enXX-2.MPQ
patch-enXX-3.MPQ

The XX is the client region type like, enUS, enGB, enEU etc... In other words mine is the US version and looks like this:

locale-enUS.MPQ
patch-enUS.MPQ
patch-enUS-2.MPQ
patch-enUS-3.MPQ
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Jameyboor on December 20, 2012, 01:03:05 pm
Quote from: "XxXGenesisXxX"
Quote from: "Jameyboor"
So, I managed to do the dbc part through taliis, problem now is when I use the cracker on my wow.exe it says its succesfull, though I dont got the interface/gluexml folder, I am kind of noobish when it comes to client editting so sorry if it's a dumb question.

I'm assuming you mean the gluexml folder isn't showing up. You have to extract it from the local patches. Extract all the GlueXML folders from these patches in this order:

locale-enXX.MPQ
patch-enXX.MPQ
patch-enXX-2.MPQ
patch-enXX-3.MPQ

The XX is the client region type like, enUS, enGB, enEU etc... In other words mine is the US version and looks like this:

locale-enUS.MPQ
patch-enUS.MPQ
patch-enUS-2.MPQ
patch-enUS-3.MPQ

this is what I meant, thank you.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Sentinel on January 24, 2013, 02:40:39 am
Thanks for tutorial, but let me ask you for another tutorial about talents?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Diemen on January 28, 2013, 11:50:14 pm
Is there a way to Change the Character Creation Background like they did with Death Knights ?

I made some Custom Classes and i can't seem to change the background.

(http://img685.imageshack.us/img685/3562/wowscrnshot012813234552.jpg)

Any idea how to do that ?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: lawrytrix on January 29, 2013, 03:28:47 pm
When I try to create a new character and I choose the new class there appears a wow-error.

(http://s7.directupload.net/images/130129/temp/pj42dqfx.png) (http://s7.directupload.net/file/d/3150/pj42dqfx_png.htm)

And yes, I have cracked the wow.exe ^^
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Diemen on January 29, 2013, 05:52:55 pm
Did you check your dbc for errors ? This was the problem for me wehn i created a new class/race
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on January 29, 2013, 06:01:12 pm
Quote from: "Diemen"
Is there a way to Change the Character Creation Background like they did with Death Knights ?

I made some Custom Classes and i can't seem to change the background.

Any idea how to do that ?

Not yet, I have a friend staying over at the moment, but when they leave I will look into it, cause I would like to know this myself. Pressumably it has something to do with updating the the background model based on the FILESTRING name variable.

Quote from: "lawrytrix"
When I try to create a new character and I choose the new class there appears a wow-error.

(http://s7.directupload.net/images/130129/temp/pj42dqfx.png) (http://s7.directupload.net/file/d/3150/pj42dqfx_png.htm)

And yes, I have cracked the wow.exe ^^

There are too many reasons for WoW errors to occur, I wouldn't know what is causing it, without knowing what you did step by step. Also there is a thread specifically for error 132 issues.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: lawrytrix on January 30, 2013, 12:49:24 pm
Thanks for the answer. The thing is: only if I want to create the new class with a blood elf the error appears. When I try it with a human the error does not appear but something different.

(http://s1.directupload.net/images/130130/temp/te9ssglu.png) (http://s1.directupload.net/file/d/3151/te9ssglu_png.htm)

The background of the character-creation window gets black and I can´t do anything.
I don´t know what to do with this error.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Diemen on January 30, 2013, 01:03:59 pm
I think you need to look into your Class.dbc  for the Bloodelf line. Looks like there is an error in it.
And also this error you see gibes alot of information about the problem.
Take a look at your xml file.
When i'm home i can take a look for you if you like.

Also look into your server database Table PlayerCreateinfo
Maybe you didn't add a line for Bloodelfs.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on January 30, 2013, 03:19:44 pm
Quote from: "lawrytrix"
Thanks for the answer. The thing is: only if I want to create the new class with a blood elf the error appears. When I try it with a human the error does not appear but something different.

(http://s1.directupload.net/images/130130/temp/te9ssglu.png) (http://s1.directupload.net/file/d/3151/te9ssglu_png.htm)

The background of the character-creation window gets black and I can´t do anything.
I don´t know what to do with this error.

That error means the class works but you haven't set it up to display the icon on the button for the create screen. It means you have to add a new line at the bottom of this:

Code: [Select]
CLASS_ICON_TCOORDS = {
["WARRIOR"] = {0, 0.25, 0, 0.25},
["MAGE"] = {0.25, 0.49609375, 0, 0.25},
["ROGUE"] = {0.49609375, 0.7421875, 0, 0.25},
["DRUID"] = {0.7421875, 0.98828125, 0, 0.25},
["HUNTER"] = {0, 0.25, 0.25, 0.5},
["SHAMAN"] = {0.25, 0.49609375, 0.25, 0.5},
["PRIEST"] = {0.49609375, 0.7421875, 0.25, 0.5},
["WARLOCK"] = {0.7421875, 0.98828125, 0.25, 0.5},
["PALADIN"] = {0, 0.25, 0.5, 0.75},
["DEATHKNIGHT"] = {0.25, 0.49609375, 0.5, 0.75},

So for example if I had a necromancer class and I wanted to use the warriors icon I would use this:

Code: [Select]
CLASS_ICON_TCOORDS = {
["WARRIOR"] = {0, 0.25, 0, 0.25},
["MAGE"] = {0.25, 0.49609375, 0, 0.25},
["ROGUE"] = {0.49609375, 0.7421875, 0, 0.25},
["DRUID"] = {0.7421875, 0.98828125, 0, 0.25},
["HUNTER"] = {0, 0.25, 0.25, 0.5},
["SHAMAN"] = {0.25, 0.49609375, 0.25, 0.5},
["PRIEST"] = {0.49609375, 0.7421875, 0.25, 0.5},
["WARLOCK"] = {0.7421875, 0.98828125, 0.25, 0.5},
["PALADIN"] = {0, 0.25, 0.5, 0.75},
["DEATHKNIGHT"] = {0.25, 0.49609375, 0.5, 0.75},
["NECROMANCER"] = {0, 0.25, 0, 0.25},

If you look back at the CharacteCreate.lua section of the guide it covers this and how to make your own custom icon for it.

As for the Blood Elf, I could bet money that the background isn't just black, but in the bottom left corner there will be a blue and white checkered box. I have had that a few times when using the Death Knight class ID in previous attempts. What is the "Filestring" name  of your class in the CharClasses.dbc? The class name in Capitals. Also does it only do it to Blood Elves for your custom class or all? Test if it's any other class and/or Death Knight that does it as well.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: lawrytrix on January 30, 2013, 04:47:59 pm
Okay, I got that but now there is a new error-.-*  :D

(http://s14.directupload.net/images/130130/temp/nyq7gonw.png) (http://s14.directupload.net/file/d/3151/nyq7gonw_png.htm)
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on January 30, 2013, 06:45:13 pm
When posting stuff that has a line number can you please also copy and past the line itself. Cause your line 319 would be different to mine due to the fact I have different amounts of added lines to you. If you haven't got a text editor that shows line numbers, I highly recommend Notepad++. I use it for all my XML/lua work.

Quote from: "Diemen"
Also look into your server database Table PlayerCreateinfo
Maybe you didn't add a line for Bloodelfs.

This won't effect the character creation screen, this is activated upon clicking the accept button of the character creation screen.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: lawrytrix on January 30, 2013, 07:59:21 pm
I´m using Notepad++ since the first day of my modding "career" :D

Here is the line:

Quote
CharacterCreateClassIcon:SetTexCoord(coords[1], coords[2], coords[3], coords[4]);
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on January 30, 2013, 08:32:45 pm
Quote from: "lawrytrix"
I´m using Notepad++ since the first day of my modding "career" :D

Here is the line:

Quote
CharacterCreateClassIcon:SetTexCoord(coords[1], coords[2], coords[3], coords[4]);
This is the function having issues. It says what it does. So you could easily assume what the issue might be... Try looking at the icon orientation, as it seems off.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on January 31, 2013, 01:22:48 am
As Ascathor said, it's says pretty clearly what the problem is. Something is still not right with your coords that I posted just before.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: lawrytrix on January 31, 2013, 12:55:53 pm
I don´t get it -.- I´ll post my CharacterCreate.lua, CharacterCreate.xml and the Gluestrings.lua on pastebin.
Hope you can find the mistake.

CharacterCreate.lua :
Quote
http://pastebin.com/VkMChdB3

CharacterCreate.xml :
Quote
http://pastebin.com/PYSZQgLT

GlueStrings.lua :
Quote
http://pastebin.com/0H3i3YMf
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Nortwin on February 03, 2013, 10:15:15 pm
Thank you, I tested and it worked like a charm.

Really appreciated, thanks again!
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: mferrill on February 13, 2013, 07:49:10 pm
Worked Great for me. TYVM for the guide.

I've got the DB editing and Core editing done almost as well.
And Spell.cpp's were pretty easy.  I am much more familiar with c++ than dbc editing and xml editing.

Having a bit of trouble with Talents though.  I can give it default taltents for like a mage or what have you...haven't learned how to make my own yet though.

Any advice in that area?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on February 14, 2013, 01:00:30 am
For talents you need to make a custom spell in the Spell.dbc, then add the spell in Talent.dbc and I think also the SkillLineAbility.dbc aswell (can't remember properly). But if you mean the talent tabs themeselves, you need to create a skill for each talent tree in SkillLine.dbc, then add them to your class in the SkillRaceClassInfo.dbc, then possibly the SkillLineAbility.dbc as well.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: mferrill on February 14, 2013, 03:19:04 am
Excellent. I'l look into those then, should be able to figure it out from looking at the other info  in those dbc's and go from there. Thanks! :D
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Grianar on February 19, 2013, 06:20:34 am
Great tutorial very helpful.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Hamar on March 06, 2013, 05:18:52 pm
EDIT : Nvm i was being idiot..

Great tutorial thanks alot!
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: 40thzombie on March 10, 2013, 09:57:07 am
Everything was Fine until i Finished Part 4, Now when i Try to Compile it it says

1>------ Build started: Project: ZERO_CHECK, Configuration: Debug Win32 ------
2>------ Build started: Project: world, Configuration: Debug Win32 ------
2>  StdAfx.cpp
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(26): error C2487: 'isHostile' : member of dll interface class may not be declared with dll interface
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(27): error C2487: 'isAttackable' : member of dll interface class may not be declared with dll interface
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(28): error C2487: 'isCombatSupport' : member of dll interface class may not be declared with dll interface
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(29): error C2487: 'isAlliance' : member of dll interface class may not be declared with dll interface
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(46): error C2487: 'isNeutral' : member of dll interface class may not be declared with dll interface
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpellTarget.h(52): error C2071: 'Player::g_spellImplicitTargetFlags' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2059: syntax error : '{'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(115): error C2071: 'Player::m_transportGuidGen' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(116): error C2071: 'Player::m_transportGuidMax' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(25): error C2059: syntax error : 'namespace'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(26): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(26): error C2864: 'Player::INVALID_BACKPACK_SLOT' : only static const integral data members can be initialized within a class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2039: 'EquipmentSetMgr' : is not a member of 'Arcemu'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2079: 'Player::ItemInterface::m_EquipmentSets' uses undefined class 'Player::EquipmentSetMgr'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(37): error C2487: 'getConColor' : member of dll interface class may not be declared with dll interface
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(38): error C2487: 'CalculateXpToGive' : member of dll interface class may not be declared with dll interface
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(39): error C2487: 'CalculateStat' : member of dll interface class may not be declared with dll interface
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(40): error C2487: 'CalculateDamage' : member of dll interface class may not be declared with dll interface
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(41): error C2487: 'GainStat' : member of dll interface class may not be declared with dll interface
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(42): error C2487: 'isEven' : member of dll interface class may not be declared with dll interface
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): error C2071: 'Player::InstanceAbortMessages' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): warning C4200: nonstandard extension used : zero-sized array in struct/union
2>          Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2071: 'Player::sInstanceMgr' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2229: class 'Player' has an illegal zero-sized array
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2059: syntax error : '{'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldScriptMgr.h(113): error C2086: 'Player::Spell ' : redefinition
2>          d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(1609) : see declaration of 'Player::Spell'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldScriptMgr.h(114): error C2086: 'Player::Aura ' : redefinition
2>          d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpellAuras.h(427) : see declaration of 'Player::Aura'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldChannel.h(28): error C2059: syntax error : 'namespace'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldChannel.h(28): error C2238: unexpected token(s) preceding ';'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldChannel.h(176): error C2248: 'Player::Channel::MemberMap' : cannot access private typedef declared in class 'Player::Channel'
2>          d:mediarecentzips - completearcemu-mastersrcarcemu-worldChannel.h(120) : see declaration of 'Player::Channel::MemberMap'
2>          d:mediarecentzips - completearcemu-mastersrcarcemu-worldChannel.h(118) : see declaration of 'Player::Channel'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldChannel.h(177): error C2248: 'Player::Channel::MemberMap' : cannot access private typedef declared in class 'Player::Channel'
2>          d:mediarecentzips - completearcemu-mastersrcarcemu-worldChannel.h(120) : see declaration of 'Player::Channel::MemberMap'
2>          d:mediarecentzips - completearcemu-mastersrcarcemu-worldChannel.h(118) : see declaration of 'Player::Channel'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldArenas.h(21): error C2086: 'Player::ArenaTeam ' : redefinition
2>          d:mediarecentzips - completearcemu-mastersrcarcemu-worldArenaTeam.h(35) : see declaration of 'Player::ArenaTeam'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldMainServerDefines.h(26): error C2071: 'Player::Database_Character' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldMainServerDefines.h(27): error C2071: 'Player::Database_World' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-world../arcemu-shared/Storage.h(474): error C3254: 'Player' : class contains explicit override 'MakeIterator' but does not derive from an interface that contains the function declaration
2>d:mediarecentzips - completearcemu-mastersrcarcemu-world../arcemu-shared/Storage.h(474): error C2838: 'MakeIterator' : illegal qualified name in member declaration
2>d:mediarecentzips - completearcemu-mastersrcarcemu-world../arcemu-shared/Storage.h(480): error C3254: 'Player' : class contains explicit override 'MakeIterator' but does not derive from an interface that contains the function declaration
2>d:mediarecentzips - completearcemu-mastersrcarcemu-world../arcemu-shared/Storage.h(480): error C2838: 'MakeIterator' : illegal qualified name in member declaration
2>d:mediarecentzips - completearcemu-mastersrcarcemu-world../arcemu-shared/Storage.h(480): error C2535: 'Player::StorageContainerIterator<T> *Player::MakeIterator(void)' : member function already defined or declared
2>          d:mediarecentzips - completearcemu-mastersrcarcemu-world../arcemu-shared/Storage.h(471) : see declaration of 'Player::MakeIterator'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(24): error C2071: 'Player::ItemPrototypeStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(25): error C2071: 'Player::ItemNameStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(26): error C2071: 'Player::CreatureNameStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(27): error C2071: 'Player::GameObjectNameStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(28): error C2071: 'Player::CreatureProtoStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(29): error C2071: 'Player::DisplayBoundingStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(30): error C2071: 'Player::VendorRestrictionEntryStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(31): error C2071: 'Player::AreaTriggerStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(32): error C2071: 'Player::ItemPageStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(33): error C2071: 'Player::QuestStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(34): error C2071: 'Player::NpcTextStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(35): error C2071: 'Player::GraveyardStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(36): error C2071: 'Player::TeleportCoordStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(37): error C2071: 'Player::FishingZoneStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(38): error C2071: 'Player::WorldMapInfoStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(39): error C2071: 'Player::ZoneGuardStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(40): error C2071: 'Player::UnitModelSizeStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(41): error C2071: 'Player::WorldStringTableStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(42): error C2071: 'Player::WorldBroadCastStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(43): error C2071: 'Player::BGMasterStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(44): error C2071: 'Player::SpellClickSpellStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(45): error C2071: 'Player::TotemDisplayIdStorage' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(52): error C2071: 'Player::ExtraMapCreatureTables' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectStorage.h(53): error C2071: 'Player::ExtraMapGameObjectTables' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldLocalizationMgr.h(128): error C2071: 'Player::sLocalizationMgr' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldCollideInterface.h(214): error C2071: 'Player::CollideInterface' : illegal storage class
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldDeathKnight.h(39): error C2059: syntax error : '{'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldDeathKnight.h(39): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldDeathKnight.h(48): error C2504: 'Player' : base class undefined
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldRogue.h(25): error C2504: 'Player' : base class undefined
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldDruid.h(25): error C2504: 'Player' : base class undefined
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPriest.h(25): error C2504: 'Player' : base class undefined
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPaladin.h(25): error C2504: 'Player' : base class undefined
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWarrior.h(25): error C2504: 'Player' : base class undefined
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWarlock.h(25): error C2504: 'Player' : base class undefined
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldMage.h(25): error C2504: 'Player' : base class undefined
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldHunter.h(25): error C2504: 'Player' : base class undefined
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldShaman.h(25): error C2504: 'Player' : base class undefined
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldNecromancer.h(5): error C2504: 'Player' : base class undefined
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(808): error C2059: syntax error : 'inline function header'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(808): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(809): error C2059: syntax error : 'inline function header'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(809): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(810): error C2059: syntax error : 'inline function header'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(810): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(811): error C2059: syntax error : 'inline function header'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(811): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(812): error C2059: syntax error : 'inline function header'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(812): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(813): error C2059: syntax error : 'inline function header'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(813): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(814): error C2059: syntax error : 'inline function header'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(814): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(815): error C2059: syntax error : 'inline function header'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(815): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(816): error C2059: syntax error : 'inline function header'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(816): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(817): error C2059: syntax error : 'inline function header'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(817): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(818): error C2059: syntax error : 'inline function header'
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(818): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>d:mediarecentzips - completearcemu-mastersrcarcemu-worldPlayer.h(818): fatal error C1003: error count exceeds 100; stopping compilation
3>------ Build started: Project: SpellHandlers, Configuration: Debug Win32 ------
4>------ Build started: Project: ServerStatusPlugin, Configuration: Debug Win32 ------
5>------ Build started: Project: QuestScripts, Configuration: Debug Win32 ------
6>------ Build started: Project: MiscScripts, Configuration: Debug Win32 ------
7>------ Build started: Project: LuaEngine, Configuration: Debug Win32 ------
8>------ Build started: Project: InstanceScripts, Configuration: Debug Win32 ------
9>------ Build started: Project: Battlegrounds, Configuration: Debug Win32 ------
10>------ Build started: Project: GossipScripts, Configuration: Debug Win32 ------
4>  ServerStatusPlugin.cpp
6>  Setup.cpp
8>  Setup.cpp
3>  Setup.cpp
10>  Setup.cpp
7>  LUAEngine.cpp
9>  Setup.cpp
5>  Setup.cpp
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(26): error C2487: 'isHostile' : member of dll interface class may not be declared with dll interface
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(27): error C2487: 'isAttackable' : member of dll interface class may not be declared with dll interface
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(28): error C2487: 'isCombatSupport' : member of dll interface class may not be declared with dll interface
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(29): error C2487: 'isAlliance' : member of dll interface class may not be declared with dll interface
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(46): error C2487: 'isNeutral' : member of dll interface class may not be declared with dll interface
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(26): error C2487: 'isHostile' : member of dll interface class may not be declared with dll interface
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(27): error C2487: 'isAttackable' : member of dll interface class may not be declared with dll interface
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(28): error C2487: 'isCombatSupport' : member of dll interface class may not be declared with dll interface
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(29): error C2487: 'isAlliance' : member of dll interface class may not be declared with dll interface
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(46): error C2487: 'isNeutral' : member of dll interface class may not be declared with dll interface
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(26): error C2487: 'isHostile' : member of dll interface class may not be declared with dll interface
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(27): error C2487: 'isAttackable' : member of dll interface class may not be declared with dll interface
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(28): error C2487: 'isCombatSupport' : member of dll interface class may not be declared with dll interface
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(29): error C2487: 'isAlliance' : member of dll interface class may not be declared with dll interface
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(46): error C2487: 'isNeutral' : member of dll interface class may not be declared with dll interface
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(26): error C2487: 'isHostile' : member of dll interface class may not be declared with dll interface
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(27): error C2487: 'isAttackable' : member of dll interface class may not be declared with dll interface
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(28): error C2487: 'isCombatSupport' : member of dll interface class may not be declared with dll interface
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(29): error C2487: 'isAlliance' : member of dll interface class may not be declared with dll interface
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(46): error C2487: 'isNeutral' : member of dll interface class may not be declared with dll interface
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(26): error C2487: 'isHostile' : member of dll interface class may not be declared with dll interface
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(27): error C2487: 'isAttackable' : member of dll interface class may not be declared with dll interface
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(28): error C2487: 'isCombatSupport' : member of dll interface class may not be declared with dll interface
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(29): error C2487: 'isAlliance' : member of dll interface class may not be declared with dll interface
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(46): error C2487: 'isNeutral' : member of dll interface class may not be declared with dll interface
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpellTarget.h(52): error C2071: 'Player::g_spellImplicitTargetFlags' : illegal storage class
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2059: syntax error : '{'
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpellTarget.h(52): error C2071: 'Player::g_spellImplicitTargetFlags' : illegal storage class
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2059: syntax error : '{'
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpellTarget.h(52): error C2071: 'Player::g_spellImplicitTargetFlags' : illegal storage class
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpellTarget.h(52): error C2071: 'Player::g_spellImplicitTargetFlags' : illegal storage class
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2059: syntax error : '{'
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpellTarget.h(52): error C2071: 'Player::g_spellImplicitTargetFlags' : illegal storage class
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2059: syntax error : '{'
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2059: syntax error : '{'
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(26): error C2487: 'isHostile' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(27): error C2487: 'isAttackable' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(28): error C2487: 'isCombatSupport' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(29): error C2487: 'isAlliance' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(46): error C2487: 'isNeutral' : member of dll interface class may not be declared with dll interface
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(115): error C2071: 'Player::m_transportGuidGen' : illegal storage class
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(26): error C2487: 'isHostile' : member of dll interface class may not be declared with dll interface
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(116): error C2071: 'Player::m_transportGuidMax' : illegal storage class
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(115): error C2071: 'Player::m_transportGuidGen' : illegal storage class
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(116): error C2071: 'Player::m_transportGuidMax' : illegal storage class
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(27): error C2487: 'isAttackable' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpellTarget.h(52): error C2071: 'Player::g_spellImplicitTargetFlags' : illegal storage class
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2059: syntax error : '{'
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(115): error C2071: 'Player::m_transportGuidGen' : illegal storage class
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(116): error C2071: 'Player::m_transportGuidMax' : illegal storage class
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(28): error C2487: 'isCombatSupport' : member of dll interface class may not be declared with dll interface
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(115): error C2071: 'Player::m_transportGuidGen' : illegal storage class
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(116): error C2071: 'Player::m_transportGuidMax' : illegal storage class
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(115): error C2071: 'Player::m_transportGuidGen' : illegal storage class
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(116): error C2071: 'Player::m_transportGuidMax' : illegal storage class
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(29): error C2487: 'isAlliance' : member of dll interface class may not be declared with dll interface
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(46): error C2487: 'isNeutral' : member of dll interface class may not be declared with dll interface
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpellTarget.h(52): error C2071: 'Player::g_spellImplicitTargetFlags' : illegal storage class
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2059: syntax error : '{'
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(25): error C2059: syntax error : 'namespace'
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(26): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(25): error C2059: syntax error : 'namespace'
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(26): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(26): error C2864: 'Player::INVALID_BACKPACK_SLOT' : only static const integral data members can be initialized within a class
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2039: 'EquipmentSetMgr' : is not a member of 'Arcemu'
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2079: 'Player::ItemInterface::m_EquipmentSets' uses undefined class 'Player::EquipmentSetMgr'
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(115): error C2071: 'Player::m_transportGuidGen' : illegal storage class
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(37): error C2487: 'getConColor' : member of dll interface class may not be declared with dll interface
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(38): error C2487: 'CalculateXpToGive' : member of dll interface class may not be declared with dll interface
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(39): error C2487: 'CalculateStat' : member of dll interface class may not be declared with dll interface
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(40): error C2487: 'CalculateDamage' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(116): error C2071: 'Player::m_transportGuidMax' : illegal storage class
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(41): error C2487: 'GainStat' : member of dll interface class may not be declared with dll interface
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(42): error C2487: 'isEven' : member of dll interface class may not be declared with dll interface
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(26): error C2864: 'Player::INVALID_BACKPACK_SLOT' : only static const integral data members can be initialized within a class
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): error C2071: 'Player::InstanceAbortMessages' : illegal storage class
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): warning C4200: nonstandard extension used : zero-sized array in struct/union
4>          Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2071: 'Player::sInstanceMgr' : illegal storage class
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2229: class 'Player' has an illegal zero-sized array
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2059: syntax error : '{'
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(25): error C2059: syntax error : 'namespace'
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(26): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(26): error C2864: 'Player::INVALID_BACKPACK_SLOT' : only static const integral data members can be initialized within a class
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2039: 'EquipmentSetMgr' : is not a member of 'Arcemu'
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2079: 'Player::ItemInterface::m_EquipmentSets' uses undefined class 'Player::EquipmentSetMgr'
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(37): error C2487: 'getConColor' : member of dll interface class may not be declared with dll interface
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(38): error C2487: 'CalculateXpToGive' : member of dll interface class may not be declared with dll interface
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(39): error C2487: 'CalculateStat' : member of dll interface class may not be declared with dll interface
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(40): error C2487: 'CalculateDamage' : member of dll interface class may not be declared with dll interface
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(41): error C2487: 'GainStat' : member of dll interface class may not be declared with dll interface
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(42): error C2487: 'isEven' : member of dll interface class may not be declared with dll interface
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): error C2071: 'Player::InstanceAbortMessages' : illegal storage class
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): warning C4200: nonstandard extension used : zero-sized array in struct/union
9>          Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(25): error C2059: syntax error : 'namespace'
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(25): error C2059: syntax error : 'namespace'
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2039: 'EquipmentSetMgr' : is not a member of 'Arcemu'
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2071: 'Player::sInstanceMgr' : illegal storage class
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(115): error C2071: 'Player::m_transportGuidGen' : illegal storage class
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(26): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(26): error C2864: 'Player::INVALID_BACKPACK_SLOT' : only static const integral data members can be initialized within a class
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2039: 'EquipmentSetMgr' : is not a member of 'Arcemu'
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2079: 'Player::ItemInterface::m_EquipmentSets' uses undefined class 'Player::EquipmentSetMgr'
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(37): error C2487: 'getConColor' : member of dll interface class may not be declared with dll interface
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(38): error C2487: 'CalculateXpToGive' : member of dll interface class may not be declared with dll interface
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(39): error C2487: 'CalculateStat' : member of dll interface class may not be declared with dll interface
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(40): error C2487: 'CalculateDamage' : member of dll interface class may not be declared with dll interface
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(41): error C2487: 'GainStat' : member of dll interface class may not be declared with dll interface
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(42): error C2487: 'isEven' : member of dll interface class may not be declared with dll interface
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): error C2071: 'Player::InstanceAbortMessages' : illegal storage class
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): warning C4200: nonstandard extension used : zero-sized array in struct/union
6>          Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(26): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(25): error C2059: syntax error : 'namespace'
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2079: 'Player::ItemInterface::m_EquipmentSets' uses undefined class 'Player::EquipmentSetMgr'
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(26): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2071: 'Player::sInstanceMgr' : illegal storage class
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2229: class 'Player' has an illegal zero-sized array
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2059: syntax error : '{'
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2229: class 'Player' has an illegal zero-sized array
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2059: syntax error : '{'
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(26): error C2864: 'Player::INVALID_BACKPACK_SLOT' : only static const integral data members can be initialized within a class
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2039: 'EquipmentSetMgr' : is not a member of 'Arcemu'
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2079: 'Player::ItemInterface::m_EquipmentSets' uses undefined class 'Player::EquipmentSetMgr'
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(37): error C2487: 'getConColor' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(38): error C2487: 'CalculateXpToGive' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(39): error C2487: 'CalculateStat' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(40): error C2487: 'CalculateDamage' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(41): error C2487: 'GainStat' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(42): error C2487: 'isEven' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): error C2071: 'Player::InstanceAbortMessages' : illegal storage class
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): warning C4200: nonstandard extension used : zero-sized array in struct/union
3>          Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(26): error C2864: 'Player::INVALID_BACKPACK_SLOT' : only static const integral data members can be initialized within a class
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(37): error C2487: 'getConColor' : member of dll interface class may not be declared with dll interface
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2071: 'Player::sInstanceMgr' : illegal storage class
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2229: class 'Player' has an illegal zero-sized array
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2039: 'EquipmentSetMgr' : is not a member of 'Arcemu'
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2059: syntax error : '{'
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2079: 'Player::ItemInterface::m_EquipmentSets' uses undefined class 'Player::EquipmentSetMgr'
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(37): error C2487: 'getConColor' : member of dll interface class may not be declared with dll interface
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(38): error C2487: 'CalculateXpToGive' : member of dll interface class may not be declared with dll interface
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(39): error C2487: 'CalculateStat' : member of dll interface class may not be declared with dll interface
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(40): error C2487: 'CalculateDamage' : member of dll interface class may not be declared with dll interface
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(41): error C2487: 'GainStat' : member of dll interface class may not be declared with dll interface
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(42): error C2487: 'isEven' : member of dll interface class may not be declared with dll interface
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): error C2071: 'Player::InstanceAbortMessages' : illegal storage class
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): warning C4200: nonstandard extension used : zero-sized array in struct/union
8>          Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(116): error C2071: 'Player::m_transportGuidMax' : illegal storage class
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(38): error C2487: 'CalculateXpToGive' : member of dll interface class may not be declared with dll interface
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(25): error C2059: syntax error : 'namespace'
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2071: 'Player::sInstanceMgr' : illegal storage class
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2229: class 'Player' has an illegal zero-sized array
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2059: syntax error : '{'
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(26): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(26): error C2864: 'Player::INVALID_BACKPACK_SLOT' : only static const integral data members can be initialized within a class
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2039: 'EquipmentSetMgr' : is not a member of 'Arcemu'
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2079: 'Player::ItemInterface::m_EquipmentSets' uses undefined class 'Player::EquipmentSetMgr'
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(37): error C2487: 'getConColor' : member of dll interface class may not be declared with dll interface
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(39): error C2487: 'CalculateStat' : member of dll interface class may not be declared with dll interface
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(38): error C2487: 'CalculateXpToGive' : member of dll interface class may not be declared with dll interface
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(39): error C2487: 'CalculateStat' : member of dll interface class may not be declared with dll interface
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(40): error C2487: 'CalculateDamage' : member of dll interface class may not be declared with dll interface
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(41): error C2487: 'GainStat' : member of dll interface class may not be declared with dll interface
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(42): error C2487: 'isEven' : member of dll interface class may not be declared with dll interface
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): error C2071: 'Player::InstanceAbortMessages' : illegal storage class
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): warning C4200: nonstandard extension used : zero-sized array in struct/union
10>          Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2071: 'Player::sInstanceMgr' : illegal storage class
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2229: class 'Player' has an illegal zero-sized array
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2059: syntax error : '{'
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(40): error C2487: 'CalculateDamage' : member of dll interface class may not be declared with dll interface
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(41): error C2487: 'GainStat' : member of dll interface class may not be declared with dll interface
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(42): error C2487: 'isEven' : member of dll interface class may not be declared with dll interface
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): error C2071: 'Player::InstanceAbortMessages' : illegal storage class
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): warning C4200: nonstandard extension used : zero-sized array in struct/union
7>          Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2071: 'Player::sInstanceMgr' : illegal storage class
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2229: class 'Player' has an illegal zero-sized array
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2059: syntax error : '{'
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
7>d:mediarecentzips - completearcemu-mastersrcarcemu-worldScriptMgr.h(113): fatal error C1903: unable to recover from previous error(s); stopping compilation
4>d:mediarecentzips - completearcemu-mastersrcarcemu-worldScriptMgr.h(113): fatal error C1903: unable to recover from previous error(s); stopping compilation
8>d:mediarecentzips - completearcemu-mastersrcarcemu-worldScriptMgr.h(113): fatal error C1903: unable to recover from previous error(s); stopping compilation
9>d:mediarecentzips - completearcemu-mastersrcarcemu-worldScriptMgr.h(113): fatal error C1903: unable to recover from previous error(s); stopping compilation
11>------ Build started: Project: ExtraScripts, Configuration: Debug Win32 ------
6>d:mediarecentzips - completearcemu-mastersrcarcemu-worldScriptMgr.h(113): fatal error C1903: unable to recover from previous error(s); stopping compilation
12>------ Build started: Project: EventScripts, Configuration: Debug Win32 ------
3>d:mediarecentzips - completearcemu-mastersrcarcemu-worldScriptMgr.h(113): fatal error C1903: unable to recover from previous error(s); stopping compilation
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(26): error C2487: 'isHostile' : member of dll interface class may not be declared with dll interface
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(27): error C2487: 'isAttackable' : member of dll interface class may not be declared with dll interface
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(28): error C2487: 'isCombatSupport' : member of dll interface class may not be declared with dll interface
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(29): error C2487: 'isAlliance' : member of dll interface class may not be declared with dll interface
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(46): error C2487: 'isNeutral' : member of dll interface class may not be declared with dll interface
10>d:mediarecentzips - completearcemu-mastersrcarcemu-worldScriptMgr.h(113): fatal error C1903: unable to recover from previous error(s); stopping compilation
11>  Setup.cpp
12>  Setup.cpp
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpellTarget.h(52): error C2071: 'Player::g_spellImplicitTargetFlags' : illegal storage class
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2059: syntax error : '{'
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(115): error C2071: 'Player::m_transportGuidGen' : illegal storage class
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(116): error C2071: 'Player::m_transportGuidMax' : illegal storage class
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(25): error C2059: syntax error : 'namespace'
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(26): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(26): error C2864: 'Player::INVALID_BACKPACK_SLOT' : only static const integral data members can be initialized within a class
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2039: 'EquipmentSetMgr' : is not a member of 'Arcemu'
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2079: 'Player::ItemInterface::m_EquipmentSets' uses undefined class 'Player::EquipmentSetMgr'
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(37): error C2487: 'getConColor' : member of dll interface class may not be declared with dll interface
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(38): error C2487: 'CalculateXpToGive' : member of dll interface class may not be declared with dll interface
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(39): error C2487: 'CalculateStat' : member of dll interface class may not be declared with dll interface
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(40): error C2487: 'CalculateDamage' : member of dll interface class may not be declared with dll interface
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(41): error C2487: 'GainStat' : member of dll interface class may not be declared with dll interface
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(42): error C2487: 'isEven' : member of dll interface class may not be declared with dll interface
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): error C2071: 'Player::InstanceAbortMessages' : illegal storage class
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): warning C4200: nonstandard extension used : zero-sized array in struct/union
5>          Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2071: 'Player::sInstanceMgr' : illegal storage class
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2229: class 'Player' has an illegal zero-sized array
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2059: syntax error : '{'
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
5>d:mediarecentzips - completearcemu-mastersrcarcemu-worldScriptMgr.h(113): fatal error C1903: unable to recover from previous error(s); stopping compilation
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(26): error C2487: 'isHostile' : member of dll interface class may not be declared with dll interface
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(27): error C2487: 'isAttackable' : member of dll interface class may not be declared with dll interface
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(28): error C2487: 'isCombatSupport' : member of dll interface class may not be declared with dll interface
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(29): error C2487: 'isAlliance' : member of dll interface class may not be declared with dll interface
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(46): error C2487: 'isNeutral' : member of dll interface class may not be declared with dll interface
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(26): error C2487: 'isHostile' : member of dll interface class may not be declared with dll interface
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(27): error C2487: 'isAttackable' : member of dll interface class may not be declared with dll interface
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(28): error C2487: 'isCombatSupport' : member of dll interface class may not be declared with dll interface
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(29): error C2487: 'isAlliance' : member of dll interface class may not be declared with dll interface
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldfaction.h(46): error C2487: 'isNeutral' : member of dll interface class may not be declared with dll interface
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpellTarget.h(52): error C2071: 'Player::g_spellImplicitTargetFlags' : illegal storage class
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2059: syntax error : '{'
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpellTarget.h(52): error C2071: 'Player::g_spellImplicitTargetFlags' : illegal storage class
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2059: syntax error : '{'
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldSpell.h(680): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(115): error C2071: 'Player::m_transportGuidGen' : illegal storage class
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(116): error C2071: 'Player::m_transportGuidMax' : illegal storage class
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(115): error C2071: 'Player::m_transportGuidGen' : illegal storage class
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldTransporterHandler.h(116): error C2071: 'Player::m_transportGuidMax' : illegal storage class
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(25): error C2059: syntax error : 'namespace'
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(26): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(26): error C2864: 'Player::INVALID_BACKPACK_SLOT' : only static const integral data members can be initialized within a class
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2039: 'EquipmentSetMgr' : is not a member of 'Arcemu'
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2079: 'Player::ItemInterface::m_EquipmentSets' uses undefined class 'Player::EquipmentSetMgr'
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(25): error C2059: syntax error : 'namespace'
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(37): error C2487: 'getConColor' : member of dll interface class may not be declared with dll interface
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(38): error C2487: 'CalculateXpToGive' : member of dll interface class may not be declared with dll interface
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(39): error C2487: 'CalculateStat' : member of dll interface class may not be declared with dll interface
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(40): error C2487: 'CalculateDamage' : member of dll interface class may not be declared with dll interface
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(41): error C2487: 'GainStat' : member of dll interface class may not be declared with dll interface
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(42): error C2487: 'isEven' : member of dll interface class may not be declared with dll interface
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): error C2071: 'Player::InstanceAbortMessages' : illegal storage class
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): warning C4200: nonstandard extension used : zero-sized array in struct/union
11>          Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldEquipmentSetMgr.h(26): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(26): error C2864: 'Player::INVALID_BACKPACK_SLOT' : only static const integral data members can be initialized within a class
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2039: 'EquipmentSetMgr' : is not a member of 'Arcemu'
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldItemInterface.h(79): error C2079: 'Player::ItemInterface::m_EquipmentSets' uses undefined class 'Player::EquipmentSetMgr'
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(37): error C2487: 'getConColor' : member of dll interface class may not be declared with dll interface
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(38): error C2487: 'CalculateXpToGive' : member of dll interface class may not be declared with dll interface
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(39): error C2487: 'CalculateStat' : member of dll interface class may not be declared with dll interface
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(40): error C2487: 'CalculateDamage' : member of dll interface class may not be declared with dll interface
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(41): error C2487: 'GainStat' : member of dll interface class may not be declared with dll interface
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldStats.h(42): error C2487: 'isEven' : member of dll interface class may not be declared with dll interface
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): error C2071: 'Player::InstanceAbortMessages' : illegal storage class
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(61): warning C4200: nonstandard extension used : zero-sized array in struct/union
12>          Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2071: 'Player::sInstanceMgr' : illegal storage class
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2229: class 'Player' has an illegal zero-sized array
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2071: 'Player::sInstanceMgr' : illegal storage class
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldWorldCreator.h(236): error C2229: class 'Player' has an illegal zero-sized array
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2059: syntax error : '{'
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2059: syntax error : '{'
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldObjectMgr.h(241): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
11>d:mediarecentzips - completearcemu-mastersrcarcemu-worldScriptMgr.h(113): fatal error C1903: unable to recover from previous error(s); stopping compilation
12>d:mediarecentzips - completearcemu-mastersrcarcemu-worldScriptMgr.h(113): fatal error C1903: unable to recover from previous error(s); stopping compilation
13>------ Build started: Project: ALL_BUILD, Configuration: Debug Win32 ------
13>  Build all projects
14>------ Skipped Build: Project: INSTALL, Configuration: Debug Win32 ------
14>Project not selected to build for this solution configuration
========== Build: 2 succeeded, 11 failed, 17 up-to-date, 1 skipped ==========

Kinda Annoying me, oh btw if you need it im Compiling on ArcEmu
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on March 10, 2013, 07:54:39 pm
Never seen that before, it's missing DLL's, you have gone wrong somewhere in setting up.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: 40thzombie on March 10, 2013, 08:44:39 pm
Ok, thanks will look into it
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on March 10, 2013, 10:52:51 pm
Seems to me more like a missing ;, partly, but not all of them.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: XxXGenesisXxX on March 11, 2013, 09:20:42 am
Quote from: "Ascathos"
Seems to me more like a missing ;, partly, but not all of them.

Would a non-updated .NET framework contribute to missing DLL's?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: sujezz on February 15, 2015, 08:49:23 am
I think it's a good place to post this. How to make new class display combo points on target ?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: shawn on August 25, 2015, 09:15:43 pm
wow crashes when clicking new class, :ugeek:  :evil:  :cry:
core: trinity
version: 335a

pretty sure the dbc files are fine but ill check again
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: hinur on November 21, 2015, 06:39:14 pm
I'm new to this type of thing and I was wondering were you find and how I access world.sln?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on November 21, 2015, 06:41:58 pm
You access TrinityCore.sln by making it.

EDIT: ArcEmu is not entirely different. The base concept is the same for every core archetype.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: hinur on November 21, 2015, 10:15:11 pm
Quote from: "Ascathos"
You access TrinityCore.sln by making it.

EDIT: ArcEmu is not entirely different. The base concept is the same for every core archetype.

if you mean by compiling the server from scratch, then I wouldn't have it then. (I got the server as a repack)
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 19, 2016, 01:21:25 am
Bumping because I need help.

On TrinityCore.sln inside worldserver the cmakelist.txt does not have what the guide wants me to change. There is no movementhander references inside there. Any help?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on May 19, 2016, 01:47:23 am
(Not) recent changes made it so cmake automatically adds every file in folder. Just add them and make them again.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 19, 2016, 02:01:19 am
Quote from: "Ascathos"
(Not) recent changes made it so cmake automatically adds every file in folder. Just add them and make them again.

What do you mean? Adds which file in which folder? Add what where?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 22, 2016, 04:57:56 am
Bump. Any help?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on May 22, 2016, 10:38:25 am
Just follow the instructions and neglect modifying cmakelist.txt.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 22, 2016, 07:25:07 pm
Quote from: "Ascathos"
Just follow the instructions and neglect modifying cmakelist.txt.

How do I get Necromancer.h and Necromancer.cpp then? Should I manually make the file?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 22, 2016, 11:26:33 pm
So I went through everything and added my class' stuff into the files manually but when I build I get some errors in Necromancer.cpp. Says I don't have StdAfx.h. No such file or directory.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 23, 2016, 11:42:09 pm
Is it even necessary for me to make necromancer.cpp and .h on trinitycore? stdafx cant be found.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on May 23, 2016, 11:52:10 pm
You CAN add those if you want to add custom scripts for your custom class. E.g. for spells that are not working (yet) or not properly imeplemented, e.g. because of custom mechanics.

Ignore that part. You'd create new files for them but they are neglectable if you do not intend to add custom stuff for them just yet.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 24, 2016, 12:18:53 am
Quote from: "Ascathos"
You CAN add those if you want to add custom scripts for your custom class. E.g. for spells that are not working (yet) or not properly imeplemented, e.g. because of custom mechanics.

Ignore that part. You'd create new files for them but they are neglectable if you do not intend to add custom stuff for them just yet.

Okay. Most of the other .cpp and .h files that the original post wanted me to edit does not have what it wants me to change. I went through the files on my own though and edited them and I hope I got it all.

Things I've edited to include my new class:
player.cpp
statsystem.cpp
ObjectMgr.cpp
playermethods.h
shareddefines.h
worldsession.cpp
worldsession.h

I do eventually want to script spells for my class, though.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 25, 2016, 02:42:05 am
Quote from: "Ascathos"
You CAN add those if you want to add custom scripts for your custom class. E.g. for spells that are not working (yet) or not properly imeplemented, e.g. because of custom mechanics.

Ignore that part. You'd create new files for them but they are neglectable if you do not intend to add custom stuff for them just yet.

So should I make stdafx then?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 25, 2016, 03:47:41 am
I get these errors when compiling.

(http://i.imgur.com/Ik6C2j2.png)
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Grymskvll on May 25, 2016, 07:46:12 am
Quote from: "Kobiesan"
I get these errors when compiling.

(http://i.imgur.com/Ik6C2j2.png)

If you're trying to add custom class spellscripts, I just tried this and it seemed to work fine:

Core:
Right click scriptsSpells folder in solution explorer.
Add new item, name it spell_<class>.cpp (just like the existing class script files).
Add whatever you like to your new spell_<class>.cpp. look at existing class spell script files for examples. If you copy+paste, remember to rename sensibly.
Rebuild scripts and worldserver.

SQL:
add entries for your spell scripts in world.spell_script_names

If you just want to test that it works, in Spell.dbc make a duplicate of a spell that relies on a script to work (for example, priests' Guardian Spirit: 47788), check in-game that the original works but the duplicate doesn't (because it has a different spell ID and so doesn't get to use the script yet), then add a new spell script for your duplicate that's exactly the same as the script of the original, with the only difference being the script's classname. Don't forget to add an entry in world.spell_script_names for your duplicate, that's what ties a spell ID (in Spell.dbc) to the script.

By the way, I was making notes for an updated TrinityCore custom class guide and I couldn't figure out why you had to edit playermethods.h, worldsession.cpp and worldsession.h. What did you change in those files?
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 25, 2016, 03:22:55 pm
Quote from: "Grymskvll"
Quote from: "Kobiesan"
I get these errors when compiling.

(http://i.imgur.com/Ik6C2j2.png)

If you're trying to add custom class spellscripts, I just tried this and it seemed to work fine:

Core:
Right click scriptsSpells folder in solution explorer.
Add new item, name it spell_<class>.cpp (just like the existing class script files).
Add whatever you like to your new spell_<class>.cpp. look at existing class spell script files for examples. If you copy+paste, remember to rename sensibly.
Rebuild scripts and worldserver.

SQL:
add entries for your spell scripts in world.spell_script_names

If you just want to test that it works, in Spell.dbc make a duplicate of a spell that relies on a script to work (for example, priests' Guardian Spirit: 47788), check in-game that the original works but the duplicate doesn't (because it has a different spell ID and so doesn't get to use the script yet), then add a new spell script for your duplicate that's exactly the same as the script of the original, with the only difference being the script's classname. Don't forget to add an entry in world.spell_script_names for your duplicate, that's what ties a spell ID (in Spell.dbc) to the script.

By the way, I was making notes for an updated TrinityCore custom class guide and I couldn't figure out why you had to edit playermethods.h, worldsession.cpp and worldsession.h. What did you change in those files?

So should I not bother with stdafx and creating necromancer.cpp and .h?

Also, I went and looked in playermethods and worldsession and I don't know why I mentioned them. There's nothing of use there.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on May 25, 2016, 06:37:06 pm
Stop trying to hang yourself with the stdafx. I never mentioned it once.  ;)

Do as was written. It's more healthy than trying to do evne more.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 26, 2016, 01:54:03 am
Quote from: "Ascathos"
Stop trying to hang yourself with the stdafx. I never mentioned it once.  ;)

Do as was written. It's more healthy than trying to do evne more.

I'm trying to do exactly what the guide says. But a lot of it only applies to ArcEmu.

Do these errors mean anything?

(http://i.imgur.com/24ZgmIt.png)

(http://i.imgur.com/dtamoKZ.png)

Also, I put my new mpq file in my WoW > Data folder and the icon for my class isn't showing up on the character create screen.

If you're wondering, this is what my mpq file looks like.

(http://i.imgur.com/bzslchc.png)
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on May 26, 2016, 04:14:44 pm
It either means arcemu is badly coded or you did something wrong.

I just remembered that I wrote a tutorial myself. It's not "everything" but still valid for the utmost part. 3.3.5 only, though. Too much changed with 6.x

viewtopic.php?f=79&t=3756 (http://modcraft.io/viewtopic.php?f=79&t=3756" onclick="window.open(this.href);return false;)
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 27, 2016, 12:58:14 am
Quote from: "Ascathos"
It either means arcemu is badly coded or you did something wrong.

I just remembered that I wrote a tutorial myself. It's not "everything" but still valid for the utmost part. 3.3.5 only, though. Too much changed with 6.x

viewtopic.php?f=79&t=3756 (http://modcraft.io/viewtopic.php?f=79&t=3756" onclick="window.open(this.href);return false;)

I'm not authorized to read that thread.

Also, I'm on TC not ArcEmu which is why a lot of this guide is hard to follow.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Ascathos on May 27, 2016, 01:20:51 am
They are not even close to each other.
Moved the thread around. YOu can see it now.
Title: Re: [TUTORIAL] Creating a shell of a class!
Post by: Kobiesan on May 27, 2016, 01:42:13 am
Quote from: "Ascathos"
They are not even close to each other.
Moved the thread around. YOu can see it now.

Awesome. I'll give your guide a go.