简单说吧,如果你不会源码修改编译,单单玩数据库和DBC就能做出很有特色的端。Azerothcore的数据库是Mysql,所以你得下载个SQL管理工具,大家比较常用的是Navicat SQL,我常用的是HeidiSQL(免费)。连接数据库的话,地址、用户名和密码请自行查找服务端内的worldserver.conf文件,示例:

LoginDatabaseInfo     = "127.0.0.1;3306;acore;123456;acore_auth"
WorldDatabaseInfo = "127.0.0.1;3306;acore;123456;acore_world"
CharacterDatabaseInfo = "127.0.0.1;3306;acore;123456;acore_characters"
#127.0.0.1是登陆地址,3306是端口,acore是该数据库用户名,123456是密码,acore_XXX是数据库名称

Azerothcore数据库有三个:acore_auth、acore_characters和acore_world。因为一篇文章讲不完SQL修改,所以本文只把acore_auth各表的含义和字段解释列出来,后期陆续更新acore_world和acore_characters数据库,形成一个系列文章,最后将对实现某些功能做实操讲解。

这篇文章系列会很长很长,也是基于官方Wiki和各类教程,自行翻译糅合而成,如有错误还请指明。请善用Ctrl+F搜索和右边的目录侧边栏。

再次强调,各位若想玩数据库,就先把数据库系列文章详读、熟读!

言归正传,acore_auth数据库目前有 14 张表格,主要存储与用户帐户相关的信息:

account

id

唯一的帐户 ID。

username

用户的帐户名称,限制为 20 个字符。

salt

加密密码。

verifier

用户名和密码加密。

session_key

未知。

totp_secret

谷歌身份验证器的Key,不重要。

email

账户的邮箱地址。

reg_mail

与此帐户关联的注册电子邮件地址。

joindate

账户创建时间。

last_ip

最后一次登录的IP地址。

failed_logins

账户登录失败的次数。

locked

该字段为1时,账户只能从最后一次登录的IP地址登录;为0时,可以从任意IP地址登录。

last_login

最后一次登录的时间。

totaltime

玩家账户内所有角色的游玩时间合计,包括玩家已删除的角色。

online

0代表离线,1代表在线。

expansion

控制该账户的游玩版本,举例:玩家的客户端虽然是WLK335,但该字段的数值为1,则他只能玩经典世界和TBC的内容,而进去不诺森德。

数值 版本
0 经典世界
1 TBC
2 WLK

mutetime

账户被禁言的剩余时间。

mutereason

账户被禁言的原因。

muteby

赋予静音的(.mute)命令权限的角色名称。

locale

登录到这个账户的客户所使用的语言。

os

存储有关客户操作系统的信息(Win和Mac)。

recruiter

该账户招募的朋友账户ID。

account_access

简单理解,这张表存储了某区服的GM信息。

id

唯一的帐户 ID,参照account表的id字段。

gmlevel

帐户的GM级别,不同的级别可以使用不同的命令,级别可以参照acore_world数据库内command表的security字段。

RealmID

账户所在的区服,参照realmlist表内的ID。

comment

顾名思义:备注,可自行填写。

account_banned

这个表格列出了所有被禁止的账户,以及禁令何时(或是否)到期的日期。

id

唯一的帐户 ID。

bandate

帐户被禁止的日期。

unbandate

帐户将被自动解禁的日期。假如设置一个小于当前日期的值,实际上是一个永久禁止。

bannedby

禁用该账户的GM角色的名字。但如果是从控制台被禁止的,那这个值将是空的。

banreason

被禁止的原因。

active

数值0则这条禁令无效,数值1则这条禁令有效。

account_muted

该表包含其角色被指定为禁言的账户ID。

GM命令: .mute [$playerName] $timeInMinutes [$reason]

在$timeInMinutes分钟内,禁言$playerName(或当前选择的)角色账户中任何角色。玩家可以不在线。

guid

禁言账户的ID。这个账户上的所有角色都将在禁言期内被禁言。

mutedate

禁言开始的时间。

mutetime

禁言的时长(分钟)。

mutedby

发布禁言的GM名称。

mutereason

禁言的原因。

autobroadcast

这张表包含了你各个区服的广播信息,基于它们的权重随机播放。

realmid

定义这个广播信息属于哪个区服。对所有区服使用的话写:-1。

id

每个区服的唯一标识符。具有相同id的广播信息将相互覆盖而没有警告,假设1广播信息的realmid值设置为-1,那么你想在2区服里不播放1而是播放3广播信息,则readmid写2,id写3。

weight

整数值(不可为负值)。权重高的条目有更多机会被选中。

text

要广播的文本。可以使用颜色和物品、技能、任务链接形成的代码。

build_info

各类客户端信息。

ip_banned

这个表格包含了所有被禁止的IP,以及禁令何时(或是否)到期的日期。

ip

被禁止的IP地址。

bandate

该IP首次被禁止的日期。

unbandate

该IP将被解禁的日期。任何低于当前日期的日期基本上都被归类为永久禁止,因为它永远不会自动过期。

bannedby

禁用该IP的角色名字。该角色应该属于一个有权在游戏中使用.ban命令的账户。

banreason

所给出的禁止IP的理由。

logs

This table stores logs from Appender type database in config file. Example db appender:

Appender.DB=3,5,0

time

这个字符串被记录的时间。

realm

该日志字符串的区服ID(RealmID)。

type

配置中的Logger 名称,示例logger:

Logger.server=4,Console Server

level

取决于authserver.conf中的LogLevel:

Value Description
1 (Fatal)
2 (Error)
3 (Warning)
4 (Info)
5 (Debug)
6 (Trace)

string

被记录下来的实际字符串。

logs_ip_actions

记录logs_ip_actions 的表。

realmcharacters

这个表保存了每个账户在每个区服拥有的角色数信息,此表的数据由核心自动更改,不可自行更改。

realmid

区服的ID。

acctid

账户的ID。

numchars

该账户在该区服上拥有的角色数。

realmlist

这个表设置了所有可用的区服的信息。每一行控制一个不同的区服。

id

区服ID。数值必须>=0且必须唯一,它必须与worldserver.conf中的RealmID配置值相关。

name

区服的名称。这将出现在区服选择列表以及角色选择屏幕中。

address

世界服务器的互联网(WAN)或局域网(LAN)IP地址。如果只有你架设在局域网内,在这个地址使用127.0.0.1,如果想让互联网访问,请输入公网IP地址。

或者,你可以使用一个域名,比如: *example.com。

localAddress

本地IP地址,请填127.0.0.1。

port

服务端所运行的端口,在一台机子上运行了很多服务端,或者出于安全考虑,你可以自行更改这个端口。

icon

区服的ICON图,可标识为PVP或者RP服等,数值示例:

Icon Type
0 一般
1 PvP服
4 一般
6 RP服
8 RP PvP服

flag

区服的标志:

Flag Hex value Description
0 0x0
1 0x1 无效
2 0x2 离线
4 0x4 特定服
8 0x8 中型
16 0xF 中型
32 0x10 新服
64 0x20 建议服
128 0x40 满服

timezone

区服的时区,它将显示在realmlist的标签中,数值示例:

timezone displayed name
1 Development
2 United States
3 Oceanic
4 Latin America
5 Tournament
6 Korea
7 Tournament
8 English
9 German
10 French
11 Spanish
12 Russian
13 Tournament
14 Taiwan
15 Tournament
16 China
17 CN1
18 CN2
19 CN3
20 CN4
21 CN5
22 CN6
23 CN7
24 CN8
25 Tournament
26 Test Server
27 Tournament
29 CN9
30 Test Server 2
31 CN10
32 CTC
33 CNC
34 CN1/4
35 CN/2/6/9
36 CN3/7
37 Russian Tournament
38 CN5/8
39 CN11
40 CN12
41 CN13
42 CN14
43 CN15
44 CN16
45 CN17
46 CN18
47 CN19
48 CN20
49 Brazil
50 Italian
51 Hyrule
52 QA2 Test
53
54
55 Recommended Realm
56 Test
57 Recommended Realm
58
59 Future Test

allowedSecurityLevel

帐户登录到该区服所需的最低帐户gm级别。改变这个值会自动更新游戏中可见的区服列表,但必须重新启动世界服务器才能真正生效。可以建立个GM专属服。

population

该区服的玩家数量,每隔一段时间会自动更新。计算公式为:目前在线玩家数量/最大玩家数量* 2。在区服的列表中,低、中、高人口的阈值分别为0.5、1.0和2.0。

gamebuild

这个区服可使用的的客户端版本,示例:

Build Version Client Patch
5875 1.12.1
6005 1.12.2
8606 2.4.3
9947 3.1.3
10146 3.2.0
10505 3.2.2a
10571 3.3.0
11159 3.3.0a
11403 3.3.2
11623 3.3.3
11723 3.3.3a
12340 3.3.5a

secret_digest

记录 secret_digest 的表。

updates

记录了该数据库更新情况。

name

导入文件的文件名。

hash

来自导入文件的SHA1哈希值。

state

定义更新是否已发布、自定义或归档。

timestamp

文件被导入的时间。

speed

导入文件所需的时间(毫秒)。

updates_include

该表定义了更新所需要的目录。

path

更新目录。$表示相对于源目录。

state

定义该目录是否有发布的、自定义的或存档的更新。

uptime

这个表保存了服务器的正常运行时间。核心将自动更新最新条目的值。

realmid

区服的ID。

starttime

服务器启动的时间。

uptime

服务器的正常运行时间,以秒为单位。

maxplayers

连接的最大玩家数量。

revision

对服务端的详细修订。

version_db_auth

描述了该数据库的版本信息。

sql_rev

标识数值。

required_rev

不知道是啥,一般是空值。

date

Sql的修订日期。

2021_06_17_00

最后一次更新认证数据库的日期。请注意,这一栏会根据授权数据库的最后一次更新而自动改变。