简单说吧,如果你不会源码修改编译,单单玩数据库和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,不重要。
账户的邮箱地址。
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
最后一次更新认证数据库的日期。请注意,这一栏会根据授权数据库的最后一次更新而自动改变。
学习学习!