一、先定共享范围
双区共用ID数据库通常指账号、密码、密保、点卡或元宝类通用数据放在同一个账号库,玩家用一个号能登一区和二区;角色、背包、仓库、行会、邮件等游戏数据可按需要独立,也可以进一步合并。单机测试推荐“账号共享、角色分库”,这样不容易出现同账号同角色名冲突,后期想合区再单独处理。若两个区版本差异很大,只共享登录ID,不共享物品经验数据;若两个区是同版本镜像,才考虑角色也走同一套表,但这会带来重名、覆盖风险,新手不建议直接这么做。
二、DBC老引擎方案(Hero、Blue、部分GOM老包)
1. 安装与建库
装DBC2000,控制面板打开BDE Administrator。Object新建STANDARD别名,名字写HeroDB,TYPE保持STANDARD,DEFAULT DRIVER选对应;PATH填一区角色/物品库路径,例如D:\MirServer\Mud2\DB,里面要有StdItems.DB、Magic.DB、Monster.DB、HeroDB相关表文件。保存后Apply/Commit,关掉BDE。
如果只做“双区共ID”,账号库和角色库要分开理解:老LoginSrv/DBServer体系里,ID数据库常通过LogSrv或DBSrc的IDS配置指向同一服务;角色库通过各M2的DBName或Mud2\DB路径区分。实际单机最简做法是——一区用HeroDB指向一区Mud2\DB,二区新建HeroDB2指向二区Mud2\DB;账号通用不靠DBC同名,而靠LoginSrv的地址表和服务区列表把两个区都挂到同一个登录服务。
2. 一区基础配置
一区MirServer不动,GameCenter配置向导确认:
• 服务器名称:传奇一区
• 数据库类型DBC,别名HeroDB
• IP本机127.0.0.1
• 主端口组默认7000系、LoginGate 7100系、RunGate 7200系、DBServer/IDS按原包
启动顺序:DBServer→LoginSrv/LogSrv→M2→各网关。确认M2日志无DB open错误、登录服务能列出一区。
3. 二区目录与端口
复制MirServer为MirServer2,全英文路径,例如D:\MirServer2。进GameCenter配置向导改:
• 服务器目录D:\MirServer2\
• 服务器名称传奇二区
• DBC别名可新建HeroDB2,PATH指向D:\MirServer2\Mud2\DB;若坚持双区角色完全独立,用独立别名最稳
• 端口整体偏移:一区M2 7000、LoginGate 7100、RunGate 7200、DBS相关5000/6000/5500/5600按原包;二区M2改7100或7001、LoginGate 7101、RunGate 7201、DBS各类端口加5或10,避免netstat看到占用
• 一区二区ServerNumber/ZoneID不同,具体字段名随引擎变,目的只是列表不重名
4. 共享ID的登录服务接法
老包常用LogSrv/LoginSrv地址表实现多区同登录。改一区LoginSrv或LogSrv目录:
• !Addrtable.txt或!ServerInfo.txt加二区入口:二区标题、本机127.0.0.1、二区角色/游戏网关IP端口。格式按原包示例,别加多余空格
• !UserLimit.txt可按需加二区名称和人数
• LogSrv.ini的ReadyServers/ServerCount设2;若原值0且单区正常,改2后异常可回0并只靠地址表测试
• 若引擎有IDS独立服务,一区二区DBSrc/dbsrc.ini的IDSAddr都填同一IDS IP和端口,这样账号验证走一个ID库;角色DBAddr各填各的Mud2或HeroDB别名,做到“ID共、角色分”
5. 登录器列表
本地登录器配置加两条:
一区 127.0.0.1:一区M2/网关端口
二区 127.0.0.1:二区M2/网关端口
如果用http列表,list.txt放本机站点,两条ServerName+IP+端口;纯本地也可用登录器直接填本机列表文件。生成登录器后先单区进,再切双区。
三、MySQL新引擎方案(HeroMySQL、GOM/GEE部分包、自研登录)
1. 建共号库与分角色库
装MySQL5.7/8均可,记root密码。Navicat连127.0.0.1:3306,建三个库更清楚:
• id_db:只放账号表,如Account、AccountLog、密保、封禁、点卡
• zone1_db:一区角色相关,Role_User、Role_Equip、Role_Bag等
• zone2_db:二区角色相关,Role2_User、Role2_Equip、Role2_Bag等
若服务端要求所有表在同一库,也要把账号表和各区角色表用前缀隔离,例如id_account、z1_user、z2_user,不要混用无前缀同名表。导入服务端自带SQL脚本,确认账号表、角色表、物品字典表都进对应库。
2. 一区连接配置
进一区服务端数据库配置,DBConfig或引擎向导填:
• 类型MySQL
• 地址127.0.0.1
• 用户root,密码安装时设的
• 账号库名id_db
• 角色库名zone1_db,角色表前缀Role_或z1_
• 物品/技能/怪物若引擎放独立字典库,按原包填,不强行合并到角色库
Hero类MySQL可改HeroM2.ini的[DataBase]段:账号连接信息指向id_db,角色表信息指向zone1;[Server]段ZoneID=1、M2/Login/Data端口用一区组。
3. 二区连接配置
复制一区MySQL配置到二区配置目录,改:
• ZoneID=2,ZoneName传奇二区
• 账号库仍填id_db,用户密码端口与一区完全一致,保证同号同密码
• 角色库填zone2_db,角色表前缀Role2_或z2_
• LoginPort、GamePort、DataPort整体偏移,例如一区7100/7101/7102,二区7200/7201/7202,具体看引擎变量
• ServerInfo.ini的ServerName、ServerIP=127.0.0.1、ServerPort填二区M2对外端口
如果引擎支持ShareUserDB之类开关,开共享账号;UserDBPath若老包用文件型账号,可指向同一目录,但必须先备份,且两区M2不能同时写同一角色文件,否则锁库损坏。
4. LoginSrv多区列表
改LoginSrv.ini的[ServerList]:
ServerCount=2
Server1Name=传奇一区
Server1IP=127.0.0.1
Server1Port=一区M2端口
Server2Name=传奇二区
Server2IP=127.0.0.1
Server2Port=二区M2端口
重启LoginSrv,登录器读同一列表地址即可看到双区。若用单LoginSrv带双M2,确保LoginSrv能连两个M2的选区/角色网关;若每区自带LoginSrv,则列表里写两个LoginSrv端口,不要两个LoginSrv抢同一端口。
四、同ID但角色也共用的高风险做法
只想“双区完全一个世界”,把一区二区都指向同一角色库同一套表,理论上可行,但单机外网都不推荐:
• 两区同时运行会双写同一角色行,产生锁等待、回滚、装备丢失
• 地图、掉线重连、跨区传送要单独做全局服务,老传奇引擎基本不支持
• 若只做“维护切换”,一区停、二区起,同一库没问题;若同时起,必须改架构为单M2多网关,而不是双M2同库
普通双区共用ID,采用“一个账号库+两个角色库”最省事。
五、启动与验证顺序
1. 先起MySQL或DBC服务,确认id_db可连。DBC用BDE测试HeroDB路径;MySQL用Navicat查Account表能看到结构。
2. 起一区DB/IDS服务,看账号库连接成功;起一区M2和网关,建号a,进游戏建角色a1。
3. 起二区DB/IDS服务,IDS同样连id_db;起二区M2和网关,用账号a登录,应能看到二区独立建角色界面,不应直接看到一区a1角色;在二区建a2。
4. 改密码或封禁账号测试:在id_db直接改Account密码/状态,一区二区重新登录都应生效,说明ID真共享。
5. 登录器列表切一区、二区,各建各角色,打怪存库后重启对应区M2,再进确认数据落盘。
六、常见故障
登录器只显示一区:查LoginSrv的ServerCount、ServerList、二区M2是否起、二区端口是否被占。用netstat -ano查二区M2/Login/RunGate端口,任务管理器看M2是否闪退。
报数据库打开失败:DBC检查HeroDB别名PATH是否含中文、空格、数据库文件是否缺失;MySQL检查127.0.0.1、3306、root密码、库名表名是否与SQL脚本一致,防火墙别拦3306。
同号登录二区提示已在线或角色串区:说明角色库没隔离,二区误连一区角色表。改二区角色库名、表前缀、M2的DataBase段,重启二区DB和M2。
IDS账号不通:老包确认一区二区DBSrc/dbsrc.ini的IDSAddr、IDSPort一致且IDS服务只起一个;多起会抢端口。MySQL包确认LoginSrv和M2账号连接串都指向id_db,不是各自新建account库。
双区互相改元宝/点卡影响:若id_db里有点卡、元宝、充值字段,双区共用会互相看见;同版本双区可接受,异版本双区应把经济表再拆出来,避免一区改了二区异常。
七、备份与改动习惯
动共ID库前先停所有M2,备id_db全量、各zone角色库全量、DBC的Mud2\DB文件。双区配置每次只改一个变量:先改二区端口并单测,再接LoginSrv,再测共账号。别同时改库名、表前缀、端口、区名,出问题无法定位。路径全英文,BDE和M2都以管理员运行,杀软把DBServer、M2、LoginSrv加白,避免误删导致半截启动。
按上面DBC或MySQL任一套做,单机两个区用同一个登录ID、各自独立角色,登录器选一区二区互不干扰;后续要做跨区传送再单独加全局路由,不在共享ID这一步混入角色合并。
单机传奇双区共用同一ID登录数据库设置教程:DBC与MySQL双方案及端口区列表实操
来源:
作者:
点击:

