首页图片 如果你想体验自己当GM的感觉,你想和你的朋友在魔兽世界里面过一过怀旧的味道,那么你一定不能错过。这份搭建教程。事实上我很少写教程。

为什么会有这篇文章

顺手为之罢了,把我踩过的坑让大家避免下。

下载源码都是900M加上编译过程中的问题百出,用现成的不香吗?而且,编译过程也是透明的。

为什么是335不是其他的,据大佬透露TC端只有335能有实际维护,后续都是套路框架。

要求

ubuntu 20.04 或者大于,不能是debian(C语言编译不具有通用性,这与golang不同。)

准备工作

安装依赖

1
2
apt-get update
apt-get install git clang cmake make gcc g++ libmariadbclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev mariadb-server p7zip libmariadb-client-lgpl-dev-compat

不安装依赖是不可能的,

下载服务端到你的Ubuntu,并解压

下载地址,下载方式如图所示旋转第一个√的图标的图标。需要登录GITHUB

1
2
3
cd 到你的TrinityCore335_linux_server.zip存放目录    
unzip TrinityCore335_linux_server.zip
mkdir data
1
2
3
cp worldserver.conf.dist worldserver.conf

cp authserver.conf.dist authserver.conf

修改worldserver.confDataDir = "."DataDir = "../data"

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
cd 到魔兽世界客户端文件夹(你没看错魔兽世界文件夹需要传到Ubuntu)
服务端路径/bin/mapextractor
cp -r dbc maps 服务端路径/data
服务端路径/bin/vmap4extractor
mkdir vmaps
服务端路径/bin/vmap4assembler Buildings vmaps
cp -r vmaps 服务端路径/data
mkdir mmaps
服务端路径/bin/mmaps_generator
cp -r mmaps 服务端路径/data

如果测试结束没有问题可以删除,磁盘空间富裕的没有关系.

初始化数据库

1
mysql_secure_installation
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
设置密码
Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

Remove anonymous users? [Y/n] y
 ... Success!

禁止root登陆(为了方便登陆,建议开启)
Disallow root login remotely? [Y/n] n
 ... skipping.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

下载World数据库,选择TDP335的名字下载TDB 335,并解压到服务端路径sql下。

下载汉化文件1,2,3,及开局送包包的sql导入(可选)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
此项不能全部复制,请一行一行复制替换后输入
mysql
source 服务端路径/sql/create/create_mysql.sql
use auth
source 服务端路径/sql/base/auth_database.sql
use characters
source 服务端路径/sql/base/characters_database.sql
use world
source 服务端路径/sql/TDB_full_world_335.20101_2020_10_15.sql
下列数据可选 
use world
source 服务端路径/sql/汉化1.sql
source 服务端路径/sql/汉化2.sql
source 服务端路径/sql/汉化3.sql
source 服务端路径/sql/开局送包包.sql
source 服务端路径/sql/骑术送传送门.sql

数据库名称介绍

Auth:权限数据库,存储服务器列表,玩家账户等信息。

Characters:角色数据库,存储所有角色人物相关的信息。

World:世界数据库,存储整个魔兽世界的一切信息,包括NPC,怪物,装备,道具,任务,副本等等所有一切。

开机启动

这里我设置了几个常用的开机启动脚本在我的github。

1
2
3
4
5
6
7
cp wowauth.service /etc/systemd/system/

cp wowworld.service /etc/systemd/system/

vi /etc/systemd/system/wowauth.service

vi /etc/systemd/system/wowworld.service

注意,使用需要配置下worldserver.conf。 ①,避免服务器后台之后CPU100%的问题。 Console.Enable = 0

②,开启远程控制,可以使用telent进行登录,但是必须先设置一个GM,因为使用gm 账号密码进行登录。

Ra.Enabl = 1

副本单排设置

Instance.IgnoreRaid = 1,进副本不需要团队,一个人就可以进入

数据库的备份/删除

使用单个命令进行配置的时候 /mnt/sdb/mysql/ 替换成你想要保存的路径。

vi /etc/crontab

在最后单独一行加入

1
2
3
4
5
#进行全量备份 每1小时备份一次
5 */1	* * *	root	sh /mnt/sdb/full_backup_mysql.sh

#每一周删除一次,只保留5个备份
7 2	* * 2	root	bash /mnt/sdb/mysqldel.sh

单独使用备份的命令,我这里是root用户直接登录所以没有密码,需要密码使用 -u root -p 指定密码

mysqldump --all-databases --single-transaction --quick --lock-tables=false > **/mnt/sdb/mysql/**TDB335_full_backup_$(date "+%Y%m%d%H%M%S").sql

重启定时任务

service cron restart

阻止ubuntu 自动更新软件

查看版本 (我这里要找 10.3.25 版本的软件,替换成10.3.22的数据库版本。) dpkg -l |grep -i 10.3.25

一键匹配

1
2
3
4
5
6
7
apt-get install -y libmariadb3:amd64=1:10.3.22-1ubuntu1
apt-get install -y mariadb-client-10.3=1:10.3.22-1ubuntu1
apt-get install -y mariadb-client-core-10.3=1:10.3.22-1ubuntu1
apt-get install -y mariadb-common=1:10.3.22-1ubuntu1
apt-get install -y mariadb-server=1:10.3.22-1ubuntu1
apt-get install -y mariadb-server-10.3=1:10.3.22-1ubuntu1
apt-get install -y mariadb-server-core-10.3=1:10.3.22-1ubuntu1

保留 当前版本不升级

1
2
3
4
5
6
7
apt-mark hold libmariadb3:amd64
apt-mark hold mariadb-client-10.3
apt-mark hold mariadb-client-core-10.3
apt-mark hold mariadb-common
apt-mark hold mariadb-server
apt-mark hold mariadb-server-10.3
apt-mark hold mariadb-server-core-10.3

数据库的远程访问

vi /etc/mysql/mariadb.conf.d/50-server.cnf 把bind-address = 127.0.0.1这一行注释掉。

连接MariaDB数据库,执行以下命令开启远程访问。以下命令只允许 192.168.248.248的用户以root使用password进行登录。

1
2
3
use mysql
grant all privileges on *.* to 'root'@'192.168.248.248' identified by 'password';
flush privileges;

如果需要任意IP地址访问,就把IP地址换成%。

重启 systemctl restart mariadb.service

公网与局域网访问

局域网和外网都可以使用,只要有一个是通的,使用127.0.0.1的人确保是本机运行。

1
2
3
mysql
use auth
UPDATE realmlist SET name='服务器名字', address='外网域名与客户端配置一致可ddns' ,localAddress='局域网IP' WHERE id=1;

总结

说真的,我并没想到这一切变得更加不可控,而且也更加无聊了。彷佛一个事情你只要研究够深,够透彻。你就越会对它失去兴趣。我写这篇文章出来,可能他并不完善,也不理想,但是总能帮助一部分人。worldserver.conf 中能配置很多东西,但这需要你不停的研究。有时候你不写点东西你就不知道自己掌握了多少东西。你总以为自己都是瞎折腾。把这一切记录下来。看看到底是不是瞎折腾。

所有的东西都可以在github上下载。https://github.com/user1121114685/TrinityCore