TrinityCore安装记录

本文详细描述了如何在Linux服务器上配置并优化TrinityCore模拟魔兽世界的项目,涉及从安装、数据库导入到修改服务器IP地址以适应不同网络环境的过程。
摘要由CSDN通过智能技术生成

TrinityCore魔兽世界(World of Warcraft)服务器的开源项目,并且该项目代码进行了广泛的优化、改善和清理。

前期按照官方手册按部就班的安装即可。

TrinityCore官网wiki:Trinitycore Wiki | TrinityCore MMo Project Wiki

github地址:GitHub - TrinityCore/TrinityCore: TrinityCore Open Source MMO Framework (master = 10.2.7.55165, 3.3.5 = 3.3.5a.12340, wotlk_classic = 3.4.3.54261, cata classic = 4.4.0.55141) gitcode镜像地址:GitCode - 全球开发者的开源社区,开源代码托管平台

TrinityCoreBot安装:https://skywalk.blog.csdn.net/article/details/136197893 

TrinityCore免编译镜像安装:备份和镜像TrinityCore-CSDN博客 

TrinityCore web管理安装:Nginx配置php起TrinityCore WoWSimpleRegistration服务-CSDN博客

TrinityCore 多区安装:TrinityCore多区realms配置-do multiple realms for TrinityCore-CSDN博客 

TrinityCore GM常用命令:TrinityCore gm命令精选-CSDN博客

基本安装步骤

Ubunut服务器配置

需要Ubuntu22.04版本,并安装如下软件:

apt-get update
apt-get install git clang cmake make gcc g++ libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev mysql-server p7zip
update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100

注意如果是非root账户,需要sudo 

sudo apt-get update
sudo apt-get install git clang cmake make gcc g++ libmysqlclient-dev libssl-dev sudo libbz2-dev libreadline-dev libncurses-dev libboost-all-dev mysql-server p7zip
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100

下载源码

cd ~/
git clone https://github.com/TrinityCore/TrinityCore

请注意要使用3.3.5 repo,也可以git clone的时候直接指定repo:

git clone -b 3.3.5 --depth 1 https://github.com/TrinityCore/TrinityCore

进入TrinityCore目录,使用git branch命令确认是3.3.5版本:

git branch
* 3.3.5

注意即时更新源码:

git pull origin 3.3.5

 

如果实在无法下载,可以使用gitcode的镜像试试:

git clone https://gitcode.com/gh_mirrors/tr/TrinityCore.git

如果要安装TrinityBots,那么需要在GitHub - trickerer/Trinity-Bots: NPCBots for TrinityCore and AzerothCore 3.3.5

下载文件NPCBots.patch,并把它cp到TrinityCore主目录

cp Trinity-Bots/NPCBots.patch TrinityCore/  

并执行:

patch -p1 < NPCBots.patch

编译配置

cd TrinityCore
mkdir build
cd build
 
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/wow/server

编译安装

make -j $(nproc) 
make install

数据库导入

只需要导入一个,后面其它数据库会自动导入

To create the MySQL databases needed by Trinity, you need to execute one of the following MySQL queries with your mysql client:

可下载或者到项目TrinityCore/sql/create目录也能获取该文件。下载之后,进入mysql,然后导入:

source /home/wow/TrinityCore/TrinityCore-TDB335.22061/sql/create/create_mysql.sql

其实create_mysql.sql文件的内容是:

CREATE USER 'trinity'@'localhost' IDENTIFIED BY 'trinity' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;

GRANT USAGE ON * . * TO 'trinity'@'localhost';

CREATE DATABASE `world` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE DATABASE `characters` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE DATABASE `auth` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

GRANT ALL PRIVILEGES ON `world` . * TO 'trinity'@'localhost' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON `characters` . * TO 'trinity'@'localhost' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON `auth` . * TO 'trinity'@'localhost' WITH GRANT OPTION;

配置服务器

下载或创建地图

下载程序需要的地图等文件,可以从这里下载: https://tc.arctium.io

下载3.3.5a版本的,下载后解压,带目录拷贝到server/data目录

 配置config文件

将server/etc目录里两个配置文件的dist后缀去掉

server/etc$ ls
bnetserver.conf  bnetserver.conf.dist  worldserver.conf  worldserver.conf.dist

修改worldserver.conf文件的内容

团队副本不需要团队

#    Instance.IgnoreRaid
#        Description: Ignore raid group requirement when entering instances.
#        Default:     0 - (Disabled)
#                     1 - (Enabled)

# Instance.IgnoreRaid = 0
Instance.IgnoreRaid = 1

 数据地址用绝对路径

#    DataDir
#        Description: Data directory setting.
#        Important:   DataDir needs to be quoted, as the string might contain space characters.
#        Example:     "@prefix@/share/trinitycore"
#        Default:     "."

# DataDir = "."
DataDir = "/home/wow/server/data"

若安装了bot,可以设置最多可带bot人数

#    NpcBot.MaxBots
#        Description: Maximum number of bots allowed for players per level bracket:
#                     0-9, 10-19, 20,29, ... , 70-79, 80+.
#        Default:     1,1,1,1,1,1,1,1,1 - (1 for all levels)
#                     0,1,2,3,4,5,6,7,8 - (1 per 10 levels)
#        Max:         39
 
NpcBot.MaxBots = 1,2,3,4,5,6,7,8,9

启动服务器

先启动验证服务器,再启动世界服务器

./authserver

./worldserver

创建账户

服务启动后,在服务器命令行里创建账户

比如创建一个test账户:

.account create test test

这个账户的密码也是test

设置账户的gm等级:

.account set gmlevel test 3 -1 

这样就把test这个账户设为gm等级3,-1则表示所有的区生效。

注意几点:

  • 1 需要配置Ubuntu22.04版本的服务器或者Debian11 服务器。
  • 2 需要使用git clone 从官网下载代码。如果不好下载的话,可以加上--depth 参数,如:

git clone -b 3.3.5 --depth 10  https://github.com/TrinityCore/TrinityCore.git

  • 3 数据库只需要导入一个:

source /home/wow/TrinityCore/TrinityCore-TDB335.22061/sql/create/create_mysql.sql

后面的数据库不需要手工导入,只要启动worldserver,就会自动导入。

  • 4 最后卡在登录服务器界面,原来需要修改ip地址:

对服务器和客户端不在同一台机器的情况,需要修改服务器的ip地址,从127.0.0.1修改成服务器地址。

mysql> use auth;  
Database changed
mysql> select id,name,address,localaddress,gamebuild from realmlist;
+----+---------+-----------+--------------+-----------+
| id | name    | address   | localaddress | gamebuild |
+----+---------+-----------+--------------+-----------+
|  1 | Trinity | 127.0.0.1 | 127.0.0.1    |     12340 |
+----+---------+-----------+--------------+-----------+
1 row in set (0.00 sec)

mysql> UPDATE realmlist SET address = '192.168.0.12' WHERE address = '127.0.0.1';
Query OK, 1 row affected (0.15 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select id,name,address,localaddress,gamebuild from realmlist;
+----+---------+--------------+--------------+-----------+
| id | name    | address      | localaddress | gamebuild |
+----+---------+--------------+--------------+-----------+
|  1 | Trinity | 192.168.0.12 | 127.0.0.1    |     12340 |
+----+---------+--------------+--------------+-----------+
1 row in set (0.00 sec)

 总算连上了!

也可以通过id来修改:

update realmlist set address = "xx.xx.xx.xx" where id = 1 ;

服务器放置在公网上

如果公网ip是:194.36.209.246

那么执行下面语句:

mysql> use auth;  
Database changed
mysql> select id,name,address,localaddress,gamebuild from realmlist;
+----+---------+-----------+--------------+-----------+
| id | name    | address   | localaddress | gamebuild |
+----+---------+-----------+--------------+-----------+
|  1 | Trinity | 192.168.0.1 | 127.0.0.1    |     12340 |
+----+---------+-----------+--------------+-----------+
1 row in set (0.00 sec)

mysql> UPDATE realmlist SET address = '194.36.209.246' WHERE address = '192.168.0.12';
Query OK, 1 row affected (0.15 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select id,name,address,localaddress,gamebuild from realmlist;
+----+---------+----------------+--------------+-----------+
| id | name    | address        | localaddress | gamebuild |
+----+---------+----------------+--------------+-----------+
|  1 | Trinity | 194.36.209.246 | 127.0.0.1    |     12340 |
+----+---------+----------------+--------------+-----------+
1 row in set (0.00 sec)


这样网上都可以登录这台机器了。

但是这样局域网就无法登录了。可以这样解决:

再添加一个表:

INSERT INTO realmlist (name, address, localaddress, gamebuild) VALUES ('NewRealm', '192.168.0.12', '127.0.0.2', 12345);

UPDATE realmlist SET flag = 0 WHERE flag = 2;

没找到这个realm,看来需要把server那边做全套才行。

尝试这样,使用域名

UPDATE realmlist SET address = 'wow.airoot.org' WHERE address = '194.36.209.246';
Query OK, 1 row affected (0.28 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from realmlist;
+----+----------+----------------+--------------+-----------------+------+------+------+----------+----------------------+------------+-----------+
| id | name     | address        | localAddress | localSubnetMask | port | icon | flag | timezone | allowedSecurityLevel | population | gamebuild |
+----+----------+----------------+--------------+-----------------+------+------+------+----------+----------------------+------------+-----------+
|  1 | Trinity  | wow.airoot.org | 127.0.0.1    | 255.255.255.0   | 8085 |    0 |    0 |        1 |                    0 |          0 |     12340 |
|  2 | NewRealm | 192.168.0.12   | 127.0.0.2    | 255.255.255.0   | 8085 |    0 |    0 |        0 |                    0 |          0 |     12345 |
+----+----------+----------------+--------------+-----------------+------+------+------+----------+----------------------+------------+-----------+

用域名的时候在外网测试,只能用户登录,无法连上realm 。于是只好又把address改成公网ip

由于公网太慢,所以要改回局域网:
UPDATE realmlist SET address = '194.36.209.246' WHERE address = '192.168.0.12';

UPDATE realmlist SET address = '192.168.0.12' WHERE address = '194.36.209.246';

最终的结果就是:

将address设为公网ip,不管局域网还是外网,都用这个公网ip登陆。 

后续:

准备用freebsd编译它!但是还没有成功。

调试

数据调试

数据这里也有波折,先记录下:

删除:

sudo apt remove mysql-server*

安装:

sudo apt install mariadb-server-10.6

数据库那块,默认的用户名和密码是tirnity trinity

这里走了很长时间的弯路。

报错Map file './maps/0004331.map' does not exist!

VMap data directory is: ./vmaps
Map file './maps/0004331.map' does not exist!
Please place MAP-files (*.map) in the appropriate directory (./maps/), or correct the DataDir setting in your worldserver.conf file.
Unable to load critical files - server shutting down !!!

网上有issue:Map 0000_43_31.map is missing · Issue #19791 · TrinityCore/TrinityCore · GitHub 

还是有人说数据路径要用绝对路径,于是

编辑文件server/etc/worldserver.conf,使用绝对路径

# DataDir = "."
DataDir = "/home/wow/server/data"

问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值