原名网狐游戏6.6.1.0升级编程手册(2012版)
1、数据库使用 SQL Server2008 Express
如果附加数据库时, 提示数据库没有访问权限。 只要将数据库文件和日志文件的user 权限改为完全控制即可。
编写批处理文件 attachDB.bat 将数据库目录中的所有数据库加载到 SQL Server2008 Express。
attachDB.bat:
SQLCMD -S ".\SQLEXPRESS" -U sa -P 123456 -i "Attach.sql" SQLCMD -S ".\SQLEXPRESS" -U sa -P 123456 -i "用户链接.sql"
Attach.sql:
EXEC sp_attach_db @dbname = N'CxGameTreasuredb',
@filename1 = N'D:\QP\DB\CxGameTreasuredb.mdf',
@filename2 = N'D:\QP\DB\CxGameTreasuredb_1.ldf';
EXEC sp_attach_db @dbname = N'KYGameDB',
@filename1 = N'D:\QP\DB\KYGameDB.mdf',
@filename2 = N'D:\QP\DB\KYGameDB_log.ldf';
EXEC sp_attach_db @dbname = N'News',
@filename1 = N'D:\QP\DB\News.mdf',
@filename2 = N'D:\QP\DB\News_1.ldf';
EXEC sp_attach_db @dbname = N'QPBilliardsDB',
@filename1 = N'D:\QP\DB\QPBilliardsDB.mdf',
@filename2 = N'D:\QP\DB\QPBilliardsDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPcdmjDB',
@filename1 = N'D:\QP\DB\QPcdmjDB.mdf',
@filename2 = N'D:\QP\DB\QPcdmjDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPChessDB',
@filename1 = N'D:\QP\DB\QPChessDB.mdf',
@filename2 = N'D:\QP\DB\QPChessDB_log.ldf';
EXEC sp_attach_db @dbname = N'QP***ChessDB',
@filename1 = N'D:\QP\DB\QP***ChessDB.mdf',
@filename2 = N'D:\QP\DB\QP***ChessDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPGameScoreDB',
@filename1 = N'D:\QP\DB\QPGameScoreDB.mdf',
@filename2 = N'D:\QP\DB\QPGameScoreDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPGameUserDB',
@filename1 = N'D:\QP\DB\QPGameUserDB.mdf',
@filename2 = N'D:\QP\DB\QPGameUserDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPGoBangDB',
@filename1 = N'D:\QP\DB\QPGoBangDB.mdf',
@filename2 = N'D:\QP\DB\QPGoBangDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPGuanPaiDB',
@filename1 = N'D:\QP\DB\QPGuanPaiDB.mdf',
@filename2 = N'D:\QP\DB\QPGuanPaiDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPLandDB',
@filename1 = N'D:\QP\DB\QPLandDB.mdf',
@filename2 = N'D:\QP\DB\QPLandDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPLandCrazyDB',
@filename1 = N'D:\QP\DB\QPLandCrazyDB.mdf',
@filename2 = N'D:\QP\DB\QPLandCrazyDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPLandEXVDDB',
@filename1 = N'D:\QP\DB\QPLandEXVDDB.mdf',
@filename2 = N'D:\QP\DB\QPLandEXVDDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPLandSCDB',
@filename1 = N'D:\QP\DB\QPLandSCDB.mdf',
@filename2 = N'D:\QP\DB\QPLandSCDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPLandVDDB',
@filename1 = N'D:\QP\DB\QPLandVDDB.mdf',
@filename2 = N'D:\QP\DB\QPLandVDDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPLLShowDB',
@filename1 = N'D:\QP\DB\QPLLShowDB.mdf',
@filename2 = N'D:\QP\DB\QPLLShowDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPServerInfoDB',
@filename1 = N'D:\QP\DB\QPServerInfoDB.mdf',
@filename2 = N'D:\QP\DB\QPServerInfoDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPShuangKouBBDB',
@filename1 = N'D:\QP\DB\QPShuangKouBBDB.mdf',
@filename2 = N'D:\QP\DB\QPShuangKouBBDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPShuangKouDB',
@filename1 = N'D:\QP\DB\QPShuangKouDB.mdf',
@filename2 = N'D:\QP\DB\QPShuangKouDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPSparrowDZDB',
@filename1 = N'D:\QP\DB\QPSparrowDZDB.mdf',
@filename2 = N'D:\QP\DB\QPSparrowDZDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPTreasureDB',
@filename1 = N'D:\QP\DB\QPTreasureDB.mdf',
@filename2 = N'D:\QP\DB\QPTreasureDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPUpGradeDB',
@filename1 = N'D:\QP\DB\QPUpGradeDB.mdf',
@filename2 = N'D:\QP\DB\QPUpGradeDB_log.ldf';
EXEC sp_attach_db @dbname = N'QPWeiQiDB',
@filename1 = N'D:\QP\DB\QPWeiQiDB.mdf',
@filename2 = N'D:\QP\DB\QPWeiQiDB_log.ldf';
EXEC sp_attach_db @dbname = N'WHPaoHuZiDB',
@filename1 = N'D:\QP\DB\WHPaoHuZiDB.mdf',
@filename2 = N'D:\QP\DB\WHPaoHuZiDB_log.ldf';
EXEC sp_attach_db @dbname = N'WHSanDaYiDB',
@filename1 = N'D:\QP\DB\WHSanDaYiDB.mdf',
@filename2 = N'D:\QP\DB\WHSanDaYiDB_log.ldf';
EXEC sp_attach_db @dbname = N'WHThreasureDB',
@filename1 = N'D:\QP\DB\WHThreasureDB.mdf',
@filename2 = N'D:\QP\DB\WHThreasureDB_log.ldf';
用户链接.sql
-- 变量定义
DECLARE @DBName VARCHAR(32)
DECLARE @DBUser VARCHAR(32)
DECLARE @DBPassword VARCHAR(32)
DECLARE @DBSourceAddr VARCHAR(32)
DECLARE @LinkServerName VARCHAR(32)
-- 设置变量
SET @LinkServerName='QPGameUserDBLink'
SET @DBSourceAddr='.\SQLEXPRESS'
SET @DBName='QPGameUserDB'
-- 删除连接服务器
IF EXISTS(SELECT SrvName FROM MASTER.DBO.SYSSERVERS WHERE
SrvName=@LinkServerName)
BEGIN
EXEC SP_DROPSERVER @LinkServerName,'DropLogins'
END
-- 建立链接服务器
EXEC SP_ADDLINKEDSERVER
@Server=@LinkServerName,
@SrvProduct=@LinkServerName,
@Provider='SQLOLEDB',
@DataSrc=@DBSourceAddr,
@Location='',
@ProvStr='',
@Catalog=@DBName
-- 用户映射
EXEC SP_ADDLINKEDSRVLOGIN
@RmtSrvName=@LinkServerName,@Useself='true',@LocalLogin=NULL,@RmtUser=NULL,@Rmt
Password=NULL
-- 设置链接服务器
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='RPC',@OptValue='true'
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='RPC OUT',@OptValue='true'
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='Data
Access',@OptValue='true'
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='Collation
CompaTible',@OptValue='true'
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='Use Remote
Collation',@OptValue='true'
-- 链接服务器状态
EXEC SP_HELPSERVER @LinkServerName
编写批处理文件 detachDB.bat SQL Server2008 Express 中的所有数据卸载。 如果数据库正在被使用, 请重启 SQL Server2008 服务!
detachDB.bat
SQLCMD -S ".\SQLEXPRESS" -U sa -P 123456 -i "Detach.sql"
Detach.sql
EXEC sp_detach_db 'KYGameDB', 'true';
EXEC sp_detach_db 'CxGameTreasuredb', 'true';
EXEC sp_detach_db 'News', 'true';
EXEC sp_detach_db 'QPBilliardsDB', 'true';
EXEC sp_detach_db 'QPcdmjDB', 'true';
EXEC sp_detach_db 'QPChessDB', 'true';
EXEC sp_detach_db 'QP***ChessDB', 'true';
EXEC sp_detach_db 'QPGameScoreDB', 'true';
EXEC sp_detach_db 'QPGameUserDB', 'true';
EXEC sp_detach_db 'QPGoBangDB', 'true';
EXEC sp_detach_db 'QPGuanPaiDB', 'true';
EXEC sp_detach_db 'QPLandCrazyDB', 'true';
EXEC sp_detach_db 'QPLandDB', 'true';
EXEC sp_detach_db 'QPLandEXVDDB', 'true';
EXEC sp_detach_db 'QPLandSCDB', 'true';
EXEC sp_detach_db 'QPLandVDDB', 'true';
EXEC sp_detach_db 'QPLLShowDB', 'true';
EXEC sp_detach_db 'QPServerInfoDB', 'true';
EXEC sp_detach_db 'QPShuangKouBBDB', 'true';
EXEC sp_detach_db 'QPShuangKouDB', 'true';
EXEC sp_detach_db 'QPSparrowDZDB', 'true';
EXEC sp_detach_db 'QPTreasureDB', 'true';
EXEC sp_detach_db 'QPUpGradeDB', 'true';
EXEC sp_detach_db 'QPWeiQiDB', 'true';
EXEC sp_detach_db 'WHPaoHuZiDB', 'true';
EXEC sp_detach_db 'WHSanDaYiDB', 'true';
EXEC sp_detach_db 'WHThreasureDB', 'true';
2、集成开发环境使用 VS2010
部主框架共有 20 个工程。从 VS2003/5 升级到 VS2010 需要做以下修改
Stdafx.h 修改点
#ifndef WINVER// 允许使用特定于 Windows 95 和 Windows NT 4 或更高版本的功能。
#define WINVER 0x0500 // 将此更改为针对于 Windows 98 和 Windows 2000 或更高版本的合适的值。
#endif
#ifndef _WIN32_WINNT // 允许使用特定于 Windows NT 4 或更高版本的功能。
#define _WIN32_WINNT 0x0500 // 将此更改为针对于 Windows 2000 或更高版本的合适的值。
#endif
#ifndef _WIN32_WINDOWS// 允许使用特定于 Windows 98 或更高版本的功能。
#define _WIN32_WINDOWS 0x0510 // 将此更改为针对于 Windows Me 或更高版本的合适的值。
#endif
#ifndef _WIN32_IE// 允许使用特定于 IE 4.0 或更高版本的功能。
#define _WIN32_IE 0x0500 // 将此更改为针对于 IE 5.0 或更高版本的合适的值。
#endif
工程属性修改点:
Database.cpp 函数SetConnectionInfo修改点
//构造连接字符串
//m_strConnect.Format(TEXT("Provider=SQLOLEDB.1;Password=%s;Persist Security Info=True;UserID=%s;Initial Catalog=%d.%d.%d.%d;Data Source=%s,%ld;"),
// szPassword, szUser, szDBName, a, b, c, d, wPort);
m_strConnect.Format(TEXT("Provider=SQLOLEDB;Driver={SQLServer};Server=.\\SQLEXPRESS;Database=%s;UID=%s;PWD=%s;"),
szDBName, szUser, szPassword);
ServiceLoaderDlg.cpp 函数GetDBConnectInfo修改点
去掉加密处理
//CXOREncrypt::CrevasseData(szDBUser,DBConnectInfo.szDataBaseUser,sizeof(DBConnectInfo.szDataBaseUser));
//CXOREncrypt::CrevasseData(szDBPass,DBConnectInfo.szDataBasePass,sizeof(DBConnectInfo.szDataBasePass));
_tcscpy(DBConnectInfo.szDataBaseUser,szDBUser);
_tcscpy(DBConnectInfo.szDataBasePass,szDBPass)
数据库QPServerInfoDB,表DataBaseInfo的记录修改点
密码设为非加密的
3、以德州为例运行整个程序
编译德州程序
设置参考 2:
修改版本号为 6,6,1,0:
拷贝德州的资源文件
在目录 D:\e\Myproject\QP2012\QP\游戏源码\运行\debug\DZShowHand 下拷贝相关文件
启动中心服务器
在目录 D:\e\Myproject\QP2012\QP\游戏源码\运行\debug 下, 双击 CenterServer.exe,
然后单击 参数配置 出现如图界面
启动服务
启动服务加载器
在目录 D:\e\Myproject\QP2012\QP\游戏源码\运行\debug 下, 双击 ServiceLoader.exe,
点击系统配置出现如下界面:
请正确填写您的数据库信息与中心服务器的 IP 地址。 点击确认后, 回到初始界面。 再点击创建房间 , 选择德州 DLL 出现如下界面
进行如下配置:
常规配置:
常规配置只需要配置 房间标示 游戏类型 桌子数目 服务端口 服务器地址 数据库名字(默认不需要配置) 和数据库地址;
1. 房间标识:房间的唯一标示 建议: 四位数以上, 以数字+类型标识组成。 不足四位的以 0 填补。 如 6001;
2. 游戏类型: 游戏的类型 一般类型标示小于 100 的选择金币游戏。 其余选择积分游戏;
3. 桌子数目 .这里填写你在这房间的桌子数.程序会为你计算出这房间最大进入人数.基数为 100.最多请不要超过 96 张桌子每个房间 建议: 48 张桌子;
4. 服务端口: 服务的通讯端口 建议与房间标示配置为一样;
5. 服务地址: 本机公网 IP 地址;
6. 数据库地址: 数据库地址;
7. 视频地址: 一般装在游戏服务器本身。 即本身IP;
非常规配置
1.类型 标示:服务会默认填写 自 己的 类型 标示,与 数据 库 QPServerInfoDB 下 的GameKindItem 表里的 KindID 对应;
2. 站点标示:服务器会默认填写自 己的类型标示,与数据库 QPServerInfoDB 下的GameKindItem 表里的 SortID 对应;
3. 排序标示: 同一游戏的房间排序。 越小越上;
4. 人数容量: 房间可进人数;
5. 最少积分: 进入房间的最少积分;
6. 单元积分: 输赢积分的倍数;
7. 限制积分: 进入房间的最大积分;
8.税收比例: 抽取赢家所得游戏币的比例 5 为 5%;
保存配置
每次新创建房间都需要保存方便下次启动.点击保存后填写保存路径和保存名字,建议保存在默认目录,使用房间的名字为保存名字
点击启动服务:
启动登录服务器:
在目录 D:\e\Myproject\QP2012\QP\游戏源码\运行\debug 下, 双击 LogonServer.exe
点击参数设置:
点击启动服务:
启动游戏大厅:
在目录 D:\e\Myproject\QP2012\QP\游戏源码\运行\debug 下, 双击 GamePlaza.exe,
申请账号 test1:
点击德州房间:
等待一会之后显示:
选择加入:
再启动一个游戏大厅, 申请账号 test2, 重复上述操作后, 显示:
可以开始玩了!END!!!
- attachDB.bat:
- Attach.sql:
- 用户链接.sql
- detachDB.bat
- Detach.sql
- Stdafx.h 修改点
- 工程属性修改点:
- Database.cpp 函数SetConnectionInfo修改点
- ServiceLoaderDlg.cpp 函数GetDBConnectInfo修改点
- 数据库QPServerInfoDB,表DataBaseInfo的记录修改点
- 编译德州程序
- 拷贝德州的资源文件
- 启动中心服务器
- 启动服务加载器
- 常规配置:
- 非常规配置
- 保存配置
- 点击启动服务:
- 启动登录服务器:
- 启动游戏大厅:
发表评论