wow 1.12 作为一个经典的版本,一直以来都是很多人研究的对象,掌握了基于cmangos的编译和使用指南,其他关于mangos-zero 及 lightshope等其他模拟器的编译都是大同小异,下述为编译搭建的说明:
1. 编译环境要求
// 更新ubuntu的仓库 sudo apt-get update // 安装必须的编译环境 sudo apt-get install build-essential gcc g++ automake git-core \ autoconf make patch libmysql++-dev mysql-server libtool \ libssl-dev grep binutils zlibc libc6 libbz2-dev cmake subversion \ libboost-all-dev
2. 开始编译
2.1 获取代码:
在当前用户目录下新建wow文件夹,开始获取模拟器代码,推荐使用cmangos,不过可能存在有多国语言支持的问题,也可以用mangos-zero,具体可以去github搜索相关的代码,这里主要演示cmangos 代码路径如下:
cd ~/wow git clone https://github.com/cmangos/mangos-classic.git mangos
2.2 编译:
1) 进入代码目录,新建编译文件夹
cd mangos && mkdir build && cd build
2) 配置编译变量和编译,若是使用其他路径作为二进制文件存放路径,建议使用root用户配置和编译
//注:若是需要编译playbot机器人,可增加 -DBUILD_PLAYERBOT=ON sudo cmake ../ -DCMAKE_INSTALL_PREFIX=/opt/mangos-server -DBUILD_EXTRACTOR=ON -DPCH=ON sudo make && sudo make install
3) 检查
在 /opt/mangos-server 应该会生成如下文件夹:bin/ etc/
3. 运行环境要求
3.1 mysql安装
sudo apt-get install mysql-server
注:安装过程中设置好密码,以下为几个mysql的设置的参考:
修改外部访问
mysql忘记密码及修改密码的方法
3.2 WOW数据的填充
1) 创建数据库
进入cmangos的下载目录,执行如下代码:
cd sql/create && mysql -uroot -p < db_create_mysql.sql
注:若不需要增加mangos的mysql用户,可屏蔽后面几句之后再执行。
2) 创建数据表格
cd sql/base mysql -u root -p classiccharacters < characters.sql mysql -u root -p classicmangos < mangos.sql mysql -u root -p classicrealmd < realmd.sql
3) 填充有效数据,使用classic-db可有效填充 scriptdev2 dbc/original_data dbc/cmangos_fixes 等相关数据,不需要额外做导入动作。
到当前用户目录存放wow相关内容的文件夹内下载最新版本的classic-db
cd ~/wow git clone git://github.com/cmangos/classic-db.git class-db
执行 InstallFullDB.sh 去生成InstallFullDB.config 文件
// 生成config文件 ./InstallFullDB.sh
//修改InstallFullDB.config 文件的如下内容: DATABASE="classicmangos" USERNAME="root" PASSWORD="you mysql root password" MYSQL="mysql" CORE_PATH="../mangos" // 若是有错误,请使用绝对路径
然后再次执行 ./InstallFullDB.sh,即可更新所有数据库。
4) 汉化数据库
cd ~/wow git clone git://github.com/DecadeWoW/wow_db_chinese.git wow_db_chinese or #https://github.com/mangoszero/database database
切换到 1.12的分支
git checkout -t origin/DB-Zero\(1.12.3\)
虽然这个是mangos-zero的数据库,但是还是可以用,找到其中的翻译部分,导入进去。
下面为批量导入sql的脚本:
cd Mangos-Zero for sql_file in `ls *.sql`; do mysql -uroot -pyoupassword --database=classicmangos < $sql_file ; done
3.3 php环境 -- 用来注册账号
1) 参考其他文档安装好php环境。
2) 下载注册页面的参考:
git clone https://github.com/DecadeWoW/cmangos-utils.git cmangos-utils
使用的web-register 里面的文件即可,注意修改php连接mysql的内容。
3.4 地图文件制作
在wow目录下新建res文件夹,然后上传wow的整个Data目录到res文件夹内,注意文件名的大小写和路径位置
1) 准备地图相关的文件
cd res/ cp ../mangos/build/contrib/extractor/ad . cp ../mangos/build/contrib/vmap_assembler/vmap_assembler . cp ../mangos/build/contrib/vmap_extractor/vmapextract/vmap_extractor . cp ../mangos/build/contrib/mmap/MoveMapGen . cp ../mangos/contrib/extractor_scripts/MoveMapGen.sh . cp ../mangos/contrib/extractor_scripts/offmesh.txt . cp ../mangos/contrib/extractor_scripts/ExtractResources.sh . chmod +x MoveMapGen.sh
2) 执行地图文件生成,直接运行 ExtractResources.sh 即可
4. 运行游戏服务器
4.1 修改 realmd 数据库,修改服务器名称和服务器IP地址
// 登录数据库 mysql -uroot -p // 切换数据库 use classicrealmd // update 服务器名称和地址 UPDATE realmlist SET name="怀旧服", address="xx.xx.xx.xx" WHERE id=1;
4.2 新建管理员账户
cd /opt/mangos-server/bin ./mangosd -c ../etc/mangosd.conf account create [用户名] [密码] account set addon [用户名] 0 account set gmlevel [用户名] 3 server shutdown 0
4.3 新建run 脚本,执行启动
1) 新建run文件输入如下内容
#!/bin/sh screen -dmS mangosd /opt/mangos-server/bin/mangosd -c /opt/mangos-server/mangosd.conf screen -dmS realmd /opt/mangos-server/bin/realmd -c /opt/mangos-server/realmd.conf
2) 赋予权限
sudo chmod +x run
3) 执行启动
sudo /opt/mangos-server/run
4) 关闭服务
sudo screen -r mangosd 输入:server shutdown 0
5. 客户端登录器制作
新建 登录器.bat文件,输入如下内容:
@echo off rd cache /s /q echo SET realmlist "bn.whonee.net" > realmlist.wtf echo SET realmlist "bn.whonee.net" > Data\zhCN\realmlist.wtf echo SET realmlist "bn.whonee.net" > Data\zhTW\realmlist.wtf echo SET realmlist "bn.whonee.net" > Data\enUS\realmlist.wtf start wow.exe exit
即可制作简单的登录器
6. 修改游戏
后续更新其他文章详细说明。
版权所有丨如未注明,均为原创,转载请注明转自:https://whonee.net/wow-classic-servers-build-install-in-ubuntu-14-04.html
文章不错非常喜欢,支持
编译过程出现以下错误, 帮忙看一下怎么回事..
[ 18%] Building CXX object src/game/CMakeFiles/game.dir/AI/BaseAI/CreatureAI.cpp.o
In file included from /root/wow/mangos/src/game/AI/BaseAI/CreatureAI.h:22:0,
from /root/wow/mangos/src/game/AI/BaseAI/CreatureAI.cpp:19:
/root/wow/mangos/src/game/AI/BaseAI/UnitAI.h:463:39: error: ‘std::function’ has not been declared
void AttackSpecificEnemy(std::function check);
^~~~~~~~
/root/wow/mangos/src/game/AI/BaseAI/UnitAI.h:463:47: error: expected ‘,’ or ‘...’ before ‘<’ token
void AttackSpecificEnemy(std::function check);
^
src/game/CMakeFiles/game.dir/build.make:62: recipe for target 'src/game/CMakeFiles/game.dir/AI/BaseAI/CreatureAI.cpp.o' failed
make[2]: *** [src/game/CMakeFiles/game.dir/AI/BaseAI/CreatureAI.cpp.o] Error 1
CMakeFiles/Makefile2:506: recipe for target 'src/game/CMakeFiles/game.dir/all' failed
make[1]: *** [src/game/CMakeFiles/game.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2
你改了代码了么?头文件没加好,还是cmake file 错误了?