1.fopen函数注意DEBUG的时候走的是Working Directory
2. ogreMain.vcproj AssemblyDebug="1"
3 WXClient.vcproj UsePrecompiledHeader="1"
WarningLevel="0"
天龙八部架设需要分别在Windows和Linux两款操作系统上进行,也就是说需要两台服务器。Windows服务器上安装oracle数据库,主要负责管理玩家的帐号和验证玩家的登陆信息。Linux服务器上需安装mysql数据库,主要负责游戏主程序的运行。玩家登陆游戏过程客户端是向Windows服务器请求连接,Windows服务器验证玩家的登陆帐号和密码正确把连接转交给Linux服务器,然后Linux服务器负责玩家所有的游戏数据。注:如果你只有一台Windows服务器可安装虚拟主机软件,虚拟出一台Linux服务器即可。
架设天龙八部私服所需工具软件
1、天龙八部服务端(天龙八部游戏主程序)
2、Oracle10_database(Oracle数据库服务端)
3、PLSQL Developer(oracle数据库管理软件)
4、Oracle10_client(客户端)
5、mysql-5.0.45(mysql数据库)
6、mysql-connector-odbc-3.51.25-0.i386.rpm(mysql数据源Linux软件包)
7、Winscp(用于Windows与Linux之间的文件传输)
8、SecureCRT(用于连接Linux命令窗口执行命令)
Windows服务器操作
我们先配置天龙八部数据库和导入数据,如果你还没安装Oracle数据库请看:天龙八部帐号数据库(Oracle)安装.运行oracle数据库管理软件PLSQL Developer,使用系统用户system和安装Oracle数据库时填写的密码和连接符orcl,如上图.
登陆数据库管理后点击新建菜单选择命令窗口,在命令窗口分别复制以下四段代码按回车键执行,如上图
第一段代码:添加天龙八部游戏数据库用户及密码(3个用户:tlbb tl_gameuser tlbb_read,密码:iernei37d)
create user tlbb IDENTIFIED BY iernei37d;
create user tl_gameuser IDENTIFIED BY iernei37d;
create user tlbb_read IDENTIFIED BY iernei37d;
第二段代码:赋予tlbb用户权限
-- Grant/Revoke role privileges
grant connect to TLBB;
grant resource to TLBB;
-- Grant/Revoke system privileges
grant alter session to TLBB;
grant create cluster to TLBB;
grant create database link to TLBB;
grant create sequence to TLBB;
grant create session to TLBB;
grant create synonym to TLBB;
grant create table to TLBB;
grant create view to TLBB;
第三段代码:赋予tl_gameuser用户权限
-- Grant/Revoke role privileges
grant connect to tl_gameuser;
grant resource to tl_gameuser;
-- Grant/Revoke system privileges
grant alter session to tl_gameuser;
grant create cluster to tl_gameuser;
grant create database link to tl_gameuser;
grant create sequence to tl_gameuser;
grant create session to tl_gameuser;
grant create synonym to tl_gameuser;
grant create table to tl_gameuser;
grant create view to tl_gameuser;
第四段代码:赋予tlbb_read用户权限
-- Grant/Revoke role privileges
grant connect to tlbb_read;
grant resource to tlbb_read;
-- Grant/Revoke system privileges
grant alter session to tlbb_read;
grant create cluster to tlbb_read;
grant create database link to tlbb_read;
grant create sequence to tlbb_read;
grant create session to tlbb_read;
grant create synonym to tlbb_read;
grant create table to tlbb_read;
grant create view to tlbb_read;
以上步骤完成了我们就可以开始导入天龙八部帐号数据库了,把天龙八部数据库文件tlbb.dmp,tl_gameuser.dmp复制到C盘根目录下,进入开始菜单点击运行,输入CMD,在命令行窗口分别执行两条命令:Imptlbb/iernei37d@orcl file=C:\tlbb.dmp ignore=y和Imptl_gameuser/iernei37d@orcl file=C:\tl_gameuser.dmp ignore=y(注:tlbb和tl_gameuser是上面步骤所建的数据库用户,iernei37d是密码).上图为数据库导入成功.
数据库导入完成我们开始配置天龙八部数据库用户.运行PLSQL Developer以system用户登录,User-tlbb-右键编辑,在对象权限的对象栏中加入tl_gameuser.seq_user_basic_uin,后面选择1个Yes,对象栏中加入tl_gameuser.user_basic,后面选择4个Yes,应用.展开User-tlbb-Objects-Procedures-P_SAVEPOINT右键选择重新编译,有提示显示编译成功.
Linux服务器操作
首先确保你的Linux服务器已正确安装mysql数据库,新手请看:天龙八部游戏数据库mysql安装.打开SecureCRT连接Linux服务器终端.
配置数据库
1,启动mysql服务
/usr/local/mysql-5.0.45/bin/mysqld_safe --user=root &
2,进入mysql操作,密码为空直接回车确认
mysql -u root -p
3,设置mysql管理员密码,这里的密码是iernei37d
use mysql; update user set Password=PASSWORD('iernei37d') where User='root';
4,添加数据库用户及权限(下面两段代码分别为添加用户tlbb和tlbbtools,密码:iernei37d)
insert into mysql.user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions, max_updates, max_connections, max_user_connections) value ('%', 'tlbb', PASSWORD('iernei37d'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
insert into mysql.user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions, max_updates, max_connections, max_user_connections) value ('%', 'tlbbtools', PASSWORD('iernei37d'), 'Y','Y','Y','Y','N','Y','N','N','N','N','N','Y','Y','N','N','N','Y','N','Y','N','N','Y','Y','N','N','N','','','','',0,0,0,0);
5,创建天龙八部数据库(下面代码分别为创建数据库tlbbdb和tlbbdb_stat)
flush privileges;
create database tlbbdb;
create database tlbbdb_stat;
6,指定数据库用户
insert into mysql.db ( Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Execute_priv) value( '192.168.%.%', 'tlbbdb','tlbb', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
insert into mysql.db ( Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Execute_priv) value( '192.168.%.%', 'tlbbdb','tlbbtools', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'N', 'Y', 'Y', 'N', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'Y');
insert into mysql.db ( Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Execute_priv) value( '192.168.%.%', 'tlbbdb_stat','tlbb', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N');
7,退出mysql操作
exit
8,导入天龙八部数据库文件
把天龙八部数据库文件DBInit_0_31_0180_data_mysql和DBInit_0_31_0180_table_mysql传至/home目录执行导人命令:
mysql -uroot -prootvi5p tlbbdb < DBInit_0_31_0180_data_mysql
mysql -uroot -prootvi5p tlbbdb_stat < DBInit_0_31_0180_table_mysql
mysql部分到此结束.
配置天龙八部服务端
上传天龙八部服务端到Linux服务器/home目录下,配置前请确保服务器已安装Oracle客户端.
1、设置游戏目录权限
cd /home/tlbb/Billing
chmod 777 *
2、修改服务端配制信息
修改/home/tlbb/etc下gbs.conf db_hash.conf host.lst三个文件的配制信息:
db_hash.conf 文件
#散列数量:
HASHING_NUM = 1
#散列表0:
MAXDBCONNS0 = 1
DBUSER_DB0 = tlbb ;oracle数据库用户名称
DBPASS_DB0 = c46234f7081f758997cffa62686d02e800000090191d0ac640cd86621f6008d8cbbf1662 ;密码
DBTNS_DB0 = orcl ;oracle全局数据库名称
gbs.conf 文件
MAXDBCONNS_BILL = 20
DBUSER_GAMEBILL = tlbb oracle数据库用户名称
DBPASS_GAMEBILL = c46234f7081f758997cffa62686d02e800000090191d0ac640cd86621f6008d8cbbf1662 ;密码
DBTNS_GAMEBILL = orcl ;oracle全局数据库名称
MAXDBCONNS_AUTH = 20
DBUSER_GAMEAUTH = tl_gameuser oracle数据库用户名称
DBPASS_GAMEAUTH = c46234f7081f758997cffa62686d02e800000090191d0ac640cd86621f6008d8cbbf1662 ;密码
DBTNS_GAMEAUTH = orcl ;oracle全局数据库名称
host.lst 文件
192.168.1.188 --linux机的IP
192.168.1.188 --linux机的IP
修改/home/tlbb/Server/Config下LoginInfo.ini,ServerInfo.ini,ShareMemInfo.ini三个文件的配制信息:
修改里面的IP和mysql数据库连接信息.
配置mysql数据源
替换odbc.ini与odbcinst.ini内容如下:
odbc.ini
[tlbbdb]
Trace = Off
TraceFile= stderr
Driver = /usr/lib/libmyodbc3.so
DSN = tlbbdb
SERVER = 192.168.1.188 换成你L机IP就OK
USER = tlbb
PASSWORD = t!lbb
PORT = 3306
DATABASE = tlbbdb
TEXTSIZE = 409600
odbcinst.ini
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/libodbcpsql.so
Setup = /usr/lib/libodbcpsqlS.so
FileUsage = 1
[MySQL ODBC 3.51 Driver]
DRIVER = /usr/lib/libmyodbc3.so
SETUP = /usr/lib/libmyodbc3S.so
UsageCount = 1
3、添加oracle客户端连接服务端配置文件
复制Windows服务器oracle数据库安装目录oracle/product/10.2.0/db_1/network/admin下的tnsnames.ora文件到linux服务器oracle客户端安装目录/oracle/product/10.2.0/db_1/network/admin并修改HOST = 你的WindowsIP地址
启动游戏服务端程序
1、设置服务端目录权限
cd /home/tlbb/Server
chmod 777 *
2、启动billing服务
cd /home/tlbb/Billing
./tlbb start
出现**************draw information end************ 的字样就表示启动成功了
3、启动游戏主程序
cd /home/tlbb/Server
./shm start(启动) ./shm stop(停止)
出现Loop...Start shm就表示启动好了
cd /home/tlbb/Server
./Login
出现链接world错误 就是启动好了 world启动了就不会提示了
cd /home/tlbb/Server 出现MotherClient 说明world也没问题了
./World
出现MotherClient 说明world也没问题了
cd /home/tlbb/Server
./Server
启动Server比较慢,一般看到出现加载地图名称就没问题了
登陆游戏
来到你电脑上天龙八部客户端安装目录,把Patch\LoginServer.txt文件里的IP修改成你服务器IP和端口.Bin\Game.exe发送到桌面快捷方式,右健属性,地址后面加个-fl既可登陆游戏.
//--------------------------------------------------------------------------------------------
首先要想顺利编译通过(只是编译通过哈),你得改几处地方。
1.将OgrePlatform.h中的 #define vsnprintf _vsnprintf 改成: #if (_MSC_VER < 1500) #define vsnprintf
_vsnprintf #endif
2.将WXClient工程与WXRender工程里的stdafx.h文件里的以下两句注释
#define _WIN32_WINDOWS (0x0410) //Windows 98
#define _WIN32_WINNT (0x0500) //Windows 2000
3.由于用到了luaplus,很多地方需要加上using namespace LuaPlus; 不过由于我的懒惰性,我直接在luaplus.h的
#endif LUAPLUS_H前加了using namespace LuaPlus; (虽然这个做法很不好,但是却很有效)
以上修改基本能保证编译了,不过编译时编译,跟运行可没什么关系,要想成功运行,还得做几处修改。
1.在OgreMain的属性下忽略MSVCRT;MSVCR90这两个特定库。
2.将有fopen并且有 "a+w"的地方的"a+w"改成"a",这个是微软干的好事,改就是了。
以上编译下来基本就是运行的问题了,运行的时候可能会却很多库,可以尝试用Dependency Walker查看需要什么库,并
且库的版本必须要对。
一般可能却的库是d3d9.dll 与DevIL.dll 还有我本子上运行的时候那个ILU.dll(这个杀千刀的库)的库版本似乎不
对,反正就很让人纠结。。。
剩下的基本就是运行了 我运行的时候还出来个
Error #: 7
Function: LogicModelManager::createLogicModel
Description: Cannot find required Logic Model template '女主角.obj'.
File: e:\ogre\ogre\游戏资料\游戏资料\天龙八部代码(服务器客户端)\天龙八部代码(服务器客户端)\天龙代码\客
户端\client\wxcore\modelsystem\wxlogicmodelmanager.cpp
Line: 723
Stack unwinding: <<beginning of stack>>
这个原因是你的Data不完善造成的。。。找个比较完善的资源就是了。。。
没有服务器的情况下,能看到选择服务器的界面(不是最开始弹出的那个小对话框)就可以了。。。