Sunday, December 16, 2007

Set up your private MANGOS wow server TBC

Now, we will start off by getting the actual files we need.

Before getting anything, you will need MySQL 5 and a server management tool like SQLyog or Navicat.

MySQL 5: MySQL AB :: MySQL 5.0 Downloads
SQLyog: MySQL GUI Tools, MySQL Monitor, MySQL Manager, MySQL Performance Tuning and Optimization
Navicat: Navicat - the World's Best MySQL Front End for Windows, Linux & Mac OS X

Now for the server files.

I maintain a fully updated list of official UDB releases here:
HacksDB • View topic - The Unified Database for MaNGOS.

Currently, the latest versions are:
MaNGOS: Core 4752 http://filebeam.com/92ab1fe3c0760bd625e846aabdec5c9a
UDB: 0.8.2 Daybreak https://unifieddb.svn.sourceforge.net/svnroot/unifieddb/Full_DB/

Currently, this is for WoW 2.2.3.

You will also need DBC Files, a Map Extractor, and optionally, a Vmap Extractor.

DBC Files: Mangos-Files.de http://www.mangos-files.de/index.php?show=misc&id=13&num=1
Maps Extr.: Mangos-Files.de http://www.mangos-files.de/index.php?show=misc&id=7&num=1
Vmaps Extr.: Mangos-Files.de http://www.mangos-files.de/index.php?show=misc&id=6&num=1

So, download the above files. Remember to grab the realmd.sql from UDB too. You will need it.

Now, let's arrange our files a bit.

Extract your MaNGOS core to C:\MaNGOS.
Put the Map Extractor in C:\MaNGOS\Map Extr.
Put the Vmap Extractor in C:\MaNGOS\Vmap Extr.
Put the UDB files in C:\MaNGOS\sql.
Put the DBC files in C:\MaNGOS\dbc.

That should do.

Installing MySQL

When you have downloaded MySQL, simply install it. Select the usual configuration and tell it to use minimal system resources. I recommend you to enable remote access when it asks you for that.

Now, install either Navicat or SQLyog. Personally, I prefer having both since SQLyog is good for importing/exporting and Navicat is good for editing.

Now that you have done this setup part, we should be able to move on to the database import part.

Note: Remember your MySQL password! You're gonna need it later on!

Importing The Databases

Now,let's import our datas!

First off, in your MySQL application, add a database named "world" or anything else and a database named "realms" or whatever you might want to call that.

In the realms database, import the realmd.sql. This will add basic functionality to our Realmd process.

In the realms database, select the realmlist table. Then add the following line:

Code:

id - name - address - port - icon - color - timezone - allowedSecurityLevel - population
1 - Your Realm Name - Your IP - 8085 - 1 - 1 - 1 - 0 - 0

Remember, you should change the icon and color depending on your realm type. You can change realm type later on. Also set the timezone to match your timezone.

Now, open up the accounts table and add a new row. Edit the following fields like this:

Code:

id - I - gmlevel - email - joindate - tbc
1 - Your_Password - 3 - Your_Email - Date And Time - 1

All columns not mentioned above should not be edited. Just edit the ones I mentioned. Your password should be automatically encrypted. Remember that the joindate format must be like this:

2007-10-18 16:23:24

Now that you have your realm added and a fully working GM account, let's move on to setting up the server files.

Setting Up MaNGOS

Now we're at the point that will take quite some more time. I will describe as much as I can in the MaNGOS configuration files.

First off, let's configure the realmd.conf file, just because it's the smallest one.
:)

Note: Below, I will add my own comments in the files. My comments will be prefixed with //.

Open up realmd.conf. Lines to edit are in red. Lines that you MAY have to edit are in green.

Code:

# MaNGOS realmd configuration file
ConfVersion=2007062001

# Database connection settings for the realm server.
# Default: hostname;port;username;password;database
# .;somenumber;username;password;database - use named pipes at Windows
# Named pipes: mySQL required adding "enable-named-pipe" to [mysqld] section my.ini
# .;/path/to/unix_socket;username;password;database - use Unix sockets at Unix/Linux
# Unix sockets: experimental, not tested
// We should edit this to be: "Your.PC.IP.Here;3306;root;password;realms"
LoginDatabaseInfo = "127.0.0.1;3306;mangos;mangos;realmd"

# Logs directory setting.
# Important: Logs dir must exists, or all logs be disable
# Default: "" - no log directory prefix, if used log names isn't absolute path then logs will be stored in current directory for run program.
// For good order, make it: "./logs"
LogsDir = ""

# Settings for maximum database-ping interval (minutes between pings)
MaxPingTime = 30

# Default RealmServerPort
// Should only be changed if this port is not open.
RealmServerPort = 3724

# Server console level of logging
# 0 = Minimum; 1 = Error; 2 = Detail; 3 = Full/Debug
# Default: 0
// You should change this to: "3"
LogLevel = 0

# Logfile name
# empty name disable creating log file: LogFile =
# Default: "Server.log" - not recommended.
// I prefer having it as: "Realms.log"
LogFile = "Realmd.log"

# Logfile with timestamp of server start in name
# Default: 0 - no timestamp in name
# 1 - add timestamp in name in form Logname_YYYY-MM-DD_HH-MM-SS.Ext for Logname.Ext
// Useful little thingy. Set it to: "1"
LogTimestamp = 0

# Server file level of logging
# 0 = Minimum; 1 = Error; 2 = Detail; 3 = Full/Debug
# Default: 0
// You can keep it at 0 if you have a slow PC. Otherwise: "3"
LogFileLevel = 0

# Color for messages (format "normal_color details_color debug_color error_color)
# Colors: 0 - BLACK, 1 - RED, 2 - GREEN, 3 - BROWN, 4 - BLUE, 5 - MAGENTA, 6 - CYAN, 7 - GREY,
# 8 - YELLOW, 9 - LRED, 10 - LGREEN, 11 - LBLUE, 12 - LMAGENTA, 13 - LCYAN, 14 - WHITE
# Default: "" - none colors
# "13 7 11 9" - for example :)
LogColors = ""

# Used processors mask for multi-processors system (Used only at Windows)
# Default: 0 (selected by OS)
# number (bitmask value of selected processors)
// Some processor related option. I don't really know what it is.
UseProcessors = 0

# Process proirity setting (Used only at Windows)
# 0 (Normal)
# Default: 1 (HIGH)
// ONLY use "1" here, if the machine is dedicated. Otherwise: "0"
ProcessPriority = 1


# Realm list Update up delay (updated at realm list request if delay expired).
# 0 (Disabled)
# Default: 20
RealmsStateUpdateDelay = 20

Now, save that file and open up mangosd.conf.

Code:

# MaNGOS Configuration file
ConfVersion=2007103101

# RealmID must match the realmlist
// As mentioned, this should match your ID of: "1"
RealmID = 1

# 0 NORMAL 1 PVP 4 NORMAL 6 RP 8 RPPVP
// This is where you can set your server type. Make it match the realmlist color and icon.
GameType = 1

# Allow server use expansion content
# 0 (not check expansion maps existence, not allow wisit its, not allow create new race characters, ignore account expansion setting)
# Default: 1 (check expansion maps existence, and if client support expansion and account have expansion setting then allow visit expansion maps, allow create new races character)
// Only change this if you don't want TBC.
Expansion = 1

# Data directory setting.
# Important: DataDir needs to be quoted, as it is a string which may
# contain space characters.
// I really think we're better off with: "./"
DataDir = "@prefix@/share/mangos"

# Logs directory setting.
# Important: Logs dir must exists, or all logs be disable
# Default: "" - no log directory prefix, if used log names isn't absolute path then logs will be stored in current directory for run program.
// I still like: "./logs"
LogsDir = ""

# Database connection settings for the world server.
# Default: hostname;port;username;password;database
# .;somenumber;username;password;database - use named pipes at Windows
# Named pipes: mySQL required adding "enable-named-pipe" to [mysqld] section my.ini
# .;/path/to/unix_socket;username;password;database - use Unix sockets at Unix/Linux
# Unix sockets: experimental, not tested
// Set this to: "Your.PC.IP.Here;3306;root;password;realms
LoginDatabaseInfo = "127.0.0.1;3306;mangos;mangos;realmd"
// Set this to: "Your.PC.IP.Here;3306;root;password;world
WorldDatabaseInfo = "127.0.0.1;3306;mangos;mangos;mangos"
// I'm not a great fan of having characters outside the world DB, so, set this to: "Your.PC.IP.Here;3306;root;password;world
CharacterDatabaseInfo = "127.0.0.1;3306;mangos;mangos;characters"

# Settings for maximum database-ping interval (minutes between pings)
MaxPingTime = 30

# DBC Language Settings
# 0 = English
# 1 = Korean
# 2 = French
# 3 = German
# 4 = Chinese
# 5 = Taiwanese
# 6 = Spanish
# 7 = Russian
# 8 = Unknown
# 9 = Unknown
# 10 = Unknown
# 11 = Unknown
# 12 = Unknown
# 13 = Unknown
# 14 = Unknown
# 15 = Unknown
# 255 = Auto Detect (Default)
// Change it if you want to use another locale for the game.
DBC.Locale = 255

# Enable logging of GM commands - all SQL code will be written to a log file
# All commands are written to a file: YYYY-MM-DD_logSQL.sql
# If a new day starts (00:00:00) then a new file is created - the old
# file will not be deleted.
# 0 - Do not log
# 1 - Write SQL code to logfile
// I recommend having it on, but if your PC is slow, turn it off.
LogSQL = 1

# Server console level of logging
# 0 = Minimum; 1 = Basic&Error; 2 = Detail; 3 = Full/Debug
# Default: 0
# recommend: 1
// You should definitely not increase this. If you do, it will spam you with loads of debug information... Only really useful for advanced users that doesn't need guides like this one.
LogLevel = 1

# Logfile name
# empty name disable creating log file: LogFile =
# Default: ""
// Change it to: "YourRealmNameWithoutSpaces.log"
LogFile = "Server.log"

# Logfile with timestamp of server start in name
# Default: 0 - no timestamp in name
# 1 - add timestamp in name in form Logname_YYYY-MM-DD_HH-MM-SS.Ext for Logname.Ext
// Like in realmd.conf, set it to: "1"
LogTimestamp = 0

# Server file level of logging
# 0 = Minimum; 1 = Error; 2 = Detail; 3 = Full/Debug
# Default: 0
// If your PC is slow, keep this. Otherwise: "3"
LogFileLevel = 1

# Log filters
# 0 (default) - include in log if log level permit, 1 - not include with any log level
// You should only change these if you experience bad performance.
LogFilter_TransportMoves = 1
LogFilter_CreatureMoves = 1
LogFilter_VisibilityChanges = 1

# Color for messages (format "normal_color details_color debug_color error_color)
# Colors: 0 - BLACK, 1 - RED, 2 - GREEN, 3 - BROWN, 4 - BLUE, 5 - MAGENTA, 6 - CYAN, 7 - GREY,
# 8 - YELLOW, 9 - LRED, 10 - LGREEN, 11 - LBLUE, 12 - LMAGENTA, 13 - LCYAN, 14 - WHITE
# Default: "" - none colors
# "13 7 11 9" - for example :)
LogColors = ""

# Packet logging file for the worldserver.
# Default: ""
// Should set this to: "World.log"
WorldLogFile = "world.log"

# Log file of DB errors detected at server run.
# Default: ""
DBErrorLogFile = "DBErrors.log"

# Character operations logfile name
# empty name disable creating log file: CharLogFile =
# Default: ""
// Bleh. I hate this, but: "YourRealmNameWithoutSpacesCharacters.log
CharLogFile = "Char.log"

# Logfile with timestamp of server start in name
# Default: 0 - no timestamp in name
# 1 - add timestamp in name in form Logname_YYYY-MM-DD_HH-MM-SS.Ext for Logname.Ext
// We definitely want this to be: "1"
CharLogTimestamp = 0

# Write character dump before deleting in Char.log
# CharLogDump: 0 (default) - not include dumping chars to log
# 1 - include dumping chars to log
# (for restore cut charcter data from log starting from line == START DUMP == to line == END DUMP == (without its)
# in file and load it using loadpdump command)
// This is only for debug reasons, really.
CharLogDump = 0

# Log file of gm commands
# Default: "" (Disable)
// Set it to: "YourRealmNameWithoutSpacesGMCommands.log"
GmLogFile = ""

# Log file of RA commands, "" for disable
# Default: "Ra.log"
// Set it to: "YourRealmNameWithoutSpacesRACommands.log"
RaLogFile = ""

# Used processors mask for multi-processors system (Used only at Windows)
# Default: 0 (selected by OS)
# number (bitmask value of selected processors)
// Some processor related stuff again... Might have to change it, I don't know.
UseProcessors = 0

# Process proirity setting (Used only at Windows)
# 0 (Normal)
# Default: 1 (HIGH)
// Unless your machines is dedicated, set it to: "0"
ProcessPriority = 1

# Compression level for update packages sended to client (1..9)
# Default: 1 (speed)
# 9 (best compression)
// The lower, the better performance. The higher, the better connection.
Compression = 1

# Maximum number of players in the world. Excluding Mods, GM's and Admins
# Default: 100
# 0 (for infinite players)
# -1 (for Mods, GM's and Admins only)
# -2 (for GM's and Admins only)
# -3 (for Admins only)
// You should REALLY change this! This can either be too much or too less. As you can see above, you can make your server public or only staffs. I definitely don't recommend "0" here. 150 is the best for an average server.
PlayerLimit = 100

# Max level that can reached by player for expirience (in range from 1 to 255).
# Change not recommended
# Default: 70
// First of all, you can increase this up to 255. Though, in UDB, there are no levelstats for that, which will give many errors. Next, you must set this to 60 if you aren't using the expansion.
MaxPlayerLevel = 70

# Activate weather system
# Default: 1 (true)
# 0 (false)
// Players really like weather, though, you might want to save some performance.
ActivateWeather = 1

// From below starts all the fun stuff! Now you can edit XP rates, drop rates, damage rates, regeneration rates, quest and instance requirements and a lot more! Have fun.

# Cast or nor Deserter spell at player who leave battleground in progress
# Default: 1 (true)
# 0 (false)
Battleground.CastDeserter = 1

# Ignore level requirement to enter instance
# 1 (true)
# Default: 0 (false)
Instance.IgnoreLevel = 0

# Ignore raid requirement to enter instance
# 1 (true)
# Default: 0 (false)
Instance.IgnoreRaid = 0

# quest level difference to hide for player low level quests: if player_level > quest_level + LowLevelQuestsHideDiff then quest ! mark not show for quest giver
# -1 (show all available quests marks)
# Default: 4
Quests.LowLevelHideDiff = 4

# quest level difference to hide for player high level quests: if player_level < quest_min_level - HighLevelQuestsHideDiff then quest ! mark not show for quest giver
# -1 (show all available quests marks)
# Default: 7
Quests.HighLevelHideDiff = 7

# Max count that player can learn the primary trade skill.
# Default: 2
# Max : 10
MaxPrimaryTradeSkill = 2

# Min signatures count to creating guild (0..9).
# Default: 9
MinPetitionSigns = 9

# Max distance to creature for group memeber to get XP at creature death.
# Default: 74
MaxGroupXPDistance = 74

# Allow or not accounts to create characters in the 2 teams in any game type.
# Default: 0 (Not allowed)
# 1 (Allowed)
// Most players would like both alliance and horde characters. Therefore, set it to: "1"
AllowTwoSide.Accounts = 0

# Allow or not common :chat(say,yell);channel(chat)group(join)guild(join);trade for players from different teams.
# Default: 0 (Not allowed)
# 1 (Allowed)
// This is pretty self explanatory. I like to enable a few of them.

// I tend to enable this with: "1"
AllowTwoSide.Interaction.Chat = 0
// I tend to enable this with: "1"
AllowTwoSide.Interaction.Channel = 0
AllowTwoSide.Interaction.Group = 0
AllowTwoSide.Interaction.Guild = 0
// I tend to enable this with: "1"
AllowTwoSide.Interaction.Trade = 0

# Allow or not show player from both team in who list.
# Default: 0 (Not allowed)
# 1 (Allowed)
// I find this good if your server isn't very big and people are just looking for someone to talk with or have fun with.
AllowTwoSide.WhoList = 0

# Chat anti-flood protection, haste message count to activate protection
# 0 (disible anti-flood protection)
# Default: 10
// Might want to change this?
ChatFlood.MessageCount = 10

# Chat anti-flood protection, minimum message delay to count message
# Default: 1 (in secs)
// Might want to change this?
ChatFlood.MessageDelay = 1

# Chat anti-flood protection, mute time at activation flood protection (not saved)
# Default: 10 (in secs)
// You can change the amount of seconds if you want to. I like to have it at: "35"
ChatFlood.MuteTime = 10

# Is GM accept whispers from player by default.
# Default: 0 (false)
# 1 (true)
// You should enable this if you want your players to have good ingame support.
GM.WhisperingTo = 0

# Is GM showed in GM list (if visible) in non-GM state (.gmoff)
# Default: 0 (false)
# 1 (true)
// Enable this too, if you want good ingame support.
GM.InGMList = 0

# Is GM showed in who list (if visible).
# Default: 0 (false)
# 1 (true)
// This doesn't really have to be enabled, and I don't recommend it either, but it's your decision.
GM.InWhoList = 0

# GM mode at login
# 0 (disable)
# 1 (enable)
# Default: 2 (last save state)
// You can change it, but honestly, it's annoying to have auto GM mode on when logging on.
GM.LoginState = 2

# Include GM trade and trade slot enchanting operations in GM log if it enable
# 0 (not include)
# Default: 1 (include)
// It's useful for finding abusive game masters.
GM.LogTrade = 1

# Group visibility modes
# Default: 0 (standard setting: only members from same group can 100% auto detect invisible player)
# 1 (raid members 100% auto detect invisible player from same raid)
# 2 (players from same team can 100% auto detect invisible player)
Visibility.GroupMode = 0

# Visibility distance for different in game object
# Max limited by active player zone: ~ 166
# Min limit dependent from objects
# Default: 66 (cell size)
#
# Min limit is max aggro radius (45) * Rate.Creature.Aggro
// Change to: "99"
Visibility.Distance.Creature = 66
// Change to: "99"
Visibility.Distance.Player = 66
#
# gameobject, dynobject, bodies, corpses, bones
# Min limit is iteraction distance (5)
// Change to: "99"
Visibility.Distance.Object = 66
#
# visible distance for player in flight
# Min limit is 0 (not show any objects)
// Change to: "99"
Visibility.Distance.InFlight = 66

# Visibility grey distance for creatures/players (fast changing objects)
# addition to appropriate object type Visibility.Distance.* use in case visibility removing to object (except corpse around distences)
# If ‚ is distance and G is grey distance then object make visible if distance to it <= D but make non visible if distance > D+G
# Default: 1 yard
Visibility.Distance.Grey.Unit = 1
#
# Visibility grey distance for dynobjects/gameobjects/corpses/creature bodies
#
# Default: 10 yards
Visibility.Distance.Grey.Object = 10

# Mail ******** delay time in case sending item
# Default: 3600 sec (1 hour)
// If you want faster or slower mail ********, change this. It's in seconds.
Mail********Delay = 3600

# Message of the Day. Displayed at worldlogin for every user ('@' for a newline).
// Change this... The default one is lame.
Motd = "Welcome to the Massive Network Game Object Server."

# Health and power regeneration and rage income from damage.
// Oh yes, here comes the funny stuff. This is pretty simple. If you gain 5 health per second, you will gain 10 health per second if you multiply it by 2 and so on.
Rate.Health = 1
Rate.Mana = 1
Rate.Rage.Income = 1
Rate.Rage.Loss = 1
Rate.Focus = 1
// Unsure here, but I think it's honor?
Rate.Loyalty = 1

# Drop rates
# Default: 1
// I tend to put this at "3" since that brings more fun.
Rate.Drop.Items = 1
Rate.Drop.Money = 1

# XP rates
# Default: 1
// I tend to put this at "5" for more fun.
Rate.XP.Kill = 1
Rate.XP.Quest = 1
Rate.XP.Explore = 1

# Creature Damage Rate.
# Examples: 2 - creatures will damage 2x, 1.7 - 1.7x.
// Should mobs be VERY dangerous? Or very NOT dangerous?
Rate.Creature.Normal.Damage = 1
Rate.Creature.Elite.Elite.Damage = 1
Rate.Creature.Elite.RAREELITE.Damage = 1
Rate.Creature.Elite.WORLDBOSS.Damage = 1
Rate.Creature.Elite.RARE.Damage = 1

# Creature Health Ammount Modifier.
# Examples: 2 - creatures have 2x health, 1.7 - 1.7x.
// Hard skin?
Rate.Creature.Normal.HP = 1
Rate.Creature.Elite.Elite.HP = 1
Rate.Creature.Elite.RAREELITE.HP = 1
Rate.Creature.Elite.WORLDBOSS.HP = 1
Rate.Creature.Elite.RARE.HP = 1

# Resting points grow rates (1 - normal, 2 - double rate, 0.5 - half rate, etc) from standard values
// Sleep much, gain more?
Rate.Rest.InGame = 1
Rate.Rest.Offline.InTavernOrCity = 1
Rate.Rest.Offline.InWilderness = 1

# Damage after fall rate. (1 - standard, 2 - double damage, 0.5 - half damage, etc)
// There's fall damage bugs, so you might wanna completely disable this?
Rate.Damage.Fall = 1

# Auction rates (auction time, deposit get at auction start, auction cut from price at auction end)
// Auction stuffs, it seems.
Rate.Auction.Time = 1
Rate.Auction.Deposit = 1
Rate.Auction.Cut = 1

# Honor gain rate
// Err, we already had honor above... Or? I'm confused.
Rate.Honor = 1

# Mining Rates (Mining.Amount changes minimum/maximum usetimes of a deposit, Mining.Next changes chance to have next use of a deposit)
// Could be good with fast mining?
Rate.Mining.Amount = 1
Rate.Mining.Next = 1

# Talent Point rates
# Default: 1
// I put this at "2" sometimes, mainly because I think you don't get enough talents.
Rate.Talent = 1

# Reputation Gain rate
# Default: 1
// Reputation gain... OK?
Rate.Reputation.Gain = 1

# Save respawn time for creatures at death, for gameobjects at use/open
# 0 (save creature/gameobject respawn time at grid unload)
# Default: 1 (save creature/gameobject respawn time without waiting grid unload)
SaveRespawnTimeImmediately = 1

# Skill chance values (0..100)
# Default: 100-75-25-0
// These are... Skills?
SkillChance.Orange = 100
SkillChance.Yellow = 75
SkillChance.Green = 25
SkillChance.Grey = 0

#For skinning and Mining chance decrease with skill level.
# 0 - no decrease
# Default: 75 - in 2 times each 75 skill points
SkillChance.MiningSteps = 75
SkillChance.SkinningSteps = 75

#Aggro radius percent or off.
# 0 - off (0%)
# Default: 1 - 100%
# 1.5 - 150%
// This is dangerous to play around with.
Rate.Creature.Aggro = 1

#Creature family assistence radius
# 0 - off
# Default: 10
// Families are love...
CreatureFamilyAssistenceRadius = 10

// Below goes the more serious settings again.

# Enable console
# 0 - off
# Default: 1 - on
// MaNGOS can run in the background.
Console.Enable = 1

# Enable remote console
# Default: 0 - off
# 1 - on
// Remote console CAN be useful... Or not.
Ra.Enable = 0

# Default remote console ip address, use 0.0.0.0 for every address
Ra.IP = 0.0.0.0

# Default remote console port
Ra.Port = 3443

# Minimum level that's required to login,3 by default
// I think this is the GM level?
Ra.MinLevel = 3

# Kick client on wrong pass
// Should enable this.
Ra.Secure = 1

# Maximum overspeed ping count before player kick (minimum is 2, 0 used for disable check)
# Default: 2
MaxOverspeedPings = 2

# Unload grids (if you have lot memory you can disable it to speed up player move to new grids second time)
# 0 (not unload grids)
# Default: 1 (unload grids)
GridUnload = 1;

# All times are in milliseconds.

# Default socket select time
SocketSelectTime = 10000

# Default grid clean up delay
GridCleanUpDelay = 300000

# Default map update interval
MapUpdateInterval = 100

# Default weather update interval
ChangeWeatherInterval = 600000

# Default PlayerSaveInterval
PlayerSaveInterval = 900000

# Default WorldServerPort
// Must be the same as the one in the DB.
WorldServerPort = 8085

# Beep at mangosd start finished (mostly work only at Unix/Linux systems)
# Default: 1
// This is annoying. Set it to: "0"
BeepAtStart = 1

// Now, this is the special maps called Vmaps. These can help fix some odd bugs. I recommend enabling these. To enable them, you must follow the extraction steps later in the guide.

# Enable/Disable VMmap support for line of sight and height calculation
# Default: 1 (true)
# : 0 (false)
// Change to: "1"
vmap.enableLOS = 0
// Change to: "1"
vmap.enableHeight = 0
# Map id that will be ignored by VMap
# List of ids with delimiter ','
# If more then one id is defined and spaces are included, the string has to be enclosed by "
#vmap.ignoreMapIds = "369,0,1,530"
#DeeprunTram ist not included in the maps
vmap.ignoreMapIds = "369"
# These spells are ignored for LoS calculation
# List of ids with delimiter ','
vmap.ignoreSpellIds = "7720"

# Subseqent kills of the same player decrease the amount of honor gained.
# Maximum number of times a user may kill another player in one day and get honor for it.
# Default: 10
# Disable: 0 or any value larger than 255
// Feel free to change this... I have no idea why it's not above with the other rate modifiers...
Honor.KillLimit = 10

# Check final move position, summon position, etc for visible collision with other objects or wall (last if vmap enable)
# Default: 1 (enable, required more CPU for work)
# 0 (disable, less nice position selection but will less CPU use)
DetectPosCollision = 1

If you have configured the file correctly, you should be able to load MaNGOS up now, without any configuration errors, except that it misses maps.

Extracting Maps

Now, the MaNGOS configuration is done. Now it is time for map extractions. We will start off with extracting the normal maps and then optionally extract the Vmaps. I recommend using Vmaps.

Extracting normals maps is pretty simple.

Go to your WoW directory.
Make a folder named "maps" here.
Copy the Map Extractor named ad.exe to the WoW folder.
Run ad.exe and wait.

When the extraction is done, you simply put ad.exe back and take the maps folder into your MaNGOS folder. Maps are loaded! Now, your server should actually be able to play now. You can try it out or go on to the Vmaps which will take quite some time.

Extracting Vmaps

Extracting Vmaps takes quite some time compared to normal maps. This is because Vmaps are compiled in a special way. So, be prepared to grab a cup of tea.

First off, you will have 6 files in your Vmap Extr folder, right? So, copy all 6 to your WoW directory and execute makevmaps_SIMPLE.bat. Alternatively, you can use the other files. This is mostly for advanced users.

Now, go grab a cup of tea, or a beer, or whatever you want to. This WILL take time.

When the extraction is done, you will have two maps in your WoW directory. One named buildings and one named vmaps. Delete the buildings folder, then, copy the vmaps folder to your MaNGOS directory. Make sure Vmaps are enabled in your configuration file.

That is it! Your Vmaps are done... Took some time though, eh?

Finishing Off

Now your server is actually completely done. Yes, really! The only thing you need to do now is to set your realmlist file. This is quite simple.

Go to your WoW folder and find realmlist.wtf. Open it in Notepad.

Code:

set realmlist Your.PC.IP.Here
set patchlist Your.PC.IP.Here

Simply edit it so your IP is set as the realmlist. Patchlist isn't really needed at all, I just set it because I want to be sure I don't download patches that are beyond my server.

That's it. Try to log in with the username and password we created before! Remember, both Realmd and Mangosd must be running.

Have fun!

Frequently Asked Questions

Q: There are nothing in the world.
A: You didn't import your DB correctly, or, there was a connection problem.

Q: MaNGOS won't connect to my DB at all.
A: Make SURE, if your MySQL is remotely hosted, that your user has access from your IP or hostname.

Q: I get a million console bugs.
A: You are running a core that is not compatible with your version of UDB.

Q: How do I add a GM?
A: Look in the guide, duh. Set their gmlevel in the DB to either 1, 2 or 3.

Will add more questions when they show up.

2 comments:

Unknown said...

I think this will be kinda dumm question, but when you insert those Codes in database do i need to write the same stuff you did or change to my type???

Anwar Fazza said...

check this easier way, i published my 1st repack online , its for wow tbc 2.4.3 , many friends have tested it and called it "Wonderful" , or "The Best repack ive ever seen".

you can download it from
http://www.4shared.com/file/98446944/5af056a1/Echo_Repack_v10Alpha_243.html