Jump to content

Search the Community

Showing results for tags 'arcemu'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • News & Updates
    • Announcements
    • Suggestions & Feedback
  • MMO Hub
    • General Chat
    • Gamer's Lounge
    • Member's Lounge
    • Dev Lounge
  • MMO Corner
    • MMO and MMORPG
    • Host Listing
    • Server Listings
    • Server Recruitment
    • Server Reviews
  • User Hub
    • Support
    • Report
    • Contact Staff
  • Creative Corner
    • GFX
    • VFX
  • Merchant Corner
    • Marketplace
  • General Development Releases
    • Applications
  • Tutorials
    • Programming
    • Web Development
  • Wasteland
    • Archives

Categories

  • Creative Corner
    • GFX Releases
    • VFX Releases
    • Resources
  • MMO and MMORPG
    • World of Warcraft
    • Lineage 2
    • Minecraft
  • Webmasters
    • Content Management Systems
    • Addons
    • Scripts
    • Designs
    • Proxies
  • Applications
  • Gaming
    • World of Warcraft
    • Lineage 2
    • Minecraft
    • Emulation
    • Nulled Distributions
  • Marketplace
    • Marsh Designs
    • iDarts

Calendars

  • Community Calendar

Found 14 results

  1. I struggle finding any free arcemu websites / cms. And would love some help!
  2. arcemu

    TUTORIAL: Create a Shell of a Class Credits: XxXGenesisXxX from www.ownedcore.com I wanted to share this because it's one the coolest things I've tried and there is almost no information out there that I've been able to get my hands on... 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: - In this guide I am gonna be using the term "For Simplicities Sake" a bit. So instead I'm just gonna use the abbreviation FSS. - I have been awake for over 24 hours while being out all day. So pretty buggered while writing this - Always back up anything before you edit it. Even simple edits. One thing wrong can be very frustrating to fix. - Always save your work before closing. Obvious but easily forgotten. - This was done in ArcEmu, you will have to adapt yourself for other cores, however good luck unless you really know what you're doing - Their is a huge client side bug, that from what I have read in questions on forums (nor have I found an answer to) is a bug that when you open up your character pane. If your stats are shown it will crashWoW. So I'll be posting a macro at the end of this guide you can use on your characters to stop them showing stats while still being able to access equipment screen. If anyone knows how to fix this or even an idea on how to fix please let me know. Step 1. DBC's 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. For reference = ChrClasses.dbc - WoWDev The columns: 0: This is our Class ID, we'll need to change this to the next number up, so in my case 12. 1: Leave this. 2: This is our powertype our class will use. 0 = Mana, 1 = Rage, 2 = Focus, 3 = Energy, 4 = Happiness, 6 = Runes. FSS, I suggest using either, mana, rage or energy. I won't be covering into detail in this guide a bot them. I'll be using 0 for mana. 3: This is our pet type, if you want to summon demons like warlock you CAN choose to set it as demon, but honestly, you can make demon like creatures with it set as pet. So again, FSS just go with pet. 4: The name of our class, for this we need to go down to Strings on the left hand tab and add a new string. This is the displayed one, so use correct punctuation in this, it isn't code dependent. I'll be naming my string "Necromancer". Once you've added it you'll get it down the bottom with a number next to it. Go back to column 4 in the Table section and type in that number. 5 - 54: :Leave them alone. 55: This is our code dependent name. This is what is gonna be called upon a lot. We need to make a new string. Only this time, it needs to all be in capitals. Also if you have a space in your class name like "Death Knight", you'll need to ignore the space and just type "DEATHKNIGHT". So just do the same as you did for column 4, but capitals and no spaces. So for me; "NECROMANCER". 56: FSS leave this alone or just copy the one closest to your class. 57: I'm not 100% sure on this one, too many inconsistencies, if you feel like experimenting try some different ones out, otherwise stick to the closest to your class. 58: Leave this. 59: This is for different expansions. 0 = Classic, 1 = TBC, 2 = WotLK. Now you can save and close "ChrClasses.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 = CharBaseInfo.dbc - WoWDev The columns: 0: Race ID. So for me I want 1 (Human) for my first cloned ID and 5 (Undead) for my other. 1: Class ID. All of these should be your new classes ID. Mine was 12, so I need to put in 12 for all of it. Easy. You can save and close "CharBaseInfo.dbc" now. Open up "TalentTab.dbc" Clone 3 times. For reference = TalentTab.dbc - WoWDev The columns: 0: These are the ID's. FSS change these to 450, 451 and 452. 1: The names of your talent trees. I'll be using the old school Diablo 2 Necromancer trees. Curses, Poison and Bones, Summoning. you are going to have to make new name strings for each of these again. 2-17: Leave them alone. 18: This is your spell icon ID. I'm just gonna be using the ones I copy for now (warlock ones). If you want to get specific ones, go onto WoWhead, pick a spell with the icon you want. Go into "Spell.dbc". In the first column find the ID of the spell you were looking at, then go across to column 133 and that's your icon ID. 19: Set all to 2047. 20: This is classes, however it's in bits not the standard ID. If your class was ID number 12, than you will need to type in 2048 for each of them. 21: Leave as 0. 22: This is the orderindex. Which ever you want to be first in the list of the 3 talent tree tabs is set to 0, then the middle is set to 1, the the last is set to 2. 23: This is the background image. I'm just leaving mine as default copied one. If you can find the file path, go ahead and make your own, if not just use one you like the background of. You can type your own path in without an image file being present, your will just get the basic background with the color like a quest background. 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". Modcraft - The community dedicated to quality WoW modding! - View topic - [TOOL]*Remove GlueXML Check from WoW.exe However for those who have done this before I will move onto the files. In our \Interface\GlueXML\ folder, we need to open up: GlueStrings.lua In this file we need to hit ctrl+f and search for this 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) 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 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 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) 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 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" 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. Modcraft - The community dedicated to quality WoW modding! - View topic - [TOOL] [CONVERTER] BLP to PNG 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....... 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... 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 MAX_CLASSES_PER_RACE = 10; to MAX_CLASSES_PER_RACE = 11; Again in "CharacterCreate.lua" hit ctrl+f (or just scroll down) and search for ["DEATHKNIGHT"] = {0.25, 0.49609375, 0.5, 0.75}, Now underneath that we are going to need to put ["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". Open up "CharacterCreate.xml". Search for <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: <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: So search for this: <Anchor point="TOP" x="-90" y="-463"/> And change it to: <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: 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 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/downl...l.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: 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. 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: 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. 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: Gossip.h Player.h StdAfx.h NPCHandler.h CharacterHandler.cpp Creature.cpp Gossip.cpp MiscHandler.cpp NPCHandler.cpp ObjectMgr.cpp player.cpp ScriptMgr.cpp Stats.cpp AchievementMgr.cpp Level3.cpp CMakeLists.txt 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): #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 #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 MovementHandler.cpp Change to MovementHandler.cpp Necromancer.cpp NPCHandler.cpp Then ctrl+f NameTables.h Change to 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 Mage (Match Whole Word) MAGE, NECROMANCER, SHAMAN, Player.h ctrl+f DRUID = 11, WARLOCK = 9, DRUID = 11, NECROMANCER = 12, MAX_PLAYER_CLASSES ctrl+f druid - restoration - 282 druid - balance - 283 druid - feral combat - 281 druid - restoration - 282 necromancer - curses - 450 necromancer - poison and bones - 451 necromancer - summoning - 452 */ That part was unnecessary, but it keeps it neat and doesn't hurt. Scroll down just a little bit to: static const uint32 TalentTreesPerClass[DRUID + 1][3] = change to static const uint32 TalentTreesPerClass[DRUID + 2][3] = Then a bit further to { 283, 281, 282 }, // DRUID change to: { 283, 281, 282 }, // DRUID { 450, 451, 452 }, // NECROMANCER }; ctrl+f virtual bool IsDruid() { return false; } change to virtual bool IsDruid() { return false; } virtual bool IsNecromancer() { return false; } StdAfx.h ctrl+f #include "Mage.h" #include "Mage.h" #include "Hunter.h" #include "Shaman.h" #include "Necromancer.h" CharacterHandler.cpp ctrl+f case DRUID: plr = new Druid(playerGuid); break; Change to case DRUID: plr = new Druid(playerGuid); break; case NECROMANCER: plr = new Necromancer(playerGuid); break; Creature.cpp ctrl+f static const char* classes[12] = {"None", "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", "None", "Druid"}; change to Gossip.cpp ctrl+f 81 You must have Wrath of the Lich King Expansion to access this content. change to 81 You must have Wrath of the Lich King Expansion to access this content. 82 Deathknight 83 Necromancer */ ^^^ Not neccessary. ctrl+f case ::DEATHKNIGHT: itemname += string(Plr->GetSession()->LocalizedWorldSrv(Gossip::DEATHKNIGHT)); break; Change to case ::DEATHKNIGHT: itemname += string(Plr->GetSession()->LocalizedWorldSrv(Gossip::DEATHKNIGHT)); break; case ::NECROMANCER: itemname += string(Plr->GetSession()->LocalizedWorldSrv(Gossip::NECROMANCER)); break; MiscHandler.cpp ctrl+f case PRIEST: // allowing priest, warlock, mage to equip ammo will mess up wand shoot. stop it. change to case PRIEST: // allowing priest, warlock, mage, necromancer to equip ammo will mess up wand shoot. stop it. case WARLOCK: case MAGE: NPCHandler.cpp ctrl+f { "Druid", 0 }, change to { "Druid", 0 }, { "Necromancer", 0 ObjectMgr.cpp ctrl+f case DEATHKNIGHT: // Based on 55-56 more testing will be done. if(Level < 60)TotalHealthGain += 92; change to 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 case DRUID: result = new Druid(guid); break; change to case DRUID: result = new Druid(guid); break; case NECROMANCER: result = new Necromancer(guid); break; ctrl+f for(uint32 Class = WARRIOR; Class <= DRUID; ++Class) change to for(uint32 Class = WARRIOR; Class <= NECROMANCER; ++Class) NPCHandler.h ctrl+f #define TRAINER_TYPE_MAX 16 change to #define TRAINER_TYPE_MAX 17 player.cpp ctrl+f 1.7f // Druid change to 1.7f, // Druid 1.0f // Necromancer ctrl+f if((getClass() == MAGE) || (getClass() == PRIEST) || (getClass() == WARLOCK)) change to if((getClass() == MAGE) || (getClass() == PRIEST) || (getClass() == WARLOCK) || (getClass() == NECROMANCER)) ctrl+f default: //mage,priest,warlock change to default: //mage,priest,warlock,necromancer ^^^ Not neccessary ScriptMgr.cpp ctrl+f 81 You must have Wrath of the Lich King Expansion to access this content. change to 81 You must have Wrath of the Lich King Expansion to access this content. 82 Deathknight 83 Necromancer */ Stats.cpp ctrl+f case STAT_SPIRIT: { gain = CalculateStat(level, 0.000006, 0.002031, 0.278360, -0.340077); } Change to 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 ctrl+f static const char* classes[12] = {"None", "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", "None", "Druid"}; Change to static const char* classes[13] = {"None", "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", "None", "Druid", "Necromancer"}; ctrl+f 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 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 static uint32 spellarray[DRUID + 1][512] = change to static uint32 spellarray[DRUID + 2][512] = Scroll down a bite and find { 0 }, // N/A Change to { 0 }, // N/A { 0 }, // Necromancer ctrl+f static const char* CLASS[] = Scroll a little down to find "warlock", "invalid 10", "druid" Change to "warlock", "invalid 10", "druid", "necromancer" AchievementMgr.cpp ctrl+f case 458: // Realm First! Level 80 Rogue change to case 458: // Realm First! Level 80 Rogue case 480: // Realm First! Level 80 Necromancer ctrl+f (achievement->ID == 458 && GetPlayer()->getClass() != ROGUE) || change to (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. 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! Final Notes 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!
  3. Programs Required: 1. MPQEditor 2. MyDBCEditor Steps: 1. Open Spell.dbc with MyDBCEditor and search for the spell name you wish to change 2. Save the file by clicking File -> Save 3. Open MPQEditor and create a new patch 4. Use the patch hierarchy below to create the correct patch 5. Add Spell.dbc to the DBFilesClient folder 6. Close MPQEditor and put the newly-created patch in your data folder in your WoW directory 7. Log in and enjoy the new name
  4. In this tutorial, one will learn how to patch client-side changes. Examples include: spells, achievements, items, and more! To begin, one will need certain programs. Programs Required: 1. MPQEditor 2. MyDBCEditor (or Taliis) This is really simple, and takes little to no effort. The tutorial will begin by teaching how to edit a spell in the DBC files. SPELLS 1. Open Spell.dbc with MyDBCEditor. It should look similar to what's below (unless you chose Taliis). 2. Next, there are multiple things we can do. We've already changed the name of a spell (you can view that here). So, let's try something new... perhaps removing a reagent requirement from a spell? 3. So, the spell I will be working with is Greater Blessing of Kings. I want to remove the Symbol of Kings requirement. So, to do so, I will look for a value in the 52-59 range. In this case, a value is in field 53. The value is an entry identification number for the item, Symbol of Kings. Also, I will be looking for a value in fields 60-67. In this case, it's in field 61. The value tells how many of the reagent is needed before the spell can be cast. 4. Change both numbers in the black bounding boxes to zero (0) and save the file. We would create a patch now; however, we want to make other changes to other DBC files and add them all to one robust patch. ACHIEVEMENTS 1. Open Achievement_Criteria.dbc with MyDBCEditor. It should look similar to what's below (unless you chose Taliis). 2. We can do many things from this point; however, a player has reported a flaw in our daily quest achievements. 3. So, let's take a look at column five (5) for our achievement. You should see the same value below. to 4. This is a hexadecimal number for 2,000. If you don't know hexadecimal, that's all right. Simply double-click it and type 2,200. After the change, you should have the second hexadecimal number. Save the file. 5. In this achievement, we assume that that the name of the achievement is already 2,200 Daily Quests, but players gain it at 2,000. 6. We would make a patch, but we just need to do one more step... items! ITEMS 1. Open Item.dbc with MyDBCEditor. It should look similar to what's below (unless you chose Taliis). 2. If a custom item is added to the game, we're given the infamous red question mark display. To fix this, you must add the item to this DBC file. 3. Insert a new row in the DBC file. Use the same ID as your item (it should already be unique). 4. Your new row should should look like the one above (with the exception of the ID number). 5. After adding the respective values to the other columns, which are found in the database, you can save the file. You can see my example below. 6. We've made our edits, now, we make a patch to display these changes in the client. MAKING THE PATCH 1. Open MPQEditor and click "New MPQ." 2. Name it whatever you want; within the limits below: patch-A through Z patch-4 through 9 3. After creating it, you should see something similar to mine: 4. Right-click on the workspace and select New Folder. 5. Enter the name: DBFilesClient. 6. Within that folder is where we will place our edited DBC files. Right-click and select Add File(s). Once done, it should look like mine: 7. Close the MPQEditor. 8. Congratulations! You made some edits and made a patch! Pat yourself on the back! 9. Add this new patch to your World of Warcraft/data folder. You should see other patches in this folder. For example, patch-1.MPQ. Never remove these other patches! 10. Enjoy your edits!
  5. Hi there reader. The past week, I've been trying to get my server up and running, but since I'm still a rookie at this topic, I can't seem to get it up and working ( public wise ) I am now so desperate that I'm willing to pay anyone that get's everything up and running for me ( That consists of my server being made public, including my fusioncms website working ) Regarding prices, and if you're generally interested, contact my skype @ '' s.w.a.t195 '' We can use teamviewer, or anything you prefer. Thanks in advance. - Sebastian.
  6. Hi there Reader. I tried making my Arcemu server public, now where I'm pretty much finished with it, and so I tried to but I got this error when launching my world.exe '' Bind unsuccesful on port 8129. Waiting for console thread to terminate, console shut down. '' This only happened when I changed my 127.0.0.1 to my realmlist (hellboundwow.servegame.com) in realms.conf and world.conf. Here's my folders: logon.conf = http://pastebin.com/LCUPiL3Y realms.conf = http://pastebin.com/pxteRAhb world.conf = http://pastebin.com/HhtcaqTU Here's a picture of my world.exe on launch = http://postimg.org/image/m353ezrvb/ Here's a picture of my logonserver.exe on launch =http://postimg.org/image/nr04b2ayp/ I've already portforwarded And I put the ip's with my realmlist in C:\Windows\System32\drivers\etc\hosts.conf Please answer asap, thanks in advance.
  7. There is a few of these as I saw but they are now two years old and not updated so here is my guide. Some pre-requisites: You must know how to compile Compile a fresh un-altered core first 1.0 Getting your script 2.0 Setting Up and saving your .cpp file 3.0 Modifing Setup.cpp and Setup.h 4.0 Compiling your script 5.0 Now Your Done 1.0 For this script we will be using is Magers Boss Tracker http://www.mmowned.com/forums/emulat...ck-v1-0-a.html but you could have made your own script or found another one they all compile the same. If you have two scripts in the same release you would follow this guide for both of them 2.0 First Copy the script in the post above. Then open up your Visual C++ and go to new>>new file>>new .cpp file then paste the your script into the new file. Now go to file>>Save as Here you want to save your file in the extra scripts folder, to find this folder go to: Trunk folder your main one then src>>scripts>>src>>ExtraScripts that is were you want to save your script as whatever.cpp the .cpp is vital 3.0 Modifying the proper files to get your script to run right Once you have saved your file in the extra scripts you need to add your script to the project, to do this you: First navigate your your Trunk>>src>>scripts>>win>>Scripts2008 open this up then click on extrascripts First you have to add the script to your extra scripts project: and go to add existing item and find your script in the extra script folder then your done with that part 3.1 go to setup.cpp open it up. Then open up your script and scroll down to the bottom you will see somthing like this: Code: void SetupFirstBossKill(ScriptMgr * mgr) Go ahead and copy the whole thing then go back to setup.cpp you will see a section like: Code: extern "C" SCRIPT_DECL void _exp_script_register(ScriptMgr* mgr) // Comment any script to disable it { SetupNeutralGuards(mgr); } You want to paste your script you just copied into it and modify it so it looks like this: Code: extern "C" SCRIPT_DECL void _exp_script_register(ScriptMgr* mgr) // Comment any script to disable it { SetupNeutralGuards(mgr); SetupFirstBossKill(mgr); } now save it. 3.2 Now open up your setup.h and you will see somthing like this: Code: void SetupNeutralGuards(ScriptMgr* mgr); underneath that paste your script it will look somthing like this Code: void SetupNeutralGuards(ScriptMgr* mgr); void SetupFirstBossKill(ScriptMgr * mgr); save it. 4.0 Now compile your scripts2008 solution if you know how to compile you should know how to do this that is what I got and Is what you should have got if you followed my steps 5.0 Now your done take your updated core and replace it with your other core or if they are the same rev just take your script_bin and replace it with your old one and test it out
  8. Hey Folks ! Well, i was bored some weeks ago and searched abit on my HDD for hidden/unused files, and just saw that i still have my updated funserver repack which i wanted to upload once but had no time for it. Notice: The funny thing is, there are no scripts in it, you will have to implent them by yourself.The repack itself is 100% Fun, there are nice custom areas such as swimming pool, ice rink, Theatre etc and much more you'll like.If you saw my previous repacks you know what i mean!.Enough said, now heres the list what is in it: A few Pictures: Credits to the following:Craigy109 - For the Buildings / Updating the Core / C++ WorkSplicho - Also for some buildings DOWNLOAD HERE ! Edit: Added Downloadlink :)/>
  9. I just made a quick tutorial on how to update your ArcEMU core. Updating Your Core First of all, Right click the Arcemiu folder on your desktop and click SVN update.Wait for it to finish and click OK. This one won't take as long as the first one.Go to Arcemu > trunk > win. Open arcemuVC100 - All Projects, if you need to switch debug to release. Go to Debug > Build Solution. Wait agan, and once it's done close it.Now this time all you have to do is copy all of the contents from Arcemu > Trunk > Bin > Release and paste them into the Core folder. Overwrite the files and merge the folders, etc.. etc.. Congratulations, you've updated your core.
  10. {Major 3.3.5 Emulators} - Arcemu - Trinity - Mangos New Release by me. 19 Twink Vendors, I hope you all like it and I hope it becomes useful to someone. If there is anything wrong with my release please leave a reply telling me the problem so I can fix it. I try to add as many things to the vendors as possible but If you would like me to add something that would help everyone then post that below to. If you need any help you can also e-mail me at, chrisfofficial@live.com Screenshots Photobucket Downloads: Database Structure up to date as of May 11th, 2017 Extra: Comes with the option to set Sell and Buy prices to 0. Support me by clicking the like button to the bottom right of this post
  11. arcemu

    Some scripts may contain some bugs.. Arigma The Righteous 10 Man Version Leoric the Devourer Here is a list of Abilities that he uses. Heroic Strike, Bitter Blast, Blizzard, Curse of Exertion, Detonate Mana, Meteor, Growth, Shout, Fear, Decimate, Arcane Buffet, Bloodboil, Death and Decay, Cleave, Frost Nova, Berserk. The Lua Script has NOT been tested yet. [/center]function Leorec_OnCombat(Unit, Event)Unit:SendChatMessage(14, 0, "You will regreat this!")Unit:RegisterEvent("HeroicStrike", 12500, 0)Unit:RegisterEvent("BitterBlast", 20000, 0)Unit:RegisterEvent("IsMoving", 5000, 0)Unit:RegisterEvent("Blizzard", 5000, 0)Unit:RegisterEvent("CurseExertion", 22000, 0)Unit:RegisterEvent("DetonateMana", 10000, 0)Unit:RegisterEvent("Meteor", 16000, 0)Unit:RegisterEvent("PhaseTwo", 5000, 0)endfunction Leorec_OnLeaveCombat(Unit, Event)Unit:RemoveEvents()endfunction Leorec_OnKilledTarget(Unit, Event)Unit:SendChatMessage(14, 0, "Your Weakness makes me stronger, bow in the dust!")Unit:CastSpell(40318)endfunction Leorec_OnDied(Unit, Event)Unit:SendChatMessage(14, 0, "I have failed... but i doubt that my soul will burn in... hell!")Unit:RemoveEvents()endfunction Leorec_HeroicStrike(Unit, Event)Unit:FullCastSpellOnTarget(41975, Unit:GetMainTank(1))endfunction Leorec_BitterBlast(Unit, Event)Unit:FullCastSpellOnTarget(60542, Unit:GetRandomPlayer(2))endfunction IsMoving(Unit, Event)if Unit:IsInBack(Unit:GetMainTank(1)) thenMoving = 1elseMoving = 0endendfunction Blizzard(Unit, Event)if (Moving == 1) thenlocal plr = Unit:GetMainTank()Unit:FullCastSpellOnTarget(59369, Unit:GetMainTank(1))elseendendfunction CurseExertion(Unit, Event)Unit:FullCastSpellOnTarget(52772, Unit:GetRandomPlayer(5))endfunction DetonateMana(Unit, Event)Unit:FullCastSpellOnTarget(27819, Unit:GetRandomPlayer(6))endfunction Meteor(Unit, Event)Unit:FullCastSpellOnTarget(45150, Unit:GetRandomPlayer(4))endfunction PhaseTwo(Unit, Event))if Unit:GetHealthPct() = 60 thenUnit:SendChatMessage(14, 0, "Youve acctully managed to hurt me, ill show you anger!")Unit:RegisterEvent("Shout", 7000, 0)Unit:RegisterEvent("Fear", 15000, 0)Unit:RegisterEvent("Decimate", 10000, 0)Unit:RegisterEvent("ArcaneBuffet", 12000, 0)Unit:RegisterEvent("PhaseThree", 5000, 0)endfunction Shout(Unit, Event)Unit:FullCastSpellOnTarget(29107, Unit:GetMainTank(1))endfunction Fear(Unit, Event)Unit:FullCastSpellOnTarget(31970, Unit:GetRandomPlayer(7))endfunction Decimate(Unit, Event)Unit:FullCastSpellOnTarget(28374, Unit:GetRandomPlayer(7))endfunction ArcaneBuffet(Unit, Event)Unit:FullCastSpellOnTarget(59485, Unit:GetMainTank(1))endfunction PhaseThree(Unit, Event)if Unit:GetHealthPct() = 10 thenUnit:SendChatMessage(14, 0, "Its time to show you my final strength!, Be with me power of the old gods!")Unit:RegisterEvent("BloodBoil", 3000, 0)Unit:RegisterEvent("DD", 6000, 0)Unit:RegisterEvent("Cleave", 10000, 0)Unit:RegisterEvent("Nova", 15000, 0)Unit:RegisterEvent("Berserk", 5000, 0)endfunction BloodBoil(Unit, Event)Unit:FullCastSpellOnTarget(42005, Unit:GetRandomPlayer(7))endfunction DD(Unit, Event)Unit:FullCastSpellOnTarget(61603, Unit:GetRandomPlayer(7))endfunction Cleave(Unit, Event)Unit:FullCastSpellOnTarget(19983, Unit:GetMainTank(1))endfunction Nova(Unit, Event)Unit:FullCastSpellOnTarget(36989, Unit:GetRandomPlayer(6))endfunction Berserk(Unit, Event)if Unit:GetHealthPct() = 5 thenUnit:SendChatMessage(14, 0, "I can feel the gods power, i will own you!")Unit:SetScale(3.0)Unit:CastSpell(41924)endRegisterUnitEvent(500000,1,"Leorec_OnCombat")RegisterUnitEvent(500000,2,"Leorec_OnLeaveCombat")RegisterUnitEvent(500000,3,"Leorec_OnKilledTarget")RegisterUnitEvent(500000,4,"Leorec_OnDied")How to use this Script:You Copy paste the Coded Text in to NotepadSave it as: Leoric.LUAPut it in your scripts folderOpen serverMake the SQL's For himand Boom :)/> You have a new boss
  12. Hello! My name is Michael, and I'll be writing this tutorial today. Before I begin I would like to say, this tutorial will eventually go out of date. I can not promise that it will be updated. So If you have any questions or concerns, you may add my skype or msn found at the bottom of this guide. If you think this guide is out of date, you may reffer to Here as they keep the guides updated there. Now that we're in the mood, and know about what we want this for, Let's get started! Here's a few Programs that you WILL need in order to complete this process with no errors. Now that you have the downloads, We may "Officially Begin." The first program we're going to use will be Git GUI. You can run this program, and you will see a message pop up. Click "Clone Existing Repository." When you click that, there will be a message as so: (There's an Example Picture Below!)Fill it in with the data in red: Picture: ExampleClick "CLONE"! You'll see a new window pop up. Click X on it! You don't need it right now. :)/>You'll now open up Cmake. Remember us installing this earlier?Cmake will open up. It will ask you 2 questions. Here they are: You should fill it in with this (Data in Red): Click the button "Generate" It will build up the information. You may now click X on Cmake.Picture: Example Navigate to: C:/Build You should see a document named: "ArcEmu.snl" Open it with C++ 2008 (example below) If you're planning on releasing this to a repack, change the option to "RELEASE" if not, leave it alone. (Again, example Below) So now you can RIGHT CLICK on "Solution: 'ArcEmu' (31 Projects)" and click BUILD SOLUTION. (example below) That will take a while.Image: Example 1Image: Example 2Image: Example 3Image: Example 4 When that mess is done, you'll see at the bottom, If you see that, Great! If not, Add me on skype and I'll help you where you went wrong!Now, Navigate to your Build folder. There should be a folder named "Logon" and "World" Click on one (doesn't matter which one first.. They'll both have to be done) there will be a folder in that named "Release" or "Debug" (Depending on what you chose earlier.) Make a folder on your desktop named ArcEmu. Drag the application named "Logon.exe" and "World.exe" to that folder. You now have your server. You need to download a few DLL files to place in this folder. They are found: Here You will also need DBC files and Configs. Configs are found Here And the DBC files are found: We will be using WhyDB for this Tutorial. Download the Server Folder: FileBeam (I won't re-upload.. Sorry d:When that's done, run MYSQL.bat (make sure no other MYSQL is already running! Then you may continue. Make a new folder in C:/ , Name it: "Database"Right click it, Then click SVN Checkout.URL of repository: http://svn.xp-dev.com/svn/whydb-users/ Okay, That should not take to long, But we have to wait on it to get done before continuing. C:\DatabaseMAKE SURE THE MYSQL.BAT IS RUNNING!Use the tool.bat[Press any key to continue]type: 127.0.0.1 Press [enter]Type: 3306 Press [enter]Type: root Press [enter]Type: ascent Press [enter]Type: world Press [enter]Type: characters Press[enter]Type: logon Press[enter]PRESS ANY KEY TO CONTINUEHit the number: 2Wait.. Wait.. Wait.. When it is done, Hit the number: 6Wait.. Wait.. Wait.. When it is done,Hit the number: 8Wait.. Wait.. Wait.. When it is done,Hit the key: X Need help? Contact me! Ways that keep me releasing Tutorials, and Graphics related things are: Thanks -MichaelRate this topic 5 stars for a +Rep!Bump this topic for an occasional +Rep! Open:
×