Как это ни странно в статье по установке World of Warcraft сервера на базе mangos,оговорюсь, сразу ищите клиент, т.к. без него все будет напрасно(как минимум начиная с версии 2.3.2 и выше). Здесь будет описана установка "из портов" по 3 причинам: на момент установки серва офф.свн был закрыт, статья по установке из свн есть на оффе, и из портов привычнее -)
Необходимый софт: svn клиент - если будете устанавливать из исходников по статье линк на которую приведен в конце /usr/ports/devel/subversion
И так поехали , ставим мангос :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
На этом этапе будем разворачивать мапы из клиента игры К этой статье я привернул 2 тулзы , одну которую взял на оффе мангоса vmap_assembler++_v2_Win32_260707.rar И еще одну dbc_maps_vmap-extractor.rar (хотя по моему это одно и тоже)мап экстарктор из клиента ВОВ файл скачан размер размещён примечание
357 124.1kb 2008-03-01 Экстарктор кар из клиента ВОВ
еще один мап экстарктор из клиента ВОВ файл скачан размер размещён примечание
312 185.4kb 2008-03-01 Еще одна тулза - мап экстрактор из клиента ВОВ
Дальнейшии действия - разварачивание фалйов (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
# 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
# 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
# все остальные рейты , не трогал, по умолчанию остались
Теперь нам надо гдето взять сайт - чтобы народ как минимум мог регестрировать себе аккаунты. Небольшой оффтоп, но кто-то точно наступит на грабли просто уверен, те у кого МУСЯ собрана не 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) http://filebeam.com/68b00d262ec08ec64a7baa1a1c7a2114 Одним словом - на этом этапе придеться прогуляться по инету, советую начать с http://mangos.ru -> Форум , ветка по WWW Делаем скрипты. 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) Линков в инете по теме ВОВ очень много, выложу те которые реально помогли по делу.
Отдельная благодарность ресурасам: http://mangos.ru http://mangos.ru/wiki/index.php/Install:FreeBSD репозиторию БД EDB http://svn2.assembla.com/svn/edb/Releases/ И Reactor'у с форума EDB - просто так -)
Ветка форума для обсуждения http://forum.lissyara.su/viewtopic.php?f=14&t=7416