服务器列表表存储了可用的游戏服务器信息,包括服务器名称、地址、端口、类型等。这些信息会显示在游戏客户端的服务器选择界面上,并用于连接到特定的游戏服务器。
表结构
| 字段名 | 类型 | 属性 | 描述 |
|---|---|---|---|
| id | int(10) unsigned | 主键,自增 | 服务器ID |
| name | varchar(32) | 不为空,默认'' | 服务器名称 |
| address | varchar(255) | 不为空,默认'127.0.0.1' | 服务器IP地址 |
| localAddress | varchar(255) | 不为空,默认'127.0.0.1' | 本地IP地址 |
| localSubnetMask | varchar(255) | 不为空,默认'255.255.255.0' | 本地子网掩码 |
| port | smallint(5) unsigned | 不为空,默认8085 | 服务器端口 |
| icon | tinyint(3) unsigned | 不为空,默认0 | 服务器图标 (0=正常, 1=PvP, 4=离线, 6=RP, 8=RP-PvP) |
| flag | tinyint(3) unsigned | 不为空,默认2 | 服务器标志 (0=无, 1=推荐, 2=新服务器, 4=全) |
| timezone | tinyint(3) unsigned | 不为空,默认0 | 服务器时区 |
| allowedSecurityLevel | tinyint(3) unsigned | 不为空,默认0 | 允许登录的最低安全等级 |
| population | float unsigned | 不为空,默认0 | 服务器人口密度 |
| gamebuild | int(10) unsigned | 不为空,默认12340 | 客户端版本 |
字段详解
id
服务器的唯一标识符,是自动递增的整数。这个字段是表的主键,用于在其他表中引用特定的服务器。
示例值: 1, 2, 3
name
服务器的名称,显示在游戏客户端的服务器选择界面上。这个名称应该是描述性的,帮助玩家识别不同的服务器。
示例值: "主服务器", "PvP服务器", "测试服务器"
address
服务器的IP地址或域名,用于客户端连接到服务器。这可以是公网IP地址、域名或内网IP地址(如果客户端和服务器在同一网络中)。
示例值: "127.0.0.1", "192.168.1.100", "example.com"
localAddress 和 localSubnetMask
这两个字段用于本地网络连接。如果客户端和服务器在同一个本地网络中,客户端会使用localAddress而不是address字段来连接服务器。localSubnetMask用于确定客户端是否在本地网络中。
示例值:
- localAddress: "192.168.1.100"
- localSubnetMask: "255.255.255.0"
port
服务器监听的端口号,客户端会使用这个端口连接到服务器。默认值是8085。
示例值: 8085, 8086, 8087
icon
服务器图标,决定了在服务器选择界面上显示的图标类型。这个值表示服务器的类型。
- 0 - 正常(PvE)服务器
- 1 - PvP服务器
- 4 - 离线服务器
- 6 - 角色扮演(RP)服务器
- 8 - 角色扮演PvP(RP-PvP)服务器
示例值: 0, 1, 6
flag
服务器标志,提供关于服务器状态的额外信息。这些标志可以组合使用(通过位运算)。
- 0 - 无特殊标志
- 1 - 推荐服务器
- 2 - 新服务器
- 4 - 全服务器(满员)
示例值: 0, 1, 2, 3(推荐+新)
timezone
服务器的时区设置,影响服务器内的游戏时间。
- 0 - 开发区
- 1 - 美国
- 2 - 大洋洲
- 3 - 拉丁美洲
- 4 - 欧洲
- 5 - 亚洲
- 6 - 中国
- 7 - 台湾
- 8 - 韩国
示例值: 0, 4, 6
allowedSecurityLevel
允许登录服务器的最低安全等级。这可以用来限制只有特定权限级别的账号才能登录到服务器,例如创建一个只有GM才能访问的测试服务器。
示例值:
- 0 - 所有玩家都可以登录
- 1 - 只有助手及以上权限可以登录
- 2 - 只有GM及以上权限可以登录
- 3 - 只有管理员可以登录
population
服务器的人口密度,这个值由服务器自动计算和更新,用于在服务器选择界面上显示服务器的拥挤程度。
示例值:
- 0.0 - 低人口
- 0.5 - 中等人口
- 1.0 - 高人口
- 2.0 - 非常高的人口
gamebuild
服务器支持的客户端版本号。只有匹配这个版本号的客户端才能连接到服务器。对于WotLK(巫妖王之怒)版本,常用的版本号是12340。
示例值: 12340(WotLK 3.3.5a)
使用示例
添加新服务器
以下SQL语句将添加一个新的PvP服务器:
INSERT INTO realmlist (name, address, port, icon, flag, timezone, allowedSecurityLevel, gamebuild)
VALUES ('PvP服务器', '192.168.1.100', 8085, 1, 2, 6, 0, 12340);
修改服务器信息
以下SQL语句将修改ID为1的服务器的名称和地址:
UPDATE realmlist
SET name = '新服务器名称', address = 'new.example.com'
WHERE id = 1;
将服务器标记为离线
以下SQL语句将ID为1的服务器标记为离线:
UPDATE realmlist
SET icon = 4
WHERE id = 1;
相关表
- realmcharacters - 存储每个账号在各个服务器上的角色数量
- uptime - 存储服务器的运行时间记录
常见问题
如何查看所有可用的服务器?
使用以下SQL语句查询:
SELECT id, name, address, port,
CASE
WHEN icon = 0 THEN '正常'
WHEN icon = 1 THEN 'PvP'
WHEN icon = 4 THEN '离线'
WHEN icon = 6 THEN 'RP'
WHEN icon = 8 THEN 'RP-PvP'
ELSE CONCAT('未知(', icon, ')')
END AS type,
population
FROM realmlist;
修改服务器信息后需要重启服务器吗?
不同的字段有不同的要求:
- 需要重启认证服务器:name, icon, flag, timezone, allowedSecurityLevel, gamebuild
- 不需要重启:address, localAddress, localSubnetMask, port, population
注意: 修改address或port后,虽然不需要重启服务器,但客户端可能需要重新启动才能使用新的连接信息。
如何设置一个只有GM可以访问的测试服务器?
使用以下SQL语句创建一个只有GM可以访问的测试服务器:
INSERT INTO realmlist (name, address, port, icon, flag, timezone, allowedSecurityLevel, gamebuild)
VALUES ('GM测试服务器', '192.168.1.100', 8086, 0, 0, 6, 2, 12340);
这将创建一个只有安全等级2(GM)及以上的账号才能登录的服务器。
服务器人口密度是如何计算的?
服务器人口密度(population字段)是由服务器自动计算和更新的,计算公式通常是:
population = 当前在线玩家数 / 服务器配置的最大玩家数
这个值会影响服务器选择界面上显示的服务器拥挤程度:
- 低人口(绿色):population < 0.5
- 中等人口(黄色):0.5 <= population < 1.0
- 高人口(红色):population >= 1.0