Установить и настроить сервер WOW на базе Mangos
Как это ни странно в статье по установке World of Warcraft сервера
на базе mangos,оговорюсь, сразу ищите клиент, т.к. без него все будет
напрасно(как минимум начиная с версии 2.3.2 и выше).
Здесь будет описана установка «из портов» по
3 причинам: на момент установки серва офф.свн был закрыт,
статья по установке из свн есть на оффе, и из портов привычнее.
Необходимый софт:
svn клиент — если будете устанавливать из исходников по статье линк
на которую приведен в конце
/usr/ports/devel/subversion
/usr/ports/databases/mysql51-server
/usr/ports/sysutils/screen
И так поехали , ставим мангос :
cd /usr/ports/games/mangos
make install clean
Выбираем следующие опции
[x]Scriptdev2 - некая новая базза (за что отвечает пока сам не понял) [CLI] CLI - коммнадная строка (NO COMMENT) [RA] Remote adm support (удаленное управл для админа) (как юзать пока не знаю, в конфиге мангоса есть строчка на этот щет, у меня закоменчена) [x]DBC - Собирать файлы DBC (воопще этот пункт меня в итоге начал смущать) (т.к. мне пришлось удалить все проинсатленные файлы) (и заливать те ДБЦ файлы, которые распаковал в винде) (на родные мангос ругался что не совместимо)
Создание баз:
Сразу нужно позаботиться о том чтобы был установлен
phpmyadmin, т.к. в будущем всеравно он понадобиться
либо разминаем пальцы в разрезе SQL в консоле
cd /usr/local/share/mangos/sql
ll
total 780
-r--r--r-- 1 root wheel 32645 Feb 26 21:32 characters.sql
-r--r--r-- 1 root wheel 634 Feb 26 21:32 create_mysql.sql
-r--r--r-- 1 root wheel 730 Feb 26 21:32 drop_mysql.sql
-r--r--r-- 1 root wheel 457627 Feb 26 21:32 mangos.sql
-r--r--r-- 1 root wheel 6626 Feb 26 21:32 realmd.sql
-r--r--r-- 1 root wheel 250025 Feb 26 21:32 updates.tar.gz
#Создаем базы и структуру по предложенным дампам
mysql -uroot -pparol_roota < create_mysql.sql
#Будут созданы базы mangos, realmd, characters
#Юзер этих 3ёх баз mangos
#Заливаем в созданные базы "структуру"
mysql -uroot -pparol_roota mangos < mangos.sql
mysql -uroot -pparol_roota realmd < realmd.sql
mysql -uroot -pparol_roota characters < characters.sql
#У нас еще есть база scriptdev2 делаем её тоже (если она идет
#в комплекте - значит нада, или пригодиться в будущем)
cd /usr/local/share/scriptdev2/sql
ll
total 78
-r--r--r-- 1 root wheel 171 Feb 26 21:33 create_database.sql
-r--r--r-- 1 root wheel 4442 Feb 26 21:33 mangos_additional_req.sql
-r--r--r-- 1 root wheel 64324 Feb 26 21:33 mangos_full_scripts.sql
-r--r--r-- 1 root wheel 2161 Feb 26 21:33 scriptdev2_structure.sql
drwxr-xr-x 2 root wheel 2048 Feb 26 21:33 updates
mysql -uroot -pparol_roota < create_database.sql (с ней тоже работает юзер mangos)
mysql -uroot -pparol_roota scriptdev2 < scriptdev2_structure.sql
#добавляеем изменения в бд мангос
mysql -uroot -pparol_roota mangos < mangos_additional.sql
mysql -uroot -pparol_roota mangos < mangos_full_scripts.sql
Теперь нам нужно заполнить игровой мир (можно без этого, но в итоге зайдя в игру не
будет нигде не монстров не квестов, ничего)
Мой выбор пал на проект EDB (и пока что я им доволен) так что его и будем юзать,
так же можно пробовать базы таких проектов как YTDB, UDB, Silvermoon.
Идем и качаем ~70мб http://svn2.assembla.com/svn/edb/Releases/Milestone-0.8.x/
После того как мы скачаем эту базу её нужно будет залить в бд mangos
заливаем на серв, распаковываем и…
mysql -uroot -ppasswd mangos < EDB_NAME.sql
Можно зайти в пхпмайадмин и посмотреть — какие есть изменеие, что у нас заполнилось
Заодно сразу слегка правим данные бд realmd. Можно сделать как сказано на оффе
мангоса (копи / пасте оттуда)
Теперь добавляем свой реалмлист и аккаунт гма. xxx.xxx.xxx.xxx необходимо
заменить на ip на котором реалм будет слушать входящие подключения:
% mysql -u mangos -p realmd
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8016
Server version: 5.1.20-beta FreeBSD port: mysql-server-5.1.20
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> UPDATE realmlist SET name=’my super server’, address=’xxx.xxx.xxx.xxx’ WHERE id=’1′;
mysql> DELETE FROM account;
mysql> INSERT INTO `account` (`username`,`I`,`gmlevel`) VALUES
(‘megaadmin’,SHA1(CONCAT(UPPER(`megaadmin`),’:’,UPPER(`megapasword`))),’3′);
———
Либо правим все это через пхпмайдмин(думаю этот вариант лучше –
лишнего случайно не поудаляем, в крайнем случае, если где-то накосячили,
делаем откат на ноль по описсаным выше дампам) т.е. realmlist в бд
realmd, Аккаунты (их там по умолчанию если мне память не изменяет 3)
на мой взгляд просто лучше сразу удалить.
А потом в процессе уже игры уровни в игре GameMaster, admin,
moderator можно править либо с серв.консоли
либо через БД(пхпмайадмин).
Для бд — DB realmd , realmlist поле gmlevel — задаем значение : 0 — простой игрок,
1 — модератор, 2 — GM(GameMaster), 3 — Administrator
На этом этапе будем разворачивать мапы из клиента игры
vmap_assembler++_v2_Win32_260707.rar
И еще одну dbc_maps_vmap-extractor.rar (хотя по моему это одно и тоже)
Дальнейшии действия — разварачивание фалйов (dbc, maps, vmaps)происходят под виндой:
кидаем экстрактор в папку с ВоВом и запускаем распаковку dbc (~45-50M) maps (~1G)
vmaps (~2-1G)заливаем всё это счастье на вашу FreeBSD
(посредством ftp, smb, nfs, силой мысли) и копируем в
соответствующие папки, а именно
pwd /usr/local/share/mangos ll total 164 drwxr-xr-x 2 root wheel 5632 Feb 21 14:32 dbc drwxr-xr-x 2 root wheel 5632 Feb 26 21:33 dbc_old drwxr-xr-x 2 root wheel 71168 Feb 21 11:52 maps drwxr-xr-x 2 root wheel 512 Feb 26 21:32 sql drwxr-xr-x 2 root wheel 80896 Feb 21 14:29 vmaps #тоесть в dbc, maps, vmaps помещаем получнные файлы. #Дира dbc_old - это родная та о которо написанно в самом начале, #с родными файлам мангоса отказался запускаться сославшись #на то что дбц у нас древнее и просьба разпоковать чего-нибудь #посвежее, что мы и делаем в форточках.
Ну а пока экстарактор занимаеться своим делом можно заняться
ковырянием конфигов
файл /usr/local/etc/realmd.conf
# 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 # Вносим данные кактм образом подключаемся к базе Реалм # В данном случае по петле # формат : хост;порт;имя_польз_бд;пароль;имя_базы 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. LogsDir = "" # Settings for maximum database-ping interval (minutes between pings) MaxPingTime = 30 # Default RealmServerPort RealmServerPort = 3724 # realmd daemon PID file # Default: "" - do not create PID file # "./realmd.pid" - create PID file (recommended name) PidFile = "" # Server console level of logging # 0 = Minimum; 1 = Error; 2 = Detail; 3 = Full/Debug # Default: 0 LogLevel = 0 # Include time in server console output [hh:mm:ss] # Default: 0 (no time) # 1 (print time) LogTime = 0 # Logfile name # empty name disable creating log file: LogFile = # Default: "Server.log" - not recommended. 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 LogTimestamp = 0 # Server file level of logging # 0 = Minimum; 1 = Error; 2 = Detail; 3 = Full/Debug # Default: 0 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) UseProcessors = 0 # Process proirity setting (Used only at Windows) # 0 (Normal) # Default: 1 (HIGH) ProcessPriority = 1 # Realm list Update up delay (updated at realm list request if delay expired). # 0 (Disabled) # Default: 20 RealmsStateUpdateDelay = 20
файл /usr/local/etc/mangos.conf
# Думал выложить тоже весь файл но , что-то он большой # опишу лишь то что сам прописывал # 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] s # .;/path/to/unix_socket;username;password;database - use Unix sockets at Un # Unix sockets: experimental, not tested # Тоже что и в Реалме и в том же формате - прописываем тип подключения к БД # логины/пароли в формате : "хост;порт;имя_польз_бд;пароль;имя_базы" # LoginDatabaseInfo = "127.0.0.1;3306;mangos;mangos;realmd" WorldDatabaseInfo = "127.0.0.1;3306;mangos;mangos;mangos" CharacterDatabaseInfo = "127.0.0.1;3306;mangos;mangos;characters" # # Включаем эффекты погоды ActivateWeather = 1 # Прописываем приветстиве которое будут видеть все игроки # Уже по факту входа в мир Motd = "Welcome to My Cool WOW Privat Server." # Устанавливаем рейты в игре (в моем случае это ПВП сервер, # с легким качем и приятным дропом шмота и денег) # не хватало напрягаться еще на своем же сервере, хотя с установленным # уровнем аккаунта "3" - админ - на рейты поф, но тем не менее... Rate.Health = 1 Rate.Mana = 1 Rate.Rage.Income = 1 Rate.Rage.Loss = 1 Rate.Focus = 1 Rate.Loyalty = 1 # Drop rates # Default: 1 Rate.Drop.Items = 150 #-------- Rate.Drop.Items.Quality.Poor =150 Rate.Drop.Items.Quality.Common = 1 Rate.Drop.Items.Quality.Uncommon = 1 Rate.Drop.Items.Quality.Rare = 150 Rate.Drop.Items.Quality.Epic = 150 Rate.Drop.Items.Quality.Legendary = 200 Rate.Drop.Items.Quest =150 Rate.Drop.Money = 200 # XP rates # Default: 1 Rate.XP.Kill = 150 Rate.XP.Quest = 150 Rate.XP.Explore = 150 # все остальные рейты , не трогал, по умолчанию остались
Теперь нам надо гдето взять сайт — чтобы народ как минимум мог
регестрировать себе аккаунты.
Небольшой оффтоп, но кто-то точно наступит на грабли просто уверен,
те у кого МУСЯ собрана не UTF-8, а что-то свое c CP1251, koi8-r или еще чего.
Для того чтобы у вас сайт не пошел «кракозябликами»
Когда будете подсовывать понравившейся сайт ставьте в index.php в начале
header("Content-type: text/html; charset=utf-8");
т.к. наверняка все сайты сделаны под UTF-8. У остальных проблемм не будет.
По сайту сложно что-либо сказать, только то что — читайте ридми которое идет с сайтом
они могут требовать правки каких-то таблиц, либо их добавления.
Есть такой проект как WEboW (https://mangos.cjb.net/webow/forums/index.php)
cd /usr/local/scripts
# Если у вас еще не такой диры - то делам -))
cat realm.sh
#!/bin/sh
while true ; do
echo `date` ", Realm daemon crashed and restarted." >> /var/log/mangos/realmcrash
# запуск процесса Реалм с наивысшим приоритетом
nice -n -20 /usr/local/bin/mangos-realmd
done
chmod 755 realm.sh
cat mangos2.sh
#!/bin/sh
# Скрипт взят с оффа, но закоменчено практически все
# не понравилось что такой громоздкий процесс ставят в цикл
#while true ; do
#servlog='/usr/local/mangos/bin/Server.log';
#outpatch='/usr/local/mangos/bin/crash/';
#serverlog='/var/log/mangos/Server.log';
#outpatch='/var/log/mangos/';
#date=`date "+%Y-%m-%d_%H:%M:%S"`;
#echo "Server CRASHED !!! Start Bugreport System." >> $outpatch$date.txt;
#echo "Server.log Log FILE Last 30 Lines:" >> $outpatch$date.txt;
#cat $servlog | tail -n 30 >> $outpatch$date.txt;
#echo "" >> $outpatch$date.txt;
#echo "END bugtracker system." >> $outpatch$date.txt;
# Запуск сервера-мира с наивысшим приоритетом
nice -n -20 /usr/local/bin/mangos-worldd
#done
chmod 755 mangos2.sh
cat startwow
#!/bin/sh
cd /usr/local/scripts
screen -AmdS world /usr/local/scripts/mangos2.sh
screen -AmdS realm /usr/local/scripts/realm.sh
Делаем диру
mkdir -p /var/log/mangos
В принципе можно сразу сделать бэкапирование баз
cat wowbackup.sh
#!/bin/sh
#
# Delaem backup
#
current_year=`date '+%Y'`
current_month=`date '+%m'`
current_date=`date '+%d'`
#echo=/bin/echo
mysqldump="/usr/local/bin/mysqldump"
# Delaem diru
# В данном случае быкап баз делаеться на второй винт (не основной)
# который смонтирован в /mnt
# можно впринципе на NFS или на почту слать гггг -))
# я сделал как мне понравилось
# Быкапы каждодневные в формате дира: год/месяц/день/имя_базы
backup_dir="/mnt/backup/wow/${current_year}/${current_month}/${current_date}"
mkdir -p ${backup_dir} 2>/dev/null
#
#
#
#
${mysqldump} -umangos -pmangos mangos | gzip > ${backup_dir}/mangos.sql.gz
${mysqldump} -umangos -pmangos relamd | gzip > ${backup_dir}/realmd.sql.gz
${mysqldump} -umangos -pmangos characters | gzip > ${backup_dir}/characters.sql.gz
${mysqldump} -umangos -pmangos scriptdev2 | gzip > ${backup_dir}/scriptdev2.sql.gz
# Думаю gzip не помеха - база мангоса не маленькая
я закинул в крон на каждую ночь 4:30 Утра
в крон:
27 4 * * * /usr/local/scripts/wowbackup.sh
Можно запускать сервак,
для начала я порекомендавал бы запускать в ручную
mangos-world
и
mangos-realmd
хотя бы на момент настройки, отладки
Запускаем
/usr/local/scripts/startwow
Загрузки процесса mangos-world необходимо дождаться
т.к. там довольно много чего выгружаеться из базы…
всё, процессы загружены в screen’e
При необходимости можно зайти на серв , на скрин
для мира
screen -r world
для реалма
screen -r realm
Чтобы правильно откючиться жмем Cntrl+A, Cntrl+D
Прописываем в своем клиенте ВОВа в файл realmlist.wtf
set realmlist xxx.xxx.xxx.xxx # xxx.xxx.xxx.xxx - имя либо ип-адресс фашего ВОВ сервера
Запускаем клиент, конектимся если в ДБ реалма правильно прописали адр серва и приветсвтие
то в клиенте увидите справа аля — My COOL WOW Srv. Значит вы попали куда надо.
Попадаем в мир , первое что делаем , это всетаки свой серв, пишем в консоле игры
.commands
и наблюдаем что мы можем, если ничего значит правим в БД gmlevel на 3 (т.е. админ на серве)
либо идем на серв , скреен -мир и там тоже командами ставим своему акку гмлелвел — 3
——-
Это всё. Играем и радуемся.
Версия на момент написания статьи:
mangos-5101 Free dedicated-server for World of Warcraft
Версия клиента которая проверена и поддерживаеться данным сервером
WOW 2.3.2 (7741)
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.